summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-06-13 03:02:55 +0000
committerNorbert Preining <norbert@preining.info>2020-06-13 03:02:55 +0000
commit2d0067edb74f15b431d7a1e3a42b4f525986cef0 (patch)
tree06198722777ad0af165eb45b12960c56b226b0cf
parentc2fde990c352049f8aa6bc9629fee95bad518cde (diff)
CTAN sync 202006130302
-rw-r--r--FILES.byname763
-rw-r--r--FILES.byname.gzbin2224175 -> 2221165 bytes
-rw-r--r--FILES.last07days396
-rw-r--r--fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otfbin4406268 -> 4406652 bytes
-rw-r--r--fonts/haranoaji-extra/HaranoAjiGothic-Light.otfbin4652576 -> 4652960 bytes
-rw-r--r--fonts/haranoaji-extra/HaranoAjiGothic-Normal.otfbin4676340 -> 4676724 bytes
-rw-r--r--fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otfbin5687556 -> 5687960 bytes
-rw-r--r--fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otfbin6381036 -> 6381440 bytes
-rw-r--r--fonts/haranoaji-extra/HaranoAjiMincho-Medium.otfbin6246600 -> 6247004 bytes
-rw-r--r--fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otfbin6284176 -> 6284580 bytes
-rw-r--r--fonts/haranoaji-extra/README2
-rw-r--r--fonts/haranoaji/HaranoAjiGothic-Bold.otfbin4832732 -> 4833116 bytes
-rw-r--r--fonts/haranoaji/HaranoAjiGothic-Heavy.otfbin5065436 -> 5065820 bytes
-rw-r--r--fonts/haranoaji/HaranoAjiGothic-Medium.otfbin4706532 -> 4706916 bytes
-rw-r--r--fonts/haranoaji/HaranoAjiGothic-Regular.otfbin4686816 -> 4687200 bytes
-rw-r--r--fonts/haranoaji/HaranoAjiMincho-Bold.otfbin6446248 -> 6446652 bytes
-rw-r--r--fonts/haranoaji/HaranoAjiMincho-Light.otfbin6090316 -> 6090720 bytes
-rw-r--r--fonts/haranoaji/HaranoAjiMincho-Regular.otfbin6171416 -> 6171820 bytes
-rw-r--r--fonts/haranoaji/README2
-rw-r--r--graphics/epix/AUTHORS5
-rw-r--r--graphics/epix/BUGS24
-rw-r--r--graphics/epix/COPYING340
-rw-r--r--graphics/epix/ChangeLog743
-rw-r--r--graphics/epix/Color.cc369
-rw-r--r--graphics/epix/Color.h156
-rw-r--r--graphics/epix/Color_Base.cc52
-rw-r--r--graphics/epix/Color_Base.h84
-rw-r--r--graphics/epix/Color_CMY.cc160
-rw-r--r--graphics/epix/Color_CMY.h82
-rw-r--r--graphics/epix/Color_CMYK.cc216
-rw-r--r--graphics/epix/Color_CMYK.h85
-rw-r--r--graphics/epix/Color_Gray.cc129
-rw-r--r--graphics/epix/Color_Gray.h67
-rw-r--r--graphics/epix/Color_Neutral.cc98
-rw-r--r--graphics/epix/Color_Neutral.h64
-rw-r--r--graphics/epix/Color_RGB.cc146
-rw-r--r--graphics/epix/Color_RGB.h68
-rw-r--r--graphics/epix/Color_Sep.cc278
-rw-r--r--graphics/epix/Color_Sep.h133
-rw-r--r--graphics/epix/Color_Utils.cc113
-rw-r--r--graphics/epix/Color_Utils.h66
-rw-r--r--graphics/epix/INSTALL179
-rw-r--r--graphics/epix/Makefile.am115
-rw-r--r--graphics/epix/Makefile.in1025
-rw-r--r--graphics/epix/NEWS91
-rw-r--r--graphics/epix/POST-INSTALL123
-rw-r--r--graphics/epix/README139
-rw-r--r--graphics/epix/THANKS122
-rw-r--r--graphics/epix/TODO0
-rw-r--r--graphics/epix/VERSION1
-rw-r--r--graphics/epix/aclocal.m4879
-rw-r--r--graphics/epix/active_screen.cc80
-rw-r--r--graphics/epix/active_screen.h72
-rw-r--r--graphics/epix/affine.cc300
-rw-r--r--graphics/epix/affine.h114
-rw-r--r--graphics/epix/angle_units.cc94
-rw-r--r--graphics/epix/angle_units.h77
-rw-r--r--graphics/epix/arrow_data.cc130
-rw-r--r--graphics/epix/arrow_data.h77
-rw-r--r--graphics/epix/arrow_style.cc103
-rw-r--r--graphics/epix/arrow_style.h76
-rw-r--r--graphics/epix/axis.cc925
-rw-r--r--graphics/epix/axis.h207
-rw-r--r--graphics/epix/bash_completions8
-rw-r--r--graphics/epix/camera.cc318
-rw-r--r--graphics/epix/camera.h134
-rw-r--r--graphics/epix/circle.cc197
-rw-r--r--graphics/epix/circle.h94
-rw-r--r--graphics/epix/clipping.cc136
-rw-r--r--graphics/epix/clipping.h77
-rw-r--r--graphics/epix/config.guess1497
-rw-r--r--graphics/epix/config.sub1608
-rw-r--r--graphics/epix/configure6396
-rw-r--r--graphics/epix/configure.ac58
-rw-r--r--graphics/epix/constants.h108
-rw-r--r--graphics/epix/crop_algorithms.h225
-rw-r--r--graphics/epix/cropping.cc88
-rw-r--r--graphics/epix/cropping.h68
-rw-r--r--graphics/epix/curves.cc663
-rw-r--r--graphics/epix/curves.h187
-rw-r--r--graphics/epix/data_bins.cc411
-rw-r--r--graphics/epix/data_bins.h101
-rw-r--r--graphics/epix/data_file.cc687
-rw-r--r--graphics/epix/data_file.h172
-rw-r--r--graphics/epix/data_mask.cc76
-rw-r--r--graphics/epix/data_mask.h66
-rw-r--r--graphics/epix/debug.h37
-rw-r--r--graphics/epix/depcomp530
-rw-r--r--graphics/epix/deriv.h49
-rw-r--r--graphics/epix/doc/Makefile.am45
-rw-r--r--graphics/epix/doc/Makefile.in364
-rw-r--r--graphics/epix/doc/alignment.eepic19
-rw-r--r--graphics/epix/doc/alignment.xp26
-rw-r--r--graphics/epix/doc/alignment_lr.eepic17
-rw-r--r--graphics/epix/doc/alignment_lr.xp24
-rw-r--r--graphics/epix/doc/arrow.eepic22
-rw-r--r--graphics/epix/doc/arrow.xp18
-rw-r--r--graphics/epix/doc/arrow25.eepic22
-rw-r--r--graphics/epix/doc/arrow50.eepic22
-rw-r--r--graphics/epix/doc/basepoint.eepic16
-rw-r--r--graphics/epix/doc/basepoint.xp36
-rw-r--r--graphics/epix/doc/camera.eepic285
-rw-r--r--graphics/epix/doc/camera.xp86
-rw-r--r--graphics/epix/doc/cb.eepic25
-rw-r--r--graphics/epix/doc/cb.xp22
-rw-r--r--graphics/epix/doc/color_density.eepic139
-rw-r--r--graphics/epix/doc/color_density.xp42
-rw-r--r--graphics/epix/doc/dots.eepic19
-rw-r--r--graphics/epix/doc/dots.xp28
-rw-r--r--graphics/epix/doc/ePiX.eepic1099
-rw-r--r--graphics/epix/doc/ePiX.xp156
-rw-r--r--graphics/epix/doc/epix.info4696
-rw-r--r--graphics/epix/doc/graphpaper.eepic101
-rw-r--r--graphics/epix/doc/graphpaper.xp24
-rw-r--r--graphics/epix/doc/hello.eepic15
-rw-r--r--graphics/epix/doc/hello.xp20
-rw-r--r--graphics/epix/doc/koch.eepic160
-rw-r--r--graphics/epix/doc/koch.xp24
-rw-r--r--graphics/epix/doc/layout.eepic1511
-rw-r--r--graphics/epix/doc/layout.xp36
-rw-r--r--graphics/epix/doc/manual.pdfbin710725 -> 0 bytes
-rw-r--r--graphics/epix/doc/manual.tex5030
-rw-r--r--graphics/epix/doc/marker.eepic39
-rw-r--r--graphics/epix/doc/marker.xp68
-rw-r--r--graphics/epix/doc/my_code.cc15
-rw-r--r--graphics/epix/doc/my_code.h10
-rw-r--r--graphics/epix/doc/objects.eepic412
-rw-r--r--graphics/epix/doc/objects.xp33
-rw-r--r--graphics/epix/doc/pathstyle.eepic225
-rw-r--r--graphics/epix/doc/pathstyle.xp24
-rw-r--r--graphics/epix/doc/plot_a.eepic95
-rw-r--r--graphics/epix/doc/plot_a.xp27
-rw-r--r--graphics/epix/doc/plot_b.eepic225
-rw-r--r--graphics/epix/doc/plot_b.xp27
-rw-r--r--graphics/epix/doc/plotting.eepic82
-rw-r--r--graphics/epix/doc/plotting.xp26
-rw-r--r--graphics/epix/doc/plotting2.eepic1766
-rw-r--r--graphics/epix/doc/plotting2.xp29
-rw-r--r--graphics/epix/doc/plotting3.eepic146
-rw-r--r--graphics/epix/doc/plotting3.xp43
-rw-r--r--graphics/epix/doc/scaling.eepic56
-rw-r--r--graphics/epix/doc/scaling.xp37
-rw-r--r--graphics/epix/doc/sgn.eepic30
-rw-r--r--graphics/epix/doc/sgn.xp28
-rw-r--r--graphics/epix/doc/sinx.eepic40
-rw-r--r--graphics/epix/doc/sinx.xp23
-rw-r--r--graphics/epix/doc/slices.eepic45
-rw-r--r--graphics/epix/doc/slices.xp39
-rw-r--r--graphics/epix/domain.cc370
-rw-r--r--graphics/epix/domain.h143
-rw-r--r--graphics/epix/edge_data.h75
-rw-r--r--graphics/epix/eepic.cc297
-rw-r--r--graphics/epix/eepic.h127
-rw-r--r--graphics/epix/elaps.11
-rw-r--r--graphics/epix/elaps.in485
-rw-r--r--graphics/epix/enums.h52
-rw-r--r--graphics/epix/epix-lib.sh179
-rw-r--r--graphics/epix/epix.1.in50
-rw-r--r--graphics/epix/epix.el.in1068
-rw-r--r--graphics/epix/epix.in340
-rw-r--r--graphics/epix/errors.h55
-rw-r--r--graphics/epix/facet.cc505
-rw-r--r--graphics/epix/facet.h105
-rw-r--r--graphics/epix/files224
-rw-r--r--graphics/epix/flix.11
-rw-r--r--graphics/epix/flix.in563
-rw-r--r--graphics/epix/fmt_template.cc177
-rw-r--r--graphics/epix/fmt_template.h170
-rw-r--r--graphics/epix/format.cc720
-rw-r--r--graphics/epix/format.h300
-rw-r--r--graphics/epix/frac.cc262
-rw-r--r--graphics/epix/frac.h81
-rw-r--r--graphics/epix/frame.cc114
-rw-r--r--graphics/epix/frame.h82
-rw-r--r--graphics/epix/functions.cc398
-rw-r--r--graphics/epix/functions.h147
-rw-r--r--graphics/epix/geometry.cc804
-rw-r--r--graphics/epix/geometry.h125
-rw-r--r--graphics/epix/glyph.cc145
-rw-r--r--graphics/epix/glyph.h85
-rw-r--r--graphics/epix/halfspace.cc67
-rw-r--r--graphics/epix/halfspace.h67
-rw-r--r--graphics/epix/hatching.cc258
-rw-r--r--graphics/epix/hatching.h123
-rw-r--r--graphics/epix/install-sh323
-rw-r--r--graphics/epix/intersections.cc318
-rw-r--r--graphics/epix/intersections.h70
-rw-r--r--graphics/epix/interval.cc228
-rw-r--r--graphics/epix/interval.h81
-rw-r--r--graphics/epix/label_data.cc140
-rw-r--r--graphics/epix/label_data.h97
-rw-r--r--graphics/epix/label_style.cc177
-rw-r--r--graphics/epix/label_style.h136
-rw-r--r--graphics/epix/laps.11
-rw-r--r--graphics/epix/laps.in259
-rw-r--r--graphics/epix/legend.cc204
-rw-r--r--graphics/epix/legend.h94
-rw-r--r--graphics/epix/legend_item.cc166
-rw-r--r--graphics/epix/legend_item.h120
-rw-r--r--graphics/epix/legend_tile.cc173
-rw-r--r--graphics/epix/legend_tile.h94
-rw-r--r--graphics/epix/length.cc277
-rw-r--r--graphics/epix/length.h110
-rw-r--r--graphics/epix/lens.cc162
-rw-r--r--graphics/epix/lens.h99
-rw-r--r--graphics/epix/make_header35
-rw-r--r--graphics/epix/map.h167
-rw-r--r--graphics/epix/marker_style.cc79
-rw-r--r--graphics/epix/marker_style.h59
-rw-r--r--graphics/epix/markers.cc308
-rw-r--r--graphics/epix/markers.h119
-rw-r--r--graphics/epix/mask_diamond.cc129
-rw-r--r--graphics/epix/mask_diamond.h89
-rw-r--r--graphics/epix/mask_ellipse.cc136
-rw-r--r--graphics/epix/mask_ellipse.h89
-rw-r--r--graphics/epix/mask_rectangle.cc129
-rw-r--r--graphics/epix/mask_rectangle.h89
-rw-r--r--graphics/epix/missing360
-rw-r--r--graphics/epix/mkinstalldirs158
-rw-r--r--graphics/epix/paint_style.cc145
-rw-r--r--graphics/epix/paint_style.h103
-rw-r--r--graphics/epix/pairs.cc158
-rw-r--r--graphics/epix/pairs.h88
-rw-r--r--graphics/epix/path.cc329
-rw-r--r--graphics/epix/path.h135
-rw-r--r--graphics/epix/path_data.cc280
-rw-r--r--graphics/epix/path_data.h101
-rw-r--r--graphics/epix/path_style.cc160
-rw-r--r--graphics/epix/path_style.h83
-rw-r--r--graphics/epix/pen_arrow.cc190
-rw-r--r--graphics/epix/pen_arrow.h83
-rw-r--r--graphics/epix/pen_data.cc88
-rw-r--r--graphics/epix/pen_data.h82
-rw-r--r--graphics/epix/pen_fill.cc149
-rw-r--r--graphics/epix/pen_fill.h83
-rw-r--r--graphics/epix/pen_line.cc125
-rw-r--r--graphics/epix/pen_line.h79
-rw-r--r--graphics/epix/picture.cc429
-rw-r--r--graphics/epix/picture.h170
-rw-r--r--graphics/epix/picture_data.cc193
-rw-r--r--graphics/epix/picture_data.h113
-rw-r--r--graphics/epix/plane.cc143
-rw-r--r--graphics/epix/plane.h74
-rw-r--r--graphics/epix/plot_algorithms.h245
-rw-r--r--graphics/epix/plots.cc613
-rw-r--r--graphics/epix/plots.h206
-rw-r--r--graphics/epix/pst.cc359
-rw-r--r--graphics/epix/pst.h124
-rw-r--r--graphics/epix/samples/Makefile.am20
-rw-r--r--graphics/epix/samples/Makefile.in340
-rw-r--r--graphics/epix/samples/README258
-rw-r--r--graphics/epix/samples/R_demo.xp69
-rw-r--r--graphics/epix/samples/S2_harmonics.xp104
-rw-r--r--graphics/epix/samples/artifacts.xp51
-rw-r--r--graphics/epix/samples/binom.cc37
-rw-r--r--graphics/epix/samples/bowl.xp55
-rw-r--r--graphics/epix/samples/butterfly.xp136
-rw-r--r--graphics/epix/samples/calculus.xp43
-rw-r--r--graphics/epix/samples/clipping.xp233
-rw-r--r--graphics/epix/samples/color_sep.xp76
-rw-r--r--graphics/epix/samples/conic.xp55
-rw-r--r--graphics/epix/samples/contour.xp56
-rw-r--r--graphics/epix/samples/coord_tricks.xp66
-rw-r--r--graphics/epix/samples/cropplot.xp35
-rw-r--r--graphics/epix/samples/cube.flx44
-rw-r--r--graphics/epix/samples/dataplot.xp55
-rw-r--r--graphics/epix/samples/decorate.xp120
-rw-r--r--graphics/epix/samples/demoivre.xp42
-rw-r--r--graphics/epix/samples/denom.xp39
-rw-r--r--graphics/epix/samples/densityplot.xp44
-rw-r--r--graphics/epix/samples/dipole.xp86
-rw-r--r--graphics/epix/samples/extract.xp109
-rw-r--r--graphics/epix/samples/geomsum.xp37
-rw-r--r--graphics/epix/samples/golden_rect.xp29
-rw-r--r--graphics/epix/samples/helicoid.flx133
-rw-r--r--graphics/epix/samples/hello.xp20
-rw-r--r--graphics/epix/samples/histogram.xp83
-rw-r--r--graphics/epix/samples/house.flx88
-rw-r--r--graphics/epix/samples/hyperboloid.xp63
-rw-r--r--graphics/epix/samples/inverse.xp74
-rw-r--r--graphics/epix/samples/koch.xp38
-rw-r--r--graphics/epix/samples/label_debug.xp132
-rw-r--r--graphics/epix/samples/layout.xp36
-rw-r--r--graphics/epix/samples/layout2.xp42
-rw-r--r--graphics/epix/samples/legend.xp72
-rw-r--r--graphics/epix/samples/levelset.xp60
-rw-r--r--graphics/epix/samples/levelset2.xp72
-rw-r--r--graphics/epix/samples/levelset3.xp89
-rw-r--r--graphics/epix/samples/lighting.flx132
-rw-r--r--graphics/epix/samples/lighting.h114
-rw-r--r--graphics/epix/samples/line_debug.xp126
-rw-r--r--graphics/epix/samples/lissajous.xp28
-rw-r--r--graphics/epix/samples/log.xp217
-rw-r--r--graphics/epix/samples/lorenz.xp70
-rw-r--r--graphics/epix/samples/medians.xp134
-rw-r--r--graphics/epix/samples/minkowski.xp103
-rw-r--r--graphics/epix/samples/mirrorball.flx93
-rw-r--r--graphics/epix/samples/newton.xp43
-rw-r--r--graphics/epix/samples/objects.xp32
-rw-r--r--graphics/epix/samples/oscillator.xp89
-rw-r--r--graphics/epix/samples/parabola.xp32
-rw-r--r--graphics/epix/samples/pascal.xp53
-rw-r--r--graphics/epix/samples/pendulum.flx62
-rw-r--r--graphics/epix/samples/planes.xp29
-rw-r--r--graphics/epix/samples/plotting.xp26
-rw-r--r--graphics/epix/samples/plotting2.xp29
-rw-r--r--graphics/epix/samples/plotting3.xp43
-rw-r--r--graphics/epix/samples/polar.xp29
-rw-r--r--graphics/epix/samples/pole.xp60
-rw-r--r--graphics/epix/samples/polyhedra.xp129
-rw-r--r--graphics/epix/samples/riemann.flx68
-rw-r--r--graphics/epix/samples/saddle.xp70
-rw-r--r--graphics/epix/samples/semicirc.xp28
-rw-r--r--graphics/epix/samples/shadeplot.xp61
-rw-r--r--graphics/epix/samples/slopefield.xp29
-rw-r--r--graphics/epix/samples/sphere.xp46
-rw-r--r--graphics/epix/samples/spherical.xp76
-rw-r--r--graphics/epix/samples/sqrt.xp51
-rw-r--r--graphics/epix/samples/sqrt2.xp64
-rw-r--r--graphics/epix/samples/std_F.cc124
-rw-r--r--graphics/epix/samples/std_F.h83
-rw-r--r--graphics/epix/samples/std_F.xp88
-rw-r--r--graphics/epix/samples/steiner.flx50
-rw-r--r--graphics/epix/samples/steiner2.flx70
-rw-r--r--graphics/epix/samples/surface_shade.xp46
-rw-r--r--graphics/epix/samples/symmetries.xp87
-rw-r--r--graphics/epix/samples/tori.xp63
-rw-r--r--graphics/epix/samples/torus.xp39
-rw-r--r--graphics/epix/samples/trig.flx74
-rw-r--r--graphics/epix/samples/twisted_cubic.xp106
-rw-r--r--graphics/epix/samples/uppersum.xp37
-rw-r--r--graphics/epix/samples/vfield.xp71
-rw-r--r--graphics/epix/samples/weierstrass.xp36
-rw-r--r--graphics/epix/samples/wheel.xp50
-rw-r--r--graphics/epix/screen.cc390
-rw-r--r--graphics/epix/screen.h175
-rw-r--r--graphics/epix/screen_crop.cc70
-rw-r--r--graphics/epix/screen_crop.h49
-rw-r--r--graphics/epix/screen_data.cc572
-rw-r--r--graphics/epix/screen_data.h153
-rw-r--r--graphics/epix/screen_mask.cc55
-rw-r--r--graphics/epix/screen_mask.h97
-rw-r--r--graphics/epix/segment.cc111
-rw-r--r--graphics/epix/segment.h84
-rw-r--r--graphics/epix/sphere.cc131
-rw-r--r--graphics/epix/sphere.h87
-rw-r--r--graphics/epix/spline.cc145
-rw-r--r--graphics/epix/spline.h63
-rw-r--r--graphics/epix/spline_data.h51
-rw-r--r--graphics/epix/state.cc509
-rw-r--r--graphics/epix/state.h213
-rw-r--r--graphics/epix/surface.cc1072
-rw-r--r--graphics/epix/surface.h194
-rw-r--r--graphics/epix/tikz.cc312
-rw-r--r--graphics/epix/tikz.h152
-rw-r--r--graphics/epix/tile.cc38
-rw-r--r--graphics/epix/tile.h62
-rw-r--r--graphics/epix/triples.cc211
-rw-r--r--graphics/epix/triples.h115
-rw-r--r--graphics/epix/utils.cc124
-rw-r--r--graphics/epix/utils.h56
-rw-r--r--graphics/epix/verbatim.cc80
-rw-r--r--graphics/epix/verbatim.h66
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdfbin538765 -> 538748 bytes
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex4
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty4
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/kodi.sty2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex4
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex3
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex2
-rw-r--r--graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex2
-rw-r--r--graphics/svg/README.md8
-rw-r--r--graphics/svg/doc/svg.pdfbin1040831 -> 1042481 bytes
-rw-r--r--graphics/svg/source/svg.dtx2952
-rw-r--r--macros/latex/contrib/poemscol/poemscol.dtx294
-rw-r--r--macros/latex/contrib/poemscol/poemscol.pdfbin726759 -> 733826 bytes
-rw-r--r--macros/latex/contrib/thuthesis/Makefile10
-rw-r--r--macros/latex/contrib/thuthesis/README.md16
-rw-r--r--macros/latex/contrib/thuthesis/data/abstract.tex2
-rw-r--r--macros/latex/contrib/thuthesis/data/acknowledgements.tex2
-rw-r--r--macros/latex/contrib/thuthesis/data/appendix-survey.tex2
-rw-r--r--macros/latex/contrib/thuthesis/data/appendix-translation.tex2
-rw-r--r--macros/latex/contrib/thuthesis/data/chap01.tex2
-rw-r--r--macros/latex/contrib/thuthesis/data/chap02.tex2
-rw-r--r--macros/latex/contrib/thuthesis/data/denotation.tex2
-rw-r--r--macros/latex/contrib/thuthesis/data/resume.tex2
-rw-r--r--macros/latex/contrib/thuthesis/main.pdfbin877231 -> 0 bytes
-rw-r--r--macros/latex/contrib/thuthesis/math_commands.tex2
-rw-r--r--macros/latex/contrib/thuthesis/spine.pdfbin20346 -> 17166 bytes
-rw-r--r--macros/latex/contrib/thuthesis/spine.tex24
-rw-r--r--macros/latex/contrib/thuthesis/thusetup.tex12
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-example.pdfbin0 -> 877155 bytes
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-example.tex (renamed from macros/latex/contrib/thuthesis/main.tex)0
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.dtx389
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.ins2
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.pdfbin1050296 -> 1075242 bytes
-rw-r--r--macros/latex/contrib/thuthesis/tsinghua-name-bachelor.pdf (renamed from macros/latex/contrib/thuthesis/tsinghua.pdf)bin14186 -> 14186 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/README.md6
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdfbin574095 -> 574095 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdfbin618688 -> 618688 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdfbin571236 -> 571236 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdfbin583232 -> 583232 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdfbin588996 -> 589088 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdfbin822678 -> 822674 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdfbin558962 -> 558962 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdfbin848530 -> 852207 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdfbin550566 -> 550435 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdfbin586726 -> 586726 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdfbin815850 -> 815848 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis_maschbau.pdfbin0 -> 814609 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib12
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis_maschbau.tex438
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudabeamer.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.def6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaexercise.cls63
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudafonts.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaletter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaposter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudapub.cls15
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudarules.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasciposter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudathesis.cfg16
-rw-r--r--macros/xetex/latex/quran/README4
-rw-r--r--macros/xetex/latex/quran/doc/quran-doc.pdfbin331344 -> 335927 bytes
-rw-r--r--macros/xetex/latex/quran/doc/quran-doc.tex64
-rw-r--r--macros/xetex/latex/quran/doc/quran-test.pdfbin33000 -> 33629 bytes
-rw-r--r--macros/xetex/latex/quran/doc/quran-test1.pdfbin54267 -> 54266 bytes
-rw-r--r--macros/xetex/latex/quran/doc/quran-test2.pdfbin63307 -> 63297 bytes
-rw-r--r--macros/xetex/latex/quran/tex/quran-transfr.def137
-rw-r--r--macros/xetex/latex/quran/tex/quran.sty11
-rw-r--r--macros/xetex/latex/quran/tex/qurantext-fr.translation.def6257
-rw-r--r--support/spix/CHANGELOG.md5
-rw-r--r--support/spix/LICENSE.txt674
-rw-r--r--support/spix/README.md66
-rw-r--r--support/spix/spix.pdfbin0 -> 1521639 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb134
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2198256 -> 2198456 bytes
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini8
-rw-r--r--systems/win32/w32tex/ChangeLog16
-rw-r--r--timestamp2
480 files changed, 10457 insertions, 73755 deletions
diff --git a/FILES.byname b/FILES.byname
index bc946cab1d..0aaaf3d513 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -5003,7 +5003,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2020/06/11 | 122703 | FILES.last07days
+2020/06/12 | 98984 | FILES.last07days
2018/06/27 | 99883 | fonts/academicons/academicons.pdf
2018/06/27 | 10779 | fonts/academicons/academicons.sty
2018/06/27 | 5774 | fonts/academicons/academicons.tex
@@ -49105,28 +49105,28 @@
1992/09/27 | 415 | fonts/hands/reverse.mf
1992/09/27 | 518 | fonts/hands/rvmirror.mf
2005/05/20 | 3188 | fonts/hands.zip
-2020/05/24 | 4406268 | fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otf
-2020/05/24 | 4652576 | fonts/haranoaji-extra/HaranoAjiGothic-Light.otf
-2020/05/24 | 4676340 | fonts/haranoaji-extra/HaranoAjiGothic-Normal.otf
-2020/05/24 | 5687556 | fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otf
-2020/05/24 | 6381036 | fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otf
-2020/05/24 | 6246600 | fonts/haranoaji-extra/HaranoAjiMincho-Medium.otf
-2020/05/24 | 6284176 | fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otf
+2020/06/12 | 4406652 | fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otf
+2020/06/12 | 4652960 | fonts/haranoaji-extra/HaranoAjiGothic-Light.otf
+2020/06/12 | 4676724 | fonts/haranoaji-extra/HaranoAjiGothic-Normal.otf
+2020/06/12 | 5687960 | fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otf
+2020/06/12 | 6381440 | fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otf
+2020/06/12 | 6247004 | fonts/haranoaji-extra/HaranoAjiMincho-Medium.otf
+2020/06/12 | 6284580 | fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otf
2020/04/18 | 4301 | fonts/haranoaji-extra/LICENSE
-2020/05/24 | 3217 | fonts/haranoaji-extra/README
-2020/05/24 | 32688524 | fonts/haranoaji-extra.zip
-2020/05/24 | 4832732 | fonts/haranoaji/HaranoAjiGothic-Bold.otf
+2020/06/13 | 3217 | fonts/haranoaji-extra/README
+2020/06/12 | 32690222 | fonts/haranoaji-extra.zip
+2020/06/12 | 4833116 | fonts/haranoaji/HaranoAjiGothic-Bold.otf
2020/04/14 | 214 | fonts/haranoaji/HaranoAjiGothic.fontspec
-2020/05/24 | 5065436 | fonts/haranoaji/HaranoAjiGothic-Heavy.otf
-2020/05/24 | 4706532 | fonts/haranoaji/HaranoAjiGothic-Medium.otf
-2020/05/24 | 4686816 | fonts/haranoaji/HaranoAjiGothic-Regular.otf
-2020/05/24 | 6446248 | fonts/haranoaji/HaranoAjiMincho-Bold.otf
+2020/06/12 | 5065820 | fonts/haranoaji/HaranoAjiGothic-Heavy.otf
+2020/06/12 | 4706916 | fonts/haranoaji/HaranoAjiGothic-Medium.otf
+2020/06/12 | 4687200 | fonts/haranoaji/HaranoAjiGothic-Regular.otf
+2020/06/12 | 6446652 | fonts/haranoaji/HaranoAjiMincho-Bold.otf
2020/04/14 | 211 | fonts/haranoaji/HaranoAjiMincho.fontspec
-2020/05/24 | 6090316 | fonts/haranoaji/HaranoAjiMincho-Light.otf
-2020/05/24 | 6171416 | fonts/haranoaji/HaranoAjiMincho-Regular.otf
+2020/06/12 | 6090720 | fonts/haranoaji/HaranoAjiMincho-Light.otf
+2020/06/12 | 6171820 | fonts/haranoaji/HaranoAjiMincho-Regular.otf
2020/04/18 | 4301 | fonts/haranoaji/LICENSE
-2020/05/24 | 3217 | fonts/haranoaji/README
-2020/05/24 | 32631775 | fonts/haranoaji.zip
+2020/06/13 | 3217 | fonts/haranoaji/README
+2020/06/12 | 32633550 | fonts/haranoaji.zip
2020/05/19 | 56515 | fonts/helmholtz-ellis-ji-notation/font/HEJI2Text.otf
2020/05/19 | 14207 | fonts/helmholtz-ellis-ji-notation/helmholtz-ellis-ji-notation.dtx
2020/05/19 | 1915 | fonts/helmholtz-ellis-ji-notation/helmholtz-ellis-ji-notation.ins
@@ -130546,351 +130546,6 @@
2017/08/22 | 240 | graphics/endofproofwd/endofproofwd.sty
2017/08/22 | 683 | graphics/endofproofwd/README.txt
2017/08/22 | 2694 | graphics/endofproofwd.zip
-2007/07/05 | 32125 | graphics/epix/aclocal.m4
-2007/08/15 | 1983 | graphics/epix/active_screen.cc
-2007/08/15 | 2012 | graphics/epix/active_screen.h
-2007/09/23 | 6679 | graphics/epix/affine.cc
-2007/09/23 | 3413 | graphics/epix/affine.h
-2007/09/25 | 2332 | graphics/epix/angle_units.cc
-2007/09/25 | 2138 | graphics/epix/angle_units.h
-2007/09/26 | 3378 | graphics/epix/arrow_data.cc
-2007/09/26 | 2001 | graphics/epix/arrow_data.h
-2007/09/09 | 2520 | graphics/epix/arrow_style.cc
-2007/09/09 | 2109 | graphics/epix/arrow_style.h
-2007/09/12 | 98 | graphics/epix/AUTHORS
-2007/09/23 | 22063 | graphics/epix/axis.cc
-2007/08/23 | 6666 | graphics/epix/axis.h
-2007/07/05 | 349 | graphics/epix/bash_completions
-2007/09/19 | 870 | graphics/epix/BUGS
-2007/09/26 | 6818 | graphics/epix/camera.cc
-2007/09/26 | 3876 | graphics/epix/camera.h
-2007/10/03 | 26945 | graphics/epix/ChangeLog
-2007/08/15 | 4111 | graphics/epix/circle.cc
-2007/09/26 | 2706 | graphics/epix/circle.h
-2007/08/23 | 3878 | graphics/epix/clipping.cc
-2007/08/23 | 2130 | graphics/epix/clipping.h
-2007/09/26 | 1541 | graphics/epix/Color_Base.cc
-2007/09/26 | 2363 | graphics/epix/Color_Base.h
-2007/09/26 | 6831 | graphics/epix/Color.cc
-2007/09/26 | 4021 | graphics/epix/Color_CMY.cc
-2007/09/26 | 2369 | graphics/epix/Color_CMY.h
-2007/09/26 | 5649 | graphics/epix/Color_CMYK.cc
-2007/09/26 | 2439 | graphics/epix/Color_CMYK.h
-2007/09/26 | 3045 | graphics/epix/Color_Gray.cc
-2007/09/26 | 1880 | graphics/epix/Color_Gray.h
-2007/09/26 | 4348 | graphics/epix/Color.h
-2007/09/26 | 2250 | graphics/epix/Color_Neutral.cc
-2007/09/26 | 1947 | graphics/epix/Color_Neutral.h
-2007/09/26 | 3382 | graphics/epix/Color_RGB.cc
-2007/09/26 | 1917 | graphics/epix/Color_RGB.h
-2007/09/26 | 6647 | graphics/epix/Color_Sep.cc
-2007/09/26 | 3668 | graphics/epix/Color_Sep.h
-2007/09/26 | 3015 | graphics/epix/Color_Utils.cc
-2007/09/26 | 2107 | graphics/epix/Color_Utils.h
-2007/07/05 | 44073 | graphics/epix/config.guess
-2007/07/05 | 32344 | graphics/epix/config.sub
-2007/10/03 | 183616 | graphics/epix/configure
-2007/10/03 | 1611 | graphics/epix/configure.ac
-2007/09/09 | 3122 | graphics/epix/constants.h
-2007/07/05 | 17987 | graphics/epix/COPYING
-2007/07/31 | 5752 | graphics/epix/crop_algorithms.h
-2007/07/05 | 2273 | graphics/epix/cropping.cc
-2007/07/05 | 1898 | graphics/epix/cropping.h
-2007/09/26 | 16882 | graphics/epix/curves.cc
-2007/09/26 | 6354 | graphics/epix/curves.h
-2007/09/26 | 9401 | graphics/epix/data_bins.cc
-2007/09/26 | 3200 | graphics/epix/data_bins.h
-2007/09/26 | 17054 | graphics/epix/data_file.cc
-2007/09/26 | 5631 | graphics/epix/data_file.h
-2007/09/26 | 2232 | graphics/epix/data_mask.cc
-2007/09/26 | 1893 | graphics/epix/data_mask.h
-2007/09/26 | 685 | graphics/epix/debug.h
-2007/07/05 | 15936 | graphics/epix/depcomp
-2007/07/05 | 1473 | graphics/epix/deriv.h
-2007/07/05 | 653 | graphics/epix/doc/alignment.eepic
-2007/07/05 | 551 | graphics/epix/doc/alignment_lr.eepic
-2007/07/05 | 406 | graphics/epix/doc/alignment_lr.xp
-2007/07/05 | 427 | graphics/epix/doc/alignment.xp
-2007/07/05 | 624 | graphics/epix/doc/arrow25.eepic
-2007/07/05 | 621 | graphics/epix/doc/arrow50.eepic
-2007/07/05 | 606 | graphics/epix/doc/arrow.eepic
-2007/07/05 | 251 | graphics/epix/doc/arrow.xp
-2007/07/05 | 455 | graphics/epix/doc/basepoint.eepic
-2007/07/05 | 545 | graphics/epix/doc/basepoint.xp
-2007/09/22 | 12394 | graphics/epix/doc/camera.eepic
-2007/09/22 | 1713 | graphics/epix/doc/camera.xp
-2007/07/05 | 844 | graphics/epix/doc/cb.eepic
-2007/07/05 | 286 | graphics/epix/doc/cb.xp
-2007/07/05 | 4518 | graphics/epix/doc/color_density.eepic
-2007/07/05 | 659 | graphics/epix/doc/color_density.xp
-2007/07/05 | 622 | graphics/epix/doc/dots.eepic
-2007/07/05 | 362 | graphics/epix/doc/dots.xp
-2007/09/23 | 59951 | graphics/epix/doc/ePiX.eepic
-2007/09/26 | 212327 | graphics/epix/doc/epix.info
-2007/09/23 | 2716 | graphics/epix/doc/ePiX.xp
-2007/07/05 | 2112 | graphics/epix/doc/graphpaper.eepic
-2007/07/05 | 331 | graphics/epix/doc/graphpaper.xp
-2007/07/05 | 417 | graphics/epix/doc/hello.eepic
-2007/07/05 | 299 | graphics/epix/doc/hello.xp
-2007/07/05 | 10395 | graphics/epix/doc/koch.eepic
-2007/07/05 | 437 | graphics/epix/doc/koch.xp
-2007/07/05 | 76239 | graphics/epix/doc/layout.eepic
-2007/07/05 | 660 | graphics/epix/doc/layout.xp
-2007/10/03 | 1167 | graphics/epix/doc/Makefile.am
-2007/10/03 | 10518 | graphics/epix/doc/Makefile.in
-2007/10/03 | 710725 | graphics/epix/doc/manual.pdf
-2007/09/26 | 195181 | graphics/epix/doc/manual.tex
-2007/07/05 | 1443 | graphics/epix/doc/marker.eepic
-2007/07/05 | 1419 | graphics/epix/doc/marker.xp
-2007/07/05 | 299 | graphics/epix/doc/my_code.cc
-2007/07/05 | 272 | graphics/epix/doc/my_code.h
-2007/07/05 | 14775 | graphics/epix/doc/objects.eepic
-2007/07/05 | 604 | graphics/epix/doc/objects.xp
-2007/07/17 | 8825 | graphics/epix/doc/pathstyle.eepic
-2007/07/14 | 459 | graphics/epix/doc/pathstyle.xp
-2007/07/05 | 5739 | graphics/epix/doc/plot_a.eepic
-2007/07/05 | 407 | graphics/epix/doc/plot_a.xp
-2007/07/05 | 13477 | graphics/epix/doc/plot_b.eepic
-2007/07/05 | 407 | graphics/epix/doc/plot_b.xp
-2007/09/25 | 79328 | graphics/epix/doc/plotting2.eepic
-2007/09/25 | 464 | graphics/epix/doc/plotting2.xp
-2007/09/26 | 7814 | graphics/epix/doc/plotting3.eepic
-2007/09/26 | 869 | graphics/epix/doc/plotting3.xp
-2007/07/05 | 3939 | graphics/epix/doc/plotting.eepic
-2007/07/05 | 392 | graphics/epix/doc/plotting.xp
-2007/09/01 | 3156 | graphics/epix/doc/scaling.eepic
-2007/09/01 | 791 | graphics/epix/doc/scaling.xp
-2007/07/05 | 1019 | graphics/epix/doc/sgn.eepic
-2007/07/05 | 378 | graphics/epix/doc/sgn.xp
-2007/07/05 | 1750 | graphics/epix/doc/sinx.eepic
-2007/07/05 | 308 | graphics/epix/doc/sinx.xp
-2007/07/05 | 1381 | graphics/epix/doc/slices.eepic
-2007/07/05 | 665 | graphics/epix/doc/slices.xp
-2007/08/10 | 8899 | graphics/epix/domain.cc
-2007/07/05 | 3900 | graphics/epix/domain.h
-2007/09/14 | 2067 | graphics/epix/edge_data.h
-2007/09/26 | 7427 | graphics/epix/eepic.cc
-2007/09/26 | 3708 | graphics/epix/eepic.h
-2007/07/05 | 16 | graphics/epix/elaps.1
-2007/09/11 | 12730 | graphics/epix/elaps.in
-2007/07/05 | 1609 | graphics/epix/enums.h
-2007/07/05 | 1041 | graphics/epix/epix.1.in
-2007/08/30 | 31533 | graphics/epix/epix.el.in
-2007/09/11 | 8634 | graphics/epix/epix.in
-2007/10/03 | 4432 | graphics/epix/epix-lib.sh
-2007/07/30 | 1517 | graphics/epix/errors.h
-2007/09/26 | 13826 | graphics/epix/facet.cc
-2007/09/26 | 2846 | graphics/epix/facet.h
-2007/10/03 | 2532 | graphics/epix/files
-2007/07/05 | 16 | graphics/epix/flix.1
-2007/09/11 | 14413 | graphics/epix/flix.in
-2007/09/26 | 5592 | graphics/epix/fmt_template.cc
-2007/09/26 | 5221 | graphics/epix/fmt_template.h
-2007/09/26 | 17359 | graphics/epix/format.cc
-2007/09/26 | 9973 | graphics/epix/format.h
-2007/09/26 | 5126 | graphics/epix/frac.cc
-2007/09/26 | 2297 | graphics/epix/frac.h
-2007/09/26 | 2814 | graphics/epix/frame.cc
-2007/09/26 | 2224 | graphics/epix/frame.h
-2007/09/26 | 7668 | graphics/epix/functions.cc
-2007/09/26 | 3577 | graphics/epix/functions.h
-2007/09/23 | 21515 | graphics/epix/geometry.cc
-2007/07/05 | 4541 | graphics/epix/geometry.h
-2007/09/25 | 3763 | graphics/epix/glyph.cc
-2007/09/17 | 2175 | graphics/epix/glyph.h
-2007/07/17 | 1845 | graphics/epix/halfspace.cc
-2007/07/17 | 1851 | graphics/epix/halfspace.h
-2007/09/26 | 6084 | graphics/epix/hatching.cc
-2007/09/26 | 2954 | graphics/epix/hatching.h
-2007/09/12 | 4340 | graphics/epix/INSTALL
-2007/07/05 | 9233 | graphics/epix/install-sh
-2007/09/14 | 8104 | graphics/epix/intersections.cc
-2007/07/30 | 2272 | graphics/epix/intersections.h
-2007/09/26 | 4741 | graphics/epix/interval.cc
-2007/09/26 | 2193 | graphics/epix/interval.h
-2007/09/23 | 4190 | graphics/epix/label_data.cc
-2007/09/17 | 2609 | graphics/epix/label_data.h
-2007/09/25 | 4330 | graphics/epix/label_style.cc
-2007/09/25 | 3473 | graphics/epix/label_style.h
-2007/07/05 | 16 | graphics/epix/laps.1
-2007/09/11 | 5704 | graphics/epix/laps.in
-2007/09/29 | 4739 | graphics/epix/legend.cc
-2007/08/16 | 2377 | graphics/epix/legend.h
-2007/09/23 | 4240 | graphics/epix/legend_item.cc
-2007/08/17 | 3144 | graphics/epix/legend_item.h
-2007/09/29 | 4495 | graphics/epix/legend_tile.cc
-2007/09/29 | 2436 | graphics/epix/legend_tile.h
-2007/09/26 | 6276 | graphics/epix/length.cc
-2007/09/26 | 3520 | graphics/epix/length.h
-2007/09/26 | 3658 | graphics/epix/lens.cc
-2007/09/26 | 2645 | graphics/epix/lens.h
-2007/10/03 | 3687 | graphics/epix/Makefile.am
-2007/10/03 | 38565 | graphics/epix/Makefile.in
-2007/09/16 | 942 | graphics/epix/make_header
-2007/07/05 | 4618 | graphics/epix/map.h
-2007/09/17 | 7643 | graphics/epix/markers.cc
-2007/09/09 | 4081 | graphics/epix/markers.h
-2007/07/29 | 2008 | graphics/epix/marker_style.cc
-2007/09/17 | 1654 | graphics/epix/marker_style.h
-2007/08/09 | 3618 | graphics/epix/mask_diamond.cc
-2007/09/06 | 2324 | graphics/epix/mask_diamond.h
-2007/08/09 | 3846 | graphics/epix/mask_ellipse.cc
-2007/09/06 | 2323 | graphics/epix/mask_ellipse.h
-2007/08/09 | 3682 | graphics/epix/mask_rectangle.cc
-2007/09/06 | 2342 | graphics/epix/mask_rectangle.h
-2007/07/05 | 11014 | graphics/epix/missing
-2007/07/05 | 3474 | graphics/epix/mkinstalldirs
-2007/09/12 | 3506 | graphics/epix/NEWS
-2007/09/23 | 3248 | graphics/epix/paint_style.cc
-2007/07/05 | 2640 | graphics/epix/paint_style.h
-2007/09/26 | 3279 | graphics/epix/pairs.cc
-2007/09/26 | 2418 | graphics/epix/pairs.h
-2007/09/26 | 7447 | graphics/epix/path.cc
-2007/09/23 | 6386 | graphics/epix/path_data.cc
-2007/09/15 | 2650 | graphics/epix/path_data.h
-2007/09/26 | 3696 | graphics/epix/path.h
-2007/09/15 | 3878 | graphics/epix/path_style.cc
-2007/07/14 | 2346 | graphics/epix/path_style.h
-2007/09/26 | 4725 | graphics/epix/pen_arrow.cc
-2007/09/26 | 2110 | graphics/epix/pen_arrow.h
-2007/09/23 | 2344 | graphics/epix/pen_data.cc
-2007/09/19 | 2008 | graphics/epix/pen_data.h
-2007/09/26 | 3807 | graphics/epix/pen_fill.cc
-2007/09/26 | 2127 | graphics/epix/pen_fill.h
-2007/09/19 | 3108 | graphics/epix/pen_line.cc
-2007/09/16 | 1989 | graphics/epix/pen_line.h
-2007/09/26 | 9870 | graphics/epix/picture.cc
-2007/09/15 | 5052 | graphics/epix/picture_data.cc
-2007/07/15 | 3354 | graphics/epix/picture_data.h
-2007/09/26 | 5005 | graphics/epix/picture.h
-2007/09/14 | 3021 | graphics/epix/plane.cc
-2007/09/14 | 1824 | graphics/epix/plane.h
-2007/08/01 | 6671 | graphics/epix/plot_algorithms.h
-2007/09/26 | 15966 | graphics/epix/plots.cc
-2007/09/26 | 6974 | graphics/epix/plots.h
-2007/09/12 | 4284 | graphics/epix/POST-INSTALL
-2007/09/26 | 8058 | graphics/epix/pst.cc
-2007/09/26 | 3512 | graphics/epix/pst.h
-2007/09/12 | 3819 | graphics/epix/README
-2007/07/07 | 894 | graphics/epix/samples/artifacts.xp
-2007/07/05 | 672 | graphics/epix/samples/binom.cc
-2007/07/05 | 915 | graphics/epix/samples/bowl.xp
-2007/09/22 | 2777 | graphics/epix/samples/butterfly.xp
-2007/08/19 | 829 | graphics/epix/samples/calculus.xp
-2007/10/03 | 4822 | graphics/epix/samples/clipping.xp
-2007/09/22 | 1303 | graphics/epix/samples/color_sep.xp
-2007/09/22 | 1044 | graphics/epix/samples/conic.xp
-2007/09/23 | 1381 | graphics/epix/samples/contour.xp
-2007/09/22 | 1031 | graphics/epix/samples/coord_tricks.xp
-2007/09/22 | 607 | graphics/epix/samples/cropplot.xp
-2007/09/23 | 859 | graphics/epix/samples/cube.flx
-2007/09/23 | 1215 | graphics/epix/samples/dataplot.xp
-2007/09/23 | 2439 | graphics/epix/samples/decorate.xp
-2007/09/23 | 899 | graphics/epix/samples/demoivre.xp
-2007/10/03 | 894 | graphics/epix/samples/denom.xp
-2007/08/24 | 689 | graphics/epix/samples/densityplot.xp
-2007/09/23 | 1823 | graphics/epix/samples/dipole.xp
-2007/09/22 | 2426 | graphics/epix/samples/extract.xp
-2007/07/20 | 752 | graphics/epix/samples/geomsum.xp
-2007/07/20 | 408 | graphics/epix/samples/golden_rect.xp
-2007/09/23 | 2679 | graphics/epix/samples/helicoid.flx
-2007/09/23 | 298 | graphics/epix/samples/hello.xp
-2007/08/24 | 1630 | graphics/epix/samples/histogram.xp
-2007/09/22 | 1691 | graphics/epix/samples/house.flx
-2007/09/23 | 1472 | graphics/epix/samples/hyperboloid.xp
-2007/09/24 | 1241 | graphics/epix/samples/inverse.xp
-2007/09/23 | 718 | graphics/epix/samples/koch.xp
-2007/09/25 | 2202 | graphics/epix/samples/label_debug.xp
-2007/09/23 | 785 | graphics/epix/samples/layout2.xp
-2007/09/23 | 630 | graphics/epix/samples/layout.xp
-2007/09/22 | 1612 | graphics/epix/samples/legend.xp
-2007/08/24 | 1519 | graphics/epix/samples/levelset2.xp
-2007/08/24 | 1795 | graphics/epix/samples/levelset3.xp
-2007/07/05 | 972 | graphics/epix/samples/levelset.xp
-2007/09/22 | 2944 | graphics/epix/samples/lighting.flx
-2007/07/15 | 2797 | graphics/epix/samples/lighting.h
-2007/09/19 | 2046 | graphics/epix/samples/line_debug.xp
-2007/09/23 | 327 | graphics/epix/samples/lissajous.xp
-2007/07/05 | 5924 | graphics/epix/samples/log.xp
-2007/07/20 | 1248 | graphics/epix/samples/lorenz.xp
-2007/09/23 | 447 | graphics/epix/samples/Makefile.am
-2007/10/03 | 9750 | graphics/epix/samples/Makefile.in
-2007/09/23 | 2385 | graphics/epix/samples/medians.xp
-2007/07/07 | 2248 | graphics/epix/samples/minkowski.xp
-2007/09/22 | 1678 | graphics/epix/samples/mirrorball.flx
-2007/07/20 | 744 | graphics/epix/samples/newton.xp
-2007/09/01 | 573 | graphics/epix/samples/objects.xp
-2007/09/23 | 1714 | graphics/epix/samples/oscillator.xp
-2007/08/24 | 486 | graphics/epix/samples/parabola.xp
-2007/09/22 | 936 | graphics/epix/samples/pascal.xp
-2007/08/03 | 1110 | graphics/epix/samples/pendulum.flx
-2007/07/30 | 409 | graphics/epix/samples/planes.xp
-2007/09/01 | 466 | graphics/epix/samples/plotting2.xp
-2007/09/22 | 900 | graphics/epix/samples/plotting3.xp
-2007/07/05 | 392 | graphics/epix/samples/plotting.xp
-2007/08/24 | 449 | graphics/epix/samples/polar.xp
-2007/08/31 | 1130 | graphics/epix/samples/pole.xp
-2007/07/20 | 1696 | graphics/epix/samples/polyhedra.xp
-2007/09/23 | 1356 | graphics/epix/samples/R_demo.xp
-2007/09/23 | 5773 | graphics/epix/samples/README
-2007/07/07 | 1311 | graphics/epix/samples/riemann.flx
-2007/10/03 | 1866 | graphics/epix/samples/S2_harmonics.xp
-2007/08/24 | 1331 | graphics/epix/samples/saddle.xp
-2007/07/05 | 459 | graphics/epix/samples/semicirc.xp
-2007/08/18 | 1156 | graphics/epix/samples/shadeplot.xp
-2007/09/22 | 467 | graphics/epix/samples/slopefield.xp
-2007/08/01 | 1228 | graphics/epix/samples/sphere.xp
-2007/09/25 | 1641 | graphics/epix/samples/spherical.xp
-2007/09/22 | 1272 | graphics/epix/samples/sqrt2.xp
-2007/07/20 | 826 | graphics/epix/samples/sqrt.xp
-2007/09/23 | 3638 | graphics/epix/samples/std_F.cc
-2007/09/23 | 2241 | graphics/epix/samples/std_F.h
-2007/09/23 | 2609 | graphics/epix/samples/std_F.xp
-2007/08/24 | 1171 | graphics/epix/samples/steiner2.flx
-2007/08/06 | 911 | graphics/epix/samples/steiner.flx
-2007/09/22 | 795 | graphics/epix/samples/surface_shade.xp
-2007/09/22 | 1676 | graphics/epix/samples/symmetries.xp
-2007/09/23 | 1120 | graphics/epix/samples/tori.xp
-2007/07/05 | 589 | graphics/epix/samples/torus.xp
-2007/09/23 | 1203 | graphics/epix/samples/trig.flx
-2007/09/23 | 1736 | graphics/epix/samples/twisted_cubic.xp
-2007/09/23 | 577 | graphics/epix/samples/uppersum.xp
-2007/09/23 | 1835 | graphics/epix/samples/vfield.xp
-2007/07/20 | 575 | graphics/epix/samples/weierstrass.xp
-2007/09/23 | 917 | graphics/epix/samples/wheel.xp
-2007/09/17 | 8171 | graphics/epix/screen.cc
-2007/07/18 | 2127 | graphics/epix/screen_crop.cc
-2007/07/17 | 1541 | graphics/epix/screen_crop.h
-2007/09/29 | 11608 | graphics/epix/screen_data.cc
-2007/09/17 | 4054 | graphics/epix/screen_data.h
-2007/09/17 | 4905 | graphics/epix/screen.h
-2007/07/05 | 1898 | graphics/epix/screen_mask.cc
-2007/07/18 | 2697 | graphics/epix/screen_mask.h
-2007/09/26 | 2369 | graphics/epix/segment.cc
-2007/09/26 | 2140 | graphics/epix/segment.h
-2007/09/26 | 2703 | graphics/epix/sphere.cc
-2007/09/26 | 2166 | graphics/epix/sphere.h
-2007/08/02 | 3932 | graphics/epix/spline.cc
-2007/07/05 | 1613 | graphics/epix/spline_data.h
-2007/08/01 | 1646 | graphics/epix/spline.h
-2007/09/24 | 9837 | graphics/epix/state.cc
-2007/09/24 | 5534 | graphics/epix/state.h
-2007/09/15 | 27921 | graphics/epix/surface.cc
-2007/07/09 | 6379 | graphics/epix/surface.h
-2007/10/03 | 2178 | graphics/epix/THANKS
-2007/09/26 | 7491 | graphics/epix/tikz.cc
-2007/09/26 | 4539 | graphics/epix/tikz.h
-2007/07/05 | 1211 | graphics/epix/tile.cc
-2007/09/16 | 1778 | graphics/epix/tile.h
-2007/07/05 | 0 | graphics/epix/TODO
-2007/09/26 | 4095 | graphics/epix/triples.cc
-2007/09/26 | 3169 | graphics/epix/triples.h
-2007/10/03 | 3401 | graphics/epix/utils.cc
-2007/09/15 | 1719 | graphics/epix/utils.h
-2007/09/16 | 1890 | graphics/epix/verbatim.cc
-2007/09/16 | 1747 | graphics/epix/verbatim.h
-2007/10/03 | 6 | graphics/epix/VERSION
-2007/10/05 | 1316882 | graphics/epix.zip
2020/05/23 | 60557 | graphics/euflag/euflag.dtx
2020/05/23 | 2180 | graphics/euflag/euflag.ins
2020/05/23 | 105069 | graphics/euflag/euflag.pdf
@@ -135111,25 +134766,25 @@
2019/07/12 | 227 | graphics/pgf/contrib/codeanatomy/literatur.bib
2019/07/12 | 1819 | graphics/pgf/contrib/codeanatomy/README.md
2019/07/12 | 304439 | graphics/pgf/contrib/codeanatomy.zip
-2020/06/06 | 538765 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdf
-2020/06/06 | 49549 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex
-2020/06/06 | 471 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty
-2020/06/06 | 355 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex
-2020/06/06 | 2006 | graphics/pgf/contrib/commutative-diagrams/kodi.sty
-2020/06/06 | 175 | graphics/pgf/contrib/commutative-diagrams/README
-2020/06/06 | 460 | graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex
-2020/06/06 | 2302 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex
-2020/06/06 | 2094 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex
-2020/06/06 | 2619 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex
-2020/06/06 | 2009 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex
-2020/06/06 | 5048 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex
-2020/06/06 | 4973 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex
-2020/06/06 | 11700 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex
-2020/06/06 | 5574 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex
-2020/06/06 | 1569 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex
-2020/06/06 | 4382 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex
-2020/06/06 | 7595 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex
-2020/06/06 | 569868 | graphics/pgf/contrib/commutative-diagrams.zip
+2020/06/12 | 538748 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdf
+2020/06/12 | 49549 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex
+2020/06/12 | 471 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty
+2020/06/12 | 355 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex
+2020/06/12 | 2006 | graphics/pgf/contrib/commutative-diagrams/kodi.sty
+2020/06/12 | 175 | graphics/pgf/contrib/commutative-diagrams/README
+2020/06/12 | 460 | graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex
+2020/06/12 | 2302 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex
+2020/06/12 | 2094 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex
+2020/06/12 | 2619 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex
+2020/06/12 | 2009 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex
+2020/06/12 | 5048 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex
+2020/06/12 | 4973 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex
+2020/06/12 | 11729 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex
+2020/06/12 | 5574 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex
+2020/06/12 | 1569 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex
+2020/06/12 | 4382 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex
+2020/06/12 | 7595 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex
+2020/06/12 | 569843 | graphics/pgf/contrib/commutative-diagrams.zip
2020/04/15 | 29754 | graphics/pgf/contrib/dpcircling/DPcircling.pdf
2020/04/15 | 9595 | graphics/pgf/contrib/dpcircling/DPcircling.sty
2020/04/15 | 2836 | graphics/pgf/contrib/dpcircling/DPcircling.tex
@@ -138539,15 +138194,15 @@
2016/12/30 | 5870 | graphics/sparklines/sparklines.sty
2016/12/30 | 11611 | graphics/sparklines/sparklines.tex
2016/12/31 | 142004 | graphics/sparklines.zip
-2020/05/08 | 1461 | graphics/svg/doc/LICENSE.md
-2020/05/08 | 1040831 | graphics/svg/doc/svg.pdf
-2020/05/08 | 3944 | graphics/svg/README.md
-2020/05/08 | 981 | graphics/svg/source/examples/root.C
-2020/05/08 | 714868 | graphics/svg/source/examples/root.svg
-2020/05/08 | 28424 | graphics/svg/source/examples/svg-example.svg
-2020/05/08 | 110 | graphics/svg/source/examples/svg-preamble.tex
-2020/05/08 | 228115 | graphics/svg/source/svg.dtx
-2020/05/08 | 1165118 | graphics/svg.zip
+2020/06/12 | 1461 | graphics/svg/doc/LICENSE.md
+2020/06/12 | 1042481 | graphics/svg/doc/svg.pdf
+2020/06/12 | 4085 | graphics/svg/README.md
+2020/06/12 | 981 | graphics/svg/source/examples/root.C
+2020/06/12 | 714868 | graphics/svg/source/examples/root.svg
+2020/06/12 | 28424 | graphics/svg/source/examples/svg-example.svg
+2020/06/12 | 110 | graphics/svg/source/examples/svg-preamble.tex
+2020/06/12 | 231351 | graphics/svg/source/svg.dtx
+2020/06/12 | 1167724 | graphics/svg.zip
2016/08/13 | 770 | graphics/table-fct/README
2016/08/13 | 62044 | graphics/table-fct/table-fct-doc.pdf
2016/08/13 | 49811 | graphics/table-fct/table-fct-exemples.pdf
@@ -162960,7 +162615,7 @@
2013/02/23 | 92056 | install/graphics/pgf/contrib/battleship.tds.zip
2016/02/19 | 701759 | install/graphics/pgf/contrib/celtic.tds.zip
2020/05/17 | 1847592 | install/graphics/pgf/contrib/circuitikz.tds.zip
-2020/06/06 | 573280 | install/graphics/pgf/contrib/commutative-diagrams.tds.zip
+2020/06/12 | 573255 | install/graphics/pgf/contrib/commutative-diagrams.tds.zip
2017/06/01 | 1005947 | install/graphics/pgf/contrib/hobby.tds.zip
2014/06/15 | 843875 | install/graphics/pgf/contrib/logicpuzzle.tds.zip
2018/07/11 | 969430 | install/graphics/pgf/contrib/penrose.tds.zip
@@ -198015,11 +197670,11 @@
2020/04/19 | 607658 | macros/latex/contrib/pm-isomath.zip
2017/12/23 | 54616 | macros/latex/contrib/poemscol/poemscolcheatsheet.pdf
2017/12/23 | 4455 | macros/latex/contrib/poemscol/poemscolcheatsheet.tex
-2020/06/02 | 477702 | macros/latex/contrib/poemscol/poemscol.dtx
+2020/06/12 | 485498 | macros/latex/contrib/poemscol/poemscol.dtx
2019/08/03 | 1109 | macros/latex/contrib/poemscol/poemscol.ins
-2020/06/02 | 726759 | macros/latex/contrib/poemscol/poemscol.pdf
+2020/06/12 | 733826 | macros/latex/contrib/poemscol/poemscol.pdf
2019/08/03 | 547 | macros/latex/contrib/poemscol/README
-2020/06/02 | 876608 | macros/latex/contrib/poemscol.zip
+2020/06/12 | 885150 | macros/latex/contrib/poemscol.zip
2019/12/14 | 683 | macros/latex/contrib/poetry/CHANGES
2019/12/14 | 19106 | macros/latex/contrib/poetry/lppl.txt
2019/12/14 | 62372 | macros/latex/contrib/poetry/poetry.dtx
@@ -204780,15 +204435,15 @@
2010/01/15 | 10230 | macros/latex/contrib/thumby/thumby.sty
2010/01/15 | 162336 | macros/latex/contrib/thumby.zip
2005/06/21 | 207846 | macros/latex/contrib/thumb.zip
-2020/02/03 | 2620 | macros/latex/contrib/thuthesis/data/abstract.tex
-2020/02/03 | 599 | macros/latex/contrib/thuthesis/data/acknowledgements.tex
-2020/06/01 | 7601 | macros/latex/contrib/thuthesis/data/appendix-survey.tex
+2020/06/12 | 2633 | macros/latex/contrib/thuthesis/data/abstract.tex
+2020/06/12 | 612 | macros/latex/contrib/thuthesis/data/acknowledgements.tex
+2020/06/12 | 7614 | macros/latex/contrib/thuthesis/data/appendix-survey.tex
2020/06/01 | 4251 | macros/latex/contrib/thuthesis/data/appendix.tex
-2020/06/01 | 5092 | macros/latex/contrib/thuthesis/data/appendix-translation.tex
-2020/06/01 | 29537 | macros/latex/contrib/thuthesis/data/chap01.tex
-2020/02/03 | 6122 | macros/latex/contrib/thuthesis/data/chap02.tex
-2020/02/03 | 2789 | macros/latex/contrib/thuthesis/data/denotation.tex
-2020/06/01 | 2639 | macros/latex/contrib/thuthesis/data/resume.tex
+2020/06/12 | 5105 | macros/latex/contrib/thuthesis/data/appendix-translation.tex
+2020/06/12 | 29550 | macros/latex/contrib/thuthesis/data/chap01.tex
+2020/06/12 | 6135 | macros/latex/contrib/thuthesis/data/chap02.tex
+2020/06/12 | 2802 | macros/latex/contrib/thuthesis/data/denotation.tex
+2020/06/12 | 2652 | macros/latex/contrib/thuthesis/data/resume.tex
2020/02/03 | 35716 | macros/latex/contrib/thuthesis/figures/scan-auth.pdf
2020/02/03 | 108783 | macros/latex/contrib/thuthesis/figures/scan-record.pdf
2020/02/03 | 26709 | macros/latex/contrib/thuthesis/figures/scan-statement.pdf
@@ -204796,25 +204451,25 @@
2020/02/03 | 7726 | macros/latex/contrib/thuthesis/figures/thu-lib-logo.pdf
2020/02/03 | 22013 | macros/latex/contrib/thuthesis/figures/thu-text-logo.pdf
2020/02/03 | 121086 | macros/latex/contrib/thuthesis/figures/thu-whole-logo.pdf
-2020/06/02 | 643 | macros/latex/contrib/thuthesis/latexmkrc
-2020/06/08 | 877231 | macros/latex/contrib/thuthesis/main.pdf
-2020/06/01 | 1570 | macros/latex/contrib/thuthesis/main.tex
-2020/06/08 | 1731 | macros/latex/contrib/thuthesis/Makefile
-2020/02/03 | 8469 | macros/latex/contrib/thuthesis/math_commands.tex
-2020/06/08 | 6526 | macros/latex/contrib/thuthesis/README.md
+2020/06/10 | 643 | macros/latex/contrib/thuthesis/latexmkrc
+2020/06/12 | 1784 | macros/latex/contrib/thuthesis/Makefile
+2020/06/12 | 8508 | macros/latex/contrib/thuthesis/math_commands.tex
+2020/06/12 | 6630 | macros/latex/contrib/thuthesis/README.md
2020/02/03 | 428 | macros/latex/contrib/thuthesis/ref/appendix.bib
2020/02/03 | 7290 | macros/latex/contrib/thuthesis/ref/refs.bib
-2020/06/08 | 20346 | macros/latex/contrib/thuthesis/spine.pdf
-2020/02/03 | 424 | macros/latex/contrib/thuthesis/spine.tex
-2020/06/01 | 4789 | macros/latex/contrib/thuthesis/thusetup.tex
+2020/06/12 | 17166 | macros/latex/contrib/thuthesis/spine.pdf
+2020/06/12 | 307 | macros/latex/contrib/thuthesis/spine.tex
+2020/06/12 | 5118 | macros/latex/contrib/thuthesis/thusetup.tex
2020/02/03 | 38523 | macros/latex/contrib/thuthesis/thuthesis-author-year.bst
2020/02/03 | 35002 | macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
-2020/06/08 | 145592 | macros/latex/contrib/thuthesis/thuthesis.dtx
-2020/02/03 | 2208 | macros/latex/contrib/thuthesis/thuthesis.ins
+2020/06/12 | 152255 | macros/latex/contrib/thuthesis/thuthesis.dtx
+2020/06/12 | 877155 | macros/latex/contrib/thuthesis/thuthesis-example.pdf
+2020/06/12 | 1570 | macros/latex/contrib/thuthesis/thuthesis-example.tex
+2020/06/12 | 2222 | macros/latex/contrib/thuthesis/thuthesis.ins
2020/02/03 | 35244 | macros/latex/contrib/thuthesis/thuthesis-numeric.bst
-2020/06/08 | 1050296 | macros/latex/contrib/thuthesis/thuthesis.pdf
-2020/06/08 | 14186 | macros/latex/contrib/thuthesis/tsinghua.pdf
-2020/06/08 | 2463412 | macros/latex/contrib/thuthesis.zip
+2020/06/12 | 1075242 | macros/latex/contrib/thuthesis/thuthesis.pdf
+2020/06/12 | 14186 | macros/latex/contrib/thuthesis/tsinghua-name-bachelor.pdf
+2020/06/12 | 2486252 | macros/latex/contrib/thuthesis.zip
2016/10/11 | 347 | macros/latex/contrib/ticket/comment
2016/09/07 | 42607 | macros/latex/contrib/ticket/doc/ex_file.pdf
2016/09/07 | 1294 | macros/latex/contrib/ticket/doc/ex_file.tex
@@ -206027,58 +205682,60 @@
2010/12/07 | 1604 | macros/latex/contrib/tucv/tucv.ins
2010/12/07 | 180557 | macros/latex/contrib/tucv/tucv.pdf
2010/12/06 | 260987 | macros/latex/contrib/tucv.zip
-2020/04/25 | 574095 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
-2020/04/25 | 618688 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
-2020/04/25 | 571236 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
-2020/04/25 | 583232 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
-2020/04/25 | 588996 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
-2020/04/25 | 822678 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
-2020/04/25 | 558962 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
-2020/04/25 | 848530 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
-2020/04/25 | 550566 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
-2020/04/25 | 586726 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
-2020/04/25 | 815850 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
-2020/04/25 | 2931 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
-2020/04/25 | 5817 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
-2020/04/25 | 1870 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
-2020/04/25 | 8467 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
-2020/04/25 | 3622 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
-2020/04/25 | 6598 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
-2020/04/25 | 4632 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
-2020/04/25 | 20052 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
-2020/04/25 | 5606 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
-2020/04/25 | 17900 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
-2020/04/25 | 2097 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
-2020/04/25 | 10474 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
-2020/04/25 | 19631 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
-2020/04/25 | 9872 | macros/latex/contrib/tuda-ci/README.md
-2020/04/25 | 3891 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
-2020/04/25 | 2175 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
-2020/04/25 | 9000 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
-2020/04/25 | 7553 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
-2020/04/25 | 2227 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
-2020/04/25 | 1668 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
-2020/04/25 | 1673 | macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
-2020/04/25 | 1672 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
-2020/04/25 | 1674 | macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
-2020/04/25 | 1676 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
-2020/04/25 | 1678 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
-2020/04/25 | 6036 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
-2020/04/25 | 4441 | macros/latex/contrib/tuda-ci/tex/tudacolors.def
-2020/04/25 | 4825 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty
-2020/04/25 | 23668 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
-2020/04/25 | 3300 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty
-2020/04/25 | 13340 | macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
-2020/04/25 | 14509 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls
-2020/04/25 | 6594 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
-2020/04/25 | 4328 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
-2020/04/25 | 16739 | macros/latex/contrib/tuda-ci/tex/tudaposter.cls
-2020/04/25 | 36582 | macros/latex/contrib/tuda-ci/tex/tudapub.cls
-2020/04/25 | 5655 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
-2020/04/25 | 17015 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
-2020/04/25 | 6639 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
-2020/04/25 | 23245 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
-2020/04/25 | 6914959 | macros/latex/contrib/tuda-ci.zip
+2020/06/12 | 574095 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+2020/06/12 | 618688 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+2020/06/12 | 571236 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+2020/06/12 | 583232 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+2020/06/12 | 589088 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+2020/06/12 | 822674 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+2020/06/12 | 558962 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+2020/06/12 | 852207 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+2020/06/12 | 550435 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+2020/06/12 | 586726 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+2020/06/12 | 814609 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis_maschbau.pdf
+2020/06/12 | 815848 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+2020/06/12 | 2931 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+2020/06/12 | 5817 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+2020/06/12 | 2154 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+2020/06/12 | 8467 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+2020/06/12 | 3622 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+2020/06/12 | 6598 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+2020/06/12 | 4632 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+2020/06/12 | 20052 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+2020/06/12 | 5606 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+2020/06/12 | 17921 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+2020/06/12 | 2097 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+2020/06/12 | 10474 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+2020/06/12 | 23247 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis_maschbau.tex
+2020/06/12 | 19631 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+2020/06/12 | 10077 | macros/latex/contrib/tuda-ci/README.md
+2020/06/12 | 3891 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+2020/06/12 | 2175 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+2020/06/12 | 9000 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+2020/06/12 | 7553 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+2020/06/12 | 2227 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+2020/06/12 | 1668 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+2020/06/12 | 1673 | macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+2020/06/12 | 1672 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+2020/06/12 | 1674 | macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+2020/06/12 | 1676 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+2020/06/12 | 1678 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+2020/06/12 | 6036 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+2020/06/12 | 4441 | macros/latex/contrib/tuda-ci/tex/tudacolors.def
+2020/06/12 | 4825 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+2020/06/12 | 23923 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+2020/06/12 | 3300 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+2020/06/12 | 13340 | macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+2020/06/12 | 14509 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+2020/06/12 | 6594 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+2020/06/12 | 4328 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+2020/06/12 | 16739 | macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+2020/06/12 | 36377 | macros/latex/contrib/tuda-ci/tex/tudapub.cls
+2020/06/12 | 5655 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
+2020/06/12 | 17015 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+2020/06/12 | 6639 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+2020/06/12 | 23404 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+2020/06/12 | 7697000 | macros/latex/contrib/tuda-ci.zip
2020/01/14 | 1398 | macros/latex/contrib/tudscr/doc/LICENSE.md
2020/01/14 | 1153970 | macros/latex/contrib/tudscr/doc/tudscr.pdf
2020/01/14 | 1138793 | macros/latex/contrib/tudscr/doc/tudscr_print.pdf
@@ -218339,27 +217996,29 @@
2020/03/08 | 1251589 | macros/xetex/latex/quran-de/tex/qurantext-deii.translation.def
2020/03/08 | 1277612 | macros/xetex/latex/quran-de/tex/qurantext-deiv.translation.def
2020/03/08 | 1154544 | macros/xetex/latex/quran-de.zip
-2020/03/15 | 331344 | macros/xetex/latex/quran/doc/quran-doc.pdf
-2020/03/15 | 45054 | macros/xetex/latex/quran/doc/quran-doc.tex
-2020/03/15 | 8846 | macros/xetex/latex/quran/doc/quran.png
-2020/03/15 | 54267 | macros/xetex/latex/quran/doc/quran-test1.pdf
-2020/03/15 | 398 | macros/xetex/latex/quran/doc/quran-test1.tex
-2020/03/15 | 63307 | macros/xetex/latex/quran/doc/quran-test2.pdf
-2020/03/15 | 2191 | macros/xetex/latex/quran/doc/quran-test2.tex
-2020/03/15 | 33000 | macros/xetex/latex/quran/doc/quran-test.pdf
-2020/03/15 | 502 | macros/xetex/latex/quran/doc/quran-test.tex
-2020/03/15 | 716 | macros/xetex/latex/quran/README
-2020/03/15 | 36732 | macros/xetex/latex/quran/tex/quran.sty
-2020/03/15 | 1230282 | macros/xetex/latex/quran/tex/qurantext-de.translation.def
-2020/03/15 | 1089911 | macros/xetex/latex/quran/tex/qurantext-en.translation.def
-2020/03/15 | 1251810 | macros/xetex/latex/quran/tex/qurantext-en.transliteration.def
-2020/03/15 | 1601542 | macros/xetex/latex/quran/tex/qurantext-fa.translation.def
-2020/03/15 | 1447378 | macros/xetex/latex/quran/tex/qurantext-simple.def
-2020/03/15 | 1438728 | macros/xetex/latex/quran/tex/qurantext-uthmani.def
-2020/03/15 | 4555 | macros/xetex/latex/quran/tex/quran-transde.def
-2020/03/15 | 4575 | macros/xetex/latex/quran/tex/quran-transen.def
-2020/03/15 | 4563 | macros/xetex/latex/quran/tex/quran-transfa.def
-2020/03/15 | 4740 | macros/xetex/latex/quran/tex/quran-translt.def
+2020/06/12 | 335927 | macros/xetex/latex/quran/doc/quran-doc.pdf
+2020/06/12 | 46761 | macros/xetex/latex/quran/doc/quran-doc.tex
+2020/06/12 | 8846 | macros/xetex/latex/quran/doc/quran.png
+2020/06/12 | 54266 | macros/xetex/latex/quran/doc/quran-test1.pdf
+2020/06/12 | 398 | macros/xetex/latex/quran/doc/quran-test1.tex
+2020/06/12 | 63297 | macros/xetex/latex/quran/doc/quran-test2.pdf
+2020/06/12 | 2191 | macros/xetex/latex/quran/doc/quran-test2.tex
+2020/06/12 | 33629 | macros/xetex/latex/quran/doc/quran-test.pdf
+2020/06/12 | 502 | macros/xetex/latex/quran/doc/quran-test.tex
+2020/06/12 | 716 | macros/xetex/latex/quran/README
+2020/06/12 | 36930 | macros/xetex/latex/quran/tex/quran.sty
+2020/06/12 | 1230282 | macros/xetex/latex/quran/tex/qurantext-de.translation.def
+2020/06/12 | 1089911 | macros/xetex/latex/quran/tex/qurantext-en.translation.def
+2020/06/12 | 1251810 | macros/xetex/latex/quran/tex/qurantext-en.transliteration.def
+2020/06/12 | 1601542 | macros/xetex/latex/quran/tex/qurantext-fa.translation.def
+2020/06/12 | 1210492 | macros/xetex/latex/quran/tex/qurantext-fr.translation.def
+2020/06/12 | 1447378 | macros/xetex/latex/quran/tex/qurantext-simple.def
+2020/06/12 | 1438728 | macros/xetex/latex/quran/tex/qurantext-uthmani.def
+2020/06/12 | 4555 | macros/xetex/latex/quran/tex/quran-transde.def
+2020/06/12 | 4575 | macros/xetex/latex/quran/tex/quran-transen.def
+2020/06/12 | 4563 | macros/xetex/latex/quran/tex/quran-transfa.def
+2020/06/12 | 4595 | macros/xetex/latex/quran/tex/quran-transfr.def
+2020/06/12 | 4740 | macros/xetex/latex/quran/tex/quran-translt.def
2020/03/08 | 8846 | macros/xetex/latex/quran-ur/doc/quran.png
2020/03/08 | 95524 | macros/xetex/latex/quran-ur/doc/quran-ur-doc.pdf
2020/03/08 | 7505 | macros/xetex/latex/quran-ur/doc/quran-ur-doc.tex
@@ -218376,7 +218035,7 @@
2020/03/08 | 1503110 | macros/xetex/latex/quran-ur/tex/qurantext-urv.translation.def
2020/03/08 | 14908 | macros/xetex/latex/quran-ur/tex/quran-ur.sty
2020/03/08 | 3339866 | macros/xetex/latex/quran-ur.zip
-2020/03/15 | 2437290 | macros/xetex/latex/quran.zip
+2020/06/12 | 2792159 | macros/xetex/latex/quran.zip
2020/04/20 | 1141 | macros/xetex/latex/resumecls/example/Makefile
2020/04/20 | 1072 | macros/xetex/latex/resumecls/example/README.md
2020/04/20 | 229 | macros/xetex/latex/resumecls/example/resume.bib
@@ -249904,6 +249563,12 @@
1992/01/24 | 661 | support/spell/read.me
1991/12/04 | 23045 | support/spell/spell.exe
1992/01/22 | 167 | support/spell/texspell.bat
+2020/06/11 | 117 | support/spix/CHANGELOG.md
+2020/06/11 | 35147 | support/spix/LICENSE.txt
+2020/06/11 | 2482 | support/spix/README.md
+2020/06/11 | 5146 | support/spix/spix-1.0.0b0.tar.gz
+2020/06/11 | 1521639 | support/spix/spix.pdf
+2020/06/12 | 1536419 | support/spix.zip
2016/01/27 | 35147 | support/splint/COPYING
2016/01/27 | 116857 | support/splint/cweb/bo.w
2016/01/27 | 21381 | support/splint/cweb/bs.w
@@ -259841,14 +259506,14 @@
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.amd64-freebsd.r32150.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.amd64-netbsd.r32150.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.armhf-linux.r32150.tar.xz
-2020/05/07 | 907652 | systems/texlive/tlnet/archive/latexindent.doc.r55047.tar.xz
+2020/06/12 | 907844 | systems/texlive/tlnet/archive/latexindent.doc.r55520.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/latexindent.i386-cygwin.r32150.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.i386-freebsd.r32150.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.i386-linux.r32150.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.i386-netbsd.r32150.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.i386-solaris.r32150.tar.xz
-2020/05/07 | 59644 | systems/texlive/tlnet/archive/latexindent.r55047.tar.xz
-2020/05/07 | 8061872 | systems/texlive/tlnet/archive/latexindent.win32.r55047.tar.xz
+2020/06/12 | 59656 | systems/texlive/tlnet/archive/latexindent.r55520.tar.xz
+2020/06/12 | 8061508 | systems/texlive/tlnet/archive/latexindent.win32.r55520.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.x86_64-cygwin.r33557.tar.xz
2019/02/28 | 352 | systems/texlive/tlnet/archive/latexindent.x86_64-darwinlegacy.r43871.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/latexindent.x86_64-darwin.r32150.tar.xz
@@ -260047,8 +259712,8 @@
2020/04/26 | 658568 | systems/texlive/tlnet/archive/libertinus-otf.doc.r54872.tar.xz
2020/04/26 | 3684 | systems/texlive/tlnet/archive/libertinus-otf.r54872.tar.xz
2020/05/08 | 972 | systems/texlive/tlnet/archive/libertinus.r55064.tar.xz
-2020/05/31 | 1329704 | systems/texlive/tlnet/archive/libertinust1math.doc.r55346.tar.xz
-2020/05/31 | 1011304 | systems/texlive/tlnet/archive/libertinust1math.r55346.tar.xz
+2020/06/12 | 1329740 | systems/texlive/tlnet/archive/libertinust1math.doc.r55517.tar.xz
+2020/06/12 | 1011352 | systems/texlive/tlnet/archive/libertinust1math.r55517.tar.xz
2020/03/24 | 371752 | systems/texlive/tlnet/archive/libertinus-type1.doc.r54512.tar.xz
2020/03/24 | 9423996 | systems/texlive/tlnet/archive/libertinus-type1.r54512.tar.xz
2019/02/28 | 46148 | systems/texlive/tlnet/archive/libgreek.doc.r27789.tar.xz
@@ -261198,9 +260863,9 @@
2019/11/07 | 21988 | systems/texlive/tlnet/archive/moderncv.r52669.tar.xz
2019/02/28 | 391208 | systems/texlive/tlnet/archive/modernposter.doc.r47269.tar.xz
2019/02/28 | 2552 | systems/texlive/tlnet/archive/modernposter.r47269.tar.xz
-2019/03/05 | 184868 | systems/texlive/tlnet/archive/moderntimeline.doc.r50228.tar.xz
-2019/03/05 | 2304 | systems/texlive/tlnet/archive/moderntimeline.r50228.tar.xz
-2019/03/05 | 6048 | systems/texlive/tlnet/archive/moderntimeline.source.r50228.tar.xz
+2020/06/12 | 186684 | systems/texlive/tlnet/archive/moderntimeline.doc.r55518.tar.xz
+2020/06/12 | 2516 | systems/texlive/tlnet/archive/moderntimeline.r55518.tar.xz
+2020/06/12 | 6460 | systems/texlive/tlnet/archive/moderntimeline.source.r55518.tar.xz
2020/01/31 | 273852 | systems/texlive/tlnet/archive/modes.doc.r53604.tar.xz
2020/01/31 | 26872 | systems/texlive/tlnet/archive/modes.r53604.tar.xz
2019/11/01 | 534332 | systems/texlive/tlnet/archive/modiagram.doc.r52589.tar.xz
@@ -261698,8 +261363,8 @@
2019/02/28 | 58304 | systems/texlive/tlnet/archive/obnov.r33355.tar.xz
2019/02/28 | 499988 | systems/texlive/tlnet/archive/ocg-p.doc.r28803.tar.xz
2019/02/28 | 4368 | systems/texlive/tlnet/archive/ocg-p.r28803.tar.xz
-2019/11/12 | 5996 | systems/texlive/tlnet/archive/ocgx2.doc.r52730.tar.xz
-2019/11/12 | 13380 | systems/texlive/tlnet/archive/ocgx2.r52730.tar.xz
+2020/06/12 | 6048 | systems/texlive/tlnet/archive/ocgx2.doc.r55519.tar.xz
+2020/06/12 | 13436 | systems/texlive/tlnet/archive/ocgx2.r55519.tar.xz
2020/03/24 | 991556 | systems/texlive/tlnet/archive/ocgx.doc.r54512.tar.xz
2020/03/24 | 2096 | systems/texlive/tlnet/archive/ocgx.r54512.tar.xz
2020/03/24 | 7776 | systems/texlive/tlnet/archive/ocgx.source.r54512.tar.xz
@@ -262920,8 +262585,8 @@
2020/02/13 | 21220 | systems/texlive/tlnet/archive/pstricks-add.r53763.tar.xz
2019/02/28 | 1133128 | systems/texlive/tlnet/archive/pstricks_calcnotes.doc.r34363.tar.xz
2019/02/28 | 512 | systems/texlive/tlnet/archive/pstricks_calcnotes.r34363.tar.xz
-2020/06/10 | 7156552 | systems/texlive/tlnet/archive/pstricks.doc.r55493.tar.xz
-2020/06/10 | 77364 | systems/texlive/tlnet/archive/pstricks.r55493.tar.xz
+2020/06/12 | 7176656 | systems/texlive/tlnet/archive/pstricks.doc.r55515.tar.xz
+2020/06/12 | 75452 | systems/texlive/tlnet/archive/pstricks.r55515.tar.xz
2019/02/28 | 123272 | systems/texlive/tlnet/archive/pstring.doc.r42857.tar.xz
2019/02/28 | 7384 | systems/texlive/tlnet/archive/pstring.r42857.tar.xz
2019/02/28 | 85380 | systems/texlive/tlnet/archive/pst-rputover.doc.r44724.tar.xz
@@ -264584,7 +264249,7 @@
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz
-2020/06/10 | 218656 | systems/texlive/tlnet/archive/texlive-scripts.doc.r55488.tar.xz
+2020/06/12 | 218652 | systems/texlive/tlnet/archive/texlive-scripts.doc.r55511.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz
2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz
@@ -264608,7 +264273,7 @@
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz
-2020/06/10 | 131820 | systems/texlive/tlnet/archive/texlive-scripts.r55488.tar.xz
+2020/06/12 | 131824 | systems/texlive/tlnet/archive/texlive-scripts.r55511.tar.xz
2020/05/31 | 36284 | systems/texlive/tlnet/archive/texlive-scripts.win32.r55357.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz
2020/05/12 | 592 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-darwinlegacy.r55117.tar.xz
@@ -265996,13 +265661,13 @@
2019/02/28 | 344 | systems/texlive/tlnet/archive/xindex.amd64-freebsd.r49312.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/xindex.amd64-netbsd.r49312.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/xindex.armhf-linux.r49312.tar.xz
-2020/06/08 | 462324 | systems/texlive/tlnet/archive/xindex.doc.r55475.tar.xz
+2020/06/12 | 460136 | systems/texlive/tlnet/archive/xindex.doc.r55516.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/xindex.i386-cygwin.r49312.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/xindex.i386-freebsd.r49312.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/xindex.i386-linux.r49312.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/xindex.i386-netbsd.r49312.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/xindex.i386-solaris.r49312.tar.xz
-2020/06/08 | 32452 | systems/texlive/tlnet/archive/xindex.r55475.tar.xz
+2020/06/12 | 31568 | systems/texlive/tlnet/archive/xindex.r55516.tar.xz
2019/02/28 | 680 | systems/texlive/tlnet/archive/xindex.win32.r49312.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/xindex.x86_64-cygwin.r49312.tar.xz
2019/02/28 | 348 | systems/texlive/tlnet/archive/xindex.x86_64-darwinlegacy.r49312.tar.xz
@@ -266243,16 +265908,16 @@
2020/01/24 | 138180 | systems/texlive/tlnet/archive/zxjatype.doc.r53500.tar.xz
2020/01/24 | 8760 | systems/texlive/tlnet/archive/zxjatype.r53500.tar.xz
2020/05/31 | 105475 | systems/texlive/tlnet/install-tl
-2020/06/11 | 5500701 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2020/06/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2020/06/11 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2020/06/12 | 5500776 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2020/06/12 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2020/06/12 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2020/05/31 | 4770 | systems/texlive/tlnet/install-tl-windows.bat
-2020/06/11 | 19382335 | systems/texlive/tlnet/install-tl-windows.exe
-2020/06/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2020/06/11 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2020/06/11 | 24269114 | systems/texlive/tlnet/install-tl.zip
-2020/06/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2020/06/11 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2020/06/12 | 19383612 | systems/texlive/tlnet/install-tl-windows.exe
+2020/06/12 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2020/06/12 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2020/06/12 | 24269097 | systems/texlive/tlnet/install-tl.zip
+2020/06/12 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2020/06/12 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2020/03/05 | 1215 | systems/texlive/tlnet/README.md
2020/04/06 | 5961 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
2016/04/12 | 600 | systems/texlive/tlnet/tlpkg/gpg/random_seed
@@ -266261,7 +265926,7 @@
2020/04/06 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2020/04/28 | 48588 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2020/06/09 | 6329 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2020/06/11 | 6289 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/04/15 | 223687 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2018/04/29 | 13647 | systems/texlive/tlnet/tlpkg/installer/DirSelect.pm
@@ -266308,12 +265973,12 @@
2020/05/17 | 20322 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2020/05/03 | 4786 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2017/11/14 | 27560 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2020/06/11 | 16275306 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2020/06/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2020/06/12 | 16275223 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2020/06/12 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2020/05/13 | 86417 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2020/06/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2020/06/11 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2020/06/11 | 2199632 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2020/06/12 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2020/06/12 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2020/06/12 | 2198256 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2020/04/15 | 58761 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2020/03/20 | 41736 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2020/05/11 | 15010 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -270757,7 +270422,7 @@
2020/02/04 | 281488 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2020/06/11 | 538561 | systems/win32/miktex/tm/packages/files.csv.lzma
+2020/06/12 | 538561 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -271907,9 +271572,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2020/05/17 | 39207 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2020/05/17 | 42854 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2020/06/11 | 200746 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2020/06/11 | 1201222 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2020/06/11 | 1121685 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2020/06/12 | 200712 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2020/06/12 | 1202300 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2020/06/12 | 1121592 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2020/05/17 | 13031 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2020/05/17 | 14067 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
@@ -272377,7 +272042,7 @@
2008/11/07 | 35981 | systems/win32/miktex/tm/packages/prettyref.tar.lzma
2017/07/26 | 201385 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
-2020/06/11 | 848 | systems/win32/miktex/tm/packages/pr.ini
+2020/06/12 | 848 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -273518,10 +273183,10 @@
2010/01/14 | 955365 | systems/win32/visualtex/vx-setup-399.exe
2019/08/12 | 14654 | systems/win32/w32tex/00FILES.euc
2019/08/12 | 14654 | systems/win32/w32tex/00FILES.sjis
-2020/06/06 | 4914892 | systems/win32/w32tex/aleph-w32.tar.xz
+2020/06/11 | 4915564 | systems/win32/w32tex/aleph-w32.tar.xz
2020/06/02 | 66272736 | systems/win32/w32tex/biblatex-biber.tar.xz
2016/12/13 | 65971452 | systems/win32/w32tex/cbfonts.tar.xz
-2020/06/10 | 666207 | systems/win32/w32tex/ChangeLog
+2020/06/11 | 667190 | systems/win32/w32tex/ChangeLog
2009/08/03 | 141221 | systems/win32/w32tex/ChangeLog.0
2009/08/03 | 221890 | systems/win32/w32tex/ChangeLog.1
2009/08/03 | 116462 | systems/win32/w32tex/ChangeLog.2
@@ -273529,7 +273194,7 @@
2017/06/24 | 644754 | systems/win32/w32tex/ChangeLog.4
2020/05/29 | 22110824 | systems/win32/w32tex/cjkzr.tar.xz
2013/04/27 | 15858676 | systems/win32/w32tex/context-doc.tar.xz
-2020/06/06 | 139775008 | systems/win32/w32tex/context.tar.xz
+2020/06/11 | 140046520 | systems/win32/w32tex/context.tar.xz
2020/06/06 | 910020 | systems/win32/w32tex/cweb-w32.tar.xz
2020/03/02 | 6281164 | systems/win32/w32tex/datetime2.tar.xz
2020/06/06 | 845488 | systems/win32/w32tex/dvi2ps-w32.tar.xz
@@ -273540,19 +273205,19 @@
2020/05/29 | 1175668 | systems/win32/w32tex/extractpdfmark-w32.tar.xz
2020/06/06 | 17346380 | systems/win32/w32tex/gregorio-w32.tar.xz
2009/08/03 | 1072620 | systems/win32/w32tex/gtftex.zip
-2020/06/06 | 1834700 | systems/win32/w32tex/jtex-w32.tar.xz
-2020/06/04 | 41923664 | systems/win32/w32tex/latex-dev.tar.xz
+2020/06/11 | 1833552 | systems/win32/w32tex/jtex-w32.tar.xz
+2020/06/11 | 41877900 | systems/win32/w32tex/latex-dev.tar.xz
2020/05/30 | 29268960 | systems/win32/w32tex/latex.tar.xz
2020/06/06 | 996252 | systems/win32/w32tex/lcdf-typetools-w32.tar.xz
2020/06/09 | 399072360 | systems/win32/w32tex/ltxpkgdocs.tar.xz
-2020/06/07 | 34899320 | systems/win32/w32tex/ltxpkgs.tar.xz
-2020/06/10 | 3851332 | systems/win32/w32tex/luajittex-dev-w32.tar.xz
-2020/06/10 | 3793880 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
-2020/06/10 | 3852720 | systems/win32/w32tex/luajittex-w32.tar.xz
-2020/06/10 | 18147012 | systems/win32/w32tex/luatex-dev-w32.tar.xz
-2020/06/10 | 17941004 | systems/win32/w32tex/luatex-exp-w32.tar.xz
+2020/06/11 | 34896928 | systems/win32/w32tex/ltxpkgs.tar.xz
+2020/06/11 | 3852976 | systems/win32/w32tex/luajittex-dev-w32.tar.xz
+2020/06/11 | 3798068 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
+2020/06/11 | 3832868 | systems/win32/w32tex/luajittex-w32.tar.xz
+2020/06/11 | 18137864 | systems/win32/w32tex/luatex-dev-w32.tar.xz
+2020/06/11 | 18155796 | systems/win32/w32tex/luatex-exp-w32.tar.xz
2020/05/25 | 69259880 | systems/win32/w32tex/luatexja.tar.xz
-2020/06/10 | 17923244 | systems/win32/w32tex/luatex-w32.tar.xz
+2020/06/11 | 18142552 | systems/win32/w32tex/luatex-w32.tar.xz
2020/06/06 | 1663388 | systems/win32/w32tex/makeindex-w32.tar.xz
2015/05/26 | 1542676 | systems/win32/w32tex/manual.tar.xz
2020/06/06 | 439416 | systems/win32/w32tex/mftools.tar.xz
@@ -273562,7 +273227,7 @@
2020/06/04 | 9708560 | systems/win32/w32tex/newtxpx-boondoxfonts.tar.xz
2020/06/06 | 1234248 | systems/win32/w32tex/omegaj-w32.tar.xz
2020/03/01 | 355876 | systems/win32/w32tex/otfbeta.tar.xz
-2020/06/07 | 20788812 | systems/win32/w32tex/pdftex-w32.tar.xz
+2020/06/11 | 20741788 | systems/win32/w32tex/pdftex-w32.tar.xz
2020/06/08 | 81170696 | systems/win32/w32tex/pgfcontrib.tar.xz
2015/01/26 | 189072 | systems/win32/w32tex/plain2-2.54-w32.tar.xz
2020/05/26 | 2823676 | systems/win32/w32tex/platex.tar.xz
@@ -273570,8 +273235,8 @@
2020/06/06 | 1168960 | systems/win32/w32tex/pstoedit-w32.tar.xz
2020/06/10 | 274396556 | systems/win32/w32tex/pstricks.tar.xz
2020/06/06 | 517548 | systems/win32/w32tex/psutils-w32.tar.xz
-2020/06/09 | 6461644 | systems/win32/w32tex/ptex-ng-w32.tar.xz
-2020/06/06 | 10485304 | systems/win32/w32tex/ptex-w32.tar.xz
+2020/06/11 | 6461864 | systems/win32/w32tex/ptex-ng-w32.tar.xz
+2020/06/11 | 10488188 | systems/win32/w32tex/ptex-w32.tar.xz
2020/04/10 | 1784316 | systems/win32/w32tex/qpdf-w32.tar.xz
2019/04/15 | 499188 | systems/win32/w32tex/sam2p-w32.tar.xz
2020/01/24 | 24929772 | systems/win32/w32tex/t1fonts.tar.xz
@@ -273593,12 +273258,12 @@
2020/01/19 | 5856 | systems/win32/w32tex/txtutil.tar.xz
2013/04/08 | 71588 | systems/win32/w32tex/ums.tar.xz
2012/05/28 | 233472 | systems/win32/w32tex/unzip.exe
-2020/06/06 | 8482048 | systems/win32/w32tex/uptex-w32.tar.xz
+2020/06/11 | 8477416 | systems/win32/w32tex/uptex-w32.tar.xz
2013/04/08 | 722652 | systems/win32/w32tex/utf.tar.xz
2013/04/08 | 13748 | systems/win32/w32tex/vf-n2bk.tar.xz
2020/03/27 | 38319492 | systems/win32/w32tex/w32tex-src.tar.xz
-2020/06/02 | 99172772 | systems/win32/w32tex/web2c-lib.tar.xz
-2020/06/06 | 44053452 | systems/win32/w32tex/web2c-w32.tar.xz
+2020/06/11 | 99196908 | systems/win32/w32tex/web2c-lib.tar.xz
+2020/06/11 | 44056796 | systems/win32/w32tex/web2c-w32.tar.xz
2020/06/06 | 811152 | systems/win32/w32tex/win64/aleph-w64.tar.xz
2019/12/09 | 22317480 | systems/win32/w32tex/win64/biblatex-biber-w64.tar.xz
2020/06/06 | 2130900 | systems/win32/w32tex/win64/context-w64.tar.xz
@@ -273624,7 +273289,7 @@
2020/06/06 | 376500 | systems/win32/w32tex/win64/mftrace-w64.tar.xz
2020/01/18 | 362540 | systems/win32/w32tex/win64/m-tx-w64.tar.xz
2020/06/06 | 407080 | systems/win32/w32tex/win64/omegaj-w64.tar.xz
-2020/06/06 | 6326216 | systems/win32/w32tex/win64/pdftex-w64.tar.xz
+2020/06/11 | 6323532 | systems/win32/w32tex/win64/pdftex-w64.tar.xz
2015/01/26 | 41440 | systems/win32/w32tex/win64/plain2-2.54-w64.tar.xz
2020/03/20 | 557532 | systems/win32/w32tex/win64/pmx-w64.tar.xz
2020/06/06 | 789616 | systems/win32/w32tex/win64/pstoedit-w64.tar.xz
@@ -273640,7 +273305,7 @@
2020/06/06 | 1806700 | systems/win32/w32tex/win64/uptex-w64.tar.xz
2020/06/06 | 3389636 | systems/win32/w32tex/win64/web2c-w64.tar.xz
2020/06/09 | 10962648 | systems/win32/w32tex/win64/xetex-w64.tar.xz
-2020/06/09 | 48794192 | systems/win32/w32tex/xetex-w32.tar.xz
+2020/06/11 | 48796780 | systems/win32/w32tex/xetex-w32.tar.xz
2020/05/29 | 2936068 | systems/win32/w32tex/xindy-w32.tar.xz
2013/11/19 | 11356248 | systems/win32/w32tex/xymtex.tar.xz
2016/09/09 | 4334636 | systems/win32/w32tex/xypic.tar.xz
@@ -273737,7 +273402,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2020/06/12 | 186 | timestamp
+2020/06/13 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2017/06/30 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 7015a36325..2dad1ac454 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 77cb4bd9ca..57b945ef47 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,8 +1,194 @@
+2020/06/13 | 3217 | fonts/haranoaji/README
+2020/06/13 | 3217 | fonts/haranoaji-extra/README
+2020/06/12 | 981 | graphics/svg/source/examples/root.C
+2020/06/12 | 907844 | systems/texlive/tlnet/archive/latexindent.doc.r55520.tar.xz
+2020/06/12 | 9000 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+2020/06/12 | 885150 | macros/latex/contrib/poemscol.zip
+2020/06/12 | 8846 | macros/xetex/latex/quran/doc/quran.png
+2020/06/12 | 877155 | macros/latex/contrib/thuthesis/thuthesis-example.pdf
+2020/06/12 | 852207 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+2020/06/12 | 8508 | macros/latex/contrib/thuthesis/math_commands.tex
+2020/06/12 | 848 | systems/win32/miktex/tm/packages/pr.ini
+2020/06/12 | 8467 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+2020/06/12 | 822674 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+2020/06/12 | 815848 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+2020/06/12 | 814609 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis_maschbau.pdf
+2020/06/12 | 8061508 | systems/texlive/tlnet/archive/latexindent.win32.r55520.tar.xz
+2020/06/12 | 7697000 | macros/latex/contrib/tuda-ci.zip
+2020/06/12 | 7614 | macros/latex/contrib/thuthesis/data/appendix-survey.tex
+2020/06/12 | 7595 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex
+2020/06/12 | 7553 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+2020/06/12 | 75452 | systems/texlive/tlnet/archive/pstricks.r55515.tar.xz
+2020/06/12 | 733826 | macros/latex/contrib/poemscol/poemscol.pdf
+2020/06/12 | 7176656 | systems/texlive/tlnet/archive/pstricks.doc.r55515.tar.xz
+2020/06/12 | 716 | macros/xetex/latex/quran/README
+2020/06/12 | 714868 | graphics/svg/source/examples/root.svg
+2020/06/12 | 6639 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+2020/06/12 | 6630 | macros/latex/contrib/thuthesis/README.md
+2020/06/12 | 6598 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+2020/06/12 | 6594 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+2020/06/12 | 6460 | systems/texlive/tlnet/archive/moderntimeline.source.r55518.tar.xz
+2020/06/12 | 6446652 | fonts/haranoaji/HaranoAjiMincho-Bold.otf
+2020/06/12 | 6381440 | fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otf
+2020/06/12 | 63297 | macros/xetex/latex/quran/doc/quran-test2.pdf
+2020/06/12 | 6284580 | fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otf
+2020/06/12 | 6247004 | fonts/haranoaji-extra/HaranoAjiMincho-Medium.otf
+2020/06/12 | 618688 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+2020/06/12 | 6171820 | fonts/haranoaji/HaranoAjiMincho-Regular.otf
+2020/06/12 | 6135 | macros/latex/contrib/thuthesis/data/chap02.tex
+2020/06/12 | 612 | macros/latex/contrib/thuthesis/data/acknowledgements.tex
+2020/06/12 | 6090720 | fonts/haranoaji/HaranoAjiMincho-Light.otf
+2020/06/12 | 6048 | systems/texlive/tlnet/archive/ocgx2.doc.r55519.tar.xz
+2020/06/12 | 6036 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+2020/06/12 | 59656 | systems/texlive/tlnet/archive/latexindent.r55520.tar.xz
+2020/06/12 | 589088 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+2020/06/12 | 586726 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+2020/06/12 | 583232 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+2020/06/12 | 5817 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+2020/06/12 | 574095 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+2020/06/12 | 573255 | install/graphics/pgf/contrib/commutative-diagrams.tds.zip
+2020/06/12 | 571236 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+2020/06/12 | 569843 | graphics/pgf/contrib/commutative-diagrams.zip
+2020/06/12 | 5687960 | fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otf
+2020/06/12 | 5655 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
+2020/06/12 | 5606 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+2020/06/12 | 558962 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+2020/06/12 | 5574 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex
+2020/06/12 | 550435 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+2020/06/12 | 5500776 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2020/06/12 | 54266 | macros/xetex/latex/quran/doc/quran-test1.pdf
+2020/06/12 | 538748 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdf
+2020/06/12 | 538561 | systems/win32/miktex/tm/packages/files.csv.lzma
+2020/06/12 | 5118 | macros/latex/contrib/thuthesis/thusetup.tex
+2020/06/12 | 5105 | macros/latex/contrib/thuthesis/data/appendix-translation.tex
+2020/06/12 | 5065820 | fonts/haranoaji/HaranoAjiGothic-Heavy.otf
+2020/06/12 | 5048 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex
+2020/06/12 | 502 | macros/xetex/latex/quran/doc/quran-test.tex
+2020/06/12 | 4973 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex
+2020/06/12 | 49549 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex
+2020/06/12 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2020/06/12 | 485498 | macros/latex/contrib/poemscol/poemscol.dtx
+2020/06/12 | 4833116 | fonts/haranoaji/HaranoAjiGothic-Bold.otf
+2020/06/12 | 4825 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+2020/06/12 | 4740 | macros/xetex/latex/quran/tex/quran-translt.def
+2020/06/12 | 471 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty
+2020/06/12 | 4706916 | fonts/haranoaji/HaranoAjiGothic-Medium.otf
+2020/06/12 | 4687200 | fonts/haranoaji/HaranoAjiGothic-Regular.otf
+2020/06/12 | 4676724 | fonts/haranoaji-extra/HaranoAjiGothic-Normal.otf
+2020/06/12 | 46761 | macros/xetex/latex/quran/doc/quran-doc.tex
+2020/06/12 | 4652960 | fonts/haranoaji-extra/HaranoAjiGothic-Light.otf
+2020/06/12 | 4632 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+2020/06/12 | 460 | graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex
+2020/06/12 | 460136 | systems/texlive/tlnet/archive/xindex.doc.r55516.tar.xz
+2020/06/12 | 4595 | macros/xetex/latex/quran/tex/quran-transfr.def
+2020/06/12 | 4575 | macros/xetex/latex/quran/tex/quran-transen.def
+2020/06/12 | 4563 | macros/xetex/latex/quran/tex/quran-transfa.def
+2020/06/12 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2020/06/12 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2020/06/12 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2020/06/12 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2020/06/12 | 4555 | macros/xetex/latex/quran/tex/quran-transde.def
+2020/06/12 | 4441 | macros/latex/contrib/tuda-ci/tex/tudacolors.def
+2020/06/12 | 4406652 | fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otf
+2020/06/12 | 4382 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex
+2020/06/12 | 4328 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+2020/06/12 | 4085 | graphics/svg/README.md
+2020/06/12 | 398 | macros/xetex/latex/quran/doc/quran-test1.tex
+2020/06/12 | 3891 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+2020/06/12 | 36930 | macros/xetex/latex/quran/tex/quran.sty
+2020/06/12 | 36377 | macros/latex/contrib/tuda-ci/tex/tudapub.cls
+2020/06/12 | 3622 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+2020/06/12 | 355 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex
+2020/06/12 | 33629 | macros/xetex/latex/quran/doc/quran-test.pdf
+2020/06/12 | 335927 | macros/xetex/latex/quran/doc/quran-doc.pdf
+2020/06/12 | 3300 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+2020/06/12 | 32690222 | fonts/haranoaji-extra.zip
+2020/06/12 | 32633550 | fonts/haranoaji.zip
+2020/06/12 | 31568 | systems/texlive/tlnet/archive/xindex.r55516.tar.xz
+2020/06/12 | 307 | macros/latex/contrib/thuthesis/spine.tex
+2020/06/12 | 29550 | macros/latex/contrib/thuthesis/data/chap01.tex
+2020/06/12 | 2931 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+2020/06/12 | 28424 | graphics/svg/source/examples/svg-example.svg
+2020/06/12 | 2802 | macros/latex/contrib/thuthesis/data/denotation.tex
+2020/06/12 | 2792159 | macros/xetex/latex/quran.zip
+2020/06/12 | 2652 | macros/latex/contrib/thuthesis/data/resume.tex
+2020/06/12 | 2633 | macros/latex/contrib/thuthesis/data/abstract.tex
+2020/06/12 | 2619 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex
+2020/06/12 | 2516 | systems/texlive/tlnet/archive/moderntimeline.r55518.tar.xz
+2020/06/12 | 2486252 | macros/latex/contrib/thuthesis.zip
+2020/06/12 | 24269097 | systems/texlive/tlnet/install-tl.zip
+2020/06/12 | 23923 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+2020/06/12 | 23404 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+2020/06/12 | 23247 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis_maschbau.tex
+2020/06/12 | 231351 | graphics/svg/source/svg.dtx
+2020/06/12 | 2302 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex
+2020/06/12 | 2227 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+2020/06/12 | 2222 | macros/latex/contrib/thuthesis/thuthesis.ins
+2020/06/12 | 2198256 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2020/06/12 | 2191 | macros/xetex/latex/quran/doc/quran-test2.tex
+2020/06/12 | 218652 | systems/texlive/tlnet/archive/texlive-scripts.doc.r55511.tar.xz
+2020/06/12 | 2175 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+2020/06/12 | 2154 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+2020/06/12 | 2097 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+2020/06/12 | 2094 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex
+2020/06/12 | 2009 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex
+2020/06/12 | 200712 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2020/06/12 | 2006 | graphics/pgf/contrib/commutative-diagrams/kodi.sty
+2020/06/12 | 20052 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+2020/06/12 | 19631 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+2020/06/12 | 19383612 | systems/texlive/tlnet/install-tl-windows.exe
+2020/06/12 | 186684 | systems/texlive/tlnet/archive/moderntimeline.doc.r55518.tar.xz
+2020/06/12 | 17921 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+2020/06/12 | 1784 | macros/latex/contrib/thuthesis/Makefile
+2020/06/12 | 175 | graphics/pgf/contrib/commutative-diagrams/README
+2020/06/12 | 17166 | macros/latex/contrib/thuthesis/spine.pdf
+2020/06/12 | 17015 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+2020/06/12 | 1678 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+2020/06/12 | 1676 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+2020/06/12 | 1674 | macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+2020/06/12 | 1673 | macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+2020/06/12 | 16739 | macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+2020/06/12 | 1672 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+2020/06/12 | 1668 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+2020/06/12 | 16275223 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2020/06/12 | 1601542 | macros/xetex/latex/quran/tex/qurantext-fa.translation.def
+2020/06/12 | 1570 | macros/latex/contrib/thuthesis/thuthesis-example.tex
+2020/06/12 | 1569 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex
+2020/06/12 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2020/06/12 | 1536419 | support/spix.zip
+2020/06/12 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2020/06/12 | 152255 | macros/latex/contrib/thuthesis/thuthesis.dtx
+2020/06/12 | 1461 | graphics/svg/doc/LICENSE.md
+2020/06/12 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2020/06/12 | 14509 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+2020/06/12 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2020/06/12 | 1447378 | macros/xetex/latex/quran/tex/qurantext-simple.def
+2020/06/12 | 1438728 | macros/xetex/latex/quran/tex/qurantext-uthmani.def
+2020/06/12 | 14186 | macros/latex/contrib/thuthesis/tsinghua-name-bachelor.pdf
+2020/06/12 | 13436 | systems/texlive/tlnet/archive/ocgx2.r55519.tar.xz
+2020/06/12 | 13340 | macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+2020/06/12 | 1329740 | systems/texlive/tlnet/archive/libertinust1math.doc.r55517.tar.xz
+2020/06/12 | 131824 | systems/texlive/tlnet/archive/texlive-scripts.r55511.tar.xz
+2020/06/12 | 1251810 | macros/xetex/latex/quran/tex/qurantext-en.transliteration.def
+2020/06/12 | 1230282 | macros/xetex/latex/quran/tex/qurantext-de.translation.def
+2020/06/12 | 1210492 | macros/xetex/latex/quran/tex/qurantext-fr.translation.def
+2020/06/12 | 1202300 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2020/06/12 | 11729 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex
+2020/06/12 | 1167724 | graphics/svg.zip
+2020/06/12 | 1121592 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2020/06/12 | 110 | graphics/svg/source/examples/svg-preamble.tex
+2020/06/12 | 1089911 | macros/xetex/latex/quran/tex/qurantext-en.translation.def
+2020/06/12 | 1075242 | macros/latex/contrib/thuthesis/thuthesis.pdf
+2020/06/12 | 10474 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+2020/06/12 | 1042481 | graphics/svg/doc/svg.pdf
+2020/06/12 | 1011352 | systems/texlive/tlnet/archive/libertinust1math.r55517.tar.xz
+2020/06/12 | 10077 | macros/latex/contrib/tuda-ci/README.md
+2020/06/11 | 99196908 | systems/win32/w32tex/web2c-lib.tar.xz
2020/06/11 | 9814 | indexing/xindex/lualatex/xindex-lapp.lua
2020/06/11 | 968590 | systems/win32/miktex/tm/packages/latexindent.tar.lzma
2020/06/11 | 9355 | indexing/xindex/lualatex/xindex-base.lua
2020/06/11 | 858 | macros/latex/contrib/moderntimeline/README.md
-2020/06/11 | 848 | systems/win32/miktex/tm/packages/pr.ini
+2020/06/11 | 8477416 | systems/win32/w32tex/uptex-w32.tar.xz
2020/06/11 | 8358 | indexing/xindex/lualatex/xindex-pretty.lua
2020/06/11 | 80323 | indexing/xindex/lualatex/xindex-unicode.lua
2020/06/11 | 781056 | systems/texlive/tlnet/archive/babel.doc.r55508.tar.xz
@@ -10,61 +196,67 @@
2020/06/11 | 7237206 | systems/win32/miktex/tm/packages/pstricks.tar.lzma
2020/06/11 | 70771 | fonts/libertinust1math/tex/libertinust1math.sty
2020/06/11 | 6781 | indexing/xindex/scripts/xindex.lua
+2020/06/11 | 667190 | systems/win32/w32tex/ChangeLog
2020/06/11 | 6609 | macros/latex/contrib/ocgx2/ChangeLog
2020/06/11 | 653560 | systems/texlive/tlnet/archive/babel.source.r55508.tar.xz
+2020/06/11 | 6461864 | systems/win32/w32tex/ptex-ng-w32.tar.xz
+2020/06/11 | 6323532 | systems/win32/w32tex/win64/pdftex-w64.tar.xz
+2020/06/11 | 6289 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/06/11 | 6262 | indexing/xindex/lualatex/xindex-norsk.lua
2020/06/11 | 5870302 | install/fonts/libertinust1math.tds.zip
2020/06/11 | 5861038 | fonts/libertinust1math.zip
2020/06/11 | 551546 | indexing/xindex.zip
-2020/06/11 | 5500701 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2020/06/11 | 538561 | systems/win32/miktex/tm/packages/files.csv.lzma
2020/06/11 | 51927 | macros/latex/contrib/ocgx2/ocgx2.sty
-2020/06/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2020/06/11 | 5146 | support/spix/spix-1.0.0b0.tar.gz
+2020/06/11 | 4915564 | systems/win32/w32tex/aleph-w32.tar.xz
+2020/06/11 | 48796780 | systems/win32/w32tex/xetex-w32.tar.xz
2020/06/11 | 48632 | indexing/xindex/doc/xindex-doc.tex
2020/06/11 | 4634 | indexing/xindex/lualatex/xindex-dtk.lua
-2020/06/11 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2020/06/11 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2020/06/11 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2020/06/11 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2020/06/11 | 44056796 | systems/win32/w32tex/web2c-w32.tar.xz
2020/06/11 | 428876 | systems/texlive/tlnet/archive/cweb.doc.r55499.tar.xz
+2020/06/11 | 41877900 | systems/win32/w32tex/latex-dev.tar.xz
2020/06/11 | 391157 | indexing/xindex/doc/xindex-doc.pdf
2020/06/11 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r55497.tar.xz
+2020/06/11 | 3852976 | systems/win32/w32tex/luajittex-dev-w32.tar.xz
+2020/06/11 | 3832868 | systems/win32/w32tex/luajittex-w32.tar.xz
2020/06/11 | 3810 | fonts/libertinust1math/README
+2020/06/11 | 3798068 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
+2020/06/11 | 35147 | support/spix/LICENSE.txt
+2020/06/11 | 34896928 | systems/win32/w32tex/ltxpkgs.tar.xz
2020/06/11 | 34728 | indexing/xindex/lualatex/xindex-lib.lua
2020/06/11 | 2915 | indexing/xindex/lualatex/xindex-DIN2.lua
2020/06/11 | 29136 | systems/texlive/tlnet/archive/caption.r55507.tar.xz
2020/06/11 | 2878 | indexing/xindex/lualatex/xindex-cfg-common.lua
2020/06/11 | 2831829 | systems/win32/miktex/tm/packages/shtthesis.tar.lzma
2020/06/11 | 2555 | indexing/xindex/lualatex/xindex-cfg.lua
-2020/06/11 | 24269114 | systems/texlive/tlnet/install-tl.zip
+2020/06/11 | 2482 | support/spix/README.md
2020/06/11 | 2377 | macros/latex/contrib/moderntimeline/moderntimeline.ins
2020/06/11 | 2323 | indexing/xindex/lualatex/xindex-cfg-uca.lua
2020/06/11 | 23224 | macros/latex/contrib/moderntimeline/moderntimeline.dtx
2020/06/11 | 22925 | install/macros/latex/contrib/ocgx2.tds.zip
2020/06/11 | 22920 | systems/texlive/tlnet/archive/cweb.r55499.tar.xz
-2020/06/11 | 2199632 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2020/06/11 | 21866 | macros/latex/contrib/ocgx2.zip
2020/06/11 | 21827723 | systems/win32/miktex/tm/packages/dps.tar.lzma
-2020/06/11 | 200746 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2020/06/11 | 19382335 | systems/texlive/tlnet/install-tl-windows.exe
+2020/06/11 | 20741788 | systems/win32/w32tex/pdftex-w32.tar.xz
2020/06/11 | 193040 | systems/texlive/tlnet/archive/caption.source.r55507.tar.xz
2020/06/11 | 192153 | macros/latex/contrib/moderntimeline.zip
2020/06/11 | 186431 | macros/latex/contrib/moderntimeline/moderntimeline.pdf
+2020/06/11 | 1833552 | systems/win32/w32tex/jtex-w32.tar.xz
+2020/06/11 | 18155796 | systems/win32/w32tex/luatex-exp-w32.tar.xz
+2020/06/11 | 18142552 | systems/win32/w32tex/luatex-w32.tar.xz
+2020/06/11 | 18137864 | systems/win32/w32tex/luatex-dev-w32.tar.xz
2020/06/11 | 1811671 | systems/win32/miktex/tm/packages/caption.tar.lzma
2020/06/11 | 167376 | systems/texlive/tlnet/archive/babel.r55508.tar.xz
2020/06/11 | 166888 | systems/texlive/tlnet/archive/texlive-docindex.doc.r55497.tar.xz
-2020/06/11 | 16275306 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2020/06/11 | 1610647 | systems/win32/miktex/tm/packages/babel.tar.lzma
2020/06/11 | 1585188 | systems/texlive/tlnet/archive/caption.doc.r55507.tar.xz
2020/06/11 | 1561 | indexing/xindex/CHANGELOG
-2020/06/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2020/06/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2020/06/11 | 152335 | systems/win32/miktex/tm/packages/hvarabic.tar.lzma
-2020/06/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2020/06/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2020/06/11 | 1201222 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2020/06/11 | 1121685 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2020/06/11 | 1521639 | support/spix/spix.pdf
+2020/06/11 | 140046520 | systems/win32/w32tex/context.tar.xz
+2020/06/11 | 117 | support/spix/CHANGELOG.md
2020/06/11 | 10941 | indexing/xindex/lualatex/xindex-HAdW-eKO.lua
+2020/06/11 | 10488188 | systems/win32/w32tex/ptex-w32.tar.xz
2020/06/10 | 9602 | support/latexindent/LatexIndent/HiddenChildren.pm
2020/06/10 | 9542 | support/latexindent/LatexIndent/IfElseFi.pm
2020/06/10 | 9533284 | support/latexindent.zip
@@ -78,17 +270,15 @@
2020/06/10 | 7988 | graphics/pstricks/base/latex/pstricks.sty
2020/06/10 | 790671 | macros/latex/required/babel/base/babel.pdf
2020/06/10 | 7882 | support/latexindent/documentation/sec-introduction.tex
-2020/06/10 | 77364 | systems/texlive/tlnet/archive/pstricks.r55493.tar.xz
2020/06/10 | 768821 | macros/latex/required/babel/base/locale.zip
2020/06/10 | 7522 | support/latexindent/documentation/sec-fine-tuning.tex
2020/06/10 | 7392 | macros/latex/required/babel/base/babel.ins
2020/06/10 | 718117 | macros/latex/contrib/caption/caption-rus.pdf
-2020/06/10 | 7156552 | systems/texlive/tlnet/archive/pstricks.doc.r55493.tar.xz
2020/06/10 | 7101 | support/latexindent/documentation/subsubsec-no-add-remaining-code-blocks.tex
2020/06/10 | 6793 | support/latexindent/LatexIndent/MandatoryArgument.pm
-2020/06/10 | 666207 | systems/win32/w32tex/ChangeLog
2020/06/10 | 660307 | macros/latex/required/babel/base/babel.dtx
2020/06/10 | 6513 | support/latexindent/LatexIndent/FileExtension.pm
+2020/06/10 | 643 | macros/latex/contrib/thuthesis/latexmkrc
2020/06/10 | 6430 | macros/latex/contrib/caption/CHANGELOG
2020/06/10 | 6358 | support/latexindent/LatexIndent/Item.pm
2020/06/10 | 6353 | support/latexindent/LatexIndent/Environment.pm
@@ -114,9 +304,6 @@
2020/06/10 | 436 | systems/texlive/tlnet/archive/collection-langarabic.r55495.tar.xz
2020/06/10 | 4355 | support/latexindent/LatexIndent/RoundBrackets.pm
2020/06/10 | 43396 | support/latexindent/LatexIndent/GetYamlSettings.pm
-2020/06/10 | 3852720 | systems/win32/w32tex/luajittex-w32.tar.xz
-2020/06/10 | 3851332 | systems/win32/w32tex/luajittex-dev-w32.tar.xz
-2020/06/10 | 3793880 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
2020/06/10 | 3688 | support/latexindent/documentation/subsubsec-special.tex
2020/06/10 | 3636 | support/latexindent/LatexIndent/Replacement.pm
2020/06/10 | 3526 | macros/latex/required/babel/base/bbidxglo.dtx
@@ -147,7 +334,6 @@
2020/06/10 | 23200 | graphics/pstricks/base/Changes
2020/06/10 | 23161 | support/latexindent/documentation/latexindent.tex
2020/06/10 | 21932 | macros/latex/required/babel/base/bbcompat.dtx
-2020/06/10 | 218656 | systems/texlive/tlnet/archive/texlive-scripts.doc.r55488.tar.xz
2020/06/10 | 2148 | macros/latex/contrib/caption/caption.ins
2020/06/10 | 21191 | macros/latex/contrib/caption/elephant.eps
2020/06/10 | 2118 | support/latexindent/documentation/sec-demonstration.tex
@@ -162,9 +348,6 @@
2020/06/10 | 1896 | support/latexindent/documentation/figure-schematic.tex
2020/06/10 | 1875 | support/latexindent/README
2020/06/10 | 18156 | support/latexindent/LatexIndent/Document.pm
-2020/06/10 | 18147012 | systems/win32/w32tex/luatex-dev-w32.tar.xz
-2020/06/10 | 17941004 | systems/win32/w32tex/luatex-exp-w32.tar.xz
-2020/06/10 | 17923244 | systems/win32/w32tex/luatex-w32.tar.xz
2020/06/10 | 17662 | support/latexindent/defaultSettings.yaml
2020/06/10 | 1734192 | macros/latex/required/babel/base.zip
2020/06/10 | 17234 | support/latexindent/documentation/sec-how-to-use.tex
@@ -186,7 +369,6 @@
2020/06/10 | 1432 | systems/texlive/tlnet/archive/hvarabic.r55495.tar.xz
2020/06/10 | 141288 | systems/texlive/tlnet/archive/texlive-msg-translations.r55489.tar.xz
2020/06/10 | 13839 | support/latexindent/documentation/subsec-commands-and-their-options.tex
-2020/06/10 | 131820 | systems/texlive/tlnet/archive/texlive-scripts.r55488.tar.xz
2020/06/10 | 13154 | support/latexindent/LatexIndent/Special.pm
2020/06/10 | 12661 | support/latexindent/LatexIndent/Braces.pm
2020/06/10 | 12628 | macros/latex/contrib/caption/totalcount.dtx
@@ -233,8 +415,6 @@
2020/06/09 | 6815 | graphics/pstricks/base/dvips/pst-dots.pro
2020/06/09 | 676476 | systems/texlive/tlnet/archive/latex-make.doc.r55486.tar.xz
2020/06/09 | 65176 | systems/texlive/tlnet/archive/nicematrix.source.r55484.tar.xz
-2020/06/09 | 6461644 | systems/win32/w32tex/ptex-ng-w32.tar.xz
-2020/06/09 | 6329 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/06/09 | 63274 | systems/texlive/tlnet/tlpkg/translations/zh_TW.po
2020/06/09 | 6264 | systems/texlive/tlnet/archive/cellprops.r55483.tar.xz
2020/06/09 | 60084 | systems/win32/miktex/tm/packages/beamerappendixnote.tar.lzma
@@ -246,7 +426,6 @@
2020/06/09 | 4997 | macros/latex/contrib/dps/examples/advanced/uselayers/sideshow/first_date.tex
2020/06/09 | 49859337 | macros/latex/contrib/dps.zip
2020/06/09 | 498444 | systems/win32/miktex/tm/packages/xindex.tar.lzma
-2020/06/09 | 48794192 | systems/win32/w32tex/xetex-w32.tar.xz
2020/06/09 | 4861 | macros/latex/contrib/dps/examples/advanced/uselayers/sideshow/first_date_g.tex
2020/06/09 | 4653000 | systems/win32/w32tex/dvipdfm-w32.tar.xz
2020/06/09 | 4649 | graphics/pstricks/base/README
@@ -314,7 +493,6 @@
2020/06/08 | 979676 | macros/latex/contrib/icon-appr/examples/icon-appr-exmpl.pdf
2020/06/08 | 8944 | systems/texlive/tlnet/archive/bengali.source.r55475.tar.xz
2020/06/08 | 880668 | systems/texlive/tlnet/archive/tex4ht.r55473.tar.xz
-2020/06/08 | 877231 | macros/latex/contrib/thuthesis/main.pdf
2020/06/08 | 8493 | macros/latex/contrib/dps/examples/advanced/usebtnappr/basic/stat_match1.tex
2020/06/08 | 81170696 | systems/win32/w32tex/pgfcontrib.tar.xz
2020/06/08 | 802380 | systems/texlive/tlnet/archive/fontsetup.doc.r55475.tar.xz
@@ -325,7 +503,6 @@
2020/06/08 | 7524 | systems/texlive/tlnet/archive/marathi.source.r55475.tar.xz
2020/06/08 | 700 | systems/texlive/tlnet/archive/latex-mr.r55475.tar.xz
2020/06/08 | 6934 | macros/latex/contrib/dps/examples/basic/stat_match1-print.tex
-2020/06/08 | 6526 | macros/latex/contrib/thuthesis/README.md
2020/06/08 | 5984 | biblio/bibtex/contrib/gbt7714/README.md
2020/06/08 | 56240 | systems/texlive/tlnet/archive/beamerappendixnote.doc.r55475.tar.xz
2020/06/08 | 548 | macros/latex/contrib/hvarabic/README.md
@@ -335,7 +512,6 @@
2020/06/08 | 50100 | systems/texlive/tlnet/archive/ebong.doc.r55475.tar.xz
2020/06/08 | 4976 | systems/texlive/tlnet/archive/fontsetup.r55475.tar.xz
2020/06/08 | 4842 | macros/latex/contrib/dps/examples/basic/dps_signin.tex
-2020/06/08 | 462324 | systems/texlive/tlnet/archive/xindex.doc.r55475.tar.xz
2020/06/08 | 45652 | systems/texlive/tlnet/archive/pst-eucl.r55475.tar.xz
2020/06/08 | 454128 | systems/texlive/tlnet/archive/sanskrit-t1.r55475.tar.xz
2020/06/08 | 4462 | macros/latex/contrib/dps/examples/basic/dps_d1_p.tex
@@ -357,7 +533,6 @@
2020/06/08 | 35304 | systems/texlive/tlnet/archive/bangtex.r55475.tar.xz
2020/06/08 | 342504 | biblio/bibtex/contrib/gbt7714/gbt7714.pdf
2020/06/08 | 3268 | systems/texlive/tlnet/archive/latexbangla.r55475.tar.xz
-2020/06/08 | 32452 | systems/texlive/tlnet/archive/xindex.r55475.tar.xz
2020/06/08 | 32296 | support/latex-make/texdepends.dtx
2020/06/08 | 3205623 | macros/latex/contrib/icon-appr.zip
2020/06/08 | 317455 | support/latex-make/latex-make.pdf
@@ -373,7 +548,6 @@
2020/06/08 | 259540 | dviware/dviljk.zip
2020/06/08 | 2562960 | systems/win32/w32tex/tex4htk-w32.tar.xz
2020/06/08 | 2487 | support/latex-make/README
-2020/06/08 | 2463412 | macros/latex/contrib/thuthesis.zip
2020/06/08 | 24624 | systems/texlive/tlnet/archive/xetex-itrans.r55475.tar.xz
2020/06/08 | 2415 | support/latex-make/latex-make.ins
2020/06/08 | 235612 | systems/texlive/tlnet/archive/semantex.doc.r55475.tar.xz
@@ -385,8 +559,6 @@
2020/06/08 | 21208 | systems/texlive/tlnet/archive/denisbdoc.source.r55474.tar.xz
2020/06/08 | 21096 | systems/texlive/tlnet/archive/xetex-itrans.doc.r55475.tar.xz
2020/06/08 | 205400 | systems/texlive/tlnet/archive/baskervillef.doc.r55475.tar.xz
-2020/06/08 | 20346 | macros/latex/contrib/thuthesis/spine.pdf
-2020/06/08 | 1731 | macros/latex/contrib/thuthesis/Makefile
2020/06/08 | 170869 | macros/latex/contrib/hvarabic/doc/hvarabic.pdf
2020/06/08 | 17056 | systems/texlive/tlnet/archive/bengali.r55475.tar.xz
2020/06/08 | 16539 | macros/latex/contrib/hvarabic/doc/hvarabic.tex
@@ -396,8 +568,6 @@
2020/06/08 | 153272 | macros/latex/contrib/hvarabic.zip
2020/06/08 | 14872 | systems/texlive/tlnet/archive/denisbdoc.r55474.tar.xz
2020/06/08 | 147412 | systems/texlive/tlnet/archive/latexbangla.doc.r55475.tar.xz
-2020/06/08 | 145592 | macros/latex/contrib/thuthesis/thuthesis.dtx
-2020/06/08 | 14186 | macros/latex/contrib/thuthesis/tsinghua.pdf
2020/06/08 | 135432 | systems/texlive/tlnet/archive/tex4ht.doc.r55473.tar.xz
2020/06/08 | 1332 | systems/texlive/tlnet/archive/beamerappendixnote.r55475.tar.xz
2020/06/08 | 12568 | systems/texlive/tlnet/archive/semantex.r55475.tar.xz
@@ -409,7 +579,6 @@
2020/06/08 | 108545 | biblio/bibtex/contrib/gbt7714/gbt7714.dtx
2020/06/08 | 1071 | macros/latex/contrib/icon-appr/README.md
2020/06/08 | 1060464 | systems/texlive/tlnet/archive/baskervillef.r55475.tar.xz
-2020/06/08 | 1050296 | macros/latex/contrib/thuthesis/thuthesis.pdf
2020/06/07 | 9924 | macros/latex/contrib/beamer-contrib/beamerappendixnote/example-basic.pdf
2020/06/07 | 9407 | graphics/pstricks/contrib/pst-eucl/Changes
2020/06/07 | 896 | fonts/baskervillef/vf/BaskervilleF-Regular-tosf-ts1.vf
@@ -542,7 +711,6 @@
2020/06/07 | 3533 | fonts/baskervillef/enc/zba_jjbdnj.enc
2020/06/07 | 35113 | macros/latex/contrib/cellprops/LICENSE
2020/06/07 | 3500 | fonts/baskervillef/enc/zba_y7xbvf.enc
-2020/06/07 | 34899320 | systems/win32/w32tex/ltxpkgs.tar.xz
2020/06/07 | 3481 | fonts/baskervillef/enc/zba_qiwnw4.enc
2020/06/07 | 3476 | fonts/baskervillef/enc/zba_fcs4fj.enc
2020/06/07 | 3475 | fonts/baskervillef/enc/zba_wn2rfu.enc
@@ -690,7 +858,6 @@
2020/06/07 | 2080 | fonts/baskervillef/tfm/BaskervilleF-Italic-tlf-th-ly1--base.tfm
2020/06/07 | 2080 | fonts/baskervillef/tfm/BaskervilleF-Italic-osf-th-ly1--base.tfm
2020/06/07 | 2080 | fonts/baskervillef/tfm/BaskervilleF-Italic-lf-th-ly1--base.tfm
-2020/06/07 | 20788812 | systems/win32/w32tex/pdftex-w32.tar.xz
2020/06/07 | 2076 | fonts/baskervillef/tfm/BaskervilleF-Italic-tosf-sc-ly1--base.tfm
2020/06/07 | 2076 | fonts/baskervillef/tfm/BaskervilleF-Italic-tlf-sc-ly1--base.tfm
2020/06/07 | 2072 | fonts/baskervillef/tfm/BaskervilleF-Italic-dnom-ly1.tfm
@@ -976,7 +1143,6 @@
2020/06/06 | 93475 | macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf
2020/06/06 | 910020 | systems/win32/w32tex/cweb-w32.tar.xz
2020/06/06 | 874125 | macros/latex/contrib/reledmac/reledmac.dtx
-2020/06/06 | 8482048 | systems/win32/w32tex/uptex-w32.tar.xz
2020/06/06 | 845488 | systems/win32/w32tex/dvi2ps-w32.tar.xz
2020/06/06 | 837756 | systems/win32/w32tex/ttf2pt1-w32.tar.xz
2020/06/06 | 8328 | systems/texlive/tlnet/archive/vancouver.r55423.tar.xz
@@ -987,7 +1153,6 @@
2020/06/06 | 799596 | systems/win32/w32tex/win64/lcdf-typetools-w64.tar.xz
2020/06/06 | 789616 | systems/win32/w32tex/win64/pstoedit-w64.tar.xz
2020/06/06 | 759612 | systems/win32/w32tex/win64/dvipsk-w64.tar.xz
-2020/06/06 | 7595 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex
2020/06/06 | 758008 | systems/win32/w32tex/win64/dvi2ps-w64.tar.xz
2020/06/06 | 73630 | graphics/pstricks/contrib/pst-func/tex/pst-func.tex
2020/06/06 | 734500 | systems/win32/w32tex/win64/ttf2pk-w64.tar.xz
@@ -996,32 +1161,19 @@
2020/06/06 | 7224 | graphics/pstricks/contrib/pst-func/Changes
2020/06/06 | 695668 | systems/win32/w32tex/win64/ttf2pt1-w64.tar.xz
2020/06/06 | 6782 | macros/latex/contrib/reledmac/examples/2-footnote_spacing.tex
-2020/06/06 | 6326216 | systems/win32/w32tex/win64/pdftex-w64.tar.xz
2020/06/06 | 6039 | language/chinese/ctex/README.md
2020/06/06 | 587792 | systems/win32/w32tex/win64/jtex-w64.tar.xz
-2020/06/06 | 573280 | install/graphics/pgf/contrib/commutative-diagrams.tds.zip
-2020/06/06 | 569868 | graphics/pgf/contrib/commutative-diagrams.zip
-2020/06/06 | 5574 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex
-2020/06/06 | 538765 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdf
2020/06/06 | 524888 | systems/win32/w32tex/mftrace-w32.tar.xz
2020/06/06 | 517548 | systems/win32/w32tex/psutils-w32.tar.xz
2020/06/06 | 512431 | macros/xetex/latex/xecjk/xeCJK.dtx
-2020/06/06 | 5048 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex
-2020/06/06 | 4973 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex
-2020/06/06 | 49549 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex
-2020/06/06 | 4914892 | systems/win32/w32tex/aleph-w32.tar.xz
2020/06/06 | 484040 | systems/win32/w32tex/dvi2tty-w32.tar.xz
-2020/06/06 | 471 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty
2020/06/06 | 4680 | systems/texlive/tlnet/archive/crop.r55424.tar.xz
2020/06/06 | 4645 | macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.tex
-2020/06/06 | 460 | graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex
2020/06/06 | 4550532 | systems/win32/w32tex/dvipsk-w32.tar.xz
2020/06/06 | 4485588 | systems/win32/w32tex/texinfo-w32.tar.xz
2020/06/06 | 447860 | systems/win32/w32tex/win64/dvi2tty-w64.tar.xz
-2020/06/06 | 44053452 | systems/win32/w32tex/web2c-w32.tar.xz
2020/06/06 | 439962 | language/chinese/ctex/ctex.dtx
2020/06/06 | 439416 | systems/win32/w32tex/mftools.tar.xz
-2020/06/06 | 4382 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex
2020/06/06 | 431232 | systems/win32/w32tex/win64/mftools-w64.tar.xz
2020/06/06 | 4277 | macros/latex/contrib/beamer-contrib/beamerswitch/README.md
2020/06/06 | 419860 | systems/win32/w32tex/win64/tex4htk-w64.tar.xz
@@ -1035,7 +1187,6 @@
2020/06/06 | 376500 | systems/win32/w32tex/win64/mftrace-w64.tar.xz
2020/06/06 | 3760 | systems/texlive/tlnet/archive/ccool.r55425.tar.xz
2020/06/06 | 36590 | macros/latex/contrib/beamer-contrib/beamerswitch/beamerswitch-example.pdf
-2020/06/06 | 355 | graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex
2020/06/06 | 3532891 | graphics/pstricks/contrib/pst-func.zip
2020/06/06 | 3395 | macros/xetex/latex/xecjk/README.md
2020/06/06 | 3389636 | systems/win32/w32tex/win64/web2c-w64.tar.xz
@@ -1054,7 +1205,6 @@
2020/06/06 | 2637680 | systems/win32/w32tex/dvitools-w32.tar.xz
2020/06/06 | 263410 | macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf
2020/06/06 | 2627 | macros/latex/contrib/beamer-contrib/beamerswitch/Makefile
-2020/06/06 | 2619 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex
2020/06/06 | 26137779 | install/fonts/fira.tds.zip
2020/06/06 | 25965953 | fonts/fira.zip
2020/06/06 | 25358 | macros/latex/contrib/icon-appr/docs/iconappr-man.tex
@@ -1062,7 +1212,6 @@
2020/06/06 | 24474 | macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf
2020/06/06 | 239560 | macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf
2020/06/06 | 2340208 | systems/win32/w32tex/win64/dvitools-w64.tar.xz
-2020/06/06 | 2302 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex
2020/06/06 | 22958 | macros/latex/contrib/beamer-contrib/beamerswitch/beamerswitch-example-trans.pdf
2020/06/06 | 22389 | support/pdfcrop.zip
2020/06/06 | 22344 | macros/latex/contrib/beamer-contrib/beamerswitch/beamerswitch-example-handout.pdf
@@ -1070,13 +1219,10 @@
2020/06/06 | 215182 | macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf
2020/06/06 | 215012 | macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf
2020/06/06 | 2130900 | systems/win32/w32tex/win64/context-w64.tar.xz
-2020/06/06 | 2094 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex
2020/06/06 | 20916 | macros/latex/contrib/icon-appr/icon-appr.dtx
2020/06/06 | 2027 | macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.tex
2020/06/06 | 201833 | macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf
-2020/06/06 | 2009 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex
2020/06/06 | 20075 | macros/latex/contrib/beamer-contrib/beamerswitch/beamerswitch-example-article.pdf
-2020/06/06 | 2006 | graphics/pgf/contrib/commutative-diagrams/kodi.sty
2020/06/06 | 1998713 | macros/latex/contrib/reledmac/reledmac.pdf
2020/06/06 | 1973 | macros/latex/contrib/reledmac/examples/2-antilabe.tex
2020/06/06 | 194565 | macros/latex/contrib/beamer-contrib/beamerswitch/beamerswitch.pdf
@@ -1094,12 +1240,10 @@
2020/06/06 | 1878236 | systems/win32/w32tex/win64/ptex-w64.tar.xz
2020/06/06 | 187631 | macros/latex/contrib/reledmac/examples/2-indexing.pdf
2020/06/06 | 183782 | macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf
-2020/06/06 | 1834700 | systems/win32/w32tex/jtex-w32.tar.xz
2020/06/06 | 18323 | macros/latex/contrib/reledmac/examples/2-glossaries.pdf
2020/06/06 | 1806700 | systems/win32/w32tex/win64/uptex-w64.tar.xz
2020/06/06 | 17840 | systems/texlive/tlnet/archive/crop.source.r55424.tar.xz
2020/06/06 | 177475 | macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf
-2020/06/06 | 175 | graphics/pgf/contrib/commutative-diagrams/README
2020/06/06 | 175170 | macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf
2020/06/06 | 17346380 | systems/win32/w32tex/gregorio-w32.tar.xz
2020/06/06 | 1695 | macros/latex/contrib/reledmac/makefile
@@ -1109,12 +1253,10 @@
2020/06/06 | 15848 | systems/texlive/tlnet/archive/ccool.source.r55425.tar.xz
2020/06/06 | 158108 | macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf
2020/06/06 | 1577921 | install/language/chinese/ctex.tds.zip
-2020/06/06 | 1569 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex
2020/06/06 | 1537 | graphics/pstricks/contrib/pst-func/README.md
2020/06/06 | 145283 | macros/latex/contrib/reledmac/examples/1-sidenotes.pdf
2020/06/06 | 144492 | macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf
2020/06/06 | 140523 | macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf
-2020/06/06 | 139775008 | systems/win32/w32tex/context.tar.xz
2020/06/06 | 138405 | macros/latex/contrib/reledmac/examples/2-linespacing.pdf
2020/06/06 | 138222 | macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf
2020/06/06 | 136436 | systems/texlive/tlnet/archive/vancouver.doc.r55423.tar.xz
@@ -1136,125 +1278,11 @@
2020/06/06 | 121597 | macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf
2020/06/06 | 1191894 | language/chinese/ctex.zip
2020/06/06 | 118947 | macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf
-2020/06/06 | 11700 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex
2020/06/06 | 1168960 | systems/win32/w32tex/pstoedit-w32.tar.xz
2020/06/06 | 1140664 | systems/win32/w32tex/win64/makeindex-w64.tar.xz
2020/06/06 | 112924 | systems/texlive/tlnet/archive/rec-thy.doc.r55427.tar.xz
2020/06/06 | 1113957 | language/chinese/ctex/ctex.pdf
-2020/06/06 | 10485304 | systems/win32/w32tex/ptex-w32.tar.xz
2020/06/06 | 10362172 | macros/latex/contrib/reledmac.zip
2020/06/06 | 103129 | graphics/pstricks/contrib/pst-func/doc/pst-func-doc.tex
2020/06/06 | 10272 | support/pdfcrop/README.md
2020/06/06 | 102192 | macros/latex/contrib/beamer-contrib/beamerswitch/beamerswitch.dtx
-2020/06/05 | 996 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-ot1.tfm
-2020/06/05 | 984 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-ot1.tfm
-2020/06/05 | 964 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-ot1--base.tfm
-2020/06/05 | 952 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-ot1.tfm
-2020/06/05 | 952 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-ot1--base.tfm
-2020/06/05 | 936 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-ot1.tfm
-2020/06/05 | 925 | macros/latex/contrib/crop/README
-2020/06/05 | 920 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-ot1--base.tfm
-2020/06/05 | 904 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-ot1--base.tfm
-2020/06/05 | 823990 | macros/latex/contrib/ccool.zip
-2020/06/05 | 816 | fonts/courierten/vf/Courier10PitchBT-BoldItalic-tlf-ot1.vf
-2020/06/05 | 808 | fonts/courierten/vf/Courier10PitchBT-Italic-tlf-ot1.vf
-2020/06/05 | 804 | fonts/courierten/vf/Courier10PitchBT-Roman-tlf-ot1.vf
-2020/06/05 | 804 | fonts/courierten/vf/Courier10PitchBT-Bold-tlf-ot1.vf
-2020/06/05 | 786681 | macros/latex/contrib/l3build.zip
-2020/06/05 | 7556 | systems/texlive/tlnet/archive/ellipsis.source.r55418.tar.xz
-2020/06/05 | 7052 | fonts/courierten/type1/Courier10PitchBT-BoldItalicLCDFJ.pfb
-2020/06/05 | 7040 | fonts/courierten/type1/Courier10PitchBT-ItalicLCDFJ.pfb
-2020/06/05 | 7028 | fonts/courierten/type1/Courier10PitchBT-RomanLCDFJ.pfb
-2020/06/05 | 6992 | fonts/courierten/type1/Courier10PitchBT-BoldLCDFJ.pfb
-2020/06/05 | 693336 | systems/texlive/tlnet/archive/xepersian-hm.doc.r55417.tar.xz
-2020/06/05 | 684 | fonts/courierten/README
-2020/06/05 | 674200 | systems/texlive/tlnet/archive/erw-l3.doc.r55414.tar.xz
-2020/06/05 | 67341 | macros/latex/contrib/crop/crop.dtx
-2020/06/05 | 6664 | systems/texlive/tlnet/archive/xepersian-hm.source.r55417.tar.xz
-2020/06/05 | 6308 | systems/texlive/tlnet/archive/pdftexcmds.r55416.tar.xz
-2020/06/05 | 607 | macros/latex/contrib/crop/Makefile
-2020/06/05 | 5688 | systems/texlive/tlnet/archive/xepersian-hm.r55417.tar.xz
-2020/06/05 | 566 | fonts/courierten/COPYING
-2020/06/05 | 492 | fonts/courierten/vf/Courier10PitchBT-Italic-tlf-ts1.vf
-2020/06/05 | 484 | fonts/courierten/vf/Courier10PitchBT-BoldItalic-tlf-ts1.vf
-2020/06/05 | 476 | fonts/courierten/vf/Courier10PitchBT-Roman-tlf-ts1.vf
-2020/06/05 | 476 | fonts/courierten/vf/Courier10PitchBT-Bold-tlf-ts1.vf
-2020/06/05 | 45376 | systems/texlive/tlnet/archive/lion-msc.r55415.tar.xz
-2020/06/05 | 4294908 | systems/win32/w32tex/TLTEXINFO/tl-texinfo.zip
-2020/06/05 | 38586 | fonts/courierten/type1/Courier10PitchBT-BoldItalic.pfb
-2020/06/05 | 38440 | fonts/courierten/type1/Courier10PitchBT-Roman.pfb
-2020/06/05 | 3841 | fonts/courierten/map/CourierOneZeroPitch.map
-2020/06/05 | 381500 | systems/texlive/tlnet/archive/pdftexcmds.doc.r55416.tar.xz
-2020/06/05 | 38080 | fonts/courierten/type1/Courier10PitchBT-Bold.pfb
-2020/06/05 | 37632 | fonts/courierten/type1/Courier10PitchBT-Italic.pfb
-2020/06/05 | 343441 | macros/latex/contrib/crop.zip
-2020/06/05 | 3428 | systems/texlive/tlnet/archive/erw-l3.r55414.tar.xz
-2020/06/05 | 327371 | macros/latex/contrib/crop/crop.pdf
-2020/06/05 | 3238 | fonts/courierten/enc/a_keoqme.enc
-2020/06/05 | 3151 | fonts/fira/README
-2020/06/05 | 2940 | fonts/courierten/enc/a_2hg32y.enc
-2020/06/05 | 2919 | fonts/courierten/enc/a_n2okah.enc
-2020/06/05 | 2829 | fonts/courierten/enc/a_5k4rzj.enc
-2020/06/05 | 2641 | fonts/courierten/tex/TS1CourierOneZeroPitch-TLF.fd
-2020/06/05 | 2641 | fonts/courierten/tex/OT1CourierOneZeroPitch-TLF.fd
-2020/06/05 | 2641 | fonts/courierten/tex/LY1CourierOneZeroPitch-TLF.fd
-2020/06/05 | 26240 | fonts/courierten/opentype/Courier10PitchBT-BoldItalic.otf
-2020/06/05 | 2619 | fonts/courierten/tex/T1CourierOneZeroPitch-TLF.fd
-2020/06/05 | 26108 | fonts/courierten/opentype/Courier10PitchBT-Italic.otf
-2020/06/05 | 260 | macros/latex/contrib/crop/crop.ins
-2020/06/05 | 25388 | fonts/courierten/opentype/Courier10PitchBT-Roman.otf
-2020/06/05 | 24924 | fonts/courierten/opentype/Courier10PitchBT-Bold.otf
-2020/06/05 | 217792 | systems/texlive/tlnet/archive/ellipsis.doc.r55418.tar.xz
-2020/06/05 | 206708 | fonts/fira/opentype/FiraMono-BoldOblique.otf
-2020/06/05 | 202372 | fonts/fira/opentype/FiraMono-MediumOblique.otf
-2020/06/05 | 201440 | fonts/fira/opentype/FiraMono-Oblique.otf
-2020/06/05 | 1736 | fonts/courierten/vf/Courier10PitchBT-BoldItalic-tlf-ly1.vf
-2020/06/05 | 1728 | fonts/courierten/vf/Courier10PitchBT-Italic-tlf-ly1.vf
-2020/06/05 | 1724 | fonts/courierten/vf/Courier10PitchBT-Roman-tlf-ly1.vf
-2020/06/05 | 1724 | fonts/courierten/vf/Courier10PitchBT-Bold-tlf-ly1.vf
-2020/06/05 | 1650 | fonts/courierten/tex/courierten.sty
-2020/06/05 | 1648 | systems/texlive/tlnet/archive/ellipsis.r55418.tar.xz
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-t1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-ot1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-ly1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-t1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-ot1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-ly1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-t1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-ot1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-ly1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-t1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-ot1--lcdfj.tfm
-2020/06/05 | 156 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-ly1--lcdfj.tfm
-2020/06/05 | 1464640 | systems/texlive/tlnet/archive/lion-msc.doc.r55415.tar.xz
-2020/06/05 | 1424 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-t1.tfm
-2020/06/05 | 14244 | systems/texlive/tlnet/archive/pdftexcmds.source.r55416.tar.xz
-2020/06/05 | 1412 | fonts/courierten/vf/Courier10PitchBT-BoldItalic-tlf-t1.vf
-2020/06/05 | 1412 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-ly1.tfm
-2020/06/05 | 1412 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-t1.tfm
-2020/06/05 | 1404 | fonts/courierten/vf/Courier10PitchBT-Roman-tlf-t1.vf
-2020/06/05 | 1404 | fonts/courierten/vf/Courier10PitchBT-Italic-tlf-t1.vf
-2020/06/05 | 1400 | fonts/courierten/vf/Courier10PitchBT-Bold-tlf-t1.vf
-2020/06/05 | 1400 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-ly1.tfm
-2020/06/05 | 1376 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-t1.tfm
-2020/06/05 | 1372 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-t1--base.tfm
-2020/06/05 | 1364 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-ly1--base.tfm
-2020/06/05 | 1360 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-t1.tfm
-2020/06/05 | 1360 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-ly1.tfm
-2020/06/05 | 1360 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-t1--base.tfm
-2020/06/05 | 1352 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-ly1--base.tfm
-2020/06/05 | 1344 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-ly1.tfm
-2020/06/05 | 1324 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-t1--base.tfm
-2020/06/05 | 1312 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-ly1--base.tfm
-2020/06/05 | 1308 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-t1--base.tfm
-2020/06/05 | 1296 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-ly1--base.tfm
-2020/06/05 | 129527 | macros/latex/contrib/rec-thy.zip
-2020/06/05 | 1248 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-ts1.tfm
-2020/06/05 | 1232 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-ts1.tfm
-2020/06/05 | 1228 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-ts1.tfm
-2020/06/05 | 1228 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-ts1.tfm
-2020/06/05 | 1224 | fonts/courierten/tfm/Courier10PitchBT-Italic-tlf-ts1--base.tfm
-2020/06/05 | 1220 | fonts/courierten/tfm/Courier10PitchBT-BoldItalic-tlf-ts1--base.tfm
-2020/06/05 | 1216 | fonts/courierten/tfm/Courier10PitchBT-Roman-tlf-ts1--base.tfm
-2020/06/05 | 1216 | fonts/courierten/tfm/Courier10PitchBT-Bold-tlf-ts1--base.tfm
-2020/06/05 | 10792 | systems/texlive/tlnet/archive/erw-l3.source.r55414.tar.xz
diff --git a/fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otf b/fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otf
index 4c59b7e446..3dfec11229 100644
--- a/fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otf
+++ b/fonts/haranoaji-extra/HaranoAjiGothic-ExtraLight.otf
Binary files differ
diff --git a/fonts/haranoaji-extra/HaranoAjiGothic-Light.otf b/fonts/haranoaji-extra/HaranoAjiGothic-Light.otf
index 34e2c71e93..a6139e4275 100644
--- a/fonts/haranoaji-extra/HaranoAjiGothic-Light.otf
+++ b/fonts/haranoaji-extra/HaranoAjiGothic-Light.otf
Binary files differ
diff --git a/fonts/haranoaji-extra/HaranoAjiGothic-Normal.otf b/fonts/haranoaji-extra/HaranoAjiGothic-Normal.otf
index a43c2a10f0..a9204c0e44 100644
--- a/fonts/haranoaji-extra/HaranoAjiGothic-Normal.otf
+++ b/fonts/haranoaji-extra/HaranoAjiGothic-Normal.otf
Binary files differ
diff --git a/fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otf b/fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otf
index 1908ae2142..706c641332 100644
--- a/fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otf
+++ b/fonts/haranoaji-extra/HaranoAjiMincho-ExtraLight.otf
Binary files differ
diff --git a/fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otf b/fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otf
index 758f920987..3a79ca8d4b 100644
--- a/fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otf
+++ b/fonts/haranoaji-extra/HaranoAjiMincho-Heavy.otf
Binary files differ
diff --git a/fonts/haranoaji-extra/HaranoAjiMincho-Medium.otf b/fonts/haranoaji-extra/HaranoAjiMincho-Medium.otf
index fdd804eb51..7767858d00 100644
--- a/fonts/haranoaji-extra/HaranoAjiMincho-Medium.otf
+++ b/fonts/haranoaji-extra/HaranoAjiMincho-Medium.otf
Binary files differ
diff --git a/fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otf b/fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otf
index 55e75f33e6..b01632922c 100644
--- a/fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otf
+++ b/fonts/haranoaji-extra/HaranoAjiMincho-SemiBold.otf
Binary files differ
diff --git a/fonts/haranoaji-extra/README b/fonts/haranoaji-extra/README
index ac0d7f74e4..de6dc23fac 100644
--- a/fonts/haranoaji-extra/README
+++ b/fonts/haranoaji-extra/README
@@ -1,4 +1,4 @@
-# Harano Aji Fonts ver. 20200524
+# Harano Aji Fonts ver. 20200612
https://github.com/trueroad/HaranoAjiFonts
diff --git a/fonts/haranoaji/HaranoAjiGothic-Bold.otf b/fonts/haranoaji/HaranoAjiGothic-Bold.otf
index 673fb503a4..c0aac4be97 100644
--- a/fonts/haranoaji/HaranoAjiGothic-Bold.otf
+++ b/fonts/haranoaji/HaranoAjiGothic-Bold.otf
Binary files differ
diff --git a/fonts/haranoaji/HaranoAjiGothic-Heavy.otf b/fonts/haranoaji/HaranoAjiGothic-Heavy.otf
index 40a4eea5e9..26ef3d32fe 100644
--- a/fonts/haranoaji/HaranoAjiGothic-Heavy.otf
+++ b/fonts/haranoaji/HaranoAjiGothic-Heavy.otf
Binary files differ
diff --git a/fonts/haranoaji/HaranoAjiGothic-Medium.otf b/fonts/haranoaji/HaranoAjiGothic-Medium.otf
index d839eb062c..4a62c4ecbb 100644
--- a/fonts/haranoaji/HaranoAjiGothic-Medium.otf
+++ b/fonts/haranoaji/HaranoAjiGothic-Medium.otf
Binary files differ
diff --git a/fonts/haranoaji/HaranoAjiGothic-Regular.otf b/fonts/haranoaji/HaranoAjiGothic-Regular.otf
index 660624bf8d..6006bee9e7 100644
--- a/fonts/haranoaji/HaranoAjiGothic-Regular.otf
+++ b/fonts/haranoaji/HaranoAjiGothic-Regular.otf
Binary files differ
diff --git a/fonts/haranoaji/HaranoAjiMincho-Bold.otf b/fonts/haranoaji/HaranoAjiMincho-Bold.otf
index 5a5dbc15b2..41ca5d61a5 100644
--- a/fonts/haranoaji/HaranoAjiMincho-Bold.otf
+++ b/fonts/haranoaji/HaranoAjiMincho-Bold.otf
Binary files differ
diff --git a/fonts/haranoaji/HaranoAjiMincho-Light.otf b/fonts/haranoaji/HaranoAjiMincho-Light.otf
index 74768abbf1..2f4d8955f7 100644
--- a/fonts/haranoaji/HaranoAjiMincho-Light.otf
+++ b/fonts/haranoaji/HaranoAjiMincho-Light.otf
Binary files differ
diff --git a/fonts/haranoaji/HaranoAjiMincho-Regular.otf b/fonts/haranoaji/HaranoAjiMincho-Regular.otf
index d4d84ca034..106be79fe9 100644
--- a/fonts/haranoaji/HaranoAjiMincho-Regular.otf
+++ b/fonts/haranoaji/HaranoAjiMincho-Regular.otf
Binary files differ
diff --git a/fonts/haranoaji/README b/fonts/haranoaji/README
index ac0d7f74e4..de6dc23fac 100644
--- a/fonts/haranoaji/README
+++ b/fonts/haranoaji/README
@@ -1,4 +1,4 @@
-# Harano Aji Fonts ver. 20200524
+# Harano Aji Fonts ver. 20200612
https://github.com/trueroad/HaranoAjiFonts
diff --git a/graphics/epix/AUTHORS b/graphics/epix/AUTHORS
deleted file mode 100644
index 24ded708ef..0000000000
--- a/graphics/epix/AUTHORS
+++ /dev/null
@@ -1,5 +0,0 @@
-Jay P. Belanger
-Marcus D. Hanwell
-Andrew D. Hwang
-
-Please see THANKS for the list of contributors. \ No newline at end of file
diff --git a/graphics/epix/BUGS b/graphics/epix/BUGS
deleted file mode 100644
index 3436bad2ed..0000000000
--- a/graphics/epix/BUGS
+++ /dev/null
@@ -1,24 +0,0 @@
-ePiX-1.2 -- BUGS
-
-Last Change: September 19, 2007
-
-This file lists known idiosyncrasies ("features, not bugs") whose
-behavior may be unexpected. Some are too minor and/or messy to fix,
-some are outside the author's control.
-
-* The build-time script elaps-local calls epix, not epix-local.
-
-* Polygons are not shaded with simulated ambient light. The "fill"
- attribute controls whether or not to color fill.
-
-* Surface mesh elements are always color-filled. The fill attribute
- controls whether to use cos^2 (on) or flat (off) shading.
-
-* Dot-like markers may be slightly larger in tikz than in pst/eepic.
-
-* Line underlayer widths may be larger in pst than in eepic/tikz.
-
-* Line caps are round in eepic, square (butt) in pst/tikz.
-
-* Affine maps have no effect on label alignment, only on the offset.
- (N.B. Non-invertible affine maps may cause NaN label positions.) \ No newline at end of file
diff --git a/graphics/epix/COPYING b/graphics/epix/COPYING
deleted file mode 100644
index 14db8fc79d..0000000000
--- a/graphics/epix/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/graphics/epix/ChangeLog b/graphics/epix/ChangeLog
deleted file mode 100644
index 832d25f939..0000000000
--- a/graphics/epix/ChangeLog
+++ /dev/null
@@ -1,743 +0,0 @@
-ePiX 1.1.x
-
-Andrew D. Hwang <ahwang -at- mathcs -dot- holycross -dot- edu>
-
-2007-10.03 (ADH)
- Version 1.2.1
- * configure.ac, Makefile.am: New option --enable-epix-el
- (formerly --with-nolisp)
- * doc/Makefile.am: Build ps, pdf under manual-stamp so package can
- be built with parallel make (error noted by Ren\'e Rebe)
-
-2007-09.28 (ADH)
- * legend_tile.cc, legend_tile.h: Store offset as a pair
- * legend.cc: (draw) Pass offset as a pair
- * screen_data.cc: (paste) "affine" object named af, not affine
-
-2007-09.26 (ADH)
- Version 1.2.0-2
- * debug.h, interval.cc: #include <cstdlib> (Maik Beckmann)
- * (Multiple files) Replace const double arguments by double
-
-2007-09.25 (ADH)
- Version 1.2.0-1
- * doc/plotting3.xp: crop -> set_crop, and update image
-
-2007-09.24 (ADH)
- Version 1.1.22 (promoted to 1.2.0)
- * lens.cc: bubble lens projects to camera sphere
-
- * angle_units.cc, angle_units.h: (convert_to_radians) Remove
- - (to_radians, to_degrees, from_degrees) New functions
- - Store rad/unit, unit/deg, and rev/unit for efficiency
-
- * state.cc, state.h: (angle) Remove function
- - (full_turn) Reimplement as from_degrees(360)
- * functions.cc: Use angle_state::to_radians in trig functions
-
- * glyph.cc: (map_by) Reimplement label angle computation
- * label_style.cc, label_style.h: New public void constructor
- - Non-void constructor is private
- - (label_angle) Pass non-const double
- - (label_angle) Use the_angle_style to convert to degrees
- - (label_angle()) Returns degrees, not current angle units
-
-2007-09.23 (ADH)
- Version 1.1.21
- * affine.cc, affine.h: Member functions accept P as well as pair
-
-2007-09.22 (ADH)
- * length.cc: Remove support for scaled pt
- * state.cc, state.h: crop() -> set_crop()
- - (crop) New function, calls screen::crop
- - (crop_rectangle, crop_ellipse, crop_diamond): Set crop state
-
- * lens.cc: fisheye, bubble are *not* linear
- * lens.cc, lens.h: (needs_clip) New function
- * camera.cc, camera.h: (needs_clip) New function
- - the_camera() -> cam()
- * path_data.cc: (photo) Clip to camera.front_plane only if nec.
- * arrow_data.cc: (photo) Clip to camera.front_plane only if nec.
-
- * facet.cc, geometry.cc: camera, the_camera() -> cam()
- * arrow_data.cc, axis.cc, curves.cc, label_data.cc, legend.cc,
- legend_item.cc, path.cc, path_data.cc, screen_data.cc,
- sphere.cc, state.cc: the_camera() -> cam()
-
-2007-09.19 (ADH)
- Version 1.1.20
- * pen_line.cc: (add_to_pallet) Needn't check for unset
- * pen_data.cc, pen_data.h: (is_empty) New member
- * pen_fill.cc: (is_unset) Check line pen for invisibility
- - (print_to) If bd non-solid, draw fill/border only if visible
- - (add_to_pallet) Needn't check for unset colors
- * eepic.cc: (print_line) No base layer if narrower than line
- * pst.cc: (print_line) Adjust base layer width (m_bwidth too large)
-
-2007-09.18 (ADH)
- Version 1.1.19
- * affine.cc: Group scaling operators in parentheses
- * glyph.cc: (map_by) Map offset direction, not length
-
-2007-09.17 (ADH)
- * format.cc: (print_mark) Use mask color for circ background, add
- to pallet if necessary
- - Fix label padding
- - Draw label border if pen width is positive
- * markers.cc: (circ) Handle like other markers
- - (marker) Handle CIRC like other types
- * label_style.cc: (seen_through) Needn't check for unset mask
- * label_style.h: Default label_pad 0
-
- * picture.cc: Remove mp_format stubs
-
- * data_bins.cc, data_bins.h: Handle data on cuts
- - New data member m_cut_hits
- - (d_bin::insert) Rename add_datum
- - Copy constructor mis-copied d_bins
- - Implement m_bins as a list, not a vector
-
-2007-09.16 (ADH)
- Version 1.1.18
- * pair_map.cc, pair_map.h: Rename file, class to affine
- * epix.h: Add affine.h
- * screen.cc, screen.h: Pass-through affine operations
- - (apply) New member function
- * screen_data.cc, screen_data.h: Affine operations on contents
-
- * label_data.cc, label_data.h: Store offset as a pair
- * axis.cc, markers.cc: (label) Adjust label_data ctor
- * glyph.cc, glyph.h: Store offset as a pair
- * glyph.cc: (map_to) Adjust offset, label angle
- * legend_item.cc: (key) Adjust glyph ctor
-
-2007-09.15 (ADH)
- * pair_map.cc, pair_map.h: Complete re-write
- * screen_data.cc: (paste) Use new pair_map ctor
-
- * utils.cc, utils.h: (get_chars) New function
- * path_style.cc: Rename get_breaks -> __epix_get_breakpts
- - (extract) Move to utils, rename -> get_chars
- - Use get_chars to extract dot/dash pattern
- - (__epix_get_breakpts) Check for anomalous patterns
-
- * screen_data.cc, screen_data.h: (is_cropped) Remove
- * screen.cc, screen.h: (is_cropped) Remove
-
-2007-09.14 (ADH)
- * format.cc: (print_color) Check for empty vector of densities
- * picture_data.cc: (add_to_pallet) Check for unset color
-
- * label_style.cc, label_style.h: Dependency cleanup
- * format.cc, legend.cc, markers.cc, state.cc: Consequent changes
- * arrow_data.cc, Color_Neutral.cc, glyph.cc, legend.cc,
- path_data.h, path.cc, pen_arrow.cc, pen_data.cc, pen_fill.cc
- picture.cc, picture_data.cc, plots.cc: Dependency cleanup
-
-2007-09.14 (ADH)
- Version 1.1.17
- * functions.cc, functions.h: (clip_to_unit) Move to Color_Utils
- * Color_Utils.cc: #include "Color_Utils.h"
- * Color_Utils.cc, Color_Utils.h: Move clip_to_unit from functions
-
-2007-09.13 (ADH)
- * length.cc, length.h: (operator+, operator*) Pass one arg by value
-
- * configure.ac, Makefile.am: --with-nolisp option (for Gentoo)
- - Make scripts dependent on epix.el (to force build before install)
-
- * Color_Base.h: print_to(format) -> model, densities
- - Color is not a friend class
- * Color.cc, Color.h: (print_to) Remove function
- - (model, densities) New functions
- * Color_CMY.cc, Color_CMY.h, Color_CMYK.cc, Color_CMYK.h: Same
- * Color_Gray.cc, Color_Gray.h, Color_RGB.cc, Color_RGB.h: Same
- * Color_Neutral.cc, Color_Neutral.h, Color_Sep.cc, Color_Sep.h: Same
-
- * format.cc, format.h: (print_color(string, string, vector<double>)
- New function, calls existing print_color functions
-
- * plane.cc, plane.h: (pt, perp) New member functions
- - Intersection operators aren't friends
- * intersections.cc: Use Plane member functions
-
-2007-09.12 (ADH)
- * (Update README et. al.)
-
-2007-09.11 (ADH)
- Version 1.1.16
- * picture.cc, picture.h: (end_picture) New function (formerly end)
- - (end) Set output format on command-line flags, call end_picture
-
- * elaps.in, epix.in, flix.in: --pst, --tikz, --eepic options
-
-2007-09.10 (ADH)
- * facet.cc: (draw) Handle unset pen, reorganize logic
-
- * Makefile.am: Install all headers under $(pkgincludedir)
- - Remove libepix_a_HDRS from libepix_a_LIBADD deps
- * make_header: Preserve include guards in epix.h
- - Include string
- - Don't include cstdio
- * Color.h, Color_CMY.h, Color_CMYK.h, Color_Gray.h,
- Color_Neutral.h, Color_RGB.h, Color_Sep.h, Color_Utils.h:
- EPIX2 -> EPIX in include guard symbol
-
-2007-09.09 (ADH)
- * eepic.cc: (print_circle_marker) Set allinethickness, draw once
-
- * markers.h: (right_angle, arc_measure) Default size 8pt (was 12)
-
-2007-09.08 (ADH)
- Version 1.1.15
- * arrow_style.cc, arrow_style.h, pen_arrow.cc, state.cc, state.h:
- camber -> inset
- * constants.h: ACAMBER -> INSET
-
- * label_style.cc, label_style.h: (is_masked) New function
- * markers.cc: (label) Get mask flag from current label style
-
- * glyph.cc: (print_to) Don't call print_latex_hbox on label text
-
- * screen_data.h: Remove void constructor
-
- * pair_map.cc, pair_map.h: const pair args -> const pair&
-
- * screen_data.cc, screen_data.h: Store mask-indep corners
- - (paste) Use corners, not mask, to generate affine_map
- - (add_tile(tile*)) clone argument
- - (extract, extract_diamond, extract_ellipse) New functions
-
- * screen.cc: pair2P -> __epix_pair2P, accept const pair&
- - (extract, extract_diamond, extract_ellipse) New functions
-
-2007-09.07 (ADH)
- * format.h: (print_circle_marker) New function
- * format.cc: (print_latex_marker) Needn't handle dot-like marks
- - (print_mark) Use print_circle_marker for dot-like marks
- - (print_edge) Use print_circle_marker for path dots
-
- * eepic.cc, eepic.h: (print_circle_marker) New function
- * pst.cc, pst.h: (print_circle_marker) New function
- * tikz.cc, tikz.h: (print_circle_marker) New function
-
- * tikz.cc: (put_box) truncate coordinates
-
-2007-09.05 (ADH)
- * format.cc: (print_latex_hbox) "default" -> "rm"
- - "normalsize" -> "nsz"
- * label_style.h: (label_state) Same as above
- * state.h: (font_size, font_face) Same as above
-
- * mask_rectangle.h, mask_ellipse.h, mask_diamond.h: Remove void
- constructor
-
- * pen_fill.cc: (print_to, add_to_pallet) No action if is_empty
-
-2007-08.31 (ADH)
- * epix-lib.sh: Remove unused global EPIX_VERBOSE
- - New global LATEX_PKGS
- - (ePiX_usepackages) New function (only used by elaps)
-
- * elaps.in: (elaps_make_latex) Get LaTeX packages from input file
-
-2007-08.30 (ADH)
- Version 1.1.14
- * format.h: (usepackages) New function
- * format.c (file_comments) Call usepackages
-
- * eepic.cc, eepic.h: (usepackages)
- * pts.cc, pst.h: (usepackages)
- * tikz.cc, tikz.h: (usepackages)
- * fmt_template.cc, fmt_template.h: (usepackages)
-
-2007-08.30 (ADH)
- Version 1.1.13
- * epix.el.in: New file
- * epix.el: Obsolete file removed
-
-2007-08.29 (ADH)
- * hatching.cc, hatching.h: Reimplement
-
-2007-08.25 (ADH)
- * format.cc, format.h: (path_break) Default implementation
- - (path_conector) New virtual function, default implementation
- - (print_edge, print_paths) Use path_connector
- - (xdefinecolor) Non-virtual functions for xcolor formats
-
- * tikz.cc, tikz.h: New files
-
- * eepic.cc: (print_color) Use xdefinecolor
- * eepic.cc, eepic.h: (path_break) Use default implementation
- * pst.cc, pst.h: (path_break) Use default implementation
-
- * picture.cc, picture.h: (mp_format, print_mp) Comment out
- - pgf_format -> tikz_format
- - print_pgf -> print_tikz
-
-2007-08.23 (ADH)
- * clipping.cc, clipping.h: New face list m_extras
- - (clip_face, clip_slice, clip_restore) New functions
- * state.cc, state.h: (clip_face, clip_slice, clip_restore) New
- functions
- - (label_border) Accept double for length arg
-
- * legend.cc: (draw) Position is not camera-dependent
-
- * picture.cc, picture.h: (border) Accept double for length arg
- * screen.cc, screen.h: (border) Accept double for length arg
-
-2007-08.21 (ADH)
- Version 1.1.12
- * axis.cc: log labels in decimal by default, sci available
-
-2007-08.20 (ADH)
- * axis.cc, axis.h: (unmark(double)) New member function
-
-2007-08.19 (ADH)
- * label_data.cc: (label_data(P, mark, align): Axis tick markers
- restrictively aligned, cannot be rotated
-
- * legend_tile.cc, legend_tile.h: Copy ctor/assign, destructor
-
- * lens.cc, lens.h: New files
- - Add clone function
- * camera.cc, camera.h: Factor out Lens code
- - Add copy ctor/assign
-
- * picture.cc, picture.h: (pic_units_per_pt, units_per_pic_unit,
- pt_to_screen) New functions for true-size drawing
- - Remove svg functions
-
- * markers.cc, markers.h: (right_angle, arc_measure, axis_break,
- h_error_bar, v_error_bar) New functions
-
-
-2007-08.18 (ADH)
- Version 1.1.11
- * screen_data.cc, screen_data.h: (print_to) Accept bool flag to
- encapsulate in a picture-like environment
-
- * format.h: (reset_state) New pure virtual function
- * eepic.cc, eepic.h, pst.cc, pst.h: (reset_state) New function
-
-2007-08.17 (ADH)
- * format.cc, format.h: (start_picture, end_picture, print_pallet,
- print_latex_hbox, set_unitlength) New functions
- - (pic_header, pic_footer) Implemented in lower-level functions
- * glyph.cc: (print_to) Font attributes handled in format.
-
- * legend_item.cc, legend_item.h: New files
- * legend_tile.cc, legend_tile.h: New files
-
-2007-08.16 (ADH)
- * format.cc, format.h: (print_latex_label) Masking flag
- - (print_latex_label) Always print text color
-
- * legend.cc, legend.h: New files
-
- * length.cc, length.h: (name) New member function
-
-2007-08.15 (ADH)
- * fmt_template.cc, fmt_template.h: New files
-
- * active_screen.cc, active_screen.h: screen_broker class replaces
- global screen pointer active_screen
-
- * picture.cc, picture.h: (inlay, inlay_vertical, inlay_horizontal)
- New functions
- - (deactivate) New function
- - (activate) Re-implement using screen_broker
-
- * arrow_data.cc, axis.cc, curves.cc, label_data.cc, path.cc,
- path_data.cc, state.cc: Use active_screen()
-
-2007-08.12 (ADH)
- * curves.cc: grid calls rect for outmost lines (enables filling)
-
- * format.h: Re-design interface
- * eepic.cc, eepic.h, pst.cc, pst.h: Re-implement
-
- * glyph.cc, pen_fill.cc, pen_line.cc: Re-implement print_to
- * pen_arrow.cc: Generate own arrow head data
- * picture_data.cc: Reimplement print_to
- * pen_fill.h: Remove hatch angle members
-
-2007-08.09 (ADH)
- Version 1.1.10
- * mask_diamond.cc, mask_ellipse.cc, mask_rectangle.cc: (backing)
- Use plain backing color for edge
-
- * domain.cc: (resize1, resize2, resize3) Hack to avoid round-down
-
-2007-08.08 (ADH)
- * curves.cc, curves.h: (line) Make num_pts argument unsigned
- * curves.cc: (line, triangle, quad, arrow) Sensitive to whether
- camera preserves lines
-
- * constants.h: New constants MAX_LOG_BASE, DEF_PRECISION, MAX_PRECISION
-
-2007-08.07 (ADH)
- * frac.cc, frac.h: New files (rational number class)
-
- * pen_arrow.cc: (print_to) Use copy of label_state to print a dot
-
- * label_data.cc, label_data.h: (mask_color, text_color, align_to)
- New pass-through functions
- * markers.cc, markers.h: Label commands use label_data
- pass-through
- - Move axis and axis label functions to new file axis.cc
- * axis.cc, axis.h: New files (Coordinate axes, global functions)
- - New log label commands with same signature as Cartesian versions
- - New axes along sides of bounding box
-
- * eepic.cc, pst.cc: (pic_header, pic_footer, print_color) Print
- "%" at end of line
-
-2007-08.06 (ADH)
- * state_data.h: Remove file
- * state.cc: Include style headers explicitly
-
- * pst.cc: (pic_footer, pic_header) Don't use pspicture* when cropping
-
-2007-08.04 (ADH)
- * epix-lib.sh (ePiX_usage, ePiX_version): Update copyright,
- licence notices
- - Get script name from caller
- - (ePiX_bugreport) New function
- * elaps.in, epix.in, flix.in, laps.in: Specify script name for
- usage, version
- - Call ePiX_bugreport at end of help
-
- * triples.cc, triples.h: (Several binary operators) Pass first
- argument as value when implementation must copy anyway
-
-2007-08.03 (ADH)
- Version 1.1.9
- * flix.in: (flix_png) Pass tmax to bc, don't let shell evaluate
-
- * path_data.c: (photo) Print filled only if >= 3 non-null edges
-
-2007-08.02 (ADH)
- * spline.cc: (data) Indexing errors; increase max indices by 1
-
- * data_bins.cc: (plot) Use 20 intervals per spline
- - (bar_chart, histogram, plot): Check for sero population
- - (bar_chart) Bar height = frac of population in bin
- - (histogram) Box height = frac of pop per horizontal unit
- - (pop) Implement function
-
- * path_style.cc: (path_state(string)) Fix test for solidity
-
- * README-changes, README-porting: Removed
-
-2007-08.01 (ADH)
- * functions.h: Remove "D", "I" aliases for Deriv, Integral
- * functions.cc: (recip) Return 1.0/x (sec, csc, tan have poles)
- * functions.cc, functions.h: Remove nine lowercase trig functions
- * plots.cc: D -> Deriv, I -> Integral
-
- * triples.h: Remove "triple" alias for P
- * triples.cc, triples.h: New member function is_valid()
- - (midpoint) Remove function
- * circle.cc: Replace P::midpoint
-
- * elaps.in: Keep eepic file, back up existing file if any
- - Unset EPIX_OUTFILE, EPIX_OUTROOT on loop exit
- - Print informative (but fake) lines on latex/dvips failure
-
- * curves.cc, curves.h: (spline(vector<P>, int)) New function
- * data_bins.cc: (plot) Draw piecewise-cubic spline, not n_spline
-
-2007-07.31 (ADH)
- * crop_algorithms.h: (loopify)
- - Increment twice after insertion
- - Erase lone edge correctly
-
- * markers.cc, markers.h: (h_axis_tick, v_axis_tick) Alignment option
- - (h_axis, h_log_axis, v_axis, v_log_axis) Alignment option
- * label_data.cc, label_data.h: (label_data(P, mark_type)) Accepts
- alignment option
- * eepic.cc: (print_mark) Handle alignment
- * pst.cc: (print_mark) Handle alignment
- - (print_edges) Use pspolygon for closed paths
-
- * path_data.cc, path_data.h: New constructor from list of edge3d
- - (is_closed, is_filled) Move body to source file
- - vector<P>, list<edge3d> constructors do not fill unless closed
- * plot_algorithms.h: (plot_map_dom, euler_plot) Build plots from
- edges, not vertices
- - (plot_map_dom) Don't close or fill surface/solid plots
-
-2007-07.30 (ADH)
- * circle.cc, circle.h, plane.cc, plane.h, segment.cc, segment.h,
- sphere.cc, sphere.h:
- - Remove intersection member operators
- - Add bool malformed member, constructor for malformed objects
- - Intersection operators do not throw
- * intersections.cc, intersections.h: New files, handle
- intersections of object classes
- * make_header: Add intersections.h
-
-2007-07.29 (ADH)
- * errors.h: Remove error type enums
-
- * data_file.cc: (write(fmt)) Column indices reversed in try block
-
- * curves.cc: (ellipse_left, ellipse_right) Correct angle bounds
- * path.cc: Ellipse constructor creates path containing specified
- number of edges
-
- * markers.cc: marker(P, circ) calls circ
- - masked log axis labels
- - log axis labels accept optional base argument
-
- * eepic.cc, pst.cc: BOX and DOT, BBOX and DDOT of the same size
- - Label padding works more similarly to PSTricks
- * pst.cc: (print(label_state, string)) If no label border, set
- linestyle=none
- * glyph.cc: (print_to) Handle font face
-
- * constants.h: AVG_DOT=4 (was 2), AVG_TICK=3 (was 2)
- - Arrow head parameter bounds (MIN_AWIDTH, MIN_ARATIO, etc.)
- * arrow_style.cc, arrowhead_style.h:
- - Handle bounds on arrow head dimensions
- - (width, ratio, camber, fill) Return arrowhead_state& (not void)
-
- * state.cc: (dash_size) Pass unchecked argument to path_state
- - (dot_size, tick_size) Pass unchecked argument to marker_state
- * marker_style.cc: (dot_size, tick_size)
- - Handle unchecked arg
- - Return marker_style& (not void)
- * path_style.cc: (dash_size) Handle unchecked arg
-
-2007-07.28 (ADH)
- Version 1.1.8
- * eepic.cc: (print(label_state, string)): Fix masklabel padding
- * markers.cc: Don't pad axis labels with \phantom{-}
- * camera.cc: No warning if point is behind film plane
- * screen_data.cc: backing(), border() activate cropping
- * data_file.cc: (read) Don't try to read empty files
- - (column) Check for empty m_data
-
-2007-07.22 (ADH)
- * data_mask.cc: (reverse) return *this
- * length.cc: (get_lengths) Initialize len1, len2
- * crop_algorithms.h: (loopify) If only one edge is visible, return
- empty edge list.
-
-2007-07.19 (ADH)
- * edge_data.h: Rename seen() -> is_seen(), null() -> is_null()
- * crop_algorithms.h, pen_fill.cc, pen_line.cc: seen() -> is_seen()
- * pen_arrow.cc, pen_arrow.h: Remove member m_at_base (unused)
- - (crop_to) Shaft visibility bug
- - (print_to) Draw ddot if head, tail project to same location
- * arrow_data.cc, arrow_data.h: Remove member m_at_base (unused)
- - Remove clip() function (constructor applies automatically)
- - seen() -> is_seen()
- * format.h, eepic.h, pst.h: (print_arrow) Omit alignment argument
- * eepic.cc, pst.cc: (print_arrow) Change signature, reimplement
- - seen() -> is_seen()
- * constants.h: Names in all caps
- - New constants MIN_CLIP, TWO_PI
- - BBOLD_WIDTH is 1.2pt (was 1.6pt)
- * angle_units.cc, hatching.cc, marker_style.cc, path_style.cc,
- state.cc: Use capitalized constants
- * camera.cc, camera.h: Use MIN_CLIP
- - Rename function to_front() -> clip_plane()
-
-2007-07.17 (ADH)
- * crop_algorithms.h: New file for path-chopping templates
- * halfspace.cc, halfspace.h: Remove private member functions
- - Use crop_algorithms.h
- * screen_crop.cc, screen_crop.h: New files for crop_path_2nd,
- crop_loop_2nd (from edge_data.cc)
- * edge_data.h: Move crop_path_2nd, crop_loop_2nd to screen_crop.cc
- (file contains only template class and two typedefs)
- * edge_data.cc: Remove file
-
-2007-07.16 (ADH)
- * state.cc: (fill(true)) Set fill color to White() if unset
- * halfspace.cc, halfspace.h: (clip_path) Out-of-order bug
- - Move constructor body from header.
-
-2007-07.14 (ADH)
- Version 1.1.7
- * eepic.cc, eepic.h, pst.cc, pst.h: Implement path styles
- - (print_edge, print_edges) New functions
- - (print_line) Implement in terms of print_edge
- - (print_verbatim): New function
- * verbatim.cc, verbatim.h: New files, implementing tile class for
- verbatim output to file
- * picture.cc, picture.h: (write, pre_write, post_write) New
- functions to write verbatim strings to output
- * screen.h: Declare global "write" function a friend
- * picture_data.cc, picture_data.h: Add support for pre- and
- post-written strings in output
- * constants.h: Default axis ticks 4pt long
-
-2007-07.13 (ADH)
- * path_style.cc, path_style.h: Interface redesign
- - String-parsing implementation
- - Use constants.h
- * marker_style.cc: Use constants.h
- * state.cc: Reimplement path style functions
- - Use constants.h
- - (dash_size) New function
- - (dash_fill, dash_length) Functions removed
- - (pen(Color, double), base(Color, double)) New functions
- * label_data.cc: Constructors set tick mark color to line color
- * edge_data.h: (length) New member function
-
-2007-07.08 (ADH)
- * markers.cc: (h_axis, h_axis_labels, v_axis, v_axis_labels) If no
- endpoints are specified, use dimensions of active screen
- * curves.cc: (grid, log_grid) If corners not specified, use
- corners of active screen
- * pst.cc: (print_arrow) Draw head manually
- (print_line) Use PSTricks border attribute in two-pen versions
- (update_base) Bug fixes
- * facet.cc, facet.h: New files
- * surface.cc: Factor out utility classes facet, by_distance
- - Support domain-dependent coloring
- * path_data.cc: (photo) Print unfilled paths in chunks of 250
- points to ameliorate LaTeX overflow
-
-2007-07.07 (ADH)
- Version 1.1.6
- * surface.cc, surface.h: Support position-dependent coloring
-
-2007-07.06 (ADH)
- * eepic.cc, pst.cc: (print(style, string)) Fix alignment bug
- (print_mark) No padding, border
- * screen.cc, screen.h, screen_data.cc, screen_data.h: (is_cropped)
- New function to add support for label cropping
- * format.h, eepic.cc, eepic.h: Change signature of pic_header
- * pst.cc, pst.h: Add support for label cropping
- * picture_data.cc: (print_to) Pass crop flag
-
-2007-07.05 (ADH)
- * markers.h: (h_axis_log_labels, v_axis_log_labels) Align argument
- defaults to none
- * picture.cc, picture.h: (eepic, pst) New functions to set output
- format. (mp, pgf, svg stubs written.)
- * camera.cc: (to_front) Min clip distance is 0.01
- * path_data.cc: (photo) Clip by camera.to_front()
-
-2007-07.04 (ADH)
- * pst.cc, pst.h: New files
- * eepic.cc: Implement label borders and padding
- * state.cc, state.h: (new functions)
- - plain(Color), bold(Color), bbold(Color), set line Color/width
- - rgb(P), cmyk(P), use components as densities
- - New functions to set label attributes
- . label_color(Color);
- . label_pad(string);
- . label_border(Color, [string]), label_border(string);
- . no_label_border();
- * curves.cc, curves.h: (draw_rect, swatch, rect(P, P, bool),
- draw_polar_grid) Remove functions
- * domain.cc, domain.h:
- - No default domain constructor
- - New constructor domain(P, P, mesh)
- - Inline 1-dim'l constructor moved to cc file
- - domain data members made private
- New functions corner1_x1(), coarse_n1(), etc.
- - "Net" typename removed
- * plot_algorithms.h, plots.cc, surface.cc: Use domain state
- functions
- * data_bins.cc, data_bins.h: (bar_chart) New function
- * data_file.cc, data_file.h: New global functions
- - plot(filename, mark_type, col1, col2, col3, [F])
- plot(filename, mark_type, F, col1, col2, col3)
- - histogram, bar_chart
-
-2007-07.03 (ADH)
- * dataplot.cc, dataplot.h: Break up and remove files
- * data_bins.cc, data_bins.h, data_file.cc, data_file.h,
- data_mask.cc, data_mask.h, interval.cc, interval.h: New files
- * samples: Remove sample document
- * doc: Update
-
-2007-06.28 (ADH)
- * circle,cc, circle.h:
- - Rename class -> Circle
- - Remove m_filled data member, fill operator
- - Remove translation, scaling operators += and *=
- - (translate) Rename "shift"
- - (move_to) New function
- - Circle::draw() fills according to current paint style
- - (circle) New functions which draw automatically
- * sphere.cc, sphere.h:
- - Rename class -> Sphere
- - Remove translation, scaling operators += and *=
- - (shift, move_to, scale) New functions
- - (poles) Remove global function
- - (sphere) New functions which draw automatically
- * plane.cc, plane.h:
- - Rename class -> Plane
- - (shift, move_to) New functions
- - Remove translate, separates, parallel_to, contains, height
- functions
- - (draw) Reimplement
- * segment.cc, segment.h:
- - Rename class -> Segment
- - (shift, move_to, scale) New functions
- - Remove translation operator +=
- * path.cc, path.h,path_data.cc, path_data.h: Update class names
- Circle, Plane, Segment, Sphere
- * polyhedron.cc, polyhedron.h: Remove files
-
-2007-06.25 (ADH)
- * contrib: Remove package
- * surface.cc: (facet) Class contains a normal vector,
- (facet::front_facing) Use normal vector to test
-
-2007-06.25 (ADH)
- * surface.cc: (facet::draw) Use "direction" to compute density
- * path.cc: (ellipse constructor) Don't close/fill automatically
- * curves.cc: (ellipse) Close/fill if appropriate
- * format.h, eepic.cc, eepic.h: (file_comment) New function
- * picture_data.cc, picture_data.h: (file_header) Move to format.h
- * path_data.cc, path_data.h: (draw) Implement base pen,
- draw filled regions with both pens
- * state.cc, state.h: Functions to control drawing state
- - pen(Color, [string]), base(Color, [string])
- - fill(Color)
- * doc/manual.tex: Update
-
-2007-06.20 (ADH)
- Version 1.1.5
- * pen_arrow.cc, pen_arrow.h: Store shaft as edge, not as two pairs
- * format.h, eepic.cc, eepic.h: (print_arrow) Adjust call syntax
- * mask_diamond.cc, mask_ellipse.cc: (crop_to) Fix crop criterion
- * geometry.cc, geometry.h: Re-implement spherical geometry
- * sphere.cc, sphere.h: (latitude, longitude) Move to geometry.*
- * functions.cc, functions.h
- - Remove templates for id, zero, proj1, proj2, min, max
- (put id, proj1, proj2 in map.h)
- - Implement "zero" function with four call signatures
- * plots.cc: (shadeplot) Path closure bug
- * path.cc: (ellipse constructors) Close and fill if appropriate
- * markers.cc: (arrow) Re-implement labeled arrow
- * label_data.cc, label_data.h: Add visibility flag
- * glyph.cc: (print_to) Implement font_size
- * edge_data.cc: (crop_path_2nd) Loop processing bug
-
-2007-06.19 (ADH)
- Version 1.1.4
-
- Clipping and cropping work. Elliptical and diamond-shaped screen
- masks are implemented.
-
-2007-06.03 (ADH)
- Version 1.1.3, first public release
-
- Implements ePiX-2's color capabilities, including named models
- (RGB, CMY, CMYK, and Gray), color blending, filtering, CMYK
- separation, limited transparency, color filling and colorable
- arrows in eepic, decorable screens, and page markup.
-
- The global parameters x_min, etc., should be replaced with
- function calls, e.g. xmin(), from now on. Aside from this, the
- syntax is backward compatible with Version 1.0.x.
diff --git a/graphics/epix/Color.cc b/graphics/epix/Color.cc
deleted file mode 100644
index 1b4d01b717..0000000000
--- a/graphics/epix/Color.cc
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * Color.cc -- ePiX Color functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- *
- * Last Change: September 13, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include <cmath>
-
-#include "functions.h"
-
-#include "Color_Base.h"
-#include "Color_Utils.h"
-
-#include "Color_CMY.h"
-#include "Color_CMYK.h"
-#include "Color_Gray.h"
-#include "Color_Neutral.h"
-#include "Color_RGB.h"
-#include "Color_Sep.h"
-
-#include "Color.h"
-
-namespace ePiX {
-
- Color::Color()
- : m_color(Neutral().m_color), m_alpha(1) { }
-
- Color::Color(const Color_Base& col)
- : m_color(col.clone()), m_alpha(1) { }
-
- Color::Color(const Color_Base* col)
- : m_color(col->clone()), m_alpha(1) { }
-
-
- Color::Color(const Color& col)
- : m_color(col.m_color->clone()), m_alpha(col.m_alpha) { }
-
-
- Color& Color::operator= (const Color& col)
- {
- if (*this != col)
- {
- Color_Base* tmp(col.m_color->clone());
- delete m_color;
-
- m_color = tmp;
- m_alpha = col.m_alpha;
- }
-
- return *this;
- }
-
- Color::~Color()
- {
- delete m_color;
- }
-
- const Color_Base* Color::operator->() const
- {
- return m_color;
- }
-
- double Color::alpha() const
- {
- return m_alpha;
- }
-
-
- bool Color::operator== (const Color& col) const
- {
- return m_color->name() == col.m_color->name();
- }
-
- bool Color::operator< (const Color& col) const
- {
- // N.B. add_colors_to() must check for Unset
- return m_color->name() < col.m_color->name();
- }
-
- bool Color::is_unset() const
- {
- // we're Neutral()
- return (name() == "");
- }
-
-
- // no effect if we or col are Neutral
- Color Color::filter(const Color& col) const
- {
- if (m_color->name() == "" || col.is_unset())
- return col;
-
- else
- {
- Color_Base* fil(m_color->clone());
- fil->filter(*(col.m_color));
-
- Color val(fil);
- delete fil;
- return val;
- }
- }
-
- Color& Color::operator*= (double c)
- {
- (*m_color) *= c;
-
- return *this;
- }
-
- // Blending with Unset has no effect
- Color& Color::blend(const Color& col, double d)
- {
- if (!col.is_unset())
- m_color->blend(*(col.m_color), d);
-
- return *this;
- }
-
- Color& Color::superpose(const Color& col)
- {
- if (!col.is_unset())
- m_color->superpose(*(col.m_color));
-
- return *this;
- }
-
- Color& Color::invert()
- {
- m_color->invert();
-
- return *this;
- }
-
- Color& Color::alpha(double t)
- {
- m_alpha = t;
- return *this;
- }
-
-
- std::string Color::model() const
- {
- return m_color->model();
- }
-
- std::string Color::name() const
- {
- return m_color->name();
- }
-
- std::vector<double> Color::densities() const
- {
- return m_color->densities();
- }
-
-
- // Named constructors
- Color RGB(double r, double g, double b)
- {
- return Color(RGB_Color(r, g, b));
- }
-
- Color CMY(double c, double m, double y)
- {
- return Color(CMY_Color(c, m, y));
- }
-
- Color CMYK(double c, double m, double y, double k)
- {
- return Color(CMYK_Color(c, m, y, k));
- }
-
- Color Gray(double d)
- {
- return Color(Gray_Color(d));
- }
-
-
- // Scale operator
- Color operator* (double c, const Color& col)
- {
- Color tmp(col);
- return tmp *= c;
- }
-
-
- /* * * Extended primaries in the global namespace * * */
- Color Red(double d)
- {
- return RGB(clippy(d), clippy(-d), clippy(-d));
- }
-
- Color Green(double d)
- {
- return RGB(clippy(-d), clippy(d), clippy(-d));
- }
-
- Color Blue(double d)
- {
- return RGB(clippy(-d), clippy(-d), clippy(d));
- }
-
- Color White(double d)
- {
- return RGB(clippy(d), clippy(d), clippy(d));
- }
-
- Color Black(double d)
- {
- return RGB(clippy(1-d), clippy(1-d), clippy(1-d));
- }
-
-
- /* * * CMY * * */
- Color Cyan(double d)
- {
- return CMY_Color(clippy(d), clippy(-d), clippy(-d), true);
- }
-
- Color Magenta(double d)
- {
- return CMY_Color(clippy(-d), clippy(d), clippy(-d), true);
- }
-
- Color Yellow(double d)
- {
- return CMY_Color(clippy(-d), clippy(-d), clippy(d), true);
- }
-
- Color CMY_White(double d)
- {
- return CMY_Color(clippy(1-d), clippy(1-d), clippy(1-d), true);
- }
-
- Color CMY_Black(double d)
- {
- return CMY_Color(clippy(d), clippy(d), clippy(d), true);
- }
-
-
- /* * * CMYK * * */
- Color CyanK(double d)
- {
- double c(clippy(d));
- double m(clippy(-d));
- double y(m); // [sic]
- double k(min(c,m)); // y=m
-
- return CMYK_Color(c-k, m-k, y-k, k, true);
- }
-
- Color MagentaK(double d)
- {
- double c(clippy(-d));
- double m(clippy(d));
- double y(c);
- double k(min(c,m)); // y=c
-
- return CMYK_Color(c-k, m-k, y-k, k, true);
- }
-
- Color YellowK(double d)
- {
- double c(clippy(-d));
- double m(c);
- double y(clippy(d));
- double k(min(c,y)); // m=c
-
- return CMYK_Color(c-k, m-k, y-k, k, true);
- }
-
- Color CMYK_White(double d)
- {
- return CMYK_Color(0, 0, 0, clippy(1-d), true);
- }
-
- Color CMYK_Black(double d)
- {
- return CMYK_Color(0, 0, 0, clippy(d), true);
- }
-
-
- Color C_Process(double d)
- {
- return Cyan_Layer(d);
- }
-
- Color M_Process(double d)
- {
- return Magenta_Layer(d);
- }
-
- Color Y_Process(double d)
- {
- return Yellow_Layer(d);
- }
-
- Color K_Process(double d)
- {
- return Black_Layer(d);
- }
-
-
- /* * * Neutral filters * * */
- Color Neutral()
- {
- static Neutral_Color* neutral(new Neutral_Color());
- return Color(*neutral);
- }
-
- Color RGB_Neutral()
- {
- static RGB_Color* rgb_neutral(new RGB_Color(1, 1, 1));
- return Color(*rgb_neutral);
- }
-
- Color CMY_Neutral()
- {
- static CMY_Color* cmy_neutral(new CMY_Color(0, 0, 0, true));
- return Color(*cmy_neutral);
- }
-
- Color CMYK_Neutral()
- {
- static CMYK_Color* cmyk_neutral(new CMYK_Color(0, 0, 0, 0, true));
- return Color(*cmyk_neutral);
- }
-
- Color Gray_Neutral()
- {
- static Gray_Color* gray_neutral(new Gray_Color(1));
- return Color(*gray_neutral);
- }
-} // end of namespace
diff --git a/graphics/epix/Color.h b/graphics/epix/Color.h
deleted file mode 100644
index fc2db6127e..0000000000
--- a/graphics/epix/Color.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Color.h -- ePiX::Color class and helpers
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file defines the ePiX Color user interface:
- * operator*= Modify intensity
- * blend(Color, double) Color mixing
- * filter(Color) Apply us as a filter
- * superpose(Color) Add colors, clip intensities
- * invert() Color negative
- *
- * - Named primary constructors
- *
- * Scaling and filtering are implemented by converting to the filter's
- * color model. Color model conversions come from the LaTeX xcolor
- * package documentation, V 1.11 (2044/05/09) by Uwe Kern.
- */
-
-#ifndef EPIX_COLOR
-#define EPIX_COLOR
-
-#include <string>
-#include <vector>
-
-namespace ePiX {
-
- class Color_Base;
-
- class Color {
- public:
- Color();
- Color(const Color_Base*);
- Color(const Color_Base&);
- Color(const Color&);
-
- Color& operator= (const Color&);
-
- ~Color();
-
- const Color_Base* operator->() const;
- double alpha() const;
-
- bool operator== (const Color&) const;
- bool operator< (const Color&) const; // needed for Screen::pallet
- bool operator!= (const Color& col) const { return !((*this) == col); }
- bool is_unset() const;
-
- Color filter(const Color&) const;
-
- Color& operator*= (double c); // scale the intensity
- Color& blend(const Color&, double);
- Color& superpose(const Color&);
- Color& invert();
- Color& alpha(double);
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- private:
- Color_Base* m_color;
- double m_alpha;
-
- }; // end of class Color
-
- Color operator* (double, const Color&);
-
-
- /*
- * * * Primary color functions in the global namespace * * *
- *
- * A primary color constructor accepts a numerical argument, which is
- * reduced mod 4, then interpreted as a color density as follows:
- * d = -2 or 2 : white
- * d = -1: full anti-saturation
- * d = 0: black
- * d = 1: full saturation (default)
- *
- * The primary changes continuously, and linearly on each interval
- * [-2,-1], [-1,0], [0,1], and [1,2].
- *
- * Example:
- * Red(0.3) = rgb(0.3, 0, 0) = Red(-3.7)
- * Red(1.3) = rgb(1,0.3,0.3) = Red(-2.7)
- * Red(2.3) = rgb(0.7, 1, 1) = Red(-1.7)
- * Red(3.3) = rgb(0,0.7,0.7) = Red(-0.7)
- */
- Color RGB(double r=0, double g=0, double b=0);
- Color CMY(double c=1, double m=1, double y=1);
- Color CMYK(double c=1, double m=1, double y=1,
- double k=0); // void same as CMYK(0,0,0,1);
- Color Gray(double d=0);
-
- Color Red(double d=1);
- Color Green(double d=1);
- Color Blue(double d=1);
- Color White(double d=1);
- Color Black(double d=1);
-
- Color Cyan(double d=1);
- Color Magenta(double d=1);
- Color Yellow(double d=1);
- Color CMY_White(double d=1);
- Color CMY_Black(double d=1);
-
- Color CyanK(double d=1);
- Color MagentaK(double d=1);
- Color YellowK(double d=1);
- Color CMYK_White(double d=1);
- Color CMYK_Black(double d=1);
-
- // color separation
- Color C_Process(double d=1);
- Color M_Process(double d=1);
- Color Y_Process(double d=1);
- Color K_Process(double d=1);
-
- // "conversion filters"
- Color Neutral();
- Color RGB_Neutral();
- Color CMY_Neutral();
- Color CMYK_Neutral();
- Color Gray_Neutral();
-
-} // end of namespace
-
-#endif /* EPIX_COLOR */
diff --git a/graphics/epix/Color_Base.cc b/graphics/epix/Color_Base.cc
deleted file mode 100644
index 74fdf5c7a8..0000000000
--- a/graphics/epix/Color_Base.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Color_Base.cc -- ePiX Color_Base functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.3
- *
- * Last Change: June 03, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include "Color_Utils.h"
-#include "Color_Base.h"
-
-namespace ePiX {
-
- Color_Base::RGB_Densities::RGB_Densities(double r,
- double g,
- double b)
- : m_dens_red (make_r(r, g, b)),
- m_dens_green(make_g(r, g, b)),
- m_dens_blue (make_b(r, g, b)) { }
-
- bool Color_Base::operator== (const Color_Base& col) const
- {
- return (name() == col.name());
- }
-} // end of namespace
diff --git a/graphics/epix/Color_Base.h b/graphics/epix/Color_Base.h
deleted file mode 100644
index 7c369f33ba..0000000000
--- a/graphics/epix/Color_Base.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Color_Base.h -- ePiX::Color interface
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_COLOR_BASE
-#define EPIX_COLOR_BASE
-
-#include <string>
-#include <vector>
-
-namespace ePiX {
-
- class Color_Base {
-
- protected:
- struct RGB_Densities
- {
- // ensures densities are in [0,1]
- RGB_Densities (double r, double g, double b);
-
- double m_dens_red, m_dens_green, m_dens_blue;
- };
-
- public:
- virtual ~Color_Base() { }
- virtual Color_Base* clone() const = 0;
-
- // blending (all non-const)
- // apply us as filter
- virtual Color_Base& filter(const Color_Base&) = 0;
-
- // scale intensities
- virtual Color_Base& operator*= (double) = 0;
-
- // clip d to [0,1], then return (1-d)*this + d*col
- virtual Color_Base& blend(const Color_Base&, double) = 0;
-
- // add channels
- virtual Color_Base& superpose(const Color_Base&) = 0;
-
- // return negative color
- virtual Color_Base& invert() = 0;
-
- // internal colorname and densities
- virtual std::string model() const = 0;
- virtual std::string name() const = 0;
- virtual std::vector<double> densities() const = 0;
-
- bool operator== (const Color_Base& col) const;
- virtual RGB_Densities to_rgb() const = 0;
-
- }; // end of class Color_Base
-
-} // end of namespace
-
-#endif /* EPIX_COLOR_BASE */
diff --git a/graphics/epix/Color_CMY.cc b/graphics/epix/Color_CMY.cc
deleted file mode 100644
index 085823acc2..0000000000
--- a/graphics/epix/Color_CMY.cc
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Color_CMY.cc -- ePiX::CMY_Color functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- *
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include <cmath>
-
-#include "functions.h"
-
-#include "Color_Utils.h"
-#include "Color.h"
-#include "Color_CMY.h"
-
-namespace ePiX {
-
- CMY_Color::CMY_Color(double c, double m, double y)
- : cyan(make_r(c,m,y)), magenta(make_g(c,m,y)), yellow(make_b(c,m,y)) { }
-
- // private, no arg checking, bool unused
- CMY_Color::CMY_Color(double c, double m, double y,
- const bool arg)
- : cyan(c), magenta(m), yellow(y) { }
-
-
- CMY_Color::CMY_Color(const RGB_Densities& s)
- : cyan(1-s.m_dens_red),
- magenta(1-s.m_dens_green),
- yellow(1-s.m_dens_blue) { }
-
-
- Color_Base::RGB_Densities CMY_Color::to_rgb() const
- {
- // Use conventional formulas since our densities are already in [0,1]
- return Color_Base::RGB_Densities(1-cyan, 1-magenta, 1-yellow);
- }
-
- CMY_Color* CMY_Color::clone() const
- {
- return new CMY_Color(*this);
- }
-
- CMY_Color& CMY_Color::filter(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
-
- // filter in RGB; 1 - min(1-x, 1-y) = max(x, y)
- cyan = max(cyan, 1-s.m_dens_red);
- magenta = max(magenta, 1-s.m_dens_green);
- yellow = max(yellow, 1-s.m_dens_blue);
-
- return *this;
- }
-
- CMY_Color& CMY_Color::operator*= (double sc)
- {
- Color_Base::RGB_Densities s(to_rgb());
-
- // scale in RGB
- double r(sc*(s.m_dens_red));
- double g(sc*(s.m_dens_green));
- double b(sc*(s.m_dens_blue));
-
- cyan = 1 - make_r(r, g, b);
- magenta = 1 - make_g(r, g, b);
- yellow = 1 - make_b(r, g, b);
-
- return *this;
- }
-
- CMY_Color& CMY_Color::blend(const Color_Base& color, double d)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- double wt(clip_to_unit(d));
-
- // blending is a convex lin. comb., may as well do in CMY
- cyan += wt*(1 - cyan - s.m_dens_red);
- magenta += wt*(1 - magenta - s.m_dens_green);
- yellow += wt*(1 - yellow - s.m_dens_blue);
-
- return *this;
- }
-
- CMY_Color& CMY_Color::superpose(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
-
- // add in RGB
- cyan = 1 - clip_to_unit(1 - cyan + s.m_dens_red);
- magenta = 1 - clip_to_unit(1 - magenta + s.m_dens_green);
- yellow = 1 - clip_to_unit(1 - yellow + s.m_dens_blue);
-
- return *this;
- }
-
-
- CMY_Color& CMY_Color::invert()
- {
- cyan = 1 - cyan;
- magenta = 1 - magenta;
- yellow = 1 - yellow;
-
- return *this;
- }
-
-
- std::string CMY_Color::model() const
- {
- return "cmy";
- }
-
- std::string CMY_Color::name() const
- {
- std::ostringstream nm;
-
- nm << "cmy_" << dtohex(cyan) << dtohex(magenta) << dtohex(yellow);
-
- return nm.str();
- }
-
- std::vector<double> CMY_Color::densities() const
- {
- std::vector<double> val(3);
- val.at(0) = rd(cyan);
- val.at(1) = rd(magenta);
- val.at(2) = rd(yellow);
- return val;
- }
-} // end of namespace
diff --git a/graphics/epix/Color_CMY.h b/graphics/epix/Color_CMY.h
deleted file mode 100644
index 3a8b8ed821..0000000000
--- a/graphics/epix/Color_CMY.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Color_CMY.h -- ePiX::CMY_Color class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_COLOR_CMY
-#define EPIX_COLOR_CMY
-#include <string>
-#include <vector>
-
-#include "Color_Base.h"
-#include "Color.h"
-
-namespace ePiX {
-
- class CMY_Color : public Color_Base {
- public:
- explicit CMY_Color(double c=1, double m=1, double y=1);
- CMY_Color(const RGB_Densities&);
-
- CMY_Color* clone() const;
-
- CMY_Color& filter(const Color_Base&);
-
- CMY_Color& operator*= (double c);
-
- CMY_Color& blend(const Color_Base&, double);
- CMY_Color& superpose(const Color_Base&);
- CMY_Color& invert();
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- RGB_Densities to_rgb() const;
-
- // These need to call our private constructor
- friend Color Cyan(double);
- friend Color Magenta(double);
- friend Color Yellow(double);
- friend Color CMY_White(double);
- friend Color CMY_Black(double);
- friend Color CMY_Neutral();
-
- private:
- double cyan;
- double magenta;
- double yellow;
-
- // Construct a CMY color without checking arguments. Final argument
- // only changes call signature
- CMY_Color(double c, double m, double y, const bool);
- }; // end of class CMY_Color
-
-} // end of namespace
-#endif /* EPIX_COLOR_CMY */
diff --git a/graphics/epix/Color_CMYK.cc b/graphics/epix/Color_CMYK.cc
deleted file mode 100644
index ef730a1998..0000000000
--- a/graphics/epix/Color_CMYK.cc
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Color_CMYK.cc -- ePiX::CMYK_Color functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- *
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include <cmath>
-
-#include "functions.h"
-
-#include "Color_Utils.h"
-#include "Color.h"
-#include "Color_CMYK.h"
-
-namespace ePiX {
-
- // Behaves "classically" if c+k, m+k, y+k are in [0,1]
- // Except as noted, CMYK methods enforce/preserve this condition
- CMYK_Color::CMYK_Color(double c, double m, double y,
- double k)
- : cyan(make_r(c+k, m+k, y+k)),
- magenta(make_g(c+k, m+k, y+k)),
- yellow(make_b(c+k, m+k, y+k)),
- black(min(min(cyan, magenta), yellow))
- {
- /* conventional RGB densities
- double r(1 - min(1, c+k));
- double g(1 - min(1, m+k));
- double b(1 - min(1, y+k));
- */
- cyan -= black;
- magenta -= black;
- yellow -= black;
- }
-
- // private, no arg checking, bool unused
- CMYK_Color::CMYK_Color(double c, double m,
- double y, double k, const bool arg)
- : cyan(c), magenta(m), yellow(y), black(k) { }
-
-
- // black = min(c,m,y), following Uwe Kern's xcolor documentation
- // V 1.11, 2004/05/09, p. 31
- CMYK_Color::CMYK_Color(const RGB_Densities& s)
- {
- // may assume densities are in [0,1]
- double c(1-s.m_dens_red), m(1-s.m_dens_green), y(1-s.m_dens_blue);
-
- black = min(min(c, m), y);
- cyan = c-black;
- magenta = m-black;
- yellow = y-black;
- }
-
- Color_Base::RGB_Densities CMYK_Color::to_rgb() const
- {
- // Use conventional formulas since our densities are already in [0,1];
- // "min" for safety, should be unnecessary.
- return Color_Base::RGB_Densities(1 - min(1.0, cyan + black),
- 1 - min(1.0, magenta + black),
- 1 - min(1.0, yellow + black));
- }
-
- CMYK_Color* CMYK_Color::clone() const
- {
- return new CMYK_Color(*this);
- }
-
- CMYK_Color& CMYK_Color::filter(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb()); // arg
- Color_Base::RGB_Densities t(to_rgb()); // this
-
- // filter in RGB
- double c(1 - min(t.m_dens_red, s.m_dens_red));
- double m(1 - min(t.m_dens_green, s.m_dens_green));
- double y(1 - min(t.m_dens_blue, s.m_dens_blue));
- black = min(min(c, m), y);
-
- cyan = c-black;
- magenta = m-black;
- yellow = y-black;
-
- return *this;
- }
-
-
- CMYK_Color& CMYK_Color::operator*= (double sc)
- {
- Color_Base::RGB_Densities s(to_rgb());
-
- // scale in RGB
- double r(sc*(s.m_dens_red));
- double g(sc*(s.m_dens_green));
- double b(sc*(s.m_dens_blue));
-
- // Necessary b/c sc may not be in [0,1]
- double c(1 - make_r(r, g, b));
- double m(1 - make_g(r, g, b));
- double y(1 - make_b(r, g, b));
-
- black = min(min(c, m), y);
- cyan = c-black;
- magenta = m-black;
- yellow = y-black;
-
- return *this;
- }
-
- CMYK_Color& CMYK_Color::blend(const Color_Base& color, double d)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- double wt(clip_to_unit(d));
-
- double c((1-wt)*min(1.0, cyan+black) + wt*(1 - s.m_dens_red));
- double m((1-wt)*min(1.0, magenta+black) + wt*(1 - s.m_dens_green));
- double y((1-wt)*min(1.0, yellow+black) + wt*(1 - s.m_dens_blue));
-
- black = min(min(c, m), y);
- cyan = c-black;
- magenta = m-black;
- yellow = y-black;
-
- return *this;
- }
-
- CMYK_Color& CMYK_Color::superpose(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- Color_Base::RGB_Densities t(to_rgb());
-
- // add in RGB
- double c(1 - clip_to_unit(t.m_dens_red + s.m_dens_red));
- double m(1 - clip_to_unit(t.m_dens_green + s.m_dens_green));
- double y(1 - clip_to_unit(t.m_dens_blue + s.m_dens_blue));
-
- black = min(min(c, m), y);
- cyan = c-black;
- magenta = m-black;
- yellow = y-black;
-
- return *this;
- }
-
- CMYK_Color& CMYK_Color::invert()
- {
- Color_Base::RGB_Densities s(to_rgb());
-
- // invert in RGB
- double c(1 - s.m_dens_red);
- double m(1 - s.m_dens_green);
- double y(1 - s.m_dens_blue);
-
- black = min(min(c, m), y);
- cyan = c-black;
- magenta = m-black;
- yellow = y-black;
-
- return *this;
- }
-
- std::string CMYK_Color::model() const
- {
- return "cmyk";
- }
-
- std::string CMYK_Color::name() const
- {
- std::ostringstream nm;
-
- nm << "cmyk_" << dtohex(cyan) << dtohex(magenta) << dtohex(yellow)
- << dtohex(black);
- return nm.str();
- }
-
- std::vector<double> CMYK_Color::densities() const
- {
- std::vector<double> val(4);
- val.at(0) = rd(cyan);
- val.at(1) = rd(magenta);
- val.at(2) = rd(yellow);
- val.at(3) = rd(black);
- return val;
- }
-} // end of namespace
diff --git a/graphics/epix/Color_CMYK.h b/graphics/epix/Color_CMYK.h
deleted file mode 100644
index 8b99aaa573..0000000000
--- a/graphics/epix/Color_CMYK.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Color_CMYK.h -- ePiX::CMYK_Color class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_COLOR_CMYK
-#define EPIX_COLOR_CMYK
-#include <string>
-#include <vector>
-
-#include "Color_Base.h"
-#include "Color.h"
-
-namespace ePiX {
-
- class CMYK_Color : public Color_Base {
- public:
- CMYK_Color(double c=1, double m=1, double y=1,
- double k=1);
- CMYK_Color(const RGB_Densities&);
-
- CMYK_Color* clone() const;
-
- CMYK_Color& filter(const Color_Base&);
-
- CMYK_Color& operator*= (double c);
-
- CMYK_Color& blend(const Color_Base&, double);
- CMYK_Color& superpose(const Color_Base&);
- CMYK_Color& invert();
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- RGB_Densities to_rgb() const;
-
- // These need to call our private constructor
- friend Color CyanK(double);
- friend Color MagentaK(double);
- friend Color YellowK(double);
- friend Color CMYK_White(double);
- friend Color CMYK_Black(double);
- friend Color CMYK_Neutral();
-
- private:
- double cyan;
- double magenta;
- double yellow;
- double black;
-
- // Construct a CMYK color without checking arguments. Final argument
- // only changes call signature
- CMYK_Color(double c, double m, double y,
- double k, const bool);
- }; // end of class CMYK_Color
-
-} // end of namespace
-#endif /* EPIX_COLOR_CMYK */
diff --git a/graphics/epix/Color_Gray.cc b/graphics/epix/Color_Gray.cc
deleted file mode 100644
index 9d0901ca29..0000000000
--- a/graphics/epix/Color_Gray.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Color_Gray.cc -- ePiX::Gray_Color functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- *
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include <cmath>
-
-#include "functions.h"
-
-#include "Color_Utils.h"
-#include "Color_Gray.h"
-
-namespace ePiX {
-
- Gray_Color::Gray_Color(double d)
- : m_gray(clip_to_unit(d)) { }
-
-
- Gray_Color::Gray_Color(const RGB_Densities& s)
- : m_gray((1.0/3)*(s.m_dens_red+s.m_dens_green+s.m_dens_blue)) { }
-
- Color_Base::RGB_Densities Gray_Color::to_rgb() const
- {
- return Color_Base::RGB_Densities(m_gray, m_gray, m_gray);
- }
-
- Gray_Color* Gray_Color::clone() const
- {
- return new Gray_Color(*this);
- }
-
-
- Gray_Color& Gray_Color::filter(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
-
- m_gray = min(m_gray, (1.0/3)*(s.m_dens_red+s.m_dens_green+s.m_dens_blue));
- return *this;
- }
-
- Gray_Color& Gray_Color::operator*= (double c)
- {
- m_gray = clip_to_unit(c*m_gray);
- return *this;
- }
-
- Gray_Color& Gray_Color::blend(const Color_Base& color, double d)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- double wt(clip_to_unit(d));
-
- m_gray += wt*((1.0/3)*(s.m_dens_red+s.m_dens_green+s.m_dens_blue)-m_gray);
-
- return *this;
- }
-
- Gray_Color& Gray_Color::superpose(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
-
- m_gray = clip_to_unit((1.0/3)*(s.m_dens_red +
- s.m_dens_green +
- s.m_dens_blue) + m_gray);
-
- return *this;
- }
-
- Gray_Color& Gray_Color::invert()
- {
- m_gray = 1 - m_gray;
- return *this;
- }
-
-
- std::string Gray_Color::model() const
- {
- return "rgb";
- }
-
- std::string Gray_Color::name() const
- {
- std::ostringstream nm;
-
- nm << "gray_" << dtohex(m_gray);
-
- return nm.str();
- }
-
- std::vector<double> Gray_Color::densities() const
- {
- std::vector<double> val(3);
- val.at(0) = rd(m_gray);
- val.at(1) = rd(m_gray);
- val.at(2) = rd(m_gray);
- return val;
- }
-} // end of namespace
diff --git a/graphics/epix/Color_Gray.h b/graphics/epix/Color_Gray.h
deleted file mode 100644
index 681861affa..0000000000
--- a/graphics/epix/Color_Gray.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Color_Gray.h -- ePiX::Gray_Color class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_COLOR_GRAY
-#define EPIX_COLOR_GRAY
-#include <string>
-#include <vector>
-
-#include "Color_Base.h"
-
-namespace ePiX {
-
- class Gray_Color : public Color_Base {
- public:
- Gray_Color(double dens=0);
- Gray_Color(const RGB_Densities&);
-
- Gray_Color* clone() const;
-
- Gray_Color& filter(const Color_Base&);
-
- Gray_Color& operator*= (double c);
-
- Gray_Color& blend(const Color_Base&, double);
- Gray_Color& superpose(const Color_Base&);
- Gray_Color& invert();
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- RGB_Densities to_rgb() const;
-
- private:
- double m_gray;
- }; // end of class Gray_Color
-
-} // end of namespace
-#endif /* EPIX_COLOR_GRAY */
diff --git a/graphics/epix/Color_Neutral.cc b/graphics/epix/Color_Neutral.cc
deleted file mode 100644
index 66e149eafd..0000000000
--- a/graphics/epix/Color_Neutral.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Color_Neutral.cc -- ePiX::Neutral_Color
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 14, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <string>
-
-#include "Color.h"
-#include "Color_Neutral.h"
-
-namespace ePiX {
-
- Neutral_Color::Neutral_Color() { }
-
- Color_Base::RGB_Densities Neutral_Color::to_rgb() const
- {
- return Color_Base::RGB_Densities(1, 1, 1);
- }
-
- Neutral_Color* Neutral_Color::clone() const
- {
- return new Neutral_Color(*this);
- }
-
-
- Color_Base& Neutral_Color::filter(const Color_Base& color)
- {
- Color_Base* tmp(color.clone());
- return *tmp;
- }
-
- Neutral_Color& Neutral_Color::operator*= (double c)
- {
- return *this;
- }
-
- Neutral_Color& Neutral_Color::blend(const Color_Base& color, double d)
- {
- return *this;
- }
-
- Neutral_Color& Neutral_Color::superpose(const Color_Base& color)
- {
- return *this;
- }
-
- Neutral_Color& Neutral_Color::invert()
- {
- return *this;
- }
-
- // string identifier -- not output-specific
- std::string Neutral_Color::name() const
- {
- return "";
- }
-
- std::string Neutral_Color::model() const
- {
- return "";
- }
-
- std::vector<double> Neutral_Color::densities() const
- {
- std::vector<double> value(0);
- return value;
- }
-} // end of namespace
diff --git a/graphics/epix/Color_Neutral.h b/graphics/epix/Color_Neutral.h
deleted file mode 100644
index 76d73ae284..0000000000
--- a/graphics/epix/Color_Neutral.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Color_Neutral.h -- ePiX::Neutral ("unset") class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_COLOR_NEUTRAL
-#define EPIX_COLOR_NEUTRAL
-#include <string>
-
-#include "Color_Base.h"
-
-namespace ePiX {
- class Neutral_Color : public Color_Base {
- public:
- Neutral_Color();
-
- Color_Base& filter(const Color_Base&);
-
- std::string name() const;
-
- private:
- // these functions are implemented, but should never be called
- RGB_Densities to_rgb() const;
- Neutral_Color* clone() const;
-
- Neutral_Color& operator*= (double c);
-
- Neutral_Color& blend(const Color_Base&, double);
- Neutral_Color& superpose(const Color_Base&);
- Neutral_Color& invert();
-
- // not implemented, should never be called
- std::string model() const;
- std::vector<double> densities() const;
- }; // end of class Neutral_Color
-
-} // end of namespace
-#endif /* EPIX_COLOR_NEUTRAL */
diff --git a/graphics/epix/Color_RGB.cc b/graphics/epix/Color_RGB.cc
deleted file mode 100644
index 9ea0f6bb3f..0000000000
--- a/graphics/epix/Color_RGB.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Color_RGB.cc -- ePiX::RGB_Color
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- *
- * Last Change: September 13, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include <cmath>
-
-#include "functions.h"
-
-#include "Color_Utils.h"
-#include "Color_RGB.h"
-
-namespace ePiX {
-
- RGB_Color::RGB_Color(double r, double g, double b)
- : red(make_r(r, g, b)), green(make_g(r, g, b)), blue(make_b(r, g, b)) { }
-
-
- RGB_Color::RGB_Color(const RGB_Densities& s)
- : red(s.m_dens_red), green(s.m_dens_green), blue(s.m_dens_blue) { }
-
- Color_Base::RGB_Densities RGB_Color::to_rgb() const
- {
- return Color_Base::RGB_Densities(red, green, blue);
- }
-
- RGB_Color* RGB_Color::clone() const
- {
- return new RGB_Color(*this);
- }
-
-
- RGB_Color& RGB_Color::filter(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
-
- red = min(red, s.m_dens_red);
- green = min(green, s.m_dens_green);
- blue = min(blue, s.m_dens_blue);
-
- return *this;
- }
-
- RGB_Color& RGB_Color::operator*= (double c)
- {
- double r(red*c);
- double g(green*c);
- double b(blue*c);
-
- red = make_r(r, g, b);
- green = make_g(r, g, b);
- blue = make_b(r, g, b);
-
- return *this;
- }
-
- RGB_Color& RGB_Color::blend(const Color_Base& color, double d)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- double wt(clip_to_unit(d));
-
- red += wt*(s.m_dens_red - red);
- green += wt*(s.m_dens_green - green);
- blue += wt*(s.m_dens_blue - blue);
-
- return *this;
- }
-
- RGB_Color& RGB_Color::superpose(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
-
- red = clip_to_unit(red + s.m_dens_red);
- green = clip_to_unit(green + s.m_dens_green);
- blue = clip_to_unit(blue + s.m_dens_blue);
-
- return *this;
- }
-
- RGB_Color& RGB_Color::invert()
- {
- red = 1 - red;
- green = 1 - green;
- blue = 1 - blue;
-
- return *this;
- }
-
- std::string RGB_Color::model() const
- {
- return "rgb";
- }
-
- std::string RGB_Color::name() const
- {
- std::ostringstream nm;
-
- nm << "rgb_" << dtohex(red) << dtohex(green) << dtohex(blue);
-
- return nm.str();
- }
-
- std::vector<double> RGB_Color::densities() const
- {
- std::vector<double> val(3);
- val.at(0) = rd(red);
- val.at(1) = rd(green);
- val.at(2) = rd(blue);
- return val;
- }
-} // end of namespace
diff --git a/graphics/epix/Color_RGB.h b/graphics/epix/Color_RGB.h
deleted file mode 100644
index 696577466a..0000000000
--- a/graphics/epix/Color_RGB.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Color_RGB.h -- ePiX::RGB_Color class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_COLOR_RGB
-#define EPIX_COLOR_RGB
-#include <string>
-#include <vector>
-
-#include "Color_Base.h"
-
-namespace ePiX {
- class RGB_Color : public Color_Base {
- public:
- RGB_Color(double r=0, double g=0, double b=0);
- RGB_Color(const RGB_Densities&);
-
- RGB_Color* clone() const;
-
- RGB_Color& filter(const Color_Base&);
-
- RGB_Color& operator*= (double c);
-
- RGB_Color& blend(const Color_Base&, double);
- RGB_Color& superpose(const Color_Base&);
- RGB_Color& invert();
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- RGB_Densities to_rgb() const;
-
- private:
- double red;
- double green;
- double blue;
- }; // end of class RGB_Color
-
-} // end of namespace
-#endif /* EPIX_COLOR_RGB */
diff --git a/graphics/epix/Color_Sep.cc b/graphics/epix/Color_Sep.cc
deleted file mode 100644
index e9652a9d11..0000000000
--- a/graphics/epix/Color_Sep.cc
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Color_Sep.cc -- ePiX CMYK Color separation functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- *
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include <cmath>
-
-#include "functions.h"
-
-#include "Color_Utils.h"
-#include "Color.h"
-#include "Color_Sep.h"
-
-namespace ePiX {
-
- Cyan_Layer::Cyan_Layer(double arg)
- : m_dens(clip_to_unit(arg)) { }
-
- // Return Cyan channel of color
- Cyan_Layer& Cyan_Layer::filter(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- if (Color(color).is_unset())
- s = Color_Base::RGB_Densities(1,1,1);
-
- m_dens = min(m_dens, 1-s.m_dens_red);
- return *this;
- }
-
- Cyan_Layer* Cyan_Layer::clone() const
- {
- return new Cyan_Layer(*this);
- }
-
- Color_Base::RGB_Densities Cyan_Layer::to_rgb() const
- {
- return Color_Base::RGB_Densities(1-m_dens, 1, 1);
- }
-
-
- std::string Cyan_Layer::model() const
- {
- return "cmyk";
- }
-
- std::string Cyan_Layer::name() const
- {
- std::ostringstream nm;
- nm << "c_proc_" << dtohex(m_dens);
- return nm.str();
- }
-
- std::vector<double> Cyan_Layer::densities() const
- {
- std::vector<double> val(4);
- val.at(0) = rd(m_dens);
- val.at(1) = 0;
- val.at(2) = 0;
- val.at(3) = 0;
- return val;
- }
-
-
- // Magenta_Layer
- Magenta_Layer::Magenta_Layer(double arg)
- : m_dens(clip_to_unit(arg)) { }
-
- // Return Magenta channel of color
- Magenta_Layer& Magenta_Layer::filter(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- if (Color(color).is_unset())
- s = Color_Base::RGB_Densities(1,1,1);
-
- m_dens = min(m_dens, 1-s.m_dens_green);
- return *this;
- }
-
- Magenta_Layer* Magenta_Layer::clone() const
- {
- return new Magenta_Layer(*this);
- }
-
- Color_Base::RGB_Densities Magenta_Layer::to_rgb() const
- {
- return Color_Base::RGB_Densities(1, 1-m_dens, 1);
- }
-
-
- std::string Magenta_Layer::model() const
- {
- return "cmyk";
- }
-
- std::string Magenta_Layer::name() const
- {
- std::ostringstream nm;
- nm << "m_proc_" << dtohex(m_dens);
- return nm.str();
- }
-
- std::vector<double> Magenta_Layer::densities() const
- {
- std::vector<double> val(4);
- val.at(0) = 0;
- val.at(1) = rd(m_dens);
- val.at(2) = 0;
- val.at(3) = 0;
- return val;
- }
-
-
- // Yellow_Layer
- Yellow_Layer::Yellow_Layer(double arg)
- : m_dens(clip_to_unit(arg)) { }
-
- // Return Yellow channel of color
- Yellow_Layer& Yellow_Layer::filter(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- if (Color(color).is_unset())
- s = Color_Base::RGB_Densities(1,1,1);
-
- m_dens = min(m_dens, 1-s.m_dens_blue);
- return *this;
- }
-
- Yellow_Layer* Yellow_Layer::clone() const
- {
- return new Yellow_Layer(*this);
- }
-
- Color_Base::RGB_Densities Yellow_Layer::to_rgb() const
- {
- return Color_Base::RGB_Densities(1, 1, 1-m_dens);
- }
-
-
- std::string Yellow_Layer::model() const
- {
- return "cmyk";
- }
-
- std::string Yellow_Layer::name() const
- {
- std::ostringstream nm;
- nm << "y_proc_" << dtohex(m_dens);
- return nm.str();
- }
-
- std::vector<double> Yellow_Layer::densities() const
- {
- std::vector<double> val(4);
- val.at(0) = 0;
- val.at(1) = 0;
- val.at(2) = rd(m_dens);
- val.at(3) = 0;
- return val;
- }
-
-
- // Black_Layer
- Black_Layer::Black_Layer(double arg)
- : m_dens(clip_to_unit(arg)) { }
-
- // Return Black channel of color
- Black_Layer& Black_Layer::filter(const Color_Base& color)
- {
- Color_Base::RGB_Densities s(color.to_rgb());
- if (Color(color).is_unset())
- s = Color_Base::RGB_Densities(1,1,1);
-
- double c(1-s.m_dens_red), m(1-s.m_dens_green), y(1-s.m_dens_blue);
- double k(min(min(c, m), y));
-
- m_dens = min(m_dens, k);
- return *this;
- }
-
- Black_Layer* Black_Layer::clone() const
- {
- return new Black_Layer(*this);
- }
-
- Color_Base::RGB_Densities Black_Layer::to_rgb() const
- {
- return Color_Base::RGB_Densities(1-m_dens, 1-m_dens, 1-m_dens);
- }
-
-
- std::string Black_Layer::model() const
- {
- return "cmyk";
- }
-
- std::string Black_Layer::name() const
- {
- std::ostringstream nm;
- nm << "k_proc_" << dtohex(m_dens);
- return nm.str();
- }
-
- std::vector<double> Black_Layer::densities() const
- {
- std::vector<double> val(4);
- val.at(0) = 0;
- val.at(1) = 0;
- val.at(2) = 0;
- val.at(3) = rd(m_dens);
- return val;
- }
-
-
- // null operations
- Cyan_Layer& Cyan_Layer::operator*= (double x) { return *this; }
- Cyan_Layer& Cyan_Layer::blend(const Color_Base& col, double d)
- { return *this; }
-
- Cyan_Layer& Cyan_Layer::superpose(const Color_Base& col) { return *this; }
- Cyan_Layer& Cyan_Layer::invert() { return *this; }
-
-
- Magenta_Layer& Magenta_Layer::operator*= (double x) { return *this; }
- Magenta_Layer& Magenta_Layer::blend(const Color_Base& col, double d)
- { return *this; }
-
- Magenta_Layer& Magenta_Layer::superpose(const Color_Base& col) { return *this; }
- Magenta_Layer& Magenta_Layer::invert() { return *this; }
-
-
- Yellow_Layer& Yellow_Layer::operator*= (double x) { return *this; }
- Yellow_Layer& Yellow_Layer::blend(const Color_Base& col, double d)
- { return *this; }
-
- Yellow_Layer& Yellow_Layer::superpose(const Color_Base& col) { return *this; }
- Yellow_Layer& Yellow_Layer::invert() { return *this; }
-
-
- Black_Layer& Black_Layer::operator*= (double x) { return *this; }
- Black_Layer& Black_Layer::blend(const Color_Base& col, double d)
- { return *this; }
-
- Black_Layer& Black_Layer::superpose(const Color_Base& col) { return *this; }
- Black_Layer& Black_Layer::invert() { return *this; }
-
-} // end of namespace
diff --git a/graphics/epix/Color_Sep.h b/graphics/epix/Color_Sep.h
deleted file mode 100644
index 599a14e039..0000000000
--- a/graphics/epix/Color_Sep.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Color_Sep.h -- ePiX CMYK Color separation classes
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_COLOR_SEP
-#define EPIX_COLOR_SEP
-#include <string>
-#include <vector>
-
-#include "Color_Base.h"
-
-namespace ePiX {
-
- class Cyan_Layer : public Color_Base {
- public:
- Cyan_Layer(double dens=1);
- // Return Cyan channel of input
- Cyan_Layer& filter(const Color_Base&);
-
- Cyan_Layer* clone() const;
- RGB_Densities to_rgb() const; // returns RGB(0,1,1)
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- private:
- double m_dens;
-
- // null operations
- Cyan_Layer& operator*= (double);
- Cyan_Layer& blend(const Color_Base&, double);
- Cyan_Layer& superpose(const Color_Base&);
- Cyan_Layer& invert();
- };
-
- class Magenta_Layer : public Color_Base {
- public:
- Magenta_Layer(double dens=1);
- // Return Magenta channel of input
- Magenta_Layer& filter(const Color_Base&);
-
- Magenta_Layer* clone() const;
- RGB_Densities to_rgb() const; // returns RGB(0,1,1)
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- private:
- double m_dens;
-
- // null operations
- Magenta_Layer& operator*= (double);
- Magenta_Layer& blend(const Color_Base&, double);
- Magenta_Layer& superpose(const Color_Base&);
- Magenta_Layer& invert();
- };
-
- class Yellow_Layer : public Color_Base {
- public:
- Yellow_Layer(double dens=1);
- // Return Yellow channel of input
- Yellow_Layer& filter(const Color_Base&);
-
- Yellow_Layer* clone() const;
- RGB_Densities to_rgb() const; // returns RGB(0,1,1)
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- private:
- double m_dens;
-
- // null operations
- Yellow_Layer& operator*= (double);
- Yellow_Layer& blend(const Color_Base&, double);
- Yellow_Layer& superpose(const Color_Base&);
- Yellow_Layer& invert();
- };
-
- class Black_Layer : public Color_Base {
- public:
- Black_Layer(double dens=1);
- // Return Black channel of input
- Black_Layer& filter(const Color_Base&);
-
- Black_Layer* clone() const;
- RGB_Densities to_rgb() const; // returns RGB(0,1,1)
-
- std::string model() const;
- std::string name() const;
- std::vector<double> densities() const;
-
- private:
- double m_dens;
-
- // null operations
- Black_Layer& operator*= (double);
- Black_Layer& blend(const Color_Base&, double);
- Black_Layer& superpose(const Color_Base&);
- Black_Layer& invert();
- };
-} // end of namespace
-#endif /* EPIX_COLOR_SEP */
diff --git a/graphics/epix/Color_Utils.cc b/graphics/epix/Color_Utils.cc
deleted file mode 100644
index 0045aafcc3..0000000000
--- a/graphics/epix/Color_Utils.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Color_Utils.cc -- Functions for manipulating color densities
- * These functions are not normally available to users.
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- *
- * Last Change: September 14, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <sstream>
-#include <cmath>
-
-// #include "constants.h"
-// #include "functions.h"
-
-#include "Color_Utils.h"
-
-namespace ePiX {
-
- // Magic number: 8-bits per color channel
- const int COLORS(0xFF);
-
- // Force double to [0,1]
- double clip_to_unit(double t)
- {
- if (t < 0) return 0;
- else if (t > 1) return 1;
- else return t;
- }
-
- double rd(double arg) // may assume arg in [0,1]
- {
- return floor(COLORS*arg)/COLORS; // round down to nearest 8-bit
- }
-
- // represent a double in [0,1] by an 8-bit hex string
- std::string dtohex(double arg) // assumes arg>0
- {
- using std::ios_base;
- int dens((int) floor(arg*COLORS));
-
- std::ostringstream value;
- value.setf(ios_base::hex, ios_base::basefield);
-
- if (dens <= 0xF) // pad
- value << "0";
-
- value << dens;
- return value.str();
- }
-
- // saw2th:R -> [-2,2] is (1) a sawtooth function; (2) the identity on [-2,2]
- double saw2th(double x)
- {
- return x - 4*floor((x+2)/4);
- }
-
- /*
- * clippy(x):
- * 1.... ____ if (x >= 0)
- * .\ /. . return x <= 1 ? x : 1;
- * . \ / . .
- * 0......\____/ . . else
- * -2 -1 0 1 2 --> x return x >= -1 ? 0 : -1-x;
- */
- double clippy(double x)
- {
- x = saw2th(x);
- return (x >= 0) ? ( x <= 1 ? x : 1 ) : ( x >= -1 ? 0 : -1-x );
- }
-
- double make_r(double r, double g, double b)
- {
- return clip_to_unit(clippy( r) + clippy(-g) + clippy(-b));
- }
-
- double make_g(double r, double g, double b)
- {
- return clip_to_unit(clippy(-r) + clippy( g) + clippy(-b));
- }
-
- double make_b(double r, double g, double b)
- {
- return clip_to_unit(clippy(-r) + clippy(-g) + clippy( b));
- }
-} // end of namespace
diff --git a/graphics/epix/Color_Utils.h b/graphics/epix/Color_Utils.h
deleted file mode 100644
index 9dc54f92c7..0000000000
--- a/graphics/epix/Color_Utils.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Color_Utils.h -- Functions for manipulating color densities
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- *
- * Last Change: September 14, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_COLOR_UTILS
-#define EPIX_COLOR_UTILS
-
-#include <string>
-
-namespace ePiX {
-
- double clip_to_unit(double t); // 0 if t<0, 1 if t>1, t otherwise
-
- double rd(double); // assumes arg is in [0,1]
-
- // represent a double in [0,1] by an 8-bit hex string
- std::string dtohex(double arg); // assumes arg>0
-
- // saw2th:R -> [-2,2] is (1) a sawtooth function; (2) the identity on [-2,2]
- double saw2th(double x);
-
- /*
- * clippy(x):
- * 1.... ____ if (x >= 0)
- * .\ /. . return x <= 1 ? x : 1;
- * . \ / . .
- * 0......\____/ . . else
- * -2 -1 0 1 2 --> x return x >= -1 ? 0 : -1-x;
- */
- double clippy(double x);
-
- double make_r(double r, double g, double b);
- double make_g(double r, double g, double b);
- double make_b(double r, double g, double b);
-} // end of namespace
-
-#endif /* EPIX_COLOR_UTILS */
diff --git a/graphics/epix/INSTALL b/graphics/epix/INSTALL
deleted file mode 100644
index fb13967718..0000000000
--- a/graphics/epix/INSTALL
+++ /dev/null
@@ -1,179 +0,0 @@
-ePiX-1.2 -- INSTALL
-
-Last Change: September 12, 2007
-
-Please consult the following files as appropriate:
-
-INSTALL (this file) -- Detailed installation instructions
-NEWS -- Recent major changes (see ChangeLog for code changes)
-README -- General overview and information
-
-
-CONVENTIONS
-
-Lines starting with a "%" denote commands typed at a shell prompt.
-Lines starting with a "#" denote commands run as root.
-Don't type the prompt characters "%" or "#". :)
-
-"$(prefix)" stands for the complete path to the install directory,
-e.g. "/usr/local" or "/home/pootle/epix".
-
-
-DEPENDENCIES
-
-The following software must be installed on your system in order for
-you to use ePiX:
-
- * The GNU shell, bash
- * A C++ compiler and development libraries, preferably g++ (> 3.2)
- * GhostScript, ImageMagick, and teTeX
- * GNU binutils, textutils, and fileutils (ar, sed, grep, ln, rm...)
-
-Please consult your system documentation for information on installing
-these components. The POST-INSTALL file contains potentially helpful
-information, as well. The manual contains more detailed instructions
-for Windows (Cygwin) and Mac OS X (fink/fink commander) users.
-
-
-INSTALLATION
-
---- Synopsis ---
-
-(1) Unpack
-(2) Configure:
-
-% ./configure [options]
-
-(3) Build:
-
-% make
-% make install (may require system privileges)
-
-
---- Step-by-step Instructions ---
-
-(1) Unpack
-
- Tarballs are available gzip or bzip2 compressed. To unpack, use the
- appropriate version number and tar options (z for .gz, j for .bz2, v
- to see filenames unpacked):
-
-% tar -zxf epix-x.y.z.tar.gz
-
- or
-
-% tar -jxf epix-x.y.z.tar.bz2
-
- If your "tar" doesn't understand decompression, do
-
-% gunzip -c epix-x.y.z.tar.gz | tar -xf -
-
- or
-
-% bzcat epix-x.y.z.tar.bz2 | tar -xf -
-
-
- Change to the source directory:
-
-% cd epix-x.y.z
-
-
-(2) Configure the package:
-
- Most users can run the command
-
-% ./configure
-
- To change the installation directory from the default (/usr/local)
- to (say) your home directory, do
-
-% ./configure --prefix=${HOME}
-
- To list all options, run
-
-% ./configure --help
-
-
-(3) Compile and install:
-
-% make
-
- Be sure you are using GNU make. If the build fails immediately with
- an error about unexpected characters in the Makefile, speak to your
- system administrator about availability of GNU make, or try running
- the command "gmake".
-
- If there are no build errors, you're ready to install.
-
- You must have write permission in the install directory you selected
- in step (2). If you have been logged on as yourself until now (a Very
- Good Idea) and are installing in a system directory, do:
-
-% su
-Password: <your root password>
-
-# make install
-
- (The root prompt on many systems is # rather than %.) If the install
- succeeds, you're done:
-
-# exit
-
- If you are installing somewhere in your HOME directory, just type
-
-% make install
-
-
-(4) Post-Install:
-
- Documentation is installed in $(prefix)/share/doc/epix, as compiled
- files (ps, pdf, info) and tarred LaTeX sources.
-
- The directory $(prefix)/share/doc/epix/config contains two optional
- files: Jay Belanger's emacs mode for working with ePiX files, and
- completions for users of Ian MacDonald's bash completions package.
- POST-INSTALL has instructions on installing and using these files.
-
- From the source directory, do
-
-% make clean
-
- to clean the source tree of compiled files. This command removes the
- top-level Makefile. Run ./configure to re-create the Makefile if
- necessary.
-
-
-(5) Uninstalling:
-
- To remove a version of ePiX from your system, go to the directory
- where the sources were unpacked, run ./config.status, log on as root
- if necessary, and do:
-
-# make uninstall
-
-
- Alternatively, remove the following files and directories manually,
- replacing $(prefix) with the install path, e.g. "/usr/local".
-
-[] Shell scripts
- $(prefix)/bin/{elaps,epix,flix,laps}
-
-[] Static libraries and shell code
- $(prefix)/lib/epix/
-
-[] Header files
- $(prefix)/include/epix.h (user header)
- $(prefix)/include/epix/ (devel headers)
-
-[] Configuration files, manuals, and samples
- $(prefix)/share/doc/epix/
-
-
---- Contact Information ---
-
-If you have questions, comments, suggestions, etc., please write to:
-
-Andrew D. ("Andy") Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
-Dept. of Mathematics and Computer Science
-College of the Holy Cross
-Worcester, MA, 01610-2395, USA
diff --git a/graphics/epix/Makefile.am b/graphics/epix/Makefile.am
deleted file mode 100644
index eada49e89c..0000000000
--- a/graphics/epix/Makefile.am
+++ /dev/null
@@ -1,115 +0,0 @@
-## epix-1.x Makefile.am for top-level directory
-##
-## Process this file with automake to produce Makefile.in
-
-#if BUILD_CONTRIB
- # Must be in this order!
-# MAYBE_DIRS = contrib contrib/doc
-#endif
-
-# SUBDIRS = . samples doc $(MAYBE_DIRS)
-SUBDIRS = . samples doc
-
-# Now stuff for this directory specifically
-
-bin_SCRIPTS = epix elaps flix laps
-
-pkglib_LIBRARIES = libepix.a
-pkglib_DATA = epix-lib.sh
-include_HEADERS = epix.h
-
-libepix_a_CXXSOURCES = active_screen.cc affine.cc angle_units.cc \
- arrow_data.cc arrow_style.cc axis.cc camera.cc circle.cc clipping.cc \
- Color_Base.cc Color.cc Color_CMY.cc Color_CMYK.cc Color_Gray.cc \
- Color_Neutral.cc Color_RGB.cc Color_Sep.cc Color_Utils.cc \
- cropping.cc curves.cc \
- data_bins.cc data_file.cc data_mask.cc domain.cc \
- eepic.cc facet.cc format.cc frac.cc frame.cc functions.cc \
- geometry.cc glyph.cc halfspace.cc hatching.cc \
- intersections.cc interval.cc label_data.cc label_style.cc \
- legend.cc legend_item.cc legend_tile.cc \
- length.cc lens.cc markers.cc marker_style.cc \
- mask_diamond.cc mask_ellipse.cc mask_rectangle.cc \
- paint_style.cc pairs.cc path.cc path_data.cc \
- path_style.cc pen_arrow.cc pen_data.cc pen_fill.cc pen_line.cc \
- picture.cc picture_data.cc plane.cc plots.cc pst.cc \
- screen.cc screen_crop.cc screen_data.cc screen_mask.cc \
- segment.cc spline.cc sphere.cc state.cc surface.cc tikz.cc tile.cc \
- triples.cc utils.cc verbatim.cc
-# polygon.cc
-
-libepix_a_HDRS = $(libepix_a_CXXSOURCES:.cc=.h) constants.h \
- crop_algorithms.h deriv.h edge_data.h enums.h errors.h \
- map.h plot_algorithms.h spline_data.h
-
-libepix_a_SOURCES = $(libepix_a_CXXSOURCES) $(libepix_a_HDRS)
-
-libepix_a_LIBADD = $(libepix_a_CXXSOURCES:.cc=.o)
-
-pkginclude_HEADERS = $(libepix_a_HDRS)
-
-man_MANS = epix.1 elaps.1 flix.1 laps.1
-
-if ENABLE_EPIX_EL
- EPIX_EL = epix.el
-endif
-
-EPIX_CONFFILES = bash_completions $(EPIX_EL)
-
-EPIX_NOTEFILES = AUTHORS BUGS ChangeLog COPYING INSTALL NEWS POST-INSTALL \
- README THANKS VERSION
-
-EXTRA_DIST = $(bin_SCRIPTS) $(man_MANS) $(EPIX_CONFFILES) $(EPIX_NOTEFILES) \
- $(pkgdata_DATA)
-
-CLEANFILES = *~ $(libepix_a_OBJECTS) $(bin_SCRIPTS) $(bin_SCRIPTS:=-local) \
- epix.h epix.1 epix.el
-
-# Headers
-epix.h: $(libepix_a_HDRS)
- ./make_header
-
-# Scripts; we create local variants which will work during the build process
-epix elaps flix laps: %: %.in epix.el
- sed -e 's%^#! /bin/bash%#! $(BASH_PATH)%;' \
- -e 's%@bindir\@%$(bindir)%;' \
- -e 's%@pkglibdir\@%$(pkglibdir)%;' \
- -e 's%@includedir\@%$(includedir)%;' \
- -e 's%@RUNTIME_COMPILER\@%$(RUNTIME_COMPILER)%;' $< > $@
- sed -e 's%^#! /bin/bash%#! $(BASH_PATH)%;' \
- -e 's%@bindir\@%$(CURDIR)%;' \
- -e 's%@pkglibdir\@%$(CURDIR)%;' \
- -e 's%@includedir\@%$(CURDIR)%;' \
- -e 's%@RUNTIME_COMPILER\@%$(CXX)%;' $< > $@-local
- chmod a+x $@ $@-local
-
-# libepix.a
-libepix.a: $(libepix_a_OBJECTS)
- ar -ru libepix.a $(libepix_a_OBJECTS)
- $(RANLIB) libepix.a
-
-# object file dependencies
-$(libepix_a_LIBADD): %.o: %.cc %.h
-
-# Manpage
-epix.1: epix.1.in
- sed -e 's%@docdir\@%$(docdir)%;' $< > $@
-
-# emacs mode
-epix.el: epix.el.in
- sed -e 's%@docdir\@%$(docdir)%;' $< > $@
-
-# Extra things to install
-install-data-local:
- @echo; echo "Installing notes and configuration files"
- ./mkinstalldirs $(DESTDIR)$(docdir)/notes $(DESTDIR)$(docdir)/config
- $(INSTALL_DATA) $(EPIX_NOTEFILES) $(DESTDIR)$(docdir)/notes
- $(INSTALL_DATA) $(EPIX_CONFFILES) $(DESTDIR)$(docdir)/config
-
-# This is being installed by install-exec, but should not be executable
-install-exec-local: install-pkglibDATA
- chmod a-x $(DESTDIR)$(pkglibdir)/epix-lib.sh
-
-uninstall-local:
- -rm -rf $(DESTDIR)$(docdir)/notes $(DESTDIR)$(docdir)/config
- -rmdir $(DESTDIR)$(docdir)
diff --git a/graphics/epix/Makefile.in b/graphics/epix/Makefile.in
deleted file mode 100644
index 7aee503276..0000000000
--- a/graphics/epix/Makefile.in
+++ /dev/null
@@ -1,1025 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = .
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \
- $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
- ChangeLog INSTALL NEWS THANKS TODO config.guess config.sub \
- depcomp install-sh missing mkinstalldirs
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno configure.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)" \
- "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkglibdir)" \
- "$(DESTDIR)$(includedir)" "$(DESTDIR)$(pkgincludedir)"
-pkglibLIBRARIES_INSTALL = $(INSTALL_DATA)
-LIBRARIES = $(pkglib_LIBRARIES)
-AR = ar
-ARFLAGS = cru
-libepix_a_AR = $(AR) $(ARFLAGS)
-am__DEPENDENCIES_1 = active_screen.o affine.o angle_units.o \
- arrow_data.o arrow_style.o axis.o camera.o circle.o clipping.o \
- Color_Base.o Color.o Color_CMY.o Color_CMYK.o Color_Gray.o \
- Color_Neutral.o Color_RGB.o Color_Sep.o Color_Utils.o \
- cropping.o curves.o data_bins.o data_file.o data_mask.o \
- domain.o eepic.o facet.o format.o frac.o frame.o functions.o \
- geometry.o glyph.o halfspace.o hatching.o intersections.o \
- interval.o label_data.o label_style.o legend.o legend_item.o \
- legend_tile.o length.o lens.o markers.o marker_style.o \
- mask_diamond.o mask_ellipse.o mask_rectangle.o paint_style.o \
- pairs.o path.o path_data.o path_style.o pen_arrow.o pen_data.o \
- pen_fill.o pen_line.o picture.o picture_data.o plane.o plots.o \
- pst.o screen.o screen_crop.o screen_data.o screen_mask.o \
- segment.o spline.o sphere.o state.o surface.o tikz.o tile.o \
- triples.o utils.o verbatim.o
-libepix_a_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_1 = active_screen.$(OBJEXT) affine.$(OBJEXT) \
- angle_units.$(OBJEXT) arrow_data.$(OBJEXT) \
- arrow_style.$(OBJEXT) axis.$(OBJEXT) camera.$(OBJEXT) \
- circle.$(OBJEXT) clipping.$(OBJEXT) Color_Base.$(OBJEXT) \
- Color.$(OBJEXT) Color_CMY.$(OBJEXT) Color_CMYK.$(OBJEXT) \
- Color_Gray.$(OBJEXT) Color_Neutral.$(OBJEXT) \
- Color_RGB.$(OBJEXT) Color_Sep.$(OBJEXT) Color_Utils.$(OBJEXT) \
- cropping.$(OBJEXT) curves.$(OBJEXT) data_bins.$(OBJEXT) \
- data_file.$(OBJEXT) data_mask.$(OBJEXT) domain.$(OBJEXT) \
- eepic.$(OBJEXT) facet.$(OBJEXT) format.$(OBJEXT) \
- frac.$(OBJEXT) frame.$(OBJEXT) functions.$(OBJEXT) \
- geometry.$(OBJEXT) glyph.$(OBJEXT) halfspace.$(OBJEXT) \
- hatching.$(OBJEXT) intersections.$(OBJEXT) interval.$(OBJEXT) \
- label_data.$(OBJEXT) label_style.$(OBJEXT) legend.$(OBJEXT) \
- legend_item.$(OBJEXT) legend_tile.$(OBJEXT) length.$(OBJEXT) \
- lens.$(OBJEXT) markers.$(OBJEXT) marker_style.$(OBJEXT) \
- mask_diamond.$(OBJEXT) mask_ellipse.$(OBJEXT) \
- mask_rectangle.$(OBJEXT) paint_style.$(OBJEXT) pairs.$(OBJEXT) \
- path.$(OBJEXT) path_data.$(OBJEXT) path_style.$(OBJEXT) \
- pen_arrow.$(OBJEXT) pen_data.$(OBJEXT) pen_fill.$(OBJEXT) \
- pen_line.$(OBJEXT) picture.$(OBJEXT) picture_data.$(OBJEXT) \
- plane.$(OBJEXT) plots.$(OBJEXT) pst.$(OBJEXT) screen.$(OBJEXT) \
- screen_crop.$(OBJEXT) screen_data.$(OBJEXT) \
- screen_mask.$(OBJEXT) segment.$(OBJEXT) spline.$(OBJEXT) \
- sphere.$(OBJEXT) state.$(OBJEXT) surface.$(OBJEXT) \
- tikz.$(OBJEXT) tile.$(OBJEXT) triples.$(OBJEXT) \
- utils.$(OBJEXT) verbatim.$(OBJEXT)
-am__objects_2 =
-am__objects_3 = $(am__objects_2)
-am_libepix_a_OBJECTS = $(am__objects_1) $(am__objects_3)
-libepix_a_OBJECTS = $(am_libepix_a_OBJECTS)
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(bin_SCRIPTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
- -o $@
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libepix_a_SOURCES)
-DIST_SOURCES = $(libepix_a_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-exec-recursive install-info-recursive \
- install-recursive installcheck-recursive installdirs-recursive \
- pdf-recursive ps-recursive uninstall-info-recursive \
- uninstall-recursive
-man1dir = $(mandir)/man1
-NROFF = nroff
-MANS = $(man_MANS)
-pkglibDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkglib_DATA)
-includeHEADERS_INSTALL = $(INSTALL_HEADER)
-pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(include_HEADERS) $(pkginclude_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
- { test ! -d $(distdir) \
- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr $(distdir); }; }
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BASH_PATH = @BASH_PATH@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENABLE_EPIX_EL_FALSE = @ENABLE_EPIX_EL_FALSE@
-ENABLE_EPIX_EL_TRUE = @ENABLE_EPIX_EL_TRUE@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-RUNTIME_COMPILER = @RUNTIME_COMPILER@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-# MAYBE_DIRS = contrib contrib/doc
-#endif
-
-# SUBDIRS = . samples doc $(MAYBE_DIRS)
-SUBDIRS = . samples doc
-
-# Now stuff for this directory specifically
-bin_SCRIPTS = epix elaps flix laps
-pkglib_LIBRARIES = libepix.a
-pkglib_DATA = epix-lib.sh
-include_HEADERS = epix.h
-libepix_a_CXXSOURCES = active_screen.cc affine.cc angle_units.cc \
- arrow_data.cc arrow_style.cc axis.cc camera.cc circle.cc clipping.cc \
- Color_Base.cc Color.cc Color_CMY.cc Color_CMYK.cc Color_Gray.cc \
- Color_Neutral.cc Color_RGB.cc Color_Sep.cc Color_Utils.cc \
- cropping.cc curves.cc \
- data_bins.cc data_file.cc data_mask.cc domain.cc \
- eepic.cc facet.cc format.cc frac.cc frame.cc functions.cc \
- geometry.cc glyph.cc halfspace.cc hatching.cc \
- intersections.cc interval.cc label_data.cc label_style.cc \
- legend.cc legend_item.cc legend_tile.cc \
- length.cc lens.cc markers.cc marker_style.cc \
- mask_diamond.cc mask_ellipse.cc mask_rectangle.cc \
- paint_style.cc pairs.cc path.cc path_data.cc \
- path_style.cc pen_arrow.cc pen_data.cc pen_fill.cc pen_line.cc \
- picture.cc picture_data.cc plane.cc plots.cc pst.cc \
- screen.cc screen_crop.cc screen_data.cc screen_mask.cc \
- segment.cc spline.cc sphere.cc state.cc surface.cc tikz.cc tile.cc \
- triples.cc utils.cc verbatim.cc
-
-# polygon.cc
-libepix_a_HDRS = $(libepix_a_CXXSOURCES:.cc=.h) constants.h \
- crop_algorithms.h deriv.h edge_data.h enums.h errors.h \
- map.h plot_algorithms.h spline_data.h
-
-libepix_a_SOURCES = $(libepix_a_CXXSOURCES) $(libepix_a_HDRS)
-libepix_a_LIBADD = $(libepix_a_CXXSOURCES:.cc=.o)
-pkginclude_HEADERS = $(libepix_a_HDRS)
-man_MANS = epix.1 elaps.1 flix.1 laps.1
-@ENABLE_EPIX_EL_TRUE@EPIX_EL = epix.el
-EPIX_CONFFILES = bash_completions $(EPIX_EL)
-EPIX_NOTEFILES = AUTHORS BUGS ChangeLog COPYING INSTALL NEWS POST-INSTALL \
- README THANKS VERSION
-
-EXTRA_DIST = $(bin_SCRIPTS) $(man_MANS) $(EPIX_CONFFILES) $(EPIX_NOTEFILES) \
- $(pkgdata_DATA)
-
-CLEANFILES = *~ $(libepix_a_OBJECTS) $(bin_SCRIPTS) $(bin_SCRIPTS:=-local) \
- epix.h epix.1 epix.el
-
-all: all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .cc .o .obj
-am--refresh:
- @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
- cd $(srcdir) && $(AUTOMAKE) --gnu \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- echo ' $(SHELL) ./config.status'; \
- $(SHELL) ./config.status;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-install-pkglibLIBRARIES: $(pkglib_LIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)"
- @list='$(pkglib_LIBRARIES)'; for p in $$list; do \
- if test -f $$p; then \
- f=$(am__strip_dir) \
- echo " $(pkglibLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
- $(pkglibLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
- else :; fi; \
- done
- @$(POST_INSTALL)
- @list='$(pkglib_LIBRARIES)'; for p in $$list; do \
- if test -f $$p; then \
- p=$(am__strip_dir) \
- echo " $(RANLIB) '$(DESTDIR)$(pkglibdir)/$$p'"; \
- $(RANLIB) "$(DESTDIR)$(pkglibdir)/$$p"; \
- else :; fi; \
- done
-
-uninstall-pkglibLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(pkglib_LIBRARIES)'; for p in $$list; do \
- p=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(pkglibdir)/$$p'"; \
- rm -f "$(DESTDIR)$(pkglibdir)/$$p"; \
- done
-
-clean-pkglibLIBRARIES:
- -test -z "$(pkglib_LIBRARIES)" || rm -f $(pkglib_LIBRARIES)
-install-binSCRIPTS: $(bin_SCRIPTS)
- @$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- @list='$(bin_SCRIPTS)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- if test -f $$d$$p; then \
- f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
- echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
- $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
- else :; fi; \
- done
-
-uninstall-binSCRIPTS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_SCRIPTS)'; for p in $$list; do \
- f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
- rm -f "$(DESTDIR)$(bindir)/$$f"; \
- done
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color_Base.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color_CMY.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color_CMYK.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color_Gray.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color_Neutral.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color_RGB.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color_Sep.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Color_Utils.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/active_screen.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/affine.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/angle_units.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arrow_data.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arrow_style.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/camera.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/circle.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clipping.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cropping.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curves.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data_bins.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data_file.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data_mask.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/domain.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eepic.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/facet.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frac.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frame.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/functions.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geometry.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glyph.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/halfspace.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hatching.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/intersections.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interval.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/label_data.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/label_style.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legend.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legend_item.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legend_tile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/length.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lens.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/marker_style.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_diamond.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_ellipse.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_rectangle.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paint_style.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pairs.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path_data.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path_style.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pen_arrow.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pen_data.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pen_fill.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pen_line.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/picture.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/picture_data.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plane.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plots.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pst.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen_crop.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen_data.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen_mask.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/segment.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sphere.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spline.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/surface.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tikz.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/triples.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/verbatim.Po@am__quote@
-
-.cc.o:
-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-uninstall-info-am:
-install-man1: $(man1_MANS) $(man_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 1*) ;; \
- *) ext='1' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
- done
-uninstall-man1:
- @$(NORMAL_UNINSTALL)
- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 1*) ;; \
- *) ext='1' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
- rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
- done
-install-pkglibDATA: $(pkglib_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)"
- @list='$(pkglib_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
- $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
- done
-
-uninstall-pkglibDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(pkglib_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
- rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
- done
-install-includeHEADERS: $(include_HEADERS)
- @$(NORMAL_INSTALL)
- test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
- @list='$(include_HEADERS)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
- $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
- done
-
-uninstall-includeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(include_HEADERS)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
- rm -f "$(DESTDIR)$(includedir)/$$f"; \
- done
-install-pkgincludeHEADERS: $(pkginclude_HEADERS)
- @$(NORMAL_INSTALL)
- test -z "$(pkgincludedir)" || $(mkdir_p) "$(DESTDIR)$(pkgincludedir)"
- @list='$(pkginclude_HEADERS)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \
- $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \
- done
-
-uninstall-pkgincludeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(pkginclude_HEADERS)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \
- rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \
- done
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- $(am__remove_distdir)
- mkdir $(distdir)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(mkdir_p) "$(distdir)/$$subdir" \
- || exit 1; \
- distdir=`$(am__cd) $(distdir) && pwd`; \
- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
- (cd $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$top_distdir" \
- distdir="$$distdir/$$subdir" \
- distdir) \
- || exit 1; \
- fi; \
- done
- -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
- || chmod -R a+r $(distdir)
-dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
-
-dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
-
-dist-tarZ: distdir
- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
-
-dist-shar: distdir
- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
-
-dist-zip: distdir
- -rm -f $(distdir).zip
- zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
-
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- case '$(DIST_ARCHIVES)' in \
- *.tar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
- *.tar.bz2*) \
- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- *.shar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
- *.zip*) \
- unzip $(distdir).zip ;;\
- esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
- chmod a-w $(distdir)
- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- && cd $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
- $(DISTCHECK_CONFIGURE_FLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
- && $(MAKE) $(AM_MAKEFLAGS) check \
- && $(MAKE) $(AM_MAKEFLAGS) install \
- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
- distuninstallcheck \
- && chmod -R a-w "$$dc_install_base" \
- && ({ \
- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- } || { rm -rf "$$dc_destdir"; exit 1; }) \
- && rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist \
- && rm -rf $(DIST_ARCHIVES) \
- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
- $(am__remove_distdir)
- @(echo "$(distdir) archives ready for distribution: "; \
- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
-distuninstallcheck:
- @cd $(distuninstallcheck_dir) \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
- || { echo "ERROR: files left after uninstall:" ; \
- if test -n "$(DESTDIR)"; then \
- echo " (check DESTDIR support)"; \
- fi ; \
- $(distuninstallcheck_listfiles) ; \
- exit 1; } >&2
-distcleancheck: distclean
- @if test '$(srcdir)' = . ; then \
- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
- exit 1 ; \
- fi
- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left in build directory after distclean:" ; \
- $(distcleancheck_listfiles) ; \
- exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(LIBRARIES) $(SCRIPTS) $(MANS) $(DATA) $(HEADERS)
-installdirs: installdirs-recursive
-installdirs-am:
- for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(pkgincludedir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-pkglibLIBRARIES mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-data-local install-includeHEADERS install-man \
- install-pkgincludeHEADERS
-
-install-exec-am: install-binSCRIPTS install-exec-local \
- install-pkglibDATA install-pkglibLIBRARIES
-
-install-info: install-info-recursive
-
-install-man: install-man1
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(top_srcdir)/autom4te.cache
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-binSCRIPTS uninstall-includeHEADERS \
- uninstall-info-am uninstall-local uninstall-man \
- uninstall-pkgincludeHEADERS uninstall-pkglibDATA \
- uninstall-pkglibLIBRARIES
-
-uninstall-info: uninstall-info-recursive
-
-uninstall-man: uninstall-man1
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
- check-am clean clean-generic clean-pkglibLIBRARIES \
- clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
- dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
- distclean-compile distclean-generic distclean-recursive \
- distclean-tags distcleancheck distdir distuninstallcheck dvi \
- dvi-am html html-am info info-am install install-am \
- install-binSCRIPTS install-data install-data-am \
- install-data-local install-exec install-exec-am \
- install-exec-local install-includeHEADERS install-info \
- install-info-am install-man install-man1 \
- install-pkgincludeHEADERS install-pkglibDATA \
- install-pkglibLIBRARIES install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic maintainer-clean-recursive \
- mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am uninstall-binSCRIPTS \
- uninstall-includeHEADERS uninstall-info-am uninstall-local \
- uninstall-man uninstall-man1 uninstall-pkgincludeHEADERS \
- uninstall-pkglibDATA uninstall-pkglibLIBRARIES
-
-
-#if BUILD_CONTRIB
- # Must be in this order!
-
-# Headers
-epix.h: $(libepix_a_HDRS)
- ./make_header
-
-# Scripts; we create local variants which will work during the build process
-epix elaps flix laps: %: %.in epix.el
- sed -e 's%^#! /bin/bash%#! $(BASH_PATH)%;' \
- -e 's%@bindir\@%$(bindir)%;' \
- -e 's%@pkglibdir\@%$(pkglibdir)%;' \
- -e 's%@includedir\@%$(includedir)%;' \
- -e 's%@RUNTIME_COMPILER\@%$(RUNTIME_COMPILER)%;' $< > $@
- sed -e 's%^#! /bin/bash%#! $(BASH_PATH)%;' \
- -e 's%@bindir\@%$(CURDIR)%;' \
- -e 's%@pkglibdir\@%$(CURDIR)%;' \
- -e 's%@includedir\@%$(CURDIR)%;' \
- -e 's%@RUNTIME_COMPILER\@%$(CXX)%;' $< > $@-local
- chmod a+x $@ $@-local
-
-# libepix.a
-libepix.a: $(libepix_a_OBJECTS)
- ar -ru libepix.a $(libepix_a_OBJECTS)
- $(RANLIB) libepix.a
-
-# object file dependencies
-$(libepix_a_LIBADD): %.o: %.cc %.h
-
-# Manpage
-epix.1: epix.1.in
- sed -e 's%@docdir\@%$(docdir)%;' $< > $@
-
-# emacs mode
-epix.el: epix.el.in
- sed -e 's%@docdir\@%$(docdir)%;' $< > $@
-
-# Extra things to install
-install-data-local:
- @echo; echo "Installing notes and configuration files"
- ./mkinstalldirs $(DESTDIR)$(docdir)/notes $(DESTDIR)$(docdir)/config
- $(INSTALL_DATA) $(EPIX_NOTEFILES) $(DESTDIR)$(docdir)/notes
- $(INSTALL_DATA) $(EPIX_CONFFILES) $(DESTDIR)$(docdir)/config
-
-# This is being installed by install-exec, but should not be executable
-install-exec-local: install-pkglibDATA
- chmod a-x $(DESTDIR)$(pkglibdir)/epix-lib.sh
-
-uninstall-local:
- -rm -rf $(DESTDIR)$(docdir)/notes $(DESTDIR)$(docdir)/config
- -rmdir $(DESTDIR)$(docdir)
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/graphics/epix/NEWS b/graphics/epix/NEWS
deleted file mode 100644
index c9b7c4ddd6..0000000000
--- a/graphics/epix/NEWS
+++ /dev/null
@@ -1,91 +0,0 @@
-ePiX-1.2 -- NEWS
-
-Last Change: September 12, 2007
-
-Please consult the following files as appropriate:
-
-INSTALL -- Detailed installation instructions
-NEWS (this file) -- Recent major changes (see ChangeLog for code changes)
-README -- General overview and information
-
-
-If you are new to ePiX, you may safely ignore this file.
-
-OVERVIEW
-
-ePiX 1.2.x has been written almost entirely from scratch. The drawing
-model is unchanged, and some old files will compile as is, but there
-are a few changes of syntax.
-
-
-SYNTAX CHANGES
-
-Generally, global variables have been deprecated or removed, and
-should be replaced by function calls in new files.
-
-* (Recommended) The global size variables x_min, x_max, y_min, y_max,
- x_size, and y_size should be replaced by the function calls xmin(),
- etc. (No underscores.)
-
-* (Mandatory) The global variable tix in a flix file must be
- manipulated through the function tix().
-
-* (Suggested) The camera may be accessed through the function
- the_camera().
-
-* (Mandatory) Camera orientation is controlled with functions named
- tilt, pan, and roll; each rotates the camera about an axis through
- the viewpoint, not through the target.
-
-* (Suggested) The size and bounding box may be given in one command,
- such as picture(P(-1,0), P(1,1), "4x3in"). The old syntax will be
- retained indefinitely.
-
-* (Mandatory) The command use_pstricks() is obsolete.
-
-* (Mandatory) Deprecated aliases no longer exist: triple (for the P
- class), D (for Deriv), and I (for Integral). Lowercase trig function
- names conflicted with the standard namespace and have been removed.
-
-* (Mandatory) The geometric object commands (circle, plane, segment,
- sphere) which used to create class objects now perform drawing. The
- classes are available with capitalized names (Circle, Plane,
- Segment, Sphere).
-
-
-NEW FEATURES
-
-* Output is cleanly separated from the internal representation.
- Figures may be written with a choice of macros---PSTricks, tikz, and
- eepic at present---and new output types are easily coded so long as
- the format supports arbitrary line segments, color, and the ability
- to place a LaTeX box at a specified location.
-
-* Colors are a manipulable data type, available in RGB, CMY, CMYK, and
- Gray models. xcolor-style operations, such as color model
- conversion, blending, superposition, and inversion are provided.
-
- The camera has a filter which affects the colors of all scene
- elements. Filters performing CMYK separation are provided.
-
-* Color filling is controlled with declarations, similarly to line
- colors in ePiX 1.0.x. Arrows and markers of type spot, dot, ddot,
- and~circ are now colored like other markers. Shaded surfaces may be
- colored with position-dependent functions.
-
- If a figure contains many shaded elements, a color-capable output
- format (PSTricks or tikz) should be used for efficiency. Filled
- regions are implemented as fine hatching in eepic.
-
-* An axis class provides coordinate axes with labels in a variety of
- styles: decimals or scientific notation of specified precision,
- fractions, trig fractions, logarithmic labels in arbitrary (integer)
- base, and user-supplied styles.
-
-* ePiX 1.2.x performs page layout. Sub-figures may be manipulated
- flexibly. The sample files give several applications.
-
-* Non-member intersection operators for Circles, Planes, Segments, and
- Spheres are provided. A ``non-generic'' intersection does not
- throw an exception, but instead returns an undrawable ``malformed''
- object.
diff --git a/graphics/epix/POST-INSTALL b/graphics/epix/POST-INSTALL
deleted file mode 100644
index 5dec6e6970..0000000000
--- a/graphics/epix/POST-INSTALL
+++ /dev/null
@@ -1,123 +0,0 @@
-ePiX-1.2 -- POST-INSTALL
-
-Last Change: September 12, 2007
-
-This file contains post-install configuration instructions for users.
-Please consult the following files as appropriate:
-
-INSTALL -- Detailed installation instructions
-NEWS -- Recent major changes (see ChangeLog for code changes)
-README -- General overview and information
-
-
-CONVENTIONS
-
-Lines starting with a "%" denote commands typed at a shell prompt.
-Lines starting with a "#" denote commands run as root.
-Don't type the prompt characters "%" or "#". :)
-
-"$(prefix)" stands for the complete path to the install directory,
-e.g. "/usr/local" or "/home/pootle/epix".
-
-Files mentioned below are installed in $(prefix)/share/doc/epix/config/
-
-
-PROGRAMMABLE COMPLETION in bash
-
-If you type "epix c[TAB]", bash normally displays all files and
-directories whose name starts with "c". If programmable completion is
-enabled, bash will show only those files whose name starts with "c"
-*and* whose extension is that of an epix input file.
-
-Programmable completion in bash is available only with Version 2.05 and
-later, and you must install Ian MacDonald's bash completion package. Do
-a search for "bash programmable completion" at
-
- http://freshmeat.net
-
-The file "$(prefix)/share/doc/epix/config/bash_completions" contains
-programmable completion code for ePiX's shell scripts. These lines
-should be put into your bash config file (~/.bashrc) just after the
-line that includes the system-wide bash completion config file (q.v.).
-
-
-EMACS MODE
-
-Jay Belanger has kindly provided an emacs mode (epix.el) for working
-with epix source files. To use epix mode, put a copy of the file
-"epix.el" in your emacs load path; under GNU/Linux, an appropriate
-system directory is /usr/share/emacs. If you are not the superuser,
-use a directory such as ${HOME}/share/emacs:
-
-% mkdir -p ~/share/emacs
-% cp $(prefix)/share/doc/epix/config/epix.el ~/share/emacs/
-
-Then add these lines to your .emacs file:
----(snip)---
-(setq load-path (cons "~/share/emacs/" load-path))
-(setq auto-mode-alist (cons '("\\.xp" . epix-mode) auto-mode-alist))
-(autoload 'epix-mode "epix" "ePiX editing mode" t)
-(setq epix-mark-files-as-epix t)
-(setq epix-insert-template-in-empty-buffer t)
-
-(autoload 'flix-mode "epix" "ePiX editing mode" t)
-(setq auto-mode-alist (cons '("\\.flx" . flix-mode) auto-mode-alist))
----(snip)---
-
-Change "~/share/emacs/" in the first line as appropriate. If you open
-a new file with extension ".xp" or ".flx", emacs will automatically
-insert a matching preamble template and enter epix-mode or flix-mode,
-respectively. You can then compile and preview ePiX source files with
-emacs commands, or read the info file; please see epix.el for more
-details.
-
-If necessary (for instance, if your source file must have extension
-".cc" for some reason), you can enter epix mode manually by typing
-
-M-x epix-mode
-
-in emacs. (The notation "M-x" means the emacs META key, usually ESC,
-followed by "x".)
-
-
-OTHER CONFIG FILES
-
-The files ~/.dvipsrc and ~/.epixrc affect the behavior of epix, elaps,
-and laps. The use of .epixrc is documented in the tutorial. Neither
-file is required in order to use ePiX.
-
-
-SETTING the PATH
-
-If you've installed ePiX but receive a "command not found" error
-message when trying to compile figures, you probably need to set your
-PATH, the shell environment variable listing the directories to be
-searched for executable code.
-
-As above, $(prefix) stands for the directory in which ePiX has been
-installed and "%" denotes a prompt. Below, $(prefix) must be replaced
-with the actual path. Issue the command
-
-% echo $PATH
-
-If $(prefix)/bin is not shown, you must determine what shell you're
-using and edit the appropriate shell configuration file. Do
-
-% ?
-
-If the response is: Put this line: Into the file:
-------------------- -------------- --------------
-bash: ?: command not found export PATH=$PATH:$(prefix)/bin ~/.bashrc
-
-?: no match setenv PATH $PATH:$(prefix)/bin ~/.cshrc
-
-In the first case, do not put spaces around the equals sign. If the
-response is something else, please consult your system administrator
-for assistance.
-
-Now re-load the appropriate configuration file and try an ePiX command:
-
-% source ~/.bashrc
-% epix --help
-
-If this still doesn't work, please consult your system administrator.
diff --git a/graphics/epix/README b/graphics/epix/README
deleted file mode 100644
index 91d8889ceb..0000000000
--- a/graphics/epix/README
+++ /dev/null
@@ -1,139 +0,0 @@
-ePiX -- README
-
-Last Change: September 12, 2007
-
-Please consult the following files as appropriate:
-
-INSTALL -- Detailed installation instructions
-NEWS -- Recent major changes (see ChangeLog for code changes)
-README (this file) -- General overview and information
-
-
-DESCRIPTION
-
-ePiX (pronounced like "epic" with a soft "k", playing on "TeX"), a
-collection of command line utilities for *nix, creates mathematically
-accurate figures, plots, and movies using easy-to-learn syntax. The
-output is expressly designed for use with LaTeX.
-
-The user interface resembles that of LaTeX itself: You prepare a short
-scene description in a text editor, then compile the input file into a
-picture. LaTeX- and web-compatible output types include a LaTeX
-picture-like environment written with PSTricks, tikz, or eepic macros;
-vector images (eps, ps, and pdf); and bitmap images (png, mng, gif).
-
-
-INSTALLATION
-
-Please see the "INSTALL" file.
-
-
-OVERVIEW
-
-ePiX's command-line conversion utilities are
-
-* epix: ePiX to eepic
-
-* elaps: ePiX and eepic to eps or pdf
-
-* laps: (La)TeX to PostScript
-
-* flix: ePiX to png or mng
-
-Each script prints a detailed help message when invoked with the
-option "-h" (help)
-
-
-DOCUMENTATION
-
-ePiX documentation is installed in $(prefix)/share/doc/epix, by
-default /usr/local/share/doc/epix.
-
-The manual, a complete description of ePiX's features and use, is
-installed as PostScript (for printing), hyperlinked PDF (for online
-reading), GNU info (for reference within emacs), and as LaTeX sources.
-
-
-DEVELOPER FILES
-
-The header files are installed in $(pkgincludedir), by default
-$(prefix)/include/epix.
-
-
-INTERNET DOWNLOAD SITES
-
-* http://math.holycross.edu/~ahwang/epix/ePiX.html
-
- Links to currently available packages and documentation, general
- information, sample images and animations, and summaries of the
- latest developments.
-
-
-* http://freshmeat.net/projects/epix
-
- Announcements of recent releases, project stats, and links.
-
-
-* http://www.ctan.org/tex-archive/graphics/epix/
-
- Stable releases with synchronized documentation.
-
-
-* http://savannah.nongnu.org/cgi-bin/viewcvs/epix/1.2
-
- The very latest source code by CVS.
-
-
-As with all free (GPL) software, the source code can be obtained on a
-floppy disk from the author by post ("snail mail"), in this case from:
-
-Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
-Dept. of Mathematics and Computer Science
-College of the Holy Cross
-Worcester, MA, 01610-2395, USA
-
-
-PYEPIX
-
-Though ePiX can be compiled and run using CygWin, Windows users may be
-more interested in Andrew Sterian's Pyepix package, an implementation
-of ePiX-1.0.4 in Python. Pyepix is available from
-
- http://claymore.engineer.gvsu.edu/~steriana/Python/index.html
-
-and requires Python 2.2 or newer.
-
-
-MAILING LIST
-
-There are two mailing lists, for users and for development issues.
-Please visit
-
- http://savannah.nongnu.org/mail/?group=epix
-
-to subscribe.
-
-
-COPYLEFT and DISTRIBUTION
-
-ePiX and its documentation are distributed under the terms of the GNU
-GPL. This program and its documentation come with ABSOLUTELY NO
-WARRANTY OF ANY KIND, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR
-FITNESS FOR A PARTICULAR PURPOSE. This is the same guarantee granted
-by all common software, including expensive, proprietary software
-whose quality you have no way to verify directly, and whose license
-you tacitly accept merely by opening the package.
-
-Feedback about this program (suggestions for features, etc.) is
-welcome. If you find this program useful, please consider making a
-contribution to the Free Software Foundation; see
-
- http://www.fsf.org
-
-
---- Contact Information ---
-
-Andrew D. ("Andy") Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
-Dept. of Mathematics and Computer Science
-College of the Holy Cross
-Worcester, MA, 01610-2395, USA
diff --git a/graphics/epix/THANKS b/graphics/epix/THANKS
deleted file mode 100644
index 49890d72bc..0000000000
--- a/graphics/epix/THANKS
+++ /dev/null
@@ -1,122 +0,0 @@
-ePiX -- THANKS
-
-ePiX is built on the work of many people (unfortunately, most of whom
-I am unaware). A few of the obvious ones are, in alphabetical order:
-
-Donald E. Knuth TeX, and so much more
-Conrad Kwok eepic
-
-Leslie Lamport LaTeX
-
-Tim Morgan tpic
-
-Piet van Oostrum eepic
-
-Sunil Podar the epic style
-
-Richard M. Stallman the GNU project
-
-Till Tantau pgf/tikz
-
-Herbert Voss PSTricks
-Timothy Van Zandt
-
-----------------------------------------------------------------------
-
-Special thanks to: For:
-
-Jay Belanger The emacs mode
-Robin Blume-Kohout Design suggestions
-
-Svend Daugaard Pedersen Extended coordinate systems and plotting capability
-
-Julian Gilbey Getting ePiX to work with autoconf/automake
-Guido Gonzato Creating and maintaining the RPM
-
-Marcus Hanwell Data plotting and manipulation code
-Yvon Henel French translation of the manual
-
-Jean-Michel Sarlat http://melusine.eu.org/syracuse/epix/
-Andrew Sterian Pyepix and its Windows package
-
-
----
-
-Ports contributors and maintainers:
-
-Crux:
-Youn\`es Hafri http://yhafri.club.fr/crux/index.html
-
-Debian: http://packages.debian.org/unstable/tex/epix1
-Julian Gilbey
-
-
-FreeBSD: http://www.freshports.org/graphics/epix/
-Tsuguru Kato
-
-
-Gentoo: http://packages.gentoo.org/search/?sstring=epix
-Markus Dittrich
-Danny van Dyk
-Christian Faulhammer
-Olivier Fisette
-Chris Gianelloni
-Michael Hanselmann
-Marcus Hanwell
-David Holm
-Peter Johanson
-Patrick Kursawe
-Tobias Scherbaum
-Markus Ullmann
-
-T2: http://www.t2-project.org/packages/epix.html
-Ren\'e Rebe
-
-
-----------------------------------------------------------------------
-
-Many thanks to the following people, who have helped publicize ePiX
-or reported and/or patched bugs (in both code and documentation)
-
-<Anonymous>
-
-Maik Beckmann
-Jay Belanger
-Felipe Paulo Guazzi Bergo
-Karl Berry
-Robin Blume-Kohout
-
-Patrick Cousot
-
-Stephen Gibson
-Julian Gilbey
-Dov Grobgeld
-Bob Grover
-
-Jim Hefferon
-Yvon Henel
-Hartmut Henkel
-
-Herng-Jeng Jou
-
-Walter A. Kehowski
-
-Jacques L'helgoual
-
-Kevin McKormick
-Ross Moore
-
-Thorsten Riess
-
-Neel Smith
-Michael Somos
-Andrew Sterian
-
-Ryszard Tanas
-Kai Trukenmueller
-
-Torbjorn Vik
-
-Wenguang Wang
-Gabe Weaver
-Mariusz Wodzicki
diff --git a/graphics/epix/TODO b/graphics/epix/TODO
deleted file mode 100644
index e69de29bb2..0000000000
--- a/graphics/epix/TODO
+++ /dev/null
diff --git a/graphics/epix/VERSION b/graphics/epix/VERSION
deleted file mode 100644
index 6085e94650..0000000000
--- a/graphics/epix/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-1.2.1
diff --git a/graphics/epix/aclocal.m4 b/graphics/epix/aclocal.m4
deleted file mode 100644
index b6186f2ab8..0000000000
--- a/graphics/epix/aclocal.m4
+++ /dev/null
@@ -1,879 +0,0 @@
-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005 Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION so it can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
- [AM_AUTOMAKE_VERSION([1.9.6])])
-
-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory. The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run. This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-# fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-# fails if $ac_aux_dir is absolute,
-# fails when called from a subdirectory in a VPATH build with
-# a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-# MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH. The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 7
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])
-AC_SUBST([$1_FALSE])
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
-else
- $1_TRUE='#'
- $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery. Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
- [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_$1_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
- fi
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- case $depmode in
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- none) break ;;
- esac
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this.
- if depmode=$depmode \
- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_$1_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])
-])
-
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-#serial 3
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # So let's grep whole file.
- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
-done
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake. -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 12
-
-# This macro actually does too much. Some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out. PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition. After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.58])dnl
-dnl Autoconf wants to disallow AM_ names. We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
- test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
- [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-])
-])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated. The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $1 | $1:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-AC_SUBST(install_sh)])
-
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
-# From Jim Meyering
-
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-AC_DEFUN([AM_MAINTAINER_MODE],
-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
- dnl maintainer-mode is disabled by default
- AC_ARG_ENABLE(maintainer-mode,
-[ --enable-maintainer-mode enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer],
- USE_MAINTAINER_MODE=$enableval,
- USE_MAINTAINER_MODE=no)
- AC_MSG_RESULT([$USE_MAINTAINER_MODE])
- AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
- MAINT=$MAINTAINER_MODE_TRUE
- AC_SUBST(MAINT)dnl
-]
-)
-
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 3
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo done
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
- am__include=include
- am__quote=
- _am_result=GNU
-fi
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
- am__include=.include
- am__quote="\""
- _am_result=BSD
- fi
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-#
-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
-# created by `make install' are always world readable, even if the
-# installer happens to have an overly restrictive umask (e.g. 077).
-# This was a mistake. There are at least two reasons why we must not
-# use `-m 0755':
-# - it causes special bits like SGID to be ignored,
-# - it may be too restrictive (some setups expect 775 directories).
-#
-# Do not use -m 0755 and let people choose whatever they expect by
-# setting umask.
-#
-# We cannot accept any implementation of `mkdir' that recognizes `-p'.
-# Some implementations (such as Solaris 8's) are not thread-safe: if a
-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
-# concurrently, both version can detect that a/ is missing, but only
-# one can create it and the other will error out. Consequently we
-# restrict ourselves to GNU make (using the --version option ensures
-# this.)
-AC_DEFUN([AM_PROG_MKDIR_P],
-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- # We used to keeping the `.' as first argument, in order to
- # allow $(mkdir_p) to be used without argument. As in
- # $(mkdir_p) $(somedir)
- # where $(somedir) is conditionally defined. However this is wrong
- # for two reasons:
- # 1. if the package is installed by a user who cannot write `.'
- # make install will fail,
- # 2. the above comment should most certainly read
- # $(mkdir_p) $(DESTDIR)$(somedir)
- # so it does not work when $(somedir) is undefined and
- # $(DESTDIR) is not.
- # To support the latter case, we have to write
- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
- # so the `.' trick is pointless.
- mkdir_p='mkdir -p --'
-else
- # On NextStep and OpenStep, the `mkdir' command does not
- # recognize any option. It will interpret all options as
- # directories to create, and then abort because `.' already
- # exists.
- for d in ./-p ./--version;
- do
- test -d $d && rmdir $d
- done
- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
- if test -f "$ac_aux_dir/mkinstalldirs"; then
- mkdir_p='$(mkinstalldirs)'
- else
- mkdir_p='$(install_sh) -d'
- fi
-fi
-AC_SUBST([mkdir_p])])
-
-# Helper functions for option handling. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 3
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME. Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Check to make sure that the build environment is sane. -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t $srcdir/configure conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries. This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
- AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Check how to create a tarball. -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-# tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-# $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
-
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
-
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
- rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
diff --git a/graphics/epix/active_screen.cc b/graphics/epix/active_screen.cc
deleted file mode 100644
index 05fafc804e..0000000000
--- a/graphics/epix/active_screen.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * active_screen.cc -- ePiX screen_broker class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.11
- * Last Change: August 15, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include "screen.h"
-#include "picture_data.h"
-#include "picture.h"
-#include "active_screen.h"
-
-namespace ePiX {
-
- screen_broker::screen_broker()
- {
- m_screens.push_front(&the_picture().the_canvas);
- }
-
- screen* screen_broker::active() const
- {
- return *(m_screens.begin());
- }
-
- void screen_broker::push(screen& scr)
- {
- m_screens.push_front(&scr);
- }
-
- screen* screen_broker::pop()
- {
- std::list<screen*>::const_iterator sp(m_screens.begin());
-
- screen* val(*sp);
-
- if (++sp != m_screens.end())
- m_screens.pop_front();
-
- return val;
- }
-
-
- // global functions
- screen_broker& the_screen_stack()
- {
- static screen_broker* the_screen_broker(new screen_broker());
- return *the_screen_broker;
- }
-
- screen* active_screen()
- {
- return the_screen_stack().active();
- }
-} // end of namespace
diff --git a/graphics/epix/active_screen.h b/graphics/epix/active_screen.h
deleted file mode 100644
index 79bb909063..0000000000
--- a/graphics/epix/active_screen.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * active_screen.h -- ePiX screen_broker class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.11
- * Last Change: August 15, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * A screen_broker is a simple stack of screen*, permitting client code
- * to activate a screen then restore the state later. No attempt is made
- * to handle concurrent threads, but the global "deactivate" function
- * in picture.h prints a warning if its argument is not active.
- */
-#ifndef EPIX_ACTIVE_SCREEN
-#define EPIX_ACTIVE_SCREEN
-
-#include <list>
-
-namespace ePiX {
-
- class screen;
-
- class screen_broker {
- public:
- screen_broker();
-
- // no need for destructor; we don't manage resources
-
- screen* active() const;
- void push(screen&);
- screen* pop();
-
- private:
- std::list<screen*> m_screens;
-
- // forbid copying
- screen_broker(const screen_broker&);
- screen_broker& operator= (const screen_broker&);
- };
-
- screen_broker& the_screen_stack();
- screen* active_screen();
-} // end of namespace
-
-#endif /* EPIX_ACTIVE_SCREEN */
diff --git a/graphics/epix/affine.cc b/graphics/epix/affine.cc
deleted file mode 100644
index cc28e40cbf..0000000000
--- a/graphics/epix/affine.cc
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * affine.cc -- ePiX::affine class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 23, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "errors.h"
-#include "constants.h"
-
-#include "pairs.h"
-#include "triples.h"
-#include "functions.h"
-
-#include "affine.h"
-
-namespace ePiX {
-
- // rotate/reflect about (0,0)
- static pair __epix_rotate(double Cs, double Sn, const pair& arg)
- {
- double x(arg.x1()), y(arg.x2());
- return pair(Cs*x - Sn*y, Sn*x + Cs*y);
- }
-
- static pair __epix_reflect(double Cs, double Sn, const pair& arg)
- {
- double x(arg.x1()), y(arg.x2());
- return pair(Cs*x + Sn*y, Sn*x - Cs*y);
- }
-
- // identity
- affine::affine()
- : m_00(0,0), m_10(1,0), m_01(0,1) { }
-
- // images of (1,0), (0,1), (0,0)
- affine::affine(const pair& pr1, const pair& pr2, const pair& loc)
- : m_00(loc), m_10(pr1), m_01(pr2) { }
-
- affine::affine(const P& pr1, const P& pr2, const P& loc)
- : m_00(loc.x1(), loc.x2()),
- m_10(pr1.x1(), pr1.x2()),
- m_01(pr2.x1(), pr2.x2()) { }
-
- affine& affine::shift(const pair& arg)
- {
- m_00 += arg;
- m_10 += arg;
- m_01 += arg;
-
- return *this;
- }
-
- affine& affine::shift(const P& arg)
- {
- return shift(pair(arg.x1(), arg.x2()));
- }
-
- affine& affine::rotate(double theta, const pair& ctr)
- {
- const double Cs(Cos(theta));
- const double Sn(Sin(theta));
-
- // shift
- m_00 -= ctr;
- m_10 -= ctr;
- m_01 -= ctr;
-
- // rotate about origin and shift back
- m_00 = __epix_rotate(Cs, Sn, m_00) + ctr;
- m_10 = __epix_rotate(Cs, Sn, m_10) + ctr;
- m_01 = __epix_rotate(Cs, Sn, m_01) + ctr;
-
- return *this;
- }
-
- affine& affine::rotate(double theta, const P& ctr)
- {
- return rotate(theta, pair(ctr.x1(), ctr.x2()));
- }
-
- affine& affine::reflect(double theta, const pair& ctr)
- {
- const double Cs(Cos(2*theta));
- const double Sn(Sin(2*theta));
-
- // shift
- m_00 -= ctr;
- m_10 -= ctr;
- m_01 -= ctr;
-
- // reflect about origin and shift back
- m_00 = __epix_reflect(Cs, Sn, m_00) + ctr;
- m_10 = __epix_reflect(Cs, Sn, m_10) + ctr;
- m_01 = __epix_reflect(Cs, Sn, m_01) + ctr;
-
- return *this;
- }
-
- affine& affine::reflect(double theta, const P& ctr)
- {
- return reflect(theta, pair(ctr.x1(), ctr.x2()));
- }
-
- affine& affine::h_scale(double sc, const pair& ctr)
- {
- m_00 -= ctr;
- m_10 -= ctr;
- m_01 -= ctr;
-
- const pair scale(sc, 1);
-
- m_00 = (m_00 & scale) + ctr;
- m_10 = (m_10 & scale) + ctr;
- m_01 = (m_01 & scale) + ctr;
-
- return *this;
- }
-
- affine& affine::h_scale(double sc, const P& ctr)
- {
- return h_scale(sc, pair(ctr.x1(), ctr.x2()));
- }
-
- affine& affine::v_scale(double sc, const pair& ctr)
- {
- // shift
- m_00 -= ctr;
- m_10 -= ctr;
- m_01 -= ctr;
-
- const pair scale(1, sc);
-
- m_00 = (m_00 & scale) + ctr;
- m_10 = (m_10 & scale) + ctr;
- m_01 = (m_01 & scale) + ctr;
-
- return *this;
- }
-
- affine& affine::v_scale(double sc, const P& ctr)
- {
- return v_scale(sc, pair(ctr.x1(), ctr.x2()));
- }
-
- affine& affine::scale(double sc, const pair& ctr)
- {
- // shift
- m_00 -= ctr;
- m_10 -= ctr;
- m_01 -= ctr;
-
- const pair scale(sc, sc);
-
- m_00 = (m_00 & scale) + ctr;
- m_10 = (m_10 & scale) + ctr;
- m_01 = (m_01 & scale) + ctr;
-
- return *this;
- }
-
- affine& affine::scale(double sc, const P& ctr)
- {
- return scale(sc, pair(ctr.x1(), ctr.x2()));
- }
-
-
- affine& affine::h_shear(double sc, const pair& ctr)
- {
- // shift
- m_00 -= ctr;
- m_10 -= ctr;
- m_01 -= ctr;
-
- m_00 += pair(sc*m_00.x2(), 0) + ctr;
- m_10 += pair(sc*m_10.x2(), 0) + ctr;
- m_01 += pair(sc*m_01.x2(), 0) + ctr;
-
- return *this;
- }
-
- affine& affine::h_shear(double sc, const P& ctr)
- {
- return h_shear(sc, pair(ctr.x1(), ctr.x2()));
- }
-
- affine& affine::v_shear(double sc, const pair& ctr)
- {
- // shift
- m_00 -= ctr;
- m_10 -= ctr;
- m_01 -= ctr;
-
- m_00 += pair(0, sc*m_00.x1()) + ctr;
- m_10 += pair(0, sc*m_10.x1()) + ctr;
- m_01 += pair(0, sc*m_01.x1()) + ctr;
-
- return *this;
- }
-
- affine& affine::v_shear(double sc, const P& ctr)
- {
- return v_shear(sc, pair(ctr.x1(), ctr.x2()));
- }
-
- affine& affine::postcomp(const affine& af)
- {
- m_00 = af(m_00);
- m_10 = af(m_10);
- m_01 = af(m_01);
-
- return *this;
- }
-
- affine& affine::invert()
- {
- m_10 -= m_00;
- m_01 -= m_00;
-
- const double denom(m_10.x1()*m_01.x2() - m_10.x2()*m_01.x1());
-
- if (fabs(denom) < EPIX_EPSILON)
- {
- // restore
- m_10 += m_00;
- m_01 += m_00;
- epix_warning("affine not invertible, no action");
- return *this;
- }
-
- // else compute inverse entries
- const double a11( m_01.x2()/denom);
- const double a12(-m_01.x1()/denom);
- const double a21(-m_10.x2()/denom);
- const double a22( m_10.x1()/denom);
-
- pair tmp_00(-a11*m_00.x1() + a12*m_00.x2(),
- a21*m_00.x1() - a22*m_00.x2());
-
- m_00 = tmp_00;
- m_10 = m_00 + pair(a11, a21);
- m_01 = m_00 + pair(a12, a22);
-
- return *this;
- }
-
-
- // evaluation
- pair affine::operator() (const pair& arg) const
- {
- return m_00 + arg.x1()*(m_10 - m_00) + arg.x2()*(m_01 - m_00);
- }
-
- pair affine::operator() (const P& arg) const
- {
- return m_00 + arg.x1()*(m_10 - m_00) + arg.x2()*(m_01 - m_00);
- }
-
- // pre-composition
- affine affine::operator() (const affine& af) const
- {
- return affine(this->operator()(af.m_10),
- this->operator()(af.m_01),
- this->operator()(af.m_00));
- }
-
- bool affine::reverses_orientation() const
- {
- const pair col1(m_10 - m_00);
- const pair col2(m_01 - m_00);
-
- return (col1.x1()*col2.x2() - col1.x2()*col2.x1() < -EPIX_EPSILON);
- }
-} // end of namespace
diff --git a/graphics/epix/affine.h b/graphics/epix/affine.h
deleted file mode 100644
index a56758e550..0000000000
--- a/graphics/epix/affine.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * affine.h -- ePiX::affine class (affine screen maps)
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 23, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * An affine map is constructed from the images of the "standard
- * triple" (0,0), (1,0), and (0,1).
- *
- * An affine map may be (post)-composed with translation, rotation,
- * reflection, scaling along either or both coordinate axes, shearing,
- * and may be inverted. An optional pair argument, defaulting to
- * (0,0), gives the center of the operation (if appropriate).
- *
- * An affine map may be post-composed via member function, and
- * pre-composed with operator syntax. The evaluation operator
- * returns the image of the argument.
- */
-
-#ifndef EPIX_AFFINE
-#define EPIX_AFFINE
-
-#include "pairs.h"
-#include "triples.h"
-
-namespace ePiX {
-
- class affine {
- public:
- // the identity map
- affine();
-
- // images of (1,0), (0,1), (0,0)
- affine(const pair&, const pair&, const pair& loc=pair(0,0));
- affine(const P&, const P&, const P& loc=P(0,0));
-
- // post-operations
- // translate by arg
- affine& shift(const pair& arg);
- affine& shift(const P& arg);
-
- // rotate by theta about ctr
- affine& rotate(double theta, const pair& ctr = pair(0,0));
- affine& rotate(double theta, const P& ctr);
-
- // reflect in angle-theta line through ctr
- affine& reflect(double theta, const pair& ctr = pair(0,0));
- affine& reflect(double theta, const P& ctr);
-
- // scale coord direction(s) fixing ctr
- affine& h_scale(double, const pair& ctr=pair(0,0));
- affine& v_scale(double, const pair& ctr=pair(0,0));
- affine& scale(double, const pair& ctr=pair(0,0));
-
- affine& h_scale(double, const P& ctr);
- affine& v_scale(double, const P& ctr);
- affine& scale(double, const P& ctr);
-
- // shear, fixing ctr
- affine& h_shear(double, const pair& ctr=pair(0,0));
- affine& v_shear(double, const pair& ctr=pair(0,0));
-
- affine& h_shear(double, const P& ctr);
- affine& v_shear(double, const P& ctr);
-
- // post-compose
- affine& postcomp(const affine&);
-
- affine& invert();
-
- // evaluation
- pair operator() (const pair&) const;
- pair operator() (const P&) const;
-
- // pre-compose
- affine operator() (const affine&) const;
-
- bool reverses_orientation() const;
-
- private:
- pair m_00;
- pair m_10;
- pair m_01;
- };
-} // end of ePiX namespace
-
-#endif /* EPIX_AFFINE */
diff --git a/graphics/epix/angle_units.cc b/graphics/epix/angle_units.cc
deleted file mode 100644
index cbc8973703..0000000000
--- a/graphics/epix/angle_units.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * angle_units.cc -- Implementation of ePiX's angular units
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "constants.h"
-#include "angle_units.h"
-
-namespace ePiX {
-
- angle_state::angle_state()
- : m_rad_per_unit(1.0),
- m_unit_per_deg(PI_180),
- m_rev_per_unit(1.0/TWO_PI) { }
-
- void angle_state::set_radians_mode()
- {
- m_rad_per_unit = 1.0;
- m_unit_per_deg = PI_180;
- m_rev_per_unit = 1.0/TWO_PI;
- }
-
- void angle_state::set_degrees_mode()
- {
- m_rad_per_unit = PI_180;
- m_unit_per_deg = 1.0;
- m_rev_per_unit = 1.0/360;
- }
-
- void angle_state::set_revolutions_mode()
- {
- m_rad_per_unit = TWO_PI;
- m_unit_per_deg = 1.0/360;
- m_rev_per_unit = 1.0;
- }
-
-
- double angle_state::to_radians(double t)
- {
- return t *= m_rad_per_unit;
- }
-
- // result lies in (-180, 180]
- double angle_state::to_degrees(double t)
- {
- t *= m_rev_per_unit;
-
- t -= 0.5; // shift half a turn
- t -= ceil(t); // map to (-1,0]
- t += 0.5; // shift to (-0.5, 0.5]
-
- return t *= 360.0;
- }
-
- double angle_state::from_degrees(double t)
- {
- return t *= m_unit_per_deg;
- }
-
- angle_state& the_angle_style()
- {
- static angle_state* the_angle_state(new angle_state());
- return *the_angle_state;
- }
-} // end of namespace
diff --git a/graphics/epix/angle_units.h b/graphics/epix/angle_units.h
deleted file mode 100644
index b250b02d51..0000000000
--- a/graphics/epix/angle_units.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * angle_units.h -- Implementation of ePiX's angular units
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file contains:
- *
- * [] angle_state
- * Angular mode (radians, degrees, revolutions)
- *
- * The class in this file implements backend for user-level global
- * functions defined in state.h. This header is not part of epix.h.
- */
-#ifndef EPIX_ANGLE_UNITS
-#define EPIX_ANGLE_UNITS
-
-#include <cmath>
-
-namespace ePiX {
-
- class angle_state {
- public:
- angle_state();
-
- void set_radians_mode();
- void set_degrees_mode();
- void set_revolutions_mode();
-
- // convert to radians, for angle-sensitive trig functions
- double to_radians(double t);
-
- // current angle units to/from degrees, for label_style
- double to_degrees(double t);
- double from_degrees(double t);
-
- private:
- // store state redundantly; small overhead, saves conversion
- double m_rad_per_unit;
- double m_unit_per_deg;
- double m_rev_per_unit;
- }; // end of class angle_state
-
- angle_state& the_angle_style();
-
-} // end of namespace
-
-#endif /* EPIX_ANGLE_UNITS */
diff --git a/graphics/epix/arrow_data.cc b/graphics/epix/arrow_data.cc
deleted file mode 100644
index 2c50b0f8bc..0000000000
--- a/graphics/epix/arrow_data.cc
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * arrow_data.cc -- ePiX arrow class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <list>
-#include <cmath>
-
-#include "triples.h"
-#include "functions.h"
-
-#include "camera.h"
-
-#include "edge_data.h"
-#include "path_data.h"
-#include "clipping.h"
-
-#include "arrow_style.h"
-#include "pen_data.h"
-#include "paint_style.h"
-
-#include "halfspace.h"
-#include "pen_line.h"
-#include "pen_arrow.h"
-
-#include "screen_data.h"
-#include "screen.h"
-#include "active_screen.h"
-
-#include "arrow_data.h"
-
-namespace ePiX {
-
- arrow_data::arrow_data(const std::vector<P>& pv, const P& base, const P& tip,
- double scale)
- : m_base(base), m_tip(tip), m_scale(scale),
- m_head_seen(!the_clip_box().clips(m_tip))
- {
- for (unsigned int i=0; i<pv.size()-1; ++i)
- m_shaft.push_back(edge3d(pv.at(i), pv.at(i+1), true));
-
- the_clip_box().clip_path(m_shaft);
- }
-
- arrow_data& arrow_data::clip_to(const halfspace& knife)
- {
- knife.clip_path(m_shaft);
- if (knife.clips(m_tip))
- m_head_seen = false;
-
- return *this;
- }
-
-
- void arrow_data::photo(screen& scr, const Camera& mycam,
- const pen_data& line, const pen_data& under) const
- {
- arrow_data tmp_data(*this);
- if (mycam.needs_clip())
- tmp_data.clip_to(mycam.clip_plane());
-
- std::list<edge2d> edges;
- for (std::list<edge3d>::const_iterator p=tmp_data.m_shaft.begin();
- p != tmp_data.m_shaft.end(); ++p)
- {
- edge2d tmp(mycam((*p).tail()), mycam((*p).head()), (*p).is_seen());
-
- if (!tmp.is_null()) // endpoints not equal
- edges.push_back(tmp);
- }
-
- // draw shaft
- scr.m_screen->add_tile(pen_line(line.seen_through(mycam),
- under.seen_through(mycam), edges));
-
- // and arrowhead
- if (m_head_seen)
- {
- const P dir(m_tip-m_base);
- const P to_cam(mycam.viewpt()-m_base);
-
- const double sin_th(norm(dir*to_cam)/(norm(dir)*norm(to_cam)));
-
- scr.m_screen->add_tile(pen_arrow(mycam(m_base), mycam(m_tip),
- line.seen_through(mycam),
- under.seen_through(mycam),
- m_scale, sin_th, m_head_seen));
- }
- }
-
- void arrow_data::draw() const
- {
- photo(*active_screen(), cam(),
- the_paint_style().line_pen(), the_paint_style().base_pen());
- }
-
- void arrow_data::draw(const pen_data& p1, const pen_data& p2) const
- {
- photo(*active_screen(), cam(), p1, p2);
- }
-} // end of namespace
diff --git a/graphics/epix/arrow_data.h b/graphics/epix/arrow_data.h
deleted file mode 100644
index 5840cd35d3..0000000000
--- a/graphics/epix/arrow_data.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * arrow_data.h -- ePiX implementation class for arrows
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.8
- * Last Change: July 19, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_ARROW_DATA
-#define EPIX_ARROW_DATA
-
-#include <list>
-#include <vector>
-
-#include "triples.h"
-#include "edge_data.h"
-
-namespace ePiX {
-
- class Camera;
- class Color;
- class halfspace;
- class pen_data;
- class screen;
-
- // sequence of vertices
- class arrow_data {
- public:
- arrow_data(const std::vector<P>&, const P& base, const P& tip,
- double scale=1);
-
- arrow_data& clip();
- arrow_data& clip_to(const halfspace&);
-
- void photo(screen&, const Camera&, const pen_data&, const pen_data&) const;
-
- void draw() const;
- void draw(const pen_data&, const pen_data&) const;
-
- private:
- // head data
- P m_base, m_tip;
- double m_scale; // size multiplier
- bool m_head_seen;
-
- // shaft
- std::list<edge3d> m_shaft;
- }; // end of class arrow_data
-
-} // end of namespace
-
-#endif /* EPIX_ARROW_DATA */
diff --git a/graphics/epix/arrow_style.cc b/graphics/epix/arrow_style.cc
deleted file mode 100644
index 1397545909..0000000000
--- a/graphics/epix/arrow_style.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * arrow_atyle.cc -- ePiX's arrowhead parameters
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 08, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * The class in this file implements backend for user-level global
- * functions defined in state.h. This header is not part of epix.h.
- */
-#include <cmath>
-
-#include "constants.h"
-#include "functions.h" // for snip_to
-#include "arrow_style.h"
-
-namespace ePiX {
-
- arrowhead_state::arrowhead_state()
- : m_width(0.5*AVG_AWIDTH), m_ratio(AVG_ARATIO),
- m_inset(AVG_INSET), m_fill(false) { }
-
- // set
- arrowhead_state& arrowhead_state::width(double w)
- {
- m_width = fabs(0.5*snip_to(w, MIN_AWIDTH, MAX_AWIDTH));
- return *this;
- }
-
- arrowhead_state& arrowhead_state::ratio(double r)
- {
- m_ratio = fabs(snip_to(r, MIN_ARATIO, MAX_ARATIO));
- return *this;
- }
-
- arrowhead_state& arrowhead_state::inset(double arg)
- {
- m_inset = snip_to(arg, MIN_INSET, MAX_INSET);
- return *this;
- }
-
- arrowhead_state& arrowhead_state::fill(bool fill)
- {
- m_fill = fill;
- return *this;
- }
-
-
- // get
- double arrowhead_state::width() const
- {
- return m_width;
- }
-
- double arrowhead_state::ratio() const
- {
- return m_ratio;
- }
-
- double arrowhead_state::inset() const
- {
- return m_inset;
- }
-
- bool arrowhead_state::fill() const
- {
- return m_fill;
- }
-
- arrowhead_state& the_arrowhead_style()
- {
- static arrowhead_state* the_arrowhead_state(new arrowhead_state());
- return *the_arrowhead_state;
- }
-} // end of namespace
diff --git a/graphics/epix/arrow_style.h b/graphics/epix/arrow_style.h
deleted file mode 100644
index 0f9691516e..0000000000
--- a/graphics/epix/arrow_style.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * arrow_style.h -- ePiX's arrowhead parameters
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 08, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * The class in this file implements backend for user-level global
- * functions defined in state.h. This header is not part of epix.h.
- */
-#ifndef EPIX_ARROW_STYLE
-#define EPIX_ARROW_STYLE
-
-namespace ePiX {
-
- // arrowhead parameters
- // Magic numbers: initialization constants
- class arrowhead_state {
- public:
- arrowhead_state();
-
- // set
- arrowhead_state& width(double w);
- arrowhead_state& ratio(double r);
- arrowhead_state& inset(double arg);
-
- arrowhead_state& fill(bool);
-
- // get
- double width() const;
- double ratio() const;
- double inset() const;
-
- bool fill() const;
-
- private:
- double m_width; // Half-width of arrowheads in pt
- double m_ratio; // 2*Length/width ratio of arrowheads
- double m_inset; // Base indentation (frac of width*ratio)
-
- bool m_fill;
- }; // end of class arrowhead_state
-
- arrowhead_state& the_arrowhead_style();
-
-} // end of namespace
-
-#endif /* EPIX_ARROW_STYLE */
diff --git a/graphics/epix/axis.cc b/graphics/epix/axis.cc
deleted file mode 100644
index ed86be7ee3..0000000000
--- a/graphics/epix/axis.cc
+++ /dev/null
@@ -1,925 +0,0 @@
-/*
- * axis.cc -- ePiX axis class and global compatibility functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 18, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-#include <sstream>
-
-#include "errors.h"
-
-#include "constants.h"
-#include "triples.h"
-
-#include "pairs.h"
-#include "frac.h"
-#include "functions.h"
-
-#include "length.h"
-#include "picture.h"
-
-#include "camera.h"
-
-#include "screen.h"
-#include "active_screen.h"
-#include "curves.h"
-
-#include "label_data.h"
-
-#include "markers.h"
-#include "axis.h"
-
-namespace ePiX {
-
- // functions to get axis label from position
- double __epix_coord1(const P&);
- double __epix_coord2(const P&);
- double __epix_coord3(const P&);
-
- // string representations of double
- std::string __epix_coord_as_double(double x, unsigned int digits,
- unsigned int base);
- std::string __epix_coord_as_frac(double x, unsigned int digits,
- unsigned int base);
- std::string __epix_coord_as_trig_frac(double x, unsigned int digits,
- unsigned int base);
- std::string __epix_coord_as_log(double x, unsigned int digits,
- unsigned int base);
- std::string __epix_coord_as_log_sci(double x, unsigned int digits,
- unsigned int base);
- std::string __epix_coord_as_sci(double x, unsigned int digits,
- unsigned int base);
-
- //// Member functions ////
- // Constructor automatically selects coordinate function from endpoints
- axis::axis(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN)
- : m_tail(tail), m_head(head), m_major_segs(n), m_minor_segs(n),
- m_tick_ratio(0.5), m_align_ticks(c),
- m_offset(offset), m_align_labels(POSN),
- m_log_base(10), m_log(false), m_precision(DEF_PRECISION),
- m_coord(__epix_coord1), m_rep(__epix_coord_as_double)
- {
- m_log_tags.insert(1);
- int count(fabs(head.x1() - tail.x1()) < EPIX_EPSILON ? 0 : 1);
- if (EPIX_EPSILON < fabs(head.x2() - tail.x2()))
- {
- ++count;
- m_coord = __epix_coord2;
- }
-
- if (EPIX_EPSILON < fabs(head.x3() - tail.x3()))
- {
- ++count;
- m_coord = __epix_coord3;
- }
-
- if (1 < count)
- epix_warning("Axis not parallel to a Cartesian axis");
-
- else if (count == 0)
- epix_warning("Degenerate coordinate axis");
- }
-
-
- axis& axis::frac()
- {
- m_rep = __epix_coord_as_frac;
- return *this;
- }
-
- axis& axis::trig()
- {
- m_rep = __epix_coord_as_trig_frac;
- m_log = false;
-
- return *this;
- }
-
- axis& axis::sci()
- {
- if (m_log)
- m_rep = __epix_coord_as_log_sci;
- else
- m_rep = __epix_coord_as_sci;
- return *this;
- }
-
- // f(x, precision, base) returns a string representing x
- axis& axis::label_rep(std::string f(double, unsigned int, unsigned int))
- {
- m_rep = f;
- return *this;
- }
-
- axis& axis::unmark(double arg)
- {
- m_omitted.insert(arg);
- return *this;
- }
-
- axis& axis::log(unsigned int base)
- {
- if (m_rep == __epix_coord_as_sci) // preserve sci notation
- m_rep = __epix_coord_as_log_sci;
- else
- m_rep = __epix_coord_as_log;
-
- if (2 <= base && base <= MAX_LOG_BASE)
- m_log_base = base;
- else
- epix_warning("axis::log base out of range, ignoring");
-
- m_log = true;
-
- return *this;
- }
-
- // add logarithmic labels
- axis& axis::tag(double arg)
- {
- if (0 < arg && 2 < m_log_base)
- {
- int k((int) ceil(-std::log(arg)/std::log((double)m_log_base)));
-
- // arg != b^-k
- if (k == (int) floor(1 - std::log(arg)/std::log((double)m_log_base)))
- m_log_tags.insert(arg*pow(m_log_base, k));
- }
-
- return *this;
- }
-
- axis& axis::tag235()
- {
- if (m_log_base == 10)
- {
- m_log_tags.insert(2);
- m_log_tags.insert(3);
- m_log_tags.insert(5);
- }
-
- return *this;
- }
-
- axis& axis::tags()
- {
- for (unsigned int i=1; i<m_log_base; ++i)
- m_log_tags.insert(i);
-
- return *this;
- }
-
- axis& axis::untag(double arg)
- {
- m_log_tags.erase(arg);
- return *this;
- }
-
- axis& axis::untag()
- {
- m_log_tags.clear();
- return *this;
- }
-
- axis& axis::align_labels(epix_label_posn POSN)
- {
- m_align_labels = POSN;
- return *this;
- }
-
- axis& axis::align(epix_label_posn POSN)
- {
- m_align_ticks = POSN;
- return *this;
- }
-
-
- // number of minor ticks per segment
- axis& axis::subdivide(unsigned int n)
- {
- m_minor_segs = m_major_segs*((unsigned int) snip_to(n, 1, MAX_LOG_BASE));
- return *this;
- }
-
- // set tick length; printed size governed by MIN/MAX_TICK, but 0 significant
- axis& axis::tick_ratio(double ratio)
- {
- m_tick_ratio = snip_to(ratio, 0, 1);
- return *this;
- }
-
-
- // set precision for printing axis labels in decimal
- axis& axis::precision(unsigned int digits)
- {
- if (digits == 0)
- m_precision = DEF_PRECISION;
-
- else
- m_precision = (unsigned int) min(digits, MAX_PRECISION);
-
- return *this;
- }
-
- void axis::draw_ticks() const
- {
- const P major_step((1.0/m_major_segs)*(m_head - m_tail));
-
- const pair screen_dir(cam()(m_head) - cam()(m_tail));
-
- if (norm(screen_dir) < EPIX_EPSILON) // poke in the eye
- return;
-
- // else, are we closer to horiz or vert?
- bool nearly_horiz(fabs(screen_dir.x2()) < fabs(screen_dir.x1()));
-
- // axis
- line(m_tail, m_head);
-
- // major ticks
- for (unsigned int i=0; i <= m_major_segs; ++i)
- {
- if (nearly_horiz)
- h_axis_tick(m_tail + i*major_step, m_align_ticks);
-
- else
- v_axis_tick(m_tail + i*major_step, m_align_ticks);
- }
-
- // Cartesian minor ticks
- if (!m_log && m_tick_ratio != 0 && m_major_segs != m_minor_segs)
- {
- // get tick size
- const double old_tick_len(the_mark_size().tick_size());
-
- the_mark_size().tick_size(m_tick_ratio*old_tick_len);
- const P minor_step((1.0/m_minor_segs)*(m_head - m_tail));
-
- for (unsigned int i=0; i <= m_minor_segs; ++i)
- {
- if (nearly_horiz)
- h_axis_tick(m_tail + i*minor_step, m_align_ticks);
-
- else
- v_axis_tick(m_tail + i*minor_step, m_align_ticks);
- }
-
- the_mark_size().tick_size(old_tick_len); // restore state
- }
-
- // logarithmic minor ticks
- else if (m_log && m_tick_ratio != 0)
- {
- // get tick size
- const double old_tick_len(the_mark_size().tick_size());
-
- the_mark_size().tick_size(m_tick_ratio*old_tick_len);
-
- const double denom(std::log((double)m_log_base));
-
- for (unsigned int i=0; i < m_major_segs; ++i)
- for (unsigned int j=1; j<m_log_base; ++j)
- {
- if (nearly_horiz)
- h_axis_tick(m_tail + (i+std::log((double)j)/denom)*major_step,
- m_align_ticks);
-
- else
- v_axis_tick(m_tail + (i+std::log((double)j)/denom)*major_step,
- m_align_ticks);
- }
-
- the_mark_size().tick_size(old_tick_len); // restore state
- }
- }
-
- void axis::draw_labels() const
- {
- const P major_step((1.0/m_major_segs)*(m_head - m_tail));
-
- if (!m_log)
- for (unsigned int i=0; i <= m_major_segs; ++i)
- {
- const P loc(m_tail + i*major_step);
- const double tmp_lbl(m_coord(loc));
- if (m_omitted.find(tmp_lbl) != m_omitted.end()) // omit marked labels
- continue;
-
- // else
- label_data mk(loc, m_offset,
- m_rep(tmp_lbl, m_precision, m_log_base));
-
- mk.align_to(m_align_labels).draw();
- }
-
- else if (2 < m_log_base) // m_log
- {
- const double denom(std::log((double)m_log_base));
-
- for (unsigned int i=0; i < m_major_segs; ++i)
- for (std::set<double>::const_iterator tp=m_log_tags.begin();
- tp != m_log_tags.end(); ++tp)
- {
- double dx(std::log(*tp)/denom);
- const P posn(m_tail + (i + dx)*major_step);
-
- label_data mk(posn, m_offset,
- m_rep(m_coord(posn), m_precision, m_log_base));
-
- mk.align_to(m_align_labels).draw();
- }
-
- // final label
- label_data mk(m_head, m_offset,
- m_rep(m_coord(m_head), m_precision, m_log_base));
-
- mk.align_to(m_align_labels).draw();
- }
- }
-
- void axis::draw() const
- {
- draw_ticks();
- draw_labels();
- }
-
-
- //// Misc utilities for global functions ////
- // raw Cartesian coordinates
- std::string __epix_axis_label(double x)
- {
- std::stringstream obuf;
- obuf << "$" << x << "$";
-
- return obuf.str();
- }
-
- std::string __epix_axis1_label(double x, double y)
- {
- return __epix_axis_label(x);
- }
-
- std::string __epix_axis2_label(double x, double y)
- {
- return __epix_axis_label(y);
- }
-
- // log coordinates
- std::string __epix_log_label(double x, const unsigned int base)
- {
- std::stringstream obuf;
-
- int N((int) ceil(x));
-
- double k(pow(base, x - N));
-
- // obuf.precision(2);
- obuf << "$";
- if (k != 1.0)
- {
- k *= base;
- N -= 1;
- obuf << k << "\\times";
- }
-
- obuf << base << "^{" << N << "}$";
-
- return obuf.str();
- }
-
- std::string __epix_log_axis1_label(double x, double y,
- const unsigned int base=10)
- {
- return __epix_log_label(x, base);
- }
-
- std::string __epix_log_axis2_label(double x, double y,
- const unsigned int base=10)
- {
- return __epix_log_label(y, base);
- }
-
- //// Global functions ////
- // Draws n+1 equally-spaced axis labels between <tail> and <head>.
- // Uses the string-valued function f to generate label text.
- void __epix_axis_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN,
- std::string f(double, double), bool masked)
- {
- const P step((1.0/n)*(head - tail));
-
- // get mask color, if any
- Color my_mask(masked ? the_label_style().mask_color() : Neutral());
-
- if (masked && my_mask.is_unset())
- my_mask = White();
-
- for (unsigned int i=0; i<= n; ++i)
- {
- label_data mk(tail+i*step, offset, f);
-
- mk.mask_color(my_mask).align_to(POSN).draw();
- }
- }
-
-
- //// User-visible commands ////
- // Not implemented with the axis class because masking behavior differs.
- void h_axis_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN)
- {
- __epix_axis_labels(tail, head, n, offset, POSN, __epix_axis1_label, false);
- }
-
- void v_axis_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN)
- {
- __epix_axis_labels(tail, head, n, offset, POSN, __epix_axis2_label, false);
- }
-
-
- void h_axis_masklabels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN)
- {
- __epix_axis_labels(tail, head, n, offset, POSN, __epix_axis1_label, true);
- }
-
- void v_axis_masklabels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN)
- {
- __epix_axis_labels(tail, head, n, offset, POSN, __epix_axis2_label, true);
- }
-
-
- // automatic endpoints
- void h_axis_labels(unsigned int n, const P& offset, epix_label_posn POSN)
- {
- __epix_axis_labels(P(active_screen()->h_min(), 0),
- P(active_screen()->h_max(), 0), n, offset, POSN,
- __epix_axis1_label, false);
- }
-
- void h_axis_masklabels(unsigned int n, const P& offset, epix_label_posn POSN)
- {
- __epix_axis_labels(P(active_screen()->h_min(), 0),
- P(active_screen()->h_max(), 0), n, offset, POSN,
- __epix_axis1_label, true);
- }
-
- void v_axis_labels(unsigned int n, const P& offset, epix_label_posn POSN)
- {
- __epix_axis_labels(P(0, active_screen()->v_min()),
- P(0, active_screen()->v_max()), n, offset, POSN,
- __epix_axis2_label, false);
- }
-
- void v_axis_masklabels(unsigned int n, const P& offset, epix_label_posn POSN)
- {
- __epix_axis_labels(P(0, active_screen()->v_min()),
- P(0, active_screen()->v_max()), n, offset, POSN,
- __epix_axis2_label, true);
- }
-
-
- // log axis labels
- void __epix_log_axis_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN,
- std::string f(double, double, unsigned int),
- bool masked, unsigned int base=10)
- {
- const P step((1.0/n)*(head - tail));
-
- // get mask color, if any
- Color my_mask(masked ? the_label_style().mask_color() : Neutral());
-
- if (masked && my_mask.is_unset())
- my_mask = White();
-
- for (unsigned int i=0; i<= n; ++i)
- {
- P here(tail+i*step);
- std::string text(f(here.x1(), here.x2(), base));
-
- label_data mk(here, offset, text);
-
- mk.mask_color(my_mask).align_to(POSN).draw();
- }
- }
-
- // number of labels specified
- void h_axis_log_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN,
- unsigned int base)
- {
- __epix_log_axis_labels(tail, head, n, offset, POSN,
- __epix_log_axis1_label, false, base);
- }
-
- void v_axis_log_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN,
- unsigned int base)
- {
- __epix_log_axis_labels(tail, head, n, offset, POSN,
- __epix_log_axis2_label, false, base);
- }
-
-
- // put labels at integer coordinates
- void h_axis_log_labels(const P& tail, const P& head,
- const P& offset, epix_label_posn POSN,
- unsigned int base)
- {
- if (EPIX_EPSILON < (tail.x2() - head.x2()) ) // non-horizontal axis
- return;
-
- const double my_y(tail.x2());
-
- // get integers in horiz interval
- const int k_lo((int) ceil(min(tail.x1(), head.x1())));
- const int k_hi((int) floor(max(tail.x1(), head.x1())));
-
- h_axis_log_labels(P(k_lo, my_y), P(k_hi, my_y), k_hi - k_lo,
- offset, POSN, base);
- }
-
- void v_axis_log_labels(const P& tail, const P& head,
- const P& offset, epix_label_posn POSN,
- unsigned int base)
- {
- if (EPIX_EPSILON < (tail.x1() - head.x1()) ) // non-vertical axis
- return;
-
- const double my_x(tail.x1());
-
- // get integers in vert interval
- const int k_lo((int) ceil(min(tail.x2(), head.x2())));
- const int k_hi((int) floor(max(tail.x2(), head.x2())));
-
- v_axis_log_labels(P(my_x, k_lo), P(my_x, k_hi), k_hi - k_lo,
- offset, POSN, base);
- }
-
-
- //// masked versions
- void h_axis_log_masklabels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN,
- unsigned int base)
- {
- __epix_log_axis_labels(tail, head, n, offset, POSN,
- __epix_log_axis1_label, true, base);
- }
-
- void v_axis_log_masklabels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN,
- unsigned int base)
- {
- __epix_log_axis_labels(tail, head, n, offset, POSN,
- __epix_log_axis2_label, true, base);
- }
-
-
- // put labels at integer coordinates
- void h_axis_log_masklabels(const P& tail, const P& head,
- const P& offset, epix_label_posn POSN,
- unsigned int base)
- {
- if (EPIX_EPSILON < (tail.x2() - head.x2()) ) // non-horizontal axis
- return;
-
- const double my_y(tail.x2());
-
- // get integers in horiz interval
- const int k_lo((int) ceil(min(tail.x1(), head.x1())));
- const int k_hi((int) floor(max(tail.x1(), head.x1())));
-
- h_axis_log_masklabels(P(k_lo, my_y), P(k_hi, my_y), k_hi - k_lo,
- offset, POSN, base);
- }
-
- void v_axis_log_masklabels(const P& tail, const P& head,
- const P& offset, epix_label_posn POSN,
- unsigned int base)
- {
- if (EPIX_EPSILON < (tail.x1() - head.x1()) ) // non-vertical axis
- return;
-
- const double my_x(tail.x1());
-
- // get integers in vert interval
- const int k_lo((int) ceil(min(tail.x2(), head.x2())));
- const int k_hi((int) floor(max(tail.x2(), head.x2())));
-
- v_axis_log_masklabels(P(my_x, k_lo), P(my_x, k_hi), k_hi - k_lo,
- offset, POSN, base);
- }
-
-
- // Coordinate axes
- void h_axis(const P& tail, const P& head, unsigned int n, epix_label_posn AL)
- {
- line(tail, head);
-
- const P step((1.0/n)*(head - tail));
-
- for (unsigned int i=0; i <= n; ++i)
- h_axis_tick(tail + i*step, AL);
- }
-
- void v_axis(const P& tail, const P& head, unsigned int n, epix_label_posn AL)
- {
- line(tail, head);
-
- const P step((1.0/n)*(head - tail));
-
- for (unsigned int i=0; i <= n; ++i)
- v_axis_tick(tail + i*step, AL);
- }
-
- // n+1 = #ticks, num_pts = #segments used to draw
- void h_axis(unsigned int n, epix_label_posn AL)
- {
- h_axis(P(active_screen()->h_min(), 0),
- P(active_screen()->h_max(), 0), n, AL);
- }
-
- void v_axis(unsigned int n, epix_label_posn AL)
- {
- v_axis(P(0, active_screen()->v_min()),
- P(0, active_screen()->v_max()), n, AL);
- }
-
-
- void h_log_axis(const P& tail, const P& head,
- unsigned int segs, epix_label_posn AL, unsigned int base)
- {
- line(tail, head, 0, segs);
-
- const P step((1.0/segs)*(head - tail));
- const double denom(log(base));
-
- for (unsigned int i=0; i < segs; ++i)
- for (unsigned int j=1; j<base; ++j)
- h_axis_tick(tail + (i+log(j)/denom)*step, AL);
-
- h_axis_tick(head, AL);
- }
-
- void v_log_axis(const P& tail, const P& head,
- unsigned int segs, epix_label_posn AL, unsigned int base)
- {
- line(tail, head, 0, segs);
-
- const P step((1.0/segs)*(head - tail));
- const double denom(log(base));
-
- for (unsigned int i=0; i < segs; ++i)
- for (unsigned int j=1; j<base; ++j)
- v_axis_tick(tail + (i+log(j)/denom)*step, AL);
-
- v_axis_tick(head, AL);
- }
-
-
- //// New global functions ////
- axis top_axis(unsigned int n, const P& offset, epix_label_posn POSN)
- {
- axis A(active_screen()->tl(), active_screen()->tr(), n, offset, POSN);
- A.align(b);
- return A;
- }
-
- axis bottom_axis(unsigned int n, const P& offset, epix_label_posn POSN)
- {
- axis A(active_screen()->bl(), active_screen()->br(), n, offset, POSN);
- A.align(t);
- return A;
- }
-
- axis left_axis(unsigned int n, const P& offset, epix_label_posn POSN)
- {
- axis A(active_screen()->bl(), active_screen()->tl(), n, offset, POSN);
- A.align(r);
- return A;
- }
-
- axis right_axis(unsigned int n, const P& offset, epix_label_posn POSN)
- {
- axis A(active_screen()->br(), active_screen()->tr(), n, offset, POSN);
- A.align(l);
- return A;
- }
-
-
- //// Formatting functions for ePiX::axis ////
- // standard functions to get axis label from position
- double __epix_coord1(const P& arg)
- {
- return arg.x1();
- }
-
- double __epix_coord2(const P& arg)
- {
- return arg.x2();
- }
-
- double __epix_coord3(const P& arg)
- {
- return arg.x3();
- }
-
-
- // String representations of double
- // triples separated by commas
- std::string __epix_coord_as_double(double x, unsigned int digits,
- unsigned int base)
- {
- std::stringstream obuf;
- obuf.precision(digits);
-
- obuf << "$" << x << "$";
-
- if (fabs(x) < 1000)
- return obuf.str();
-
- // else insert commas
- std::string val(obuf.str());
-
- std::string::size_type i(val.find_first_of("."));
-
- if (i == std::string::npos)
- i = val.size()-1;
-
- while (4 < i)
- {
- i -= 3;
- val.insert(i, ",");
- }
-
- return val;
- }
-
- // [-]\frac{p}{q}
- std::string __epix_coord_as_frac(double x, unsigned int digits,
- unsigned int base)
- {
- ePiX::frac xfrac(x);
-
- std::stringstream obuf;
- obuf.precision(digits);
-
- obuf << "$";
-
- if (xfrac.is_int())
- obuf << xfrac.num() << "$";
-
- else
- {
- if (xfrac.num() < 0) // x may have rounded to zero
- obuf << "-";
-
- obuf << "\\frac{" << abs(xfrac.num()) << "}"
- << "{" << xfrac.denom() << "}$";
- }
-
- return obuf.str();
- }
-
- // [-]\frac{p\pi}{q}
- std::string __epix_coord_as_trig_frac(double x, unsigned int digits,
- unsigned int base)
- {
- ePiX::frac xfrac(x/M_PI);
-
- int xnum(xfrac.num());
-
- std::stringstream obuf;
- obuf.precision(digits);
-
- obuf << "$";
-
- if (xfrac.is_int())
- {
- if (xnum == 0)
- obuf << 0 << "$";
-
- else if (xnum == 1)
- obuf << "\\pi$";
-
- else if (xnum == -1)
- obuf << "-\\pi$";
-
- else
- obuf << xfrac.num() << "\\pi$";
- }
-
- else // xfrac not an int
- {
- if (xfrac.num() < 0)
- obuf << "-";
-
- if (abs(xnum) == 1)
- obuf << "\\frac{\\pi}{" << xfrac.denom() << "}$";
-
- else
- obuf << "\\frac{" << abs(xnum) << "\\pi}"
- << "{" << xfrac.denom() << "}$";
- }
-
- return obuf.str();
- }
-
- // b^x
- std::string __epix_coord_as_log(double x, unsigned int digits,
- unsigned int base)
- {
- std::stringstream obuf;
- obuf.precision(digits);
-
- obuf << "$" << pow(base, x) << "$";
-
- return obuf.str();
- }
-
- // x = N + k, write as eval(b^k) \times b^N
- std::string __epix_coord_as_log_sci(double x, unsigned int digits,
- unsigned int base)
- {
- std::stringstream obuf;
- obuf.precision(digits);
-
- int N((int) ceil(x));
-
- double k(pow(base, x - N));
-
- obuf << "$";
- if (k != 1.0)
- {
- k *= base;
- N -= 1;
- obuf << k << "\\times";
- }
-
- obuf << base << "^{" << N << "}$";
-
- return obuf.str();
- }
-
- std::string __epix_coord_as_sci(double x, unsigned int digits,
- unsigned int base)
- {
- std::stringstream obuf;
- obuf.precision(digits);
-
- int sgn(x < 0 ? -1 : 1);
- x = fabs(x);
- if (x < EPIX_EPSILON)
- return "$0$";
-
- // else
- const double tmp(log10(x)/log10(base));
-
- int N((int) floor(tmp));
-
- double k(pow(base, tmp - N));
-
- obuf << "$";
- if (sgn < 0)
- obuf << "-";
-
- if (k != 1.0)
- obuf << k << "\\times";
-
- obuf << base << "^{" << N << "}$";
-
- return obuf.str();
- }
-} // end of namespace
diff --git a/graphics/epix/axis.h b/graphics/epix/axis.h
deleted file mode 100644
index 2c5d47d568..0000000000
--- a/graphics/epix/axis.h
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * axis.h -- Decorable coordinate axis class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.13
- * Last Change: August 23, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_AXIS
-#define EPIX_AXIS
-
-#include <string>
-#include <set>
-
-#include "enums.h"
-#include "triples.h"
-
-namespace ePiX {
-
- class axis {
- public:
- axis(const P&, const P&, unsigned int n,
- const P& offset = P(0,0), epix_label_posn POSN=none);
-
- // attribute-setting
- axis& dec(); // default
- axis& frac(); // fractional labels
- axis& trig(); // fractions times pi
- axis& sci(); // scientific notation
-
- // f(x, precision, base) returns a string representing x
- axis& label_rep(std::string f(double, unsigned int, unsigned int));
-
- // unmark selected location (non-log labels only)
- axis& unmark(double arg=0);
-
- // add or remove logarithmic tags ("sublabels")
- axis& log(unsigned int base=10); // log ticks and labels
- axis& tag(double); // put label at arg in log mode
- axis& tag235(); // tags at 2, 3, 5 in log10 mode
- axis& tags(); // tags at 2, ..., b-1 in logb mode
-
- axis& untag(); // remove all log tags
- axis& untag(double); // remove selected tag
-
- axis& align_labels(epix_label_posn);
- axis& align(epix_label_posn); // align tick marks
-
- // number of minor ticks per segment
- axis& subdivide(unsigned int);
-
- // set length of minor ticks
- axis& tick_ratio(double);
-
- // set precision for axis labels
- axis& precision(unsigned int digits=0); // 0: reset to default
-
- void draw_ticks() const;
- void draw_labels() const;
- void draw() const;
-
- private:
- P m_tail;
- P m_head;
-
- unsigned int m_major_segs;
- unsigned int m_minor_segs;
-
- double m_tick_ratio;
-
- epix_label_posn m_align_ticks;
-
- P m_offset;
- epix_label_posn m_align_labels;
-
- unsigned int m_log_base;
- bool m_log;
- unsigned int m_precision;
-
- double (*m_coord)(const P&); // value to place at arg
-
- // represent arg as string
- std::string (*m_rep)(double arg, unsigned int prec, unsigned int base);
-
- std::set<double> m_omitted;
- std::set<double> m_log_tags;
- }; // end of axis class
-
- // axes along sides of bounding box, ticks automatically aligned
- axis top_axis(unsigned int n, const P& offset=P(0,0),
- epix_label_posn POSN=t);
- axis bottom_axis(unsigned int n, const P& offset=P(0,0),
- epix_label_posn POSN=b);
- axis left_axis(unsigned int n, const P& offset=P(0,0),
- epix_label_posn POSN=l);
- axis right_axis(unsigned int n, const P& offset=P(0,0),
- epix_label_posn POSN=r);
-
-
- // Global functions from Version 1.0
- void h_axis_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN=none);
-
- void v_axis_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN=none);
-
- void h_axis_masklabels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN=none);
-
- void v_axis_masklabels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN=none);
-
- // Axis labels with default endpoints
- void h_axis_labels(unsigned int n, const P& offset,
- epix_label_posn POSN=none);
- void h_axis_masklabels(unsigned int n, const P& offset,
- epix_label_posn POSN=none);
-
- void v_axis_labels(unsigned int n, const P& offset,
- epix_label_posn POSN=none);
- void v_axis_masklabels(unsigned int n, const P& offset,
- epix_label_posn POSN=none);
-
- //// logarithmic labels ////
- // labels written $k x base^i$ at i + log_b(k)
- void h_axis_log_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN=none,
- unsigned int base=10);
-
- void v_axis_log_labels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN=none,
- unsigned int base=10);
-
- // labels written $base^i$ at coord i
- void h_axis_log_labels(const P& tail, const P& head,
- const P& offset, epix_label_posn POSN=none,
- unsigned int base=10);
-
- void v_axis_log_labels(const P& tail, const P& head,
- const P& offset, epix_label_posn POSN=none,
- unsigned int base=10);
-
-
- void h_axis_log_masklabels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN=none,
- unsigned int base=10);
-
- void v_axis_log_masklabels(const P& tail, const P& head, unsigned int n,
- const P& offset, epix_label_posn POSN=none,
- unsigned int base=10);
-
- void h_axis_log_masklabels(const P& tail, const P& head,
- const P& offset, epix_label_posn POSN=none,
- unsigned int base=10);
-
- void v_axis_log_masklabels(const P& tail, const P& head,
- const P& offset, epix_label_posn POSN=none,
- unsigned int base=10);
-
-
- // Coordinate axes, specified by initial and final points, number of
- // tick marks. h/v_axis are identical except for style of tick marks.
-
- // n subintervals
- void h_axis(const P& tail, const P& head, unsigned int n,
- epix_label_posn align=c);
- void v_axis(const P& tail, const P& head, unsigned int n,
- epix_label_posn align=c);
-
- // Default endpoints (xmin(), 0), xmax(), 0), etc.
- void h_axis(unsigned int n = xsize(), epix_label_posn align=c);
- void v_axis(unsigned int n = ysize(), epix_label_posn align=c);
-
- void h_log_axis(const P& tail, const P& head, unsigned int segs,
- epix_label_posn align=c, unsigned int base=10);
-
- void v_log_axis(const P& tail, const P& head, unsigned int segs,
- epix_label_posn align=c, unsigned int base=10);
-
-} // end of namespace
-
-#endif /* EPIX_AXIS */
diff --git a/graphics/epix/bash_completions b/graphics/epix/bash_completions
deleted file mode 100644
index a05daab7e4..0000000000
--- a/graphics/epix/bash_completions
+++ /dev/null
@@ -1,8 +0,0 @@
-# If you use Ian MacDonald's bash completion package, put these
-# lines in either /etc/bash_completions or $HOME/.bashrc to use
-# programmable completion with ePiX.
-#
-complete -f -X '!*.@(xp|flx|cc|c|C|cpp)' epix
-complete -f -X '!*.@(tex|dtx|ltx)' laps
-complete -f -X '!*.@(xp|flx|cc|c|C|cpp|eepic)' elaps
-complete -f -X '!*.@(flx|cc|c|C|cpp)' flix
diff --git a/graphics/epix/camera.cc b/graphics/epix/camera.cc
deleted file mode 100644
index 0a70da081b..0000000000
--- a/graphics/epix/camera.cc
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * camera.cc -- ePiX::camera functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 22, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "errors.h"
-#include "constants.h"
-
-#include "pairs.h"
-#include "triples.h"
-#include "frame.h"
-
-#include "functions.h"
-
-#include "halfspace.h"
-
-#include "lens.h"
-#include "camera.h"
-
-namespace ePiX {
-
- // Need to initialize frame argument for Apple gcc; otherwise cam()
- // gets null vectors in frame()...
- Camera::Camera()
- : the_viewpt(P(0,0,EPIX_INFTY)), the_target(P(0,0,0)),
- the_orient(frame(E_1, E_2, E_3)),
- the_distance(EPIX_INFTY), the_clip_range(MIN_CLIP),
- the_filter(Neutral()), the_lens(new Perspective()) { }
-
- // viewpt, target, orient
- Camera::Camera(const P& vpt)
- : the_viewpt(vpt), the_target(P(0,0,0)), the_clip_range(MIN_CLIP),
- the_filter(Neutral())
- {
- if (the_viewpt == P(0,0,0))
- {
- epix_warning("Cannot initialize Camera at Origin, using (0, 0, oo)");
- the_viewpt = P(0, 0, EPIX_INFTY);
- }
- P viewer(the_viewpt - the_target);
- the_distance = norm(viewer);
-
- viewer *= recip(norm(viewer));
-
- // viewer is "eye", if possible E_3 is "sky"
- P tmp_sea(E_3*viewer);
-
- if (norm(tmp_sea) < EPIX_EPSILON) // we're on the "z-axis through vpt"
- tmp_sea = E_1;
-
- // eye*sea = sky
- the_orient = frame(tmp_sea, viewer*tmp_sea, viewer);
- adjust();
-
- the_lens = new Perspective();
- }
-
-
- Camera::Camera(const Camera& cam)
- : the_viewpt(cam.the_viewpt), the_target(cam.the_target),
- the_orient(cam.the_orient), the_distance(cam.the_distance),
- the_clip_range(cam.the_clip_range), the_filter(cam.the_filter),
- the_lens(cam.the_lens->clone()) { }
-
- Camera& Camera::operator= (const Camera& cam)
- {
- Lens* tmp_lens(cam.the_lens->clone());
- the_lens = tmp_lens;
-
- the_viewpt = cam.the_viewpt;
- the_target = cam.the_target;
- the_orient =cam.the_orient;
- the_distance = cam.the_distance;
- the_clip_range = cam.the_distance;
-
- the_filter = cam.the_filter;
-
- return *this;
- }
-
- Camera::~Camera()
- {
- delete the_lens;
- }
-
- // rotate up/down
- Camera& Camera::tilt(double angle)
- {
- the_orient.rot1(-angle);
- the_target = the_viewpt + (-the_distance)*the_orient.eye();
- return *this;
- }
-
- // rotate left/right
- Camera& Camera::pan(double angle)
- {
- the_orient.rot2(-angle);
- the_target = the_viewpt + (-the_distance)*the_orient.eye();
- return *this;
- }
-
- // rotate about viewing axis
- Camera& Camera::roll(double angle)
- {
- the_orient.rot3(-angle); // target unchanged
- return *this;
- }
-
- // fix target, move viewpt radially along eye()
- Camera& Camera::range(double d)
- {
- if (d == 0)
- d = EPIX_INFTY;
-
- the_distance = d;
- the_viewpt = the_target + d*the_orient.eye();
-
- return *this;
- }
-
- // fix viewpt, move target radially along eye()
- Camera& Camera::focus(double d)
- {
- if (d == 0)
- d = EPIX_INFTY;
-
- the_distance = d;
- the_target = the_viewpt - d*the_orient.eye();
-
- return *this;
- }
-
- // clip everything behind this
- Camera& Camera::clip_range(double dist)
- {
- the_clip_range = (dist < MIN_CLIP ? MIN_CLIP : dist);
- return *this;
- }
-
- // fix target, set viewpt
- Camera& Camera::at(const P& vpt)
- {
- the_viewpt = vpt;
- adjust();
-
- return *this;
- }
-
- // fix viewpt, set target
- Camera& Camera::look_at(const P& tgt)
- {
- the_target = tgt;
- adjust();
-
- return *this;
- }
-
- Camera& Camera::at(double x1, double x2, double x3)
- {
- the_viewpt = P(x1, x2, x3);
- adjust();
-
- return *this;
- }
-
- // fix viewpt, set target
- Camera& Camera::look_at(double x1, double x2, double x3)
- {
- the_target = P(x1, x2, x3);
- adjust();
-
- return *this;
- }
-
- Camera& Camera::filter(const Color& filter)
- {
- the_filter=filter;
- return *this;
- }
-
- Camera& Camera::perspective()
- {
- delete the_lens;
- the_lens = new Perspective;
- return *this;
- }
-
- Camera& Camera::orthog()
- {
- delete the_lens;
- the_lens = new Orthog;
- return *this;
- }
-
- Camera& Camera::fisheye()
- {
- delete the_lens;
- the_lens = new Fisheye;
- return *this;
- }
-
- Camera& Camera::bubble()
- {
- delete the_lens;
- the_lens = new Bubble;
- return *this;
- }
-
- Color Camera::operator() (const Color& in_color) const
- {
- Color temp = the_filter;
- return temp.filter(in_color);
- }
-
- // lens interface
- pair Camera::operator() (const P& arg) const
- {
- return (*the_lens)(arg, the_orient, the_viewpt, the_distance);
- }
-
- bool Camera::is_linear() const
- {
- return (*the_lens).is_linear();
- }
-
- bool Camera::needs_clip() const
- {
- return (*the_lens).needs_clip();
- }
-
-
- halfspace Camera::clip_plane() const
- {
- const P N(-the_orient.eye());
- return halfspace(the_viewpt + the_clip_range*N, N);
- }
-
- P Camera::eye() const
- {
- return the_orient.eye();
- }
-
- P Camera::viewpt() const
- {
- return the_viewpt;
- }
-
- // private function
- void Camera::adjust()
- {
- P temp(the_target - the_viewpt);
- the_distance = norm(temp);
-
- if (the_distance < EPIX_EPSILON)
- {
- epix_warning("Cannot make viewpoint and target the same, no action");
- return;
- }
-
- // else
- temp *= -1.0/the_distance; // reverse direction
-
- double z_ht(temp|E_3);
-
- // too close to "z-axis" through target?
- if (sqrt((1-z_ht)*(1+z_ht)) < EPIX_EPSILON)
- {
- if (z_ht >= 0)
- the_orient = frame();
-
- else // z_ht < 0
- the_orient = frame(-E_1, E_2, -E_3);
- }
-
- else // far enough from axis
- the_orient = frame(P(-temp.x2(), temp.x1(), 0), E_3, temp);
- }
-
-
- Camera& cam()
- {
- static Camera* the_camera(new Camera());
- return *the_camera;
- }
-
- Camera& camera(cam());
-
-} // end of namespace
diff --git a/graphics/epix/camera.h b/graphics/epix/camera.h
deleted file mode 100644
index 87a3590db2..0000000000
--- a/graphics/epix/camera.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * camera.h -- ePiX::Camera
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 22, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * A Camera has a location, orientation, lens, and color filter. The
- * viewer sits at given <distance> from the <target>, in the direction
- * of the <eye>. The vectors <sea> and <sky> point horizontally to the
- * right and vertically upward on the screen. The viewing angle is
- * controlled by changing the viewer, target, and/or the distance
- * between them.
- *
- * The implementation data comprise:
- * - a frame ({sea, sky, eye}, with the intuitive meanings:)
- * - a viewpoint
- * - a target (at the center of the field of view)
- * - the distance from the viewpoint to the target
- * - a "filter" color, Neutral by default, for color separation, etc.
- * - a Lens
- *
- * A Lens is a mapping P -> pair. In the implementation, the Camera
- * ("body") passes the orientation, target, and distance to the Lens
- * operator.
- */
-
-#ifndef EPIX_CAMERA
-#define EPIX_CAMERA
-
-#include "triples.h"
-#include "frame.h"
-#include "Color.h"
-
-namespace ePiX {
-
- class halfspace;
- class Lens;
- class pair;
-
- class Camera {
- public:
- Camera();
- Camera(const P& vpt);
-
- Camera(const Camera&);
- Camera& operator= (const Camera&);
- ~Camera();
-
- // rotate
- Camera& tilt(double angle); // up/down (pitch)
- Camera& pan(double angle); // left/right (yaw)
- Camera& roll(double angle); // about viewing axis
-
- // fix target, move viewpt radially along eye()
- Camera& range(double);
- // fix viewpt, move target radially along eye()
- Camera& focus(double);
-
- // set clip distance
- Camera& clip_range(double);
-
- Camera& at(const P& arg); // fix target, set viewpt
- Camera& look_at(const P& arg); // fix viewpt, set target
-
- // alternative syntax
- Camera& at(double, double, double);
- Camera& look_at(double, double, double);
-
- Camera& filter(const Color&);
-
- // set lens
- Camera& perspective(); // default
- Camera& orthog(); // faster
- Camera& fisheye();
- Camera& bubble();
-
- // Functions for internal use
- // Camera maps
- Color operator() (const Color&) const; // filter
- pair operator() (const P&) const; // lens map
- bool is_linear() const; // lens preserves lines?
-
- bool needs_clip() const; // lens needs scene pre-clipping
- halfspace clip_plane() const;
-
- // situation
- P eye() const;
- P viewpt() const;
-
- private:
- P the_viewpt; // center of projection
- P the_target; // mapped to Screen origin
- frame the_orient; // our {sea, sky, eye}
- double the_distance;
- double the_clip_range;
-
- Color the_filter;
- void adjust(); // re-orient according to target, viewpt
- Lens* the_lens;
- }; // end of class Camera
-
- // global Camera
- Camera& cam();
- extern Camera& camera;
-} // end of namespace
-
-#endif /* EPIX_CAMERA */
diff --git a/graphics/epix/circle.cc b/graphics/epix/circle.cc
deleted file mode 100644
index b81150587a..0000000000
--- a/graphics/epix/circle.cc
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * circle.cc -- ePiX::Circle class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 30, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "errors.h"
-
-#include "constants.h"
-
-#include "triples.h"
-#include "state.h"
-
-#include "segment.h"
-#include "frame.h"
-#include "camera.h"
-
-#include "path.h"
-
-#include "paint_style.h"
-
-#include "intersections.h"
-
-#include "circle.h"
-
-namespace ePiX {
-
- static const double EPS(EPIX_EPSILON);
-
- Circle::Circle(const P& ctr, const double rad, const P& perp)
- : m_center(ctr), m_radius(rad), m_perp(perp), m_malformed(false)
- {
- double temp(norm(perp));
- if (temp < EPS)
- {
- epix_warning("Degenerate circle normal, using (0,0,1)");
- m_perp=E_3;
- }
-
- else
- m_perp *= (1.0/temp); // normalize
- }
-
- // point-and-center constructor -- parallel to (x1,x2,0)-plane
- Circle::Circle(const P& ctr, const P& pt)
- : m_center(ctr), m_radius(norm(pt - ctr)), m_perp(E_3), m_malformed(false)
- {
- if (fabs(E_3|(pt - ctr)) > EPS)
- epix_warning("Circle requested with point not in (x,y) plane");
- }
-
- // three-point circle constructor
- Circle::Circle(const P& pt1, const P& pt2, const P& pt3)
- : m_malformed(false)
- {
- P D21(pt2-pt1), D31(pt3-pt1), D32(pt3-pt2), N(D21*D31);
-
- if (norm(D21) < EPS ||
- norm(D31) < EPS ||
- norm(D32) < EPS ||
- norm(N) < EPS)
- {
- epix_warning("Collinear points in Circle constructor");
- m_malformed = true;
- }
-
- else
- {
- m_perp = (1.0/norm(N))*N;
-
- P q2(0.5*(pt1+pt2));
- P dir2(m_perp*(q2-pt1));
-
- P q3(0.5*(pt1+pt3));
- P dir3(m_perp*(q3-pt1));
-
- m_center = Segment(q2, q2+dir2)*Segment(q3, q3+dir3);
- m_radius = norm(m_center - pt1);
- }
- }
-
-
- Circle::Circle(bool tag) : m_malformed(true) { }
-
-
- P Circle::center() const
- {
- return m_center;
- }
-
- double Circle::radius() const
- {
- return m_radius;
- }
-
- P Circle::perp() const
- {
- return m_perp;
- }
-
- bool Circle::malformed() const
- {
- return m_malformed;
- }
-
- // translation
- Circle& Circle::shift(const P& arg)
- {
- if (!m_malformed)
- m_center += arg;
- return *this;
- }
-
- Circle& Circle::move_to(const P& arg)
- {
- if (!m_malformed)
- m_center = arg;
- return *this;
- }
-
- // scale radius
- Circle& Circle::scale(const double c)
- {
- if (!m_malformed)
- m_radius *= c;
- return *this;
- }
-
-
- // project to screen by camera
- void Circle::draw() const
- {
- if (m_malformed)
- return;
-
- // else
- double r(m_radius);
- P N(m_perp);
- frame axes; // standard basis
-
- if (EPS <= norm(N*E_3))
- axes = frame(E_3*N, E_3, N);
-
- path data(m_center, r*(axes.sea()), r*(axes.sky()), 0, full_turn());
- data.close().fill(the_paint_style().fill_flag());
- data.draw();
- }
-
-
- //// global functions ////
- void circle(const P& ctr, const double rad, const P& perp)
- {
- Circle C(ctr, rad, perp);
- C.draw();
- }
-
- void circle(const P& ctr, const P& pt)
- {
- Circle C(ctr, pt);
- C.draw();
- }
-
- void circle(const P& pt1, const P& pt2, const P& pt3)
- {
- Circle C(pt1, pt2, pt3);
- C.draw();
- }
-} // end of namespace
diff --git a/graphics/epix/circle.h b/graphics/epix/circle.h
deleted file mode 100644
index 5d3e80dd72..0000000000
--- a/graphics/epix/circle.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * circle.h -- ePiX::Circle class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 30, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides:
- *
- * The Circle class (center, radius, unit normal).
- *
- * - Circle() (defaults to origin, unit radius, in (x1,x2,0)-plane
- * - Circle(ctr, pt) (parallel to (x1,x2,0)-plane, center ctr, through pt)
- * - Circle(pt1, pt2, pt3) (arbitrary non-collinear points)
- * - center(), radius(), perp()
- * - affine operations: shift(P), move_to(P), scale(double)
- * - draw() (ePiX ellipse)
- */
-#ifndef EPIX_CIRCLE
-#define EPIX_CIRCLE
-
-#include "triples.h"
-
-namespace ePiX {
-
- class Circle {
- public:
- // defaults to unit circle in (x1,x2,0) plane
- Circle(const P& ctr=P(0,0,0), double rad=1, const P& perp=E_3);
-
- Circle(const P& ctr, const P& pt); // center, and point, normal = E_3
- Circle(const P& pt1, const P& pt2, const P& pt3); // three points
-
- Circle(bool); // malformed Circle for intersection operators
-
- P center() const;
- double radius() const;
- P perp() const;
-
- bool malformed() const;
-
- // translate
- Circle& shift(const P&);
- Circle& move_to(const P&);
- // scale radius by c
- Circle& scale(double c);
-
- void draw() const;
-
- private:
- P m_center;
- double m_radius;
- P m_perp; // unit normal, even if rad = 0
-
- bool m_malformed;
- }; // end of Circle class
-
- // global object-drawing commands
- void circle(const P& ctr=P(0,0,0), double rad=1, const P& perp=E_3);
-
- void circle(const P& ctr, const P& pt); // center, and point, normal = E_3
- void circle(const P& pt1, const P& pt2, const P& pt3); // three points
-
-} // end of namespace
-
-#endif /* EPIX_CIRCLE */
diff --git a/graphics/epix/clipping.cc b/graphics/epix/clipping.cc
deleted file mode 100644
index 8da785d2f5..0000000000
--- a/graphics/epix/clipping.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * clipping.cc -- Implementation of ePiX's current drawing state
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.13
- * Last Change: August 23, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <list>
-
-#include "constants.h"
-#include "triples.h"
-#include "functions.h"
-#include "clipping.h"
-
-namespace ePiX {
-
- typedef std::list<halfspace>::const_iterator Hp;
- static const double INF(EPIX_INFTY);
-
- clip_state::clip_state(const P& arg1, const P& arg2)
- {
- double min1(min(arg1.x1(), arg2.x1())), max1(max(arg1.x1(), arg2.x1()));
- double min2(min(arg1.x2(), arg2.x2())), max2(max(arg1.x2(), arg2.x2()));
- double min3(min(arg1.x3(), arg2.x3())), max3(max(arg1.x3(), arg2.x3()));
-
- double avg1(0.5*(min1+max1)), avg2(0.5*(min2+max2)), avg3(0.5*(min3+max3));
-
- // inward-pointing faces of clip_box
- m_walls.push_back(halfspace(P(max1,avg2,avg3), P(-1, 0, 0)));
- m_walls.push_back(halfspace(P(min1,avg2,avg3), P( 1, 0, 0)));
-
- m_walls.push_back(halfspace(P(avg1,max2,avg3), P( 0,-1, 0)));
- m_walls.push_back(halfspace(P(avg1,min2,avg3), P( 0, 1, 0)));
-
- m_walls.push_back(halfspace(P(avg1,avg2,max3), P( 0, 0,-1)));
- m_walls.push_back(halfspace(P(avg1,avg2,min3), P( 0, 0, 1)));
- }
-
- clip_state::clip_state()
- {
- m_walls.push_back(halfspace(P( INF, 0, 0), P(-1, 0, 0)));
- m_walls.push_back(halfspace(P(-INF, 0, 0), P( 1, 0, 0)));
-
- m_walls.push_back(halfspace(P( 0, INF, 0), P( 0,-1, 0)));
- m_walls.push_back(halfspace(P( 0,-INF, 0), P( 0, 1, 0)));
-
- m_walls.push_back(halfspace(P( 0, 0, INF), P( 0, 0,-1)));
- m_walls.push_back(halfspace(P( 0, 0,-INF), P( 0, 0, 1)));
- }
-
-
- clip_state& clip_state::add_face(const P& loc, const P& perp)
- {
- if (EPIX_EPSILON < norm(perp))
- m_extras.push_back(halfspace(loc, perp));
-
- return *this;
- }
-
-
- clip_state& clip_state::clear_extras()
- {
- m_extras.clear();
-
- return *this;
- }
-
-
- bool clip_state::clips(const P& arg) const
- {
- for (Hp p=m_walls.begin(); p != m_walls.end(); ++p)
- if ( (*p).clips(arg) )
- return true;
-
- for (Hp p=m_extras.begin(); p != m_extras.end(); ++p)
- if ( (*p).clips(arg) )
- return true;
-
- return false;
- }
-
- // return reference to clipped argument
- std::list<edge3d>& clip_state::clip_path(std::list<edge3d>& L) const
- {
- for (Hp p=m_walls.begin(); p != m_walls.end(); ++p)
- (*p).clip_path(L);
-
- for (Hp p=m_extras.begin(); p != m_extras.end(); ++p)
- (*p).clip_path(L);
-
- return L;
- }
-
- std::list<edge3d>& clip_state::clip_loop(std::list<edge3d>& L) const
- {
- for (Hp p=m_walls.begin(); p != m_walls.end(); ++p)
- (*p).clip_loop(L);
-
- for (Hp p=m_extras.begin(); p != m_extras.end(); ++p)
- (*p).clip_loop(L);
-
- return L;
- }
-
- clip_state& the_clip_box()
- {
- static clip_state* the_clip_state(new clip_state());
- return *the_clip_state;
- }
-} // end of namespace
diff --git a/graphics/epix/clipping.h b/graphics/epix/clipping.h
deleted file mode 100644
index bec60a3801..0000000000
--- a/graphics/epix/clipping.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * clipping.h -- ePiX's clip box
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.13
- * Last Change: August 23, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * The class in this file implements backend for user-level global
- * functions defined in state.h. This header is not part of epix.h.
- */
-#ifndef EPIX_CLIPPING
-#define EPIX_CLIPPING
-
-#include <string>
-
-#include "edge_data.h"
-#include "halfspace.h"
-
-namespace ePiX {
-
- class P;
-
- class clip_state {
- public:
- // create inward-pointing faces of clip_box
- clip_state(const P& arg1, const P& arg2);
- clip_state(); // very large box by default
-
- // add and remove faces
- clip_state& add_face(const P& loc, const P& perp);
- clip_state& clear_extras();
-
- bool clips(const P&) const;
-
- // return reference to clipped argument
- std::list<edge3d>& clip_path(std::list<edge3d>&) const;
- std::list<edge3d>& clip_loop(std::list<edge3d>&) const;
-
- private:
- std::list<halfspace> m_walls; // always present
-
- std::list<halfspace> m_extras; // user-added
- }; // end of class clip_state
-
- clip_state& the_clip_box();
-
-} // end of namespace
-
-#endif /* EPIX_CLIPPING */
diff --git a/graphics/epix/config.guess b/graphics/epix/config.guess
deleted file mode 100644
index c38553dc74..0000000000
--- a/graphics/epix/config.guess
+++ /dev/null
@@ -1,1497 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2006-02-23'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
- *:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
- exit ;;
- macppc:MirBSD:*:*)
- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
- "EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
- "EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
- "EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
- "EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
- exit ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
- then
- echo "$SYSTEM_NAME"
- else
- echo rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- eval $set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- esac
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:MSYS_NT-*:*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
- x86:Interix*:[345]*)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T:Interix*:[345]*)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit ;;
- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- or32:Linux:*:*)
- echo or32-unknown-linux-gnu
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun)
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^LIBC/{
- s: ::g
- p
- }'`"
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
- exit ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
- exit ;;
- i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
- exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/graphics/epix/config.sub b/graphics/epix/config.sub
deleted file mode 100644
index ad9f395711..0000000000
--- a/graphics/epix/config.sub
+++ /dev/null
@@ -1,1608 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2006-02-23'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | mt \
- | msp430 \
- | nios | nios2 \
- | ns16k | ns32k \
- | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m32c)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
- ms1)
- basic_machine=mt-unknown
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nios-* | nios2-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
- | ymp-* \
- | z8k-*)
- ;;
- m32c-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16c)
- basic_machine=cr16c-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rdos)
- basic_machine=i386-pc
- os=-rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -kaos*)
- os=-kaos
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-haiku)
- os=-haiku
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/graphics/epix/configure b/graphics/epix/configure
deleted file mode 100644
index 14efb92c86..0000000000
--- a/graphics/epix/configure
+++ /dev/null
@@ -1,6396 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.60 for epix 1.2.1.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-as_nl='
-'
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-if test "x$CONFIG_SHELL" = x; then
- if (eval ":") 2>/dev/null; then
- as_have_required=yes
-else
- as_have_required=no
-fi
-
- if test $as_have_required = yes && (eval ":
-(as_func_return () {
- (exit \$1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
- as_lineno_1=\$LINENO
- as_lineno_2=\$LINENO
- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
- :
-else
- as_candidate_shells=
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- case $as_dir in
- /*)
- for as_base in sh bash ksh sh5; do
- as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
- done;;
- esac
-done
-IFS=$as_save_IFS
-
-
- for as_shell in $as_candidate_shells $SHELL; do
- # Try only shells that exist, to save several forks.
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { ("$as_shell") 2> /dev/null <<\_ASEOF
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-:
-_ASEOF
-}; then
- CONFIG_SHELL=$as_shell
- as_have_required=yes
- if { "$as_shell" 2> /dev/null <<\_ASEOF
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-:
-(as_func_return () {
- (exit $1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
- break
-fi
-
-fi
-
- done
-
- if test "x$CONFIG_SHELL" != x; then
- for as_var in BASH_ENV ENV
- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- done
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
- if test $as_have_required = no; then
- echo This script requires a shell more modern than all the
- echo shells that I found on your system. Please install a
- echo modern shell, or manually run the script under such a
- echo shell if you do have one.
- { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
- (exit \$1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
- echo No shell found that supports shell functions.
- echo Please tell autoconf@gnu.org about your system,
- echo including any error possibly output before this
- echo message
-}
-
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line after each line using $LINENO; the second 'sed'
- # does the real work. The second script uses 'N' to pair each
- # line-number line with the line containing $LINENO, and appends
- # trailing '-' during substitution so that $LINENO is not a special
- # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # scripts with optimization help from Paolo Bonzini. Blame Lee
- # E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
- case `echo 'x\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- *) ECHO_C='\c';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
-# systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- as_executable_p="test -x"
-else
- as_executable_p=:
-fi
-rm -f conf$$.file
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-
-exec 7<&0 </dev/null 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Identity of this package.
-PACKAGE_NAME='epix'
-PACKAGE_TARNAME='epix'
-PACKAGE_VERSION='1.2.1'
-PACKAGE_STRING='epix 1.2.1'
-PACKAGE_BUGREPORT=''
-
-ac_unique_file="utils.h"
-ac_subst_vars='SHELL
-PATH_SEPARATOR
-PACKAGE_NAME
-PACKAGE_TARNAME
-PACKAGE_VERSION
-PACKAGE_STRING
-PACKAGE_BUGREPORT
-exec_prefix
-prefix
-program_transform_name
-bindir
-sbindir
-libexecdir
-datarootdir
-datadir
-sysconfdir
-sharedstatedir
-localstatedir
-includedir
-oldincludedir
-docdir
-infodir
-htmldir
-dvidir
-pdfdir
-psdir
-libdir
-localedir
-mandir
-DEFS
-ECHO_C
-ECHO_N
-ECHO_T
-LIBS
-build_alias
-host_alias
-target_alias
-INSTALL_PROGRAM
-INSTALL_SCRIPT
-INSTALL_DATA
-CYGPATH_W
-PACKAGE
-VERSION
-ACLOCAL
-AUTOCONF
-AUTOMAKE
-AUTOHEADER
-MAKEINFO
-install_sh
-STRIP
-INSTALL_STRIP_PROGRAM
-mkdir_p
-AWK
-SET_MAKE
-am__leading_dot
-AMTAR
-am__tar
-am__untar
-MAINTAINER_MODE_TRUE
-MAINTAINER_MODE_FALSE
-MAINT
-CXX
-CXXFLAGS
-LDFLAGS
-CPPFLAGS
-ac_ct_CXX
-EXEEXT
-OBJEXT
-DEPDIR
-am__include
-am__quote
-AMDEP_TRUE
-AMDEP_FALSE
-AMDEPBACKSLASH
-CXXDEPMODE
-am__fastdepCXX_TRUE
-am__fastdepCXX_FALSE
-LN_S
-RANLIB
-ENABLE_EPIX_EL_TRUE
-ENABLE_EPIX_EL_FALSE
-BASH_PATH
-RUNTIME_COMPILER
-CC
-CFLAGS
-ac_ct_CC
-CCDEPMODE
-am__fastdepCC_TRUE
-am__fastdepCC_FALSE
-CPP
-GREP
-EGREP
-LIBOBJS
-LTLIBOBJS'
-ac_subst_files=''
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CXX
-CXXFLAGS
-LDFLAGS
-CPPFLAGS
-CCC
-CC
-CFLAGS
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- eval enable_$ac_feature=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- eval enable_$ac_feature=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
- ac_prev=pdfdir ;;
- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
- pdfdir=$ac_optarg ;;
-
- -psdir | --psdir | --psdi | --psd | --ps)
- ac_prev=psdir ;;
- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
- psdir=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval with_$ac_package=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/-/_/g'`
- eval with_$ac_package=no ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute directory names.
-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
-do
- eval ac_val=\$$ac_var
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; }
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- { echo "$as_me: error: Working directory cannot be determined" >&2
- { (exit 1); exit 1; }; }
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- { echo "$as_me: error: pwd does not report name of working directory" >&2
- { (exit 1); exit 1; }; }
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$0" ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$0" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
- { (exit 1); exit 1; }; }
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
- { (exit 1); exit 1; }; }
- pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
- srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
- eval ac_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_env_${ac_var}_value=\$${ac_var}
- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures epix 1.2.1 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/epix]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
-_ACEOF
-
- cat <<\_ACEOF
-
-Program names:
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of epix 1.2.1:";;
- esac
- cat <<\_ACEOF
-
-Optional Features:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-maintainer-mode enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
- --enable-epix-el Install emacs mode for ePiX files
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-bash=<bash> The path to bash
- --with-runtime=<g++> The runtime compiler
-
-Some influential environment variables:
- CXX C++ compiler command
- CXXFLAGS C++ compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
- you have headers in a nonstandard directory <include dir>
- CC C compiler command
- CFLAGS C compiler flags
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" || continue
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
- cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- echo &&
- $SHELL "$ac_srcdir/configure.gnu" --help=recursive
- elif test -f "$ac_srcdir/configure"; then
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
- cat <<\_ACEOF
-epix configure 1.2.1
-generated by GNU Autoconf 2.60
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit
-fi
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by epix $as_me 1.2.1, which was
-generated by GNU Autoconf 2.60. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- echo "PATH: $as_dir"
-done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
- 2)
- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- ac_configure_args="$ac_configure_args '$ac_arg'"
- ;;
- esac
- done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
- echo
- # The following way of writing the cache mishandles newlines in values,
-(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- *) $as_unset $ac_var ;;
- esac ;;
- esac
- done
- (set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- sed -n \
- "s/'\''/'\''\\\\'\'''\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
- ;; #(
- *)
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-)
- echo
-
- cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal"
- echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -n "$CONFIG_SITE"; then
- set x "$CONFIG_SITE"
-elif test "x$prefix" != xNONE; then
- set x "$prefix/share/config.site" "$prefix/etc/config.site"
-else
- set x "$ac_default_prefix/share/config.site" \
- "$ac_default_prefix/etc/config.site"
-fi
-shift
-for ac_site_file
-do
- if test -r "$ac_site_file"; then
- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
-else
- { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-am__api_version="1.9"
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- done
- done
- ;;
-esac
-done
-IFS=$as_save_IFS
-
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t $srcdir/configure conftest.file`
- fi
- rm -f conftest.file
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
-alias in your environment" >&5
-echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
-alias in your environment" >&2;}
- { (exit 1); exit 1; }; }
- fi
-
- test "$2" = conftest.file
- )
-then
- # Ok.
- :
-else
- { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
- { (exit 1); exit 1; }; }
-fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-test "$program_prefix" != NONE &&
- program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $. echo might interpret backslashes.
-# By default was `s,x,x', remove it if useless.
-cat <<\_ACEOF >conftest.sed
-s/[\\$]/&&/g;s/;s,x,x,$//
-_ACEOF
-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-rm -f conftest.sed
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- # We used to keeping the `.' as first argument, in order to
- # allow $(mkdir_p) to be used without argument. As in
- # $(mkdir_p) $(somedir)
- # where $(somedir) is conditionally defined. However this is wrong
- # for two reasons:
- # 1. if the package is installed by a user who cannot write `.'
- # make install will fail,
- # 2. the above comment should most certainly read
- # $(mkdir_p) $(DESTDIR)$(somedir)
- # so it does not work when $(somedir) is undefined and
- # $(DESTDIR) is not.
- # To support the latter case, we have to write
- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
- # so the `.' trick is pointless.
- mkdir_p='mkdir -p --'
-else
- # On NextStep and OpenStep, the `mkdir' command does not
- # recognize any option. It will interpret all options as
- # directories to create, and then abort because `.' already
- # exists.
- for d in ./-p ./--version;
- do
- test -d $d && rmdir $d
- done
- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
- if test -f "$ac_aux_dir/mkinstalldirs"; then
- mkdir_p='$(mkinstalldirs)'
- else
- mkdir_p='$(install_sh) -d'
- fi
-fi
-
-for ac_prog in gawk mawk nawk awk
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$AWK"; then
- ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AWK="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
- { echo "$as_me:$LINENO: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
- test -n "$AWK" && break
-done
-
-{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
-set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
- @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
- *@@@%%%=?*=@@@%%%*)
- eval ac_cv_prog_make_${ac_make}_set=yes;;
- *)
- eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
- SET_MAKE=
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
- test -f $srcdir/config.status; then
- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='epix'
- VERSION='1.2.1'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
- { echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
- ac_ct_STRIP=$STRIP
- # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_STRIP"; then
- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_STRIP="strip"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
- { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
- if test "x$ac_ct_STRIP" = x; then
- STRIP=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
- STRIP=$ac_ct_STRIP
- fi
-else
- STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-
-{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
- # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then
- enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
- USE_MAINTAINER_MODE=no
-fi
-
- { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
-
-
-if test $USE_MAINTAINER_MODE = yes; then
- MAINTAINER_MODE_TRUE=
- MAINTAINER_MODE_FALSE='#'
-else
- MAINTAINER_MODE_TRUE='#'
- MAINTAINER_MODE_FALSE=
-fi
-
- MAINT=$MAINTAINER_MODE_TRUE
-
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
- if test -n "$CCC"; then
- CXX=$CCC
- else
- if test -n "$ac_tool_prefix"; then
- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CXX"; then
- ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
- { echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
- test -n "$CXX" && break
- done
-fi
-if test -z "$CXX"; then
- ac_ct_CXX=$CXX
- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CXX"; then
- ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CXX="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
- { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
- test -n "$ac_ct_CXX" && break
-done
-
- if test "x$ac_ct_CXX" = x; then
- CXX="g++"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
- CXX=$ac_ct_CXX
- fi
-fi
-
- fi
-fi
-# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler -V >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5
-echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6; }
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-#
-# List of possible output files, starting from the most likely.
-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
-# only as a last resort. b.out is created by i960 compilers.
-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
-#
-# The IRIX 6 linker writes into existing files which may not be
-# executable, retaining their permissions. Remove them first so a
-# subsequent execution test works.
-ac_rmfiles=
-for ac_file in $ac_files
-do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
- esac
-done
-rm -f $ac_rmfiles
-
-if { (ac_try="$ac_link_default"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link_default") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile. We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files
-do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
- then :; else
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- fi
- # We set ac_cv_exeext here because the later test for it is not
- # safe: cross compilers may not add the suffix if given an `-o'
- # argument, so we may need to know it at that point already.
- # Even if this section looks crufty: it has the advantage of
- # actually working.
- break;;
- * )
- break;;
- esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C++ compiler cannot create executables
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
-
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5
-echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C++ compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
- fi
- fi
-fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6; }
-
-{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- break;;
- * ) break;;
- esac
-done
-else
- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
-if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_compiler_gnu=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
-GXX=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_save_cxx_werror_flag=$ac_cxx_werror_flag
- ac_cxx_werror_flag=yes
- ac_cv_prog_cxx_g=no
- CXXFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cxx_g=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- CXXFLAGS=""
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
- CXXFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cxx_g=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
- if test "$GXX" = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-g"
- fi
-else
- if test "$GXX" = yes; then
- CXXFLAGS="-O2"
- else
- CXXFLAGS=
- fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo done
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
- am__include=include
- am__quote=
- _am_result=GNU
-fi
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
- am__include=.include
- am__quote="\""
- _am_result=BSD
- fi
-fi
-
-
-{ echo "$as_me:$LINENO: result: $_am_result" >&5
-echo "${ECHO_T}$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
- enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
-
-
-if test "x$enable_dependency_tracking" != xno; then
- AMDEP_TRUE=
- AMDEP_FALSE='#'
-else
- AMDEP_TRUE='#'
- AMDEP_FALSE=
-fi
-
-
-
-
-depcc="$CXX" am_compiler_list=
-
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CXX_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- case $depmode in
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- none) break ;;
- esac
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this.
- if depmode=$depmode \
- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CXX_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
-
-
-if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
- am__fastdepCXX_TRUE=
- am__fastdepCXX_FALSE='#'
-else
- am__fastdepCXX_TRUE='#'
- am__fastdepCXX_FALSE=
-fi
-
-
-{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
- { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-else
- { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-echo "${ECHO_T}no, using $LN_S" >&6; }
-fi
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
-set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
- @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
- *@@@%%%=?*=@@@%%%*)
- eval ac_cv_prog_make_${ac_make}_set=yes;;
- *)
- eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
- SET_MAKE=
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- done
- done
- ;;
-esac
-done
-IFS=$as_save_IFS
-
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-# Check whether --enable-epix-el was given.
-if test "${enable_epix_el+set}" = set; then
- enableval=$enable_epix_el; enable_epix_el=${enableval-yes}
-else
- enable_epix_el=yes
-fi
-
-
-
-if test "$enable_epix_el" = yes; then
- ENABLE_EPIX_EL_TRUE=
- ENABLE_EPIX_EL_FALSE='#'
-else
- ENABLE_EPIX_EL_TRUE='#'
- ENABLE_EPIX_EL_FALSE=
-fi
-
-
-# Extract the first word of "bash", so it can be a program name with args.
-set dummy bash; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_BASH_PATH+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $BASH_PATH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_BASH_PATH="$BASH_PATH" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_path_BASH_PATH="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_BASH_PATH" && ac_cv_path_BASH_PATH="/bin/bash"
- ;;
-esac
-fi
-BASH_PATH=$ac_cv_path_BASH_PATH
-if test -n "$BASH_PATH"; then
- { echo "$as_me:$LINENO: result: $BASH_PATH" >&5
-echo "${ECHO_T}$BASH_PATH" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-
-# Check whether --with-bash was given.
-if test "${with_bash+set}" = set; then
- withval=$with_bash; BASH_PATH=$withval
-fi
-
-
-# Extract the first word of "g++", so it can be a program name with args.
-set dummy g++; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_RUNTIME_COMPILER+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $RUNTIME_COMPILER in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_RUNTIME_COMPILER="$RUNTIME_COMPILER" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_path_RUNTIME_COMPILER="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_RUNTIME_COMPILER" && ac_cv_path_RUNTIME_COMPILER="g++"
- ;;
-esac
-fi
-RUNTIME_COMPILER=$ac_cv_path_RUNTIME_COMPILER
-if test -n "$RUNTIME_COMPILER"; then
- { echo "$as_me:$LINENO: result: $RUNTIME_COMPILER" >&5
-echo "${ECHO_T}$RUNTIME_COMPILER" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-
-# Check whether --with-runtime was given.
-if test "${with_runtime+set}" = set; then
- withval=$with_runtime; RUNTIME_COMPILER=$withval
-fi
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler -V >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_compiler_gnu=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_g=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- CFLAGS=""
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_g=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_c89=$ac_arg
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
- xno)
- { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CC" am_compiler_list=
-
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- case $depmode in
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- none) break ;;
- esac
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this.
- if depmode=$depmode \
- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
-
-
-if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
-else
- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
-if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_path_GREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue
- # Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-
- $ac_path_GREP_found && break 3
- done
-done
-
-done
-IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-else
- ac_cv_path_GREP=$GREP
-fi
-
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_path_EGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue
- # Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-
- $ac_path_EGREP_found && break 3
- done
-done
-
-done
-IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-else
- ac_cv_path_EGREP=$EGREP
-fi
-
-
- fi
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_stdc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_stdc=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-
-{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
-if test "${ac_cv_c_const+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
- typedef int charset[2];
- const charset x;
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *ccp;
- char **p;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- ccp = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++ccp;
- p = (char**) ccp;
- ccp = (char const *const *) p;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- if (s) return 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- if (!foo) return 0;
- }
- return !x[0] && !zero.x;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_const=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_c_const=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define const
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking for inline" >&5
-echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
-if test "${ac_cv_c_inline+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_inline=$ac_kw
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
-echo "${ECHO_T}$ac_cv_c_inline" >&6; }
-
-
-case $ac_cv_c_inline in
- inline | yes) ;;
- *)
- case $ac_cv_c_inline in
- no) ac_val=;;
- *) ac_val=$ac_cv_c_inline;;
- esac
- cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
- ;;
-esac
-
-
-
-for ac_func in strtod
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-ac_config_files="$ac_config_files Makefile samples/Makefile doc/Makefile"
-
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- *) $as_unset $ac_var ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
- sed '
- /^ac_cv_env_/b end
- t clear
- :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
- { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
- else
- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then branch to the quote section. Otherwise,
-# look for a macro that doesn't take arguments.
-ac_script='
-t clear
-:clear
-s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
-t quote
-s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
-t quote
-b any
-:quote
-s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
-s/\[/\\&/g
-s/\]/\\&/g
-s/\$/$$/g
-H
-:any
-${
- g
- s/^\n//
- s/\n/ /g
- p
-}
-'
-DEFS=`sed -n "$ac_script" confdefs.h`
-
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${ENABLE_EPIX_EL_TRUE}" && test -z "${ENABLE_EPIX_EL_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"ENABLE_EPIX_EL\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"ENABLE_EPIX_EL\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-as_nl='
-'
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line after each line using $LINENO; the second 'sed'
- # does the real work. The second script uses 'N' to pair each
- # line-number line with the line containing $LINENO, and appends
- # trailing '-' during substitution so that $LINENO is not a special
- # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # scripts with optimization help from Paolo Bonzini. Blame Lee
- # E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
- case `echo 'x\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- *) ECHO_C='\c';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
-# systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- as_executable_p="test -x"
-else
- as_executable_p=:
-fi
-rm -f conf$$.file
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-
-# Save the log message, to keep $[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by epix $as_me 1.2.1, which was
-generated by GNU Autoconf 2.60. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -q, --quiet do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Configuration commands:
-$config_commands
-
-Report bugs to <bug-autoconf@gnu.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-ac_cs_version="\\
-epix config.status 1.2.1
-configured by $0, generated by GNU Autoconf 2.60,
- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2006 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=*)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- esac
-
- case $ac_option in
- # Handling of the options.
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- echo "$ac_cs_version"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- CONFIG_FILES="$CONFIG_FILES $ac_optarg"
- ac_need_defaults=false;;
- --he | --h | --help | --hel | -h )
- echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) { echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1"
- ac_need_defaults=false ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-if \$ac_cs_recheck; then
- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
- CONFIG_SHELL=$SHELL
- export CONFIG_SHELL
- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
- echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
- case $ac_config_target in
- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;;
- "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-
- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
- tmp=
- trap 'exit_status=$?
- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=./conf$$-$RANDOM
- (umask 077 && mkdir "$tmp")
-} ||
-{
- echo "$me: cannot create a temporary directory in ." >&2
- { (exit 1); exit 1; }
-}
-
-#
-# Set up the sed scripts for CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "$CONFIG_FILES"; then
-
-_ACEOF
-
-
-
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
-INSTALL_DATA!$INSTALL_DATA$ac_delim
-CYGPATH_W!$CYGPATH_W$ac_delim
-PACKAGE!$PACKAGE$ac_delim
-VERSION!$VERSION$ac_delim
-ACLOCAL!$ACLOCAL$ac_delim
-AUTOCONF!$AUTOCONF$ac_delim
-AUTOMAKE!$AUTOMAKE$ac_delim
-AUTOHEADER!$AUTOHEADER$ac_delim
-MAKEINFO!$MAKEINFO$ac_delim
-install_sh!$install_sh$ac_delim
-STRIP!$STRIP$ac_delim
-INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
-mkdir_p!$mkdir_p$ac_delim
-AWK!$AWK$ac_delim
-SET_MAKE!$SET_MAKE$ac_delim
-am__leading_dot!$am__leading_dot$ac_delim
-AMTAR!$AMTAR$ac_delim
-am__tar!$am__tar$ac_delim
-am__untar!$am__untar$ac_delim
-MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
-MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
-MAINT!$MAINT$ac_delim
-CXX!$CXX$ac_delim
-CXXFLAGS!$CXXFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CXX!$ac_ct_CXX$ac_delim
-EXEEXT!$EXEEXT$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-DEPDIR!$DEPDIR$ac_delim
-am__include!$am__include$ac_delim
-am__quote!$am__quote$ac_delim
-AMDEP_TRUE!$AMDEP_TRUE$ac_delim
-AMDEP_FALSE!$AMDEP_FALSE$ac_delim
-AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
-CXXDEPMODE!$CXXDEPMODE$ac_delim
-am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
-am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
-LN_S!$LN_S$ac_delim
-RANLIB!$RANLIB$ac_delim
-ENABLE_EPIX_EL_TRUE!$ENABLE_EPIX_EL_TRUE$ac_delim
-ENABLE_EPIX_EL_FALSE!$ENABLE_EPIX_EL_FALSE$ac_delim
-BASH_PATH!$BASH_PATH$ac_delim
-RUNTIME_COMPILER!$RUNTIME_COMPILER$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-CCDEPMODE!$CCDEPMODE$ac_delim
-am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
-am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
-CPP!$CPP$ac_delim
-GREP!$GREP$ac_delim
-EGREP!$EGREP$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_ACEOF
-
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 94; then
- break
- elif $ac_last_try; then
- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
- ac_eof=`expr $ac_eof + 1`
-fi
-
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
-_ACEOF
-
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[ ]*\):*/\1/
-s/:*$//
-s/^[^=]*=[ ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-fi # test -n "$CONFIG_FILES"
-
-
-for ac_tag in :F $CONFIG_FILES :C $CONFIG_COMMANDS
-do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
- :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
- { (exit 1); exit 1; }; };;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
- esac
- ac_save_IFS=$IFS
- IFS=:
- set x $ac_tag
- IFS=$ac_save_IFS
- shift
- ac_file=$1
- shift
-
- case $ac_mode in
- :L) ac_source=$1;;
- :[FH])
- ac_file_inputs=
- for ac_f
- do
- case $ac_f in
- -) ac_f="$tmp/stdin";;
- *) # Look for the file first in the build tree, then in the source tree
- # (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
- test -f "$ac_f" ||
- case $ac_f in
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
- { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
- { (exit 1); exit 1; }; };;
- esac
- ac_file_inputs="$ac_file_inputs $ac_f"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- configure_input="Generated from "`IFS=:
- echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
- { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- fi
-
- case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin";;
- esac
- ;;
- esac
-
- ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- { as_dir="$ac_dir"
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- case $ac_mode in
- :F)
- #
- # CONFIG_FILE
- #
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
- esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-
-case `sed -n '/datarootdir/ {
- p
- q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p
-' $ac_file_inputs` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
- s&@infodir@&$infodir&g
- s&@localedir@&$localedir&g
- s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-$ac_datarootdir_hack
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
- { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&5
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&2;}
-
- rm -f "$tmp/stdin"
- case $ac_file in
- -) cat "$tmp/out"; rm -f "$tmp/out";;
- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
- esac
- ;;
-
-
- :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
-echo "$as_me: executing $ac_file commands" >&6;}
- ;;
- esac
-
-
- case $ac_file$ac_mode in
- "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # So let's grep whole file.
- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
- dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$mf" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- { as_dir=$dirpart/$fdir
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
-done
- ;;
-
- esac
-done # for ac_tag
-
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
-
diff --git a/graphics/epix/configure.ac b/graphics/epix/configure.ac
deleted file mode 100644
index b751aa69c4..0000000000
--- a/graphics/epix/configure.ac
+++ /dev/null
@@ -1,58 +0,0 @@
-dnl Process this file with autoconf 2.60 or later
-dnl to produce a configure script.
-AC_INIT(epix, 1.2.1)
-AC_PREREQ(2.60)
-AC_CONFIG_SRCDIR(utils.h)
-AM_INIT_AUTOMAKE
-AM_MAINTAINER_MODE
-
-dnl Checks for programs.
-AC_PROG_CXX
-AC_PROG_LN_S
-AC_PROG_RANLIB
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-
-dnl User may request epix.el non-installation
-AC_ARG_ENABLE(epix-el,
- AS_HELP_STRING([--enable-epix-el],
- [Install emacs mode for ePiX files]),
- enable_epix_el=${enableval-yes},
- enable_epix_el=yes)
-AM_CONDITIONAL(ENABLE_EPIX_EL, [test "$enable_epix_el" = yes])
-
-dnl For all shell scripts
-AC_PATH_PROG(BASH_PATH, bash, /bin/bash)
-AC_ARG_WITH(bash,
- AS_HELP_STRING([--with-bash=<bash>],
- [The path to bash]),
- BASH_PATH=$withval)
-
-dnl For epix and flix
-AC_PATH_PROG(RUNTIME_COMPILER, g++, g++)
-AC_ARG_WITH(runtime,
- AS_HELP_STRING([--with-runtime=<g++>],
- [The runtime compiler]),
- RUNTIME_COMPILER=$withval)
-
-dnl AC_ARG_WITH(contrib,
-dnl AS_HELP_STRING([--with-contrib],
-dnl [Build contributed code and docs]))
-dnl AM_CONDITIONAL(BUILD_CONTRIB, [test "$with_contrib" = yes])
-
-dnl Checks for libraries.
-
-dnl Checks for header files.
-AC_HEADER_STDC
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_C_INLINE
-
-dnl Checks for library functions.
-AC_CHECK_FUNCS(strtod)
-
-AC_CONFIG_FILES([Makefile samples/Makefile doc/Makefile])
-dnl contrib/Makefile contrib/doc/Makefile])
-
-AC_OUTPUT
diff --git a/graphics/epix/constants.h b/graphics/epix/constants.h
deleted file mode 100644
index c888c1d4da..0000000000
--- a/graphics/epix/constants.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * constants.h -- ePiX's hidden compile-time constants
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 08, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_CONSTANTS
-#define EPIX_CONSTANTS
-
-#include "length.h"
-
-namespace ePiX {
-
- // See lengths.cc for units conversion factors
-
- //// Style Parameters -- min, default, max ////
- // standard pen widths
- const length PLAIN_WIDTH("0.4pt");
- const length BOLD_WIDTH("0.8pt");
- const length BBOLD_WIDTH("1.2pt");
-
-
- // dot diam in pt
- const double MIN_DOT(1);
- const double AVG_DOT(4);
- const double MAX_DOT(36);
-
- // page length of dash pattern in pt
- const double MIN_SEP(4);
- const double AVG_SEP(12);
- const double MAX_SEP(36);
-
- // axis tick half-lengths
- const double MIN_TICK(1);
- const double AVG_TICK(3);
- const double MAX_TICK(8);
-
- // arrow head parameters
- const double MIN_AWIDTH(1);
- const double AVG_AWIDTH(3);
- const double MAX_AWIDTH(12);
-
- const double MIN_ARATIO(1);
- const double AVG_ARATIO(5.5);
- const double MAX_ARATIO(8);
-
- const double MIN_INSET(-1);
- const double AVG_INSET(0);
- const double MAX_INSET(0.95); // not 1, so head can be hatched
-
-
- // too small/large
- const double EPIX_EPSILON(0.0001); // 10^-4 (prints as decimal)
- const double EPIX_INFTY(100000.0); // 10^5
-
- // Numerical constants
- const double PI_180(0.01745329251994329577);
- const double TWO_PI(6.28318530717958647692);
-
- // smallest distance from camera to clipping plane
- const double MIN_CLIP(0.01);
-
- // No more than this many minor ticks per segment in log axis
- const unsigned int MAX_LOG_BASE(100);
-
- // For output
- const unsigned int DEF_PRECISION(6);
- const unsigned int MAX_PRECISION(20);
-
- // In calculus plotting, the interval between adjacent points is too large
- // for accuracy. Divide each such interval into this many subintervals
- const unsigned int EPIX_ITERATIONS(200);
-
- // Output-formatting constants:
- const unsigned int EPIX_NUM_PTS(120); // # of points in ellipses, splines
- const unsigned int EPIX_FILE_WIDTH(70); // Width of output file
-
-} // end of namespace
-
-#endif /* EPIX_CONSTANTS */
diff --git a/graphics/epix/crop_algorithms.h b/graphics/epix/crop_algorithms.h
deleted file mode 100644
index e81646958e..0000000000
--- a/graphics/epix/crop_algorithms.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * crop_algorithms.h -- clipping/cropping templates
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 31, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file defines list<edge> manipulating template functions and
- * associated utilities. Each chop function returns a reference to its
- * list<edge> argument.
- *
- * double height(perp, base, arg)
- * PT cut_location(perp, base, tail, head)
- * cull(edges) // remove edges whose tail and head are equal
- * loopify(edges) // replace contiguous unseen edges with one seen edge
- * chop_path(perp, base, edges) // cull to a halfspace/halfplane
- * chop_loop(perp, base, edges) // same, for loops
- */
-
-#ifndef EPIX_CROP_ALGO
-#define EPIX_CROP_ALGO
-
-#include <list>
-
-#include "constants.h"
-
-namespace ePiX {
-
- // perp assumed to be *unit*
- template <typename PT>
- double height(const PT& perp, const PT& base, const PT& arg)
- {
- // return (perp|(operator-(arg, base)));
- return (perp|(arg - base));
- }
-
- // no check for parallel
- template <typename PT>
- PT cut_location(const PT& perp, const PT& base, const PT& p1, const PT& p2)
- {
- // PT dir(operator-(p2, p1)); // -dir to base
- // return p1 + (((operator-(base, p1))|perp)/(dir|perp))*dir;
- PT dir(p2 - p1); // -dir to base
- return p1 + (((base - p1)|perp)/(dir|perp))*dir;
- }
-
- // remove edges whose tail, head are equal
- template <typename PT>
- std::list<edge_data<PT> >& cull(std::list<edge_data<PT> >& edges)
- {
- typename std::list<edge_data<PT> >::iterator ep(edges.begin());
-
- while (ep != edges.end())
- {
- if ((*ep).is_null())
- ep = edges.erase(ep);
-
- else
- ++ep;
- }
-
- return edges;
- }
-
- template <typename PT>
- std::list<edge_data<PT> >& loopify(std::list<edge_data<PT> >& edges)
- {
- if (edges.begin() == edges.end())
- return edges;
-
- typename std::list<edge_data<PT> >::iterator ep(edges.begin());
- bool in_path(false); // currently in a visible sublist?
-
- // After first pass, ep points to first visible edge
- while (ep != edges.end())
- {
- if (!(*ep).is_seen()) // invisible edge
- {
- ep=edges.erase(ep);
- in_path=false;
- continue;
- }
-
- // else visible edge
- if (in_path)
- {
- ++ep;
- continue;
- }
-
- // else
- in_path=true;
- if (ep != edges.begin()) // join our tail to previous head
- {
- typename std::list<edge_data<PT> >::iterator prev(ep);
- --prev;
- ep = edges.insert(ep, edge_data<PT>((*prev).head(),
- (*ep).tail(),
- true));
- ++ep;
- ++ep;
- }
- }
-
- // all edges examined; if we contain multiple edges, close final cut
- ep = edges.begin();
- // contains at most one edge
- if (ep == edges.end())
- ; // return below
-
- else if (++ep == edges.end())
- edges.erase(edges.begin());
-
- else
- {
- ep = edges.end();
- --ep;
- edges.push_back(edge_data<PT>((*ep).head(),
- (*edges.begin()).tail(),
- true));
- }
-
- return edges;
- } // end of loopify()
-
-
- // return result of clipping edges to half space/plane through base
- // with unit inward normal perp
- template <typename PT>
- std::list<edge_data<PT> >& chop_path(const PT& perp, const PT& base,
- std::list<edge_data<PT> >& edges)
- {
- typename std::list<edge_data<PT> >::iterator ep(edges.begin());
-
- while(ep != edges.end())
- {
- if (!(*ep).is_seen())
- {
- ++ep;
- continue;
- }
-
- // else
- const PT tail((*ep).tail());
- const PT head((*ep).head());
-
- const double ht_tail(height(perp, base, tail));
- const double ht_head(height(perp, base, head));
-
- // non-crossings:
- // unclipped
- if (-EPIX_EPSILON < ht_tail && -EPIX_EPSILON < ht_head)
- {
- ++ep;
- continue;
- }
-
- // clipped
- else if (ht_tail <= 0 && ht_head <= 0)
- {
- (*ep).seen(false);
- ++ep;
- continue;
- }
-
- // else one end below -EPS, one above 0; split edge
- const PT crossing(cut_location(perp, base, tail, head));
-
- // visibility of segments
- bool vis_tail(false), vis_head(true);
-
- if (0 < ht_tail)
- {
- vis_tail=true;
- vis_head=false;
- }
-
- ep = edges.erase(ep);
- ep=edges.insert(ep, edge_data<PT>(crossing, head, vis_head));
- ep=edges.insert(ep, edge_data<PT>(tail, crossing, vis_tail));
- ++ep;
- ++ep;
- } // all edges examined
-
- return cull(edges);
- } // end of chop_path()
-
-
- template <typename PT>
- std::list<edge_data<PT> >& chop_loop(const PT& perp, const PT& base,
- std::list<edge_data<PT> >& edges)
- {
- return loopify(chop_path(perp, base, edges));
- }
-} // end of namespace
-
-#endif /* EPIX_CROP_ALGO */
diff --git a/graphics/epix/cropping.cc b/graphics/epix/cropping.cc
deleted file mode 100644
index 3bc89a030b..0000000000
--- a/graphics/epix/cropping.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * state_data.cc -- Implementation of ePiX's current drawing state
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.4
- * Last Change: June 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file defines (wrapper functions for) static objects that hold
- * the current drawing state
- */
-
-#include <list>
-
-#include "constants.h"
-#include "screen_mask.h"
-#include "mask_ellipse.h"
-#include "mask_rectangle.h"
-
-#include "cropping.h"
-
-namespace ePiX {
-
- crop_state::crop_state(const crop_state& cs)
- : crop_state_mask(cs.crop_state_mask->clone()) { }
-
- crop_state& crop_state::operator= (const crop_state& cs)
- {
- if (this != &cs)
- {
- screen_mask* tmp(cs.crop_state_mask->clone());
-
- delete crop_state_mask;
- crop_state_mask=tmp;
- }
-
- return *this;
- }
-
- crop_state::~crop_state()
- {
- delete crop_state_mask;
- }
-
- std::list<edge2d>& crop_state::crop_path(std::list<edge2d>& L) const
- {
- return crop_state_mask->crop_path(L);
- }
-
- std::list<edge2d>& crop_state::crop_loop(std::list<edge2d>& L) const
- {
- return crop_state_mask->crop_loop(L);
- }
-
- crop_state& the_crop_box()
- {
- const pair M(EPIX_INFTY, EPIX_INFTY);
- static crop_state* current_crop_box(new crop_state(mask_rectangle(-M,M)));
- return *current_crop_box;
- }
-} // end of namespace
diff --git a/graphics/epix/cropping.h b/graphics/epix/cropping.h
deleted file mode 100644
index b8885e528b..0000000000
--- a/graphics/epix/cropping.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * cropping.h -- Implementation of ePiX's current drawing state.
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.0.23
- * Last Change: January 07, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * The class in this file implements backend for user-level global
- * functions defined in state.h. This header is not part of epix.h.
- */
-#ifndef EPIX_CROPPING
-#define EPIX_CROPPING
-
-#include <string>
-
-#include "edge_data.h"
-#include "screen_mask.h"
-
-namespace ePiX {
-
- class crop_state {
- public:
- crop_state(const screen_mask& M)
- : crop_state_mask(M.clone()) { }
-
- crop_state(const crop_state&);
- crop_state& operator= (const crop_state&);
- ~crop_state();
-
- std::list<edge2d>& crop_path(std::list<edge2d>&) const;
- std::list<edge2d>& crop_loop(std::list<edge2d>&) const;
-
- private:
- screen_mask* crop_state_mask;
-
- }; // end of class crop_state
-
-} // end of namespace
-
-#endif /* EPIX_CROPPING */
diff --git a/graphics/epix/curves.cc b/graphics/epix/curves.cc
deleted file mode 100644
index 5783dcf83c..0000000000
--- a/graphics/epix/curves.cc
+++ /dev/null
@@ -1,663 +0,0 @@
-/*
- * curves.cc -- polygons, ellipses, circular arcs, splines
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-
-#include "constants.h"
-#include "triples.h"
-#include "errors.h"
-
-#include "functions.h"
-#include "pairs.h"
-
-#include "camera.h"
-
-#include "active_screen.h"
-#include "screen.h"
-
-#include "paint_style.h"
-
-#include "state.h"
-#include "domain.h"
-
-#include "arrow_data.h"
-#include "path.h"
-#include "picture.h"
-
-#include "spline.h"
-#include "spline_data.h"
-#include "curves.h"
-
-namespace ePiX {
-
- // Simple geometric objects
-
- // Lines take a stretch factor, roughly in percent
- void line(const P& tail, const P& head, double expand)
- {
- unsigned int num_pts(cam().is_linear() ? 2 : EPIX_NUM_PTS);
-
- path data(tail, head, expand, num_pts);
- data.draw();
- }
-
- void line(const P& tail, const P& head, double expand,
- unsigned int num_pts)
- {
- if (!cam().is_linear())
- num_pts = (unsigned int) max(num_pts, EPIX_NUM_PTS);
-
- path data(tail, head, expand, num_pts);
- data.draw();
- }
-
- // Line(p1, p2) -- draw uncropped portion of long line through p1, p2
- void Line(const P& arg1, const P& arg2)
- {
- P dir(arg2-arg1);
- const double denom(norm(dir));
-
- if (EPIX_EPSILON < denom)
- {
- // TO DO: Not as robust as could be:
- // 1. Assumes endpoint(s) are fairly close to origin
- // 2. May not handle non-linear lenses well
- dir *= 1/denom;
- line(arg1-EPIX_INFTY*dir, arg1+EPIX_INFTY*dir);
- }
- } // end of Line
-
-
- // point-slope form
- void Line(const P& tail, double slope)
- {
- Line(tail, tail+P(1, slope, 0));
- }
-
-
- void triangle(const P& p1, const P& p2, const P& p3)
- {
- path data;
- if (cam().is_linear())
- data.pt(p1).pt(p2).pt(p3);
- else
- {
- // Magic number 60
- const unsigned int N(60);
- const double dt(1.0/N);
-
- const P step12(dt*(p2-p1));
- const P step23(dt*(p3-p2));
- const P step31(dt*(p1-p3));
-
- for (unsigned int i=0; i<N; ++i)
- data.pt(p1 + i*step12);
-
- for (unsigned int i=0; i<N; ++i)
- data.pt(p2 + i*step23);
-
- for (unsigned int i=0; i<N; ++i)
- data.pt(p3 + i*step31);
- }
-
- data.close().fill(the_paint_style().fill_flag());
- data.draw();
- }
-
- void quad(const P& p1, const P& p2, const P& p3, const P& p4)
- {
- path data;
- if (cam().is_linear())
- data.pt(p1).pt(p2).pt(p3).pt(p4);
- else
- {
- // Magic number 60 -> quad has 240 pts, is printed in one segment
- const unsigned int N(60);
- const double dt(1.0/N);
-
- const P step12(dt*(p2-p1));
- const P step23(dt*(p3-p2));
- const P step34(dt*(p4-p3));
- const P step41(dt*(p1-p4));
-
- for (unsigned int i=0; i<N; ++i)
- data.pt(p1 + i*step12);
-
- for (unsigned int i=0; i<N; ++i)
- data.pt(p2 + i*step23);
-
- for (unsigned int i=0; i<N; ++i)
- data.pt(p3 + i*step34);
-
- for (unsigned int i=0; i<N; ++i)
- data.pt(p4 + i*step41);
- }
-
- data.close().fill(the_paint_style().fill_flag());
- data.draw();
- }
-
- // Draw coordinate rectangle with opposite corners as given. Arguments
- // must lie is a plane parallel to a coordinate plane, but not on a
- // line parallel to a coordinate axis.
-
- void rect(const P& p1, const P& p2)
- {
- P diagonal(p2 - p1);
- P jump;
- int perp_count(0);
-
- // count coordinate axes perp to diagonal and flag normal
- if (fabs(diagonal|E_1) < EPIX_EPSILON)
- {
- ++perp_count;
- jump = E_2&(diagonal);
- }
- if (fabs(diagonal|E_2) < EPIX_EPSILON)
- {
- ++perp_count;
- jump = E_3&(diagonal);
- }
- if (fabs(diagonal|E_3) < EPIX_EPSILON)
- {
- ++perp_count;
- jump = E_1&(diagonal);
- }
-
- quad(p1, p1+jump, p2, p2-jump);
- } // end rect
-
- void dart(const P& tail, const P& head)
- {
- arrow(tail, head, 0.5);
- }
-
- void aarrow(const P& tail, const P& head, double scale)
- {
- P midpt(0.5*(tail+head));
- arrow(midpt, tail, scale);
- arrow(midpt, head, scale);
- }
-
- void ellipse(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max, unsigned int num_pts)
- {
- path data(center, axis1, axis2, t_min, t_max, num_pts);
-
-
- if (min(fabs(t_max-t_min)/full_turn(), 1) == 1)
- {
- data.close();
- if (the_paint_style().fill_flag())
- data.fill();
- }
- data.draw();
- }
-
- void ellipse(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max)
- {
- ellipse(center, axis1, axis2, t_min, t_max, EPIX_NUM_PTS);
- }
-
-
- void ellipse(const P& center, const P& axis1, const P& axis2)
- {
- ellipse(center, axis1, axis2, 0, full_turn());
- }
-
-
- void ellipse_arc(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max)
- {
- ellipse(center, axis1, axis2, t_min, t_max);
- }
-
-
- void arrow(const P& tail, const P& head, double scale)
- {
- std::vector<P> shaft(2);
- shaft.at(0) = tail;
- shaft.at(1) = head;
-
- arrow_data data(shaft, tail, head, scale);
- data.draw();
- }
-
- void ellipse(const P& center, const P& radius)
- {
- ellipse(center, radius.x1()*E_1, radius.x2()*E_2);
- }
-
- // Standard half-ellipse functions
- void ellipse_left (const P& center, const P& radius)
- {
- ellipse(center, radius.x1()*E_1, radius.x2()*E_2,
- 0.25*full_turn(), 0.75*full_turn());
- }
-
- void ellipse_right (const P& center, const P& radius)
- {
- ellipse(center, radius.x1()*E_1, radius.x2()*E_2,
- -0.25*full_turn(), 0.25*full_turn());
- }
-
- void ellipse_top (const P& center, const P& radius)
- {
- ellipse(center, radius.x1()*E_1, radius.x2()*E_2, 0, 0.5*full_turn());
- }
-
- void ellipse_bottom (const P& center, const P& radius)
- {
- ellipse(center, radius.x1()*E_1, radius.x2()*E_2, -0.5*full_turn(), 0);
- }
-
- void arc(const P& center, double r,
- double start, double finish)
- {
- ellipse(center, r*E_1, r*E_2, start, finish);
- }
-
- void arrow(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max, double scale)
- {
- // EPIX_NUM_PTS pts = one full turn; scale accordingly
- double frac(fabs(t_max-t_min)/full_turn());
- unsigned int num_pts((unsigned int) max(2, ceil(frac*EPIX_NUM_PTS)));
-
- const double dt((t_max - t_min)/num_pts);
-
- std::vector<P> shaft(num_pts+1);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- {
- double t(t_min + i*dt);
- shaft.at(i) = center + ((Cos(t)*axis1)+(Sin(t)*axis2));
- }
-
- arrow_data data(shaft, shaft.at(num_pts-1), shaft.at(num_pts), scale);
- data.draw();
- }
-
- // circular arcs parallel to (x,y)-plane
-
- void arc_arrow(const P& center, double r,
- double start, double finish, double scale)
- {
- arrow(center, r*E_1, r*E_2, start, finish, scale);
- }
-
-
- // quadratic spline
- void spline(const P& p1, const P& p2, const P& p3, unsigned int num_pts)
- {
- path data(p1, p2, p3, num_pts);
- data.draw();
- }
-
- void spline(const P& p1, const P& p2, const P& p3)
- {
- spline(p1, p2, p3, EPIX_NUM_PTS);
- }
-
- void arrow(const P& p1, const P& p2, const P& p3, double scale)
- {
- const unsigned int num_pts(EPIX_NUM_PTS);
- const double dt(1.0/num_pts);
- std::vector<P> shaft(num_pts+1);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- shaft.at(i) = spl_pt(p1, p2, p3, i*dt);
-
- arrow_data data(shaft, shaft.at(num_pts-1), shaft.at(num_pts), scale);
- data.draw();
- }
-
- // cubic spline
- void spline(const P& p1, const P& p2,
- const P& p3, const P& p4, unsigned int num_pts)
- {
- path data(p1, p2, p3, p4, num_pts);
- data.draw();
- }
-
- void spline(const P& p1, const P& p2, const P& p3, const P& p4)
- {
- spline(p1, p2, p3, p4, EPIX_NUM_PTS);
- }
-
- // natural spline through points
- void spline(const std::vector<P>& data, unsigned int num_pts)
- {
- n_spline tmp(data, data.at(0) == data.at(data.size()-1));
- path trace(tmp.data(num_pts));
-
- trace.draw();
- }
-
- void arrow(const P& p1, const P& p2, const P& p3, const P& p4, double scale)
- {
- const unsigned int num_pts(EPIX_NUM_PTS);
- const double dt(1.0/num_pts);
- std::vector<P> shaft(num_pts+1);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- shaft.at(i) = spl_pt(p1, p2, p3, p4, i*dt);
-
- arrow_data data(shaft, shaft.at(num_pts-1), shaft.at(num_pts), scale);
- data.draw();
- }
-
-
- // n1 x n2 Cartesian grid, where coarse = (n1, n2)
- void grid(const P& p1, const P& p2, mesh coarse, mesh fine)
- {
- P diagonal(p2 - p1);
- P jump1, jump2; // sides of grid
-
- int perp_count(0);
-
- int N1(coarse.n1());
- int N2(coarse.n2());
-
- // count coordinate axes diagonal is perp to and flag normal
- if (fabs(diagonal|E_1) < EPIX_EPSILON)
- {
- ++perp_count;
- jump1 = E_2&diagonal;
- jump2 = E_3&diagonal;
-
- }
- if (fabs(diagonal|E_2) < EPIX_EPSILON)
- {
- ++perp_count;
- jump1 = E_3&diagonal;
- jump2 = E_1&diagonal;
- }
- if (fabs(diagonal|E_3) < EPIX_EPSILON)
- {
- ++perp_count;
- jump1 = E_1&diagonal;
- jump2 = E_2&diagonal;
- }
-
- if (perp_count != 1)
- epix_warning("Ignoring degenerate coordinate grid");
-
- else
- {
- // grid line spacing
- P grid_step1((1.0/N1)*jump1);
- P grid_step2((1.0/N2)*jump2);
-
- // makes grid subject to filling
- rect(p1, p1 + jump1 + jump2);
-
- for (int i=1; i < N1; ++i)
- line(p1+i*grid_step1, p1+i*grid_step1+jump2, 0, fine.n2());
-
- for (int j=1; j < N2; ++j)
- line(p1+j*grid_step2, p1+j*grid_step2+jump1, 0, fine.n1());
- }
- }
-
- // Grids that fill bounding_box with default camera
- void grid(const P& p1, const P& p2, unsigned int n1, unsigned int n2)
- {
- grid(p1, p2, mesh(n1, n2), mesh(1,1));
- }
-
- void grid(unsigned int n1, unsigned int n2)
- {
- grid(active_screen()->bl(), active_screen()->tr(), n1, n2);
- }
-
-
- // polar grid with specified radius, mesh (rings and sectors), and resolution
- void polar_grid(double radius, mesh coarse, mesh fine)
- {
- for (int i=1; i <= coarse.n1(); ++i)
- ellipse(P(0,0,0),
- (i*radius/coarse.n1())*E_1, (i*radius/coarse.n1())*E_2,
- 0, full_turn(), fine.n2());
-
- for (int j=0; j < coarse.n2(); ++j)
- line(P(0,0,0), polar(radius, j*(full_turn())/coarse.n2()),
- 0, 2*fine.n1());
- }
-
- void polar_grid(double radius, unsigned int n1, unsigned int n2)
- {
- polar_grid(radius, mesh(n1,n2), mesh(n1,EPIX_NUM_PTS));
- }
-
-
- // logarithmic grids
-
- // local helpers
- void grid_lines1_log(double x_lo, double x_hi, double y_lo, double y_hi,
- unsigned int segs, unsigned int base)
- {
- if (segs == 0)
- return;
-
- const double dx((x_hi-x_lo)/segs); // "major grid" steps
- const double denom(log(base)); // "minor"/log grid scale factor
-
- for (unsigned int i=0; i < segs; ++i)
- for (unsigned int j=1; j<base; ++j)
- {
- double x_tmp(x_lo + dx*(i+log(j)/denom));
-
- line(P(x_tmp, y_lo), P(x_tmp, y_hi));
- }
-
- line(P(x_hi,y_lo), P(x_hi, y_hi)); // draw rightmost line manually
- }
-
- void grid_lines2_log(double x_lo, double x_hi, double y_lo, double y_hi,
- unsigned int segs, unsigned int base)
- {
- if (segs == 0)
- return;
-
- const double dy((y_hi-y_lo)/segs);
- const double denom(log(base));
-
- for (unsigned int i=0; i < segs; ++i)
- for (unsigned int j=1; j<base; ++j)
- {
- double y_tmp(y_lo + dy*(i+log(j)/denom));
-
- line(P(x_lo, y_tmp), P(x_hi, y_tmp));
- }
-
- line(P(x_hi,y_lo), P(x_hi, y_hi));
- }
-
- // global functions
- void log_grid(const P& p1, const P& p2,
- unsigned int segs1, unsigned int segs2,
- unsigned int base1, unsigned int base2)
- {
- grid_lines1_log(min(p1.x1(), p2.x1()), max(p1.x1(), p2.x1()),
- min(p1.x2(), p2.x2()), max(p1.x2(), p2.x2()),
- segs1, base1);
-
- grid_lines2_log(min(p1.x1(), p2.x1()), max(p1.x1(), p2.x1()),
- min(p1.x2(), p2.x2()), max(p1.x2(), p2.x2()),
- segs2, base2);
- }
-
- void log1_grid(const P& p1, const P& p2,
- unsigned int segs1, unsigned int segs2,
- unsigned int base1)
- {
- grid_lines1_log(min(p1.x1(), p2.x1()), max(p1.x1(), p2.x1()),
- min(p1.x2(), p2.x2()), max(p1.x2(), p2.x2()),
- segs1, base1);
-
- grid_lines2_log(min(p1.x1(), p2.x1()), max(p1.x1(), p2.x1()),
- min(p1.x2(), p2.x2()), max(p1.x2(), p2.x2()),
- segs2, 2);
- }
-
- void log2_grid(const P& p1, const P& p2,
- unsigned int segs1, unsigned int segs2,
- unsigned int base2)
- {
- grid_lines1_log(min(p1.x1(), p2.x1()),
- max(p1.x1(), p2.x1()),
- min(p1.x2(), p2.x2()),
- max(p1.x2(), p2.x2()),
- segs1, 2);
-
- grid_lines2_log(min(p1.x1(), p2.x1()),
- max(p1.x1(), p2.x1()),
- min(p1.x2(), p2.x2()),
- max(p1.x2(), p2.x2()),
- segs2, base2);
- }
-
-
- // grids fill current bounding box
- void log_grid(unsigned int segs1, unsigned int segs2,
- unsigned int base1, unsigned int base2)
- {
- grid_lines1_log(active_screen()->h_min(), active_screen()->h_max(),
- active_screen()->v_min(), active_screen()->v_max(),
- segs1, base1);
-
- grid_lines2_log(active_screen()->h_min(), active_screen()->h_max(),
- active_screen()->v_min(), active_screen()->v_max(),
- segs2, base2);
- }
-
- void log1_grid(unsigned int segs1, unsigned int segs2,
- unsigned int base1)
- {
- grid_lines1_log(active_screen()->h_min(), active_screen()->h_max(),
- active_screen()->v_min(), active_screen()->v_max(),
- segs1, base1);
-
- grid_lines2_log(active_screen()->h_min(), active_screen()->h_max(),
- active_screen()->v_min(), active_screen()->v_max(),
- segs2, 2);
- }
-
- void log2_grid(unsigned int segs1, unsigned int segs2,
- unsigned int base2)
- {
- grid_lines1_log(active_screen()->h_min(), active_screen()->h_max(),
- active_screen()->v_min(), active_screen()->v_max(),
- segs1, 2);
-
- grid_lines2_log(active_screen()->h_min(), active_screen()->h_max(),
- active_screen()->v_min(), active_screen()->v_max(),
- segs2, base2);
- }
-
-
- // fractal generation
- //
- // The basic recursion unit is a piecewise-linear path whose segments
- // are parallel to spokes on a wheel, labelled modulo <spokes>.
- // Recursively up to <depth>, each segment is replaced by a copy of the
- // recursion unit, scaled and rotated in order to join p to q.
- //
- // Kludge: pre_seed[0] = spokes, pre_seed[1] = length of seed;
- //
- // Sample data for _/\_ standard Koch snowflake:
- // const int seed[] = {6, 4, 0, 1, -1, 0};
-
- P jump(int spokes, int length, const std::vector<int>& seed)
- {
- P sum(P(0,0));
-
- for (int i=0; i< length; ++i)
- sum += cis(seed.at(i)*(full_turn())/spokes);
-
- return sum;
- }
-
- void fractal(const P& p, const P& q, const int depth, const int *pre_seed)
- {
- int spokes(pre_seed[0]);
- int seed_length(pre_seed[1]);
- std::vector<int> seed(seed_length);
-
- // extract seed from pre_seed
- for (int i=0; i<seed_length; ++i)
- seed.at(i) = pre_seed[i+2];
-
- // Unit-length steps in <seed> sequence add up to <scale>
- P scale(jump(spokes, seed_length, seed));
-
- // Number of points in final fractal
- int length(1+(int)pow(seed_length, depth));
- std::vector<int> dir(length); // stepping information
- std::vector<P> data(length); // vertices
-
- // dir[] starts out [0, 1, -1, 0, ..., 0] (seed_length^depth entries)
- // then take repeated "Kronecker sum" with seed = [0, 1, -1, 0]
-
- for(int i=0; i<seed_length; ++i)
- dir.at(i) = seed.at(i);
-
- for(int i=1; i<depth; ++i) // recursively fill dir array
- for(int j=0; j < pow(seed_length,i); ++j)
- for(int k=seed_length-1; 0 < k; --k)
- dir.at(k*(int)pow(seed_length,i) + j) = dir.at(j) + seed.at(k);
-
- P curr(p);
- // 10/09/06: -depth -> 1-depth
- double radius(pow(norm(scale), 1-depth));
-
- for(int i=0; i<length; ++i)
- {
- data.at(i) = curr;
- // increment between successive points as a pair
- pair temp((polar(radius, dir.at(i)*(full_turn())/spokes))*pair(q-p));
-
- // complex arithmetic
- temp /= pair(scale); // homothety to join p to q
-
- curr += P(temp.x1(), temp.x2());
- }
-
- path fractal(data, false, false);
- fractal.draw();
- }
-
-} // end of namespace
diff --git a/graphics/epix/curves.h b/graphics/epix/curves.h
deleted file mode 100644
index d15966d9b0..0000000000
--- a/graphics/epix/curves.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * curves.h -- Ellipses, arcs, splines, coordinate grids
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August 08, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_CURVES
-#define EPIX_CURVES
-
-#include <vector>
-
-#include "constants.h"
-
-namespace ePiX {
-
- class P;
- class mesh;
-
- // lines can be "stretched" by double parameter
- void line(const P& tail, const P& head, double expand=0);
- void line(const P& tail, const P& head, double expand,
- unsigned int num_pts);
-
- // "Visible" portion of the line through p1, p2
- void Line(const P& tail, const P& head);
-
- // point-slope form
- void Line(const P&, double);
-
- void triangle(const P&, const P&, const P&);
- void quad(const P&, const P&, const P&, const P&);
-
- void rect(const P&, const P&);
- void rect(const P&, const P&, bool solid);
-
- // arrows
- void arrow(const P& tail, const P& head, double scale=1);
- void dart(const P& tail, const P& head);
-
- // double-tipped
- void aarrow(const P& tail, const P& head, double scale=1);
-
- // arbitrary elliptical arc
- void arrow(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max, double scale=1);
-
- // Algebraic curves (elliptical and circular arcs, splines)
- void ellipse(const P& center, const P& axis1, const P& axis2); // full turn
-
- void ellipse(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max); // angle range
-
- void ellipse(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max, unsigned int num_pts);
-
- // for backward compatibility
- void ellipse_arc(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max);
-
- // old style "center and polyradius"
- void ellipse (const P& center, const P& radius);
-
- // Standard half-ellipse functions
- void ellipse_left (const P&, const P&);
- void ellipse_right (const P&, const P&);
- void ellipse_top (const P&, const P&);
- void ellipse_bottom (const P&, const P&);
-
- // Circular arcs parallel to (x,y)-plane
- void arc(const P& center, double r,
- double start, double finish);
-
- void arc_arrow (const P& center, double r,
- double start, double finish,
- double scale=1);
-
-
- // Quadratic and cubic splines/spline arrows
- void spline(const P& p1, const P& p2, const P& p3, unsigned int num_pts);
- void spline(const P& p1, const P& p2, const P& p3);
-
- void arrow(const P& p1, const P& p2, const P& p3, double scale=1);
-
- void spline (const P& p1, const P& p2, const P& p3, const P& p4,
- unsigned int num_pts);
- void spline (const P& p1, const P& p2, const P& p3, const P& p4);
-
- void arrow(const P&, const P&, const P&, const P&, double scale=1);
-
- // natural spline
- void spline(const std::vector<P>&, unsigned int num_pts);
-
-
- // A "mesh" is an ordered pair of positive integers, and is used to
- // specify the "fineness" of a grid. Grids, like parametric surface
- // meshes, have a "coarse mesh" -- the numbers of grid intervals in
- // each direction, and a "fine mesh" -- the numbers of points used
- // to render the grid lines. Since an ePiX camera does not always
- // map lines in object space to lines on the screen, grid lines cannot
- // generally be drawn using only two points.
- // A grid may look strange unless each component of fine is a multiple
- // of the corresponding entry of coarse, of course. :)
-
- // Cartesian grid of specified size, mesh, and resolution
- void grid(const P& arg1, const P& arg2, mesh coarse, mesh fine);
-
- // coarse = fine = (n1,n2)
- void grid(const P& arg1, const P& arg2,
- unsigned int n1=1, unsigned int n2=1);
- void grid(unsigned int n1=1, unsigned int n2=1);
-
- // polar grid of specified radius, mesh (rings and sectors), and resolution
- void polar_grid(double r, mesh coarse, mesh fine);
-
- // polar grid with n1 rings and n2 sectors
- void polar_grid(double r, unsigned int n1, unsigned int n2);
-
-
- // (semi-)logarithmic grids specified by corners and numbers of orders of
- // magnitude or grid divisions in each direction. Optional arguments
- // specify the log base (10 by default). If corners are omitted, the grid
- // fills the bounding box.
- void log_grid(const P& arg1, const P& arg2,
- unsigned int segs1, unsigned int segs2,
- unsigned int base1=10, unsigned int base2=10);
-
- void log1_grid(const P& arg1, const P& arg2,
- unsigned int segs1, unsigned int segs2,
- unsigned int base1=10);
-
- void log2_grid(const P& arg1, const P& arg2,
- unsigned int segs1, unsigned int segs2,
- unsigned int base2=10);
-
- void log_grid(unsigned int segs1, unsigned int segs2,
- unsigned int base1=10, unsigned int base2=10);
-
- void log1_grid(unsigned int segs1, unsigned int segs2,
- unsigned int base1=10);
-
- void log2_grid(unsigned int segs1, unsigned int segs2,
- unsigned int base2=10);
-
- // fractal generation
- //
- // The basic "level-1" recursion unit is a piecewise-linear path whose
- // segments are parallel to spokes on a wheel, labelled modulo <spokes>.
- // Recursively up to <depth>, each segment is replaced by a copy of the
- // recursion unit.
- //
- // Sample data for _/\_ standard Koch snowflake:
- // const int pre_seed[] = {6, 4, 0, 1, -1, 0};
- // pre_seed[0] = spokes, pre_seed[1] = seed_length;
-
- void fractal (const P& p, const P& q, const int depth, const int *pre_seed);
-
-} // end of namespace
-
-#endif /* EPIX_CURVES */
diff --git a/graphics/epix/data_bins.cc b/graphics/epix/data_bins.cc
deleted file mode 100644
index 9474c1de25..0000000000
--- a/graphics/epix/data_bins.cc
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * data_bins.cc -- ePiX::data_bins class for histogram data
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-#include <string>
-#include <sstream>
-#include <list>
-#include <vector>
-
-#include "errors.h"
-
-#include "constants.h"
-#include "functions.h"
-#include "triples.h"
-
-#include "path.h"
-#include "spline.h"
-
-#include "curves.h"
-
-#include "data_bins.h"
-
-namespace ePiX {
-
- // print summary statistics
- static void __epix_out_of_range(const std::string& fcn,
- unsigned int lo, unsigned int hi,
- unsigned int hits)
- {
- if (0 == lo + hi && 0 == hits)
- return;
-
- // else
- if (0 < lo + hi)
- {
- std::stringstream buf;
- buf << fcn << " has " << lo + hi << " point(s) out of range: ";
-
- bool need_comma(false);
-
- if (0 < lo)
- {
- buf << lo << " below";
- need_comma = true;
- }
-
- if (0 < hi)
- {
- if (need_comma)
- buf << ", ";
-
- buf << hi << " above";
- }
- epix_warning(buf.str());
- }
-
- if (0 < hits)
- {
- std::stringstream buf;
- buf << fcn << " has " << hits/2 << " point(s) on cuts";
- epix_warning(buf.str());
- }
- }
-
-
- //// histogram data bin ////
- class d_bin {
- public:
- d_bin(double low, double high)
- : m_lo(low), m_hi(high), m_dbl_count(0) { }
-
- double add_datum(double x)
- {
- if (x < m_lo || m_hi < x)
- return 0.0;
-
- else if (m_lo < x && x < m_hi)
- {
- m_dbl_count += 2;
- return 1.0;
- }
-
- else // x == m_lo || x == m_hi
- {
- ++m_dbl_count;
- return 0.5;
- }
- }
-
- // draw rectangle; height = scale*population
- void draw_ht(double scale) const
- {
- rect(P(m_lo,0), P(m_hi, 0.5*scale*m_dbl_count));
- }
-
- // area = scale*population
- void draw_area(double scale) const
- {
- if (EPIX_EPSILON < m_hi - m_lo)
- rect(P(m_lo,0), P(m_hi, 0.5*scale*m_dbl_count/(m_hi - m_lo)));
- }
-
- double lo() const
- {
- return m_lo;
- }
-
- double hi() const
- {
- return m_hi;
- }
-
- double ht(double scale) const
- {
- return 0.5*scale*m_dbl_count;
- }
-
- P loc(double scale) const
- {
- return P(0.5*(m_lo + m_hi), 0.5*scale*m_dbl_count);
- }
-
- d_bin* clone() const
- {
- return new d_bin(*this);
- }
-
- private:
- double m_lo, m_hi; // end values
-
- // twice the number of elements; endpoint hits count as 1
- unsigned int m_dbl_count;
- }; // end of class d_bin
-
-
- //// data_bins functions ////
- data_bins::data_bins(double lo, double hi, unsigned int n)
- : m_lo_val(min(lo, hi)), m_hi_val(max(lo, hi)),
- m_lo_ct(0), m_hi_ct(0), m_pop(0), m_cut_hits(0),
- m_cuts_locked(false)
- {
- // divide [lo, hi] into n pieces (n>0), or into unit pieces (n=0)
- unsigned int ct(n>0 ? n : (unsigned int)(m_hi_val - m_lo_val));
- const double dx((m_hi_val - m_lo_val)/ct);
-
- for (unsigned int i=0; i<=ct; ++i)
- m_cuts.push_back(m_lo_val + i*dx);
- }
-
- data_bins::data_bins(const data_bins& db)
- : m_lo_val(db.m_lo_val), m_hi_val(db.m_hi_val),
- m_lo_ct(db.m_lo_ct), m_hi_ct(db.m_hi_ct),
- m_pop(db.m_pop), m_cut_hits(db.m_cut_hits),
- m_cuts_locked(db.m_cuts_locked), m_cuts(db.m_cuts)
- {
- for (std::list<d_bin*>::const_iterator p=db.m_bins.begin();
- p != db.m_bins.end(); ++p)
- m_bins.push_back((*p)->clone());
- }
-
- data_bins& data_bins::operator= (const data_bins& db)
- {
- if (this != &db)
- {
- std::list<d_bin*> tmp;
- for (std::list<d_bin*>::const_iterator p=db.m_bins.begin();
- p!=db.m_bins.end(); ++p)
- tmp.push_back((*p)->clone());
-
- // assign data
- m_lo_val = db.m_lo_val;
- m_hi_val = db.m_hi_val;
-
- m_lo_ct = db.m_lo_ct;
- m_hi_ct = db.m_hi_ct;
- m_pop = db.m_pop;
- m_cut_hits = db.m_cut_hits;
- m_cuts_locked = db.m_cuts_locked;
-
- // deallocate memory
- for (std::list<d_bin*>::iterator p=m_bins.begin();
- p!=m_bins.end(); ++p)
- delete *p;
-
- m_cuts = db.m_cuts;
- swap(m_bins, tmp);
- }
-
- return *this;
- }
-
- data_bins::~data_bins()
- {
- for (std::list<d_bin*>::iterator p=m_bins.begin(); p!=m_bins.end(); ++p)
- delete *p;
- }
-
-
- data_bins& data_bins::cut(double x)
- {
- if (m_cuts_locked)
- epix_warning("cut() called on locked data_bins, no action");
-
- else if (x < m_lo_val || m_hi_val < x)
- epix_warning("cut() out of range, no action");
-
- else
- m_cuts.push_back(x);
-
- return *this;
- }
-
- data_bins& data_bins::read(const std::vector<double>& data)
- {
- if (0 < data.size())
- {
- if (!m_cuts_locked)
- initialize();
-
- for (std::vector<double>::const_iterator p=data.begin();
- p != data.end(); ++p)
- insert(*p);
- }
- return *this;
- }
-
- unsigned int data_bins::pop() const
- {
- return m_pop;
- }
-
- // rectangles
- void data_bins::histogram(double scale) const
- {
- if (m_pop == 0)
- return;
-
- // else
- __epix_out_of_range("histogram", m_lo_ct, m_hi_ct, m_cut_hits);
-
- // const double denom((m_hi_val - m_lo_val)/m_pop);
- const double adj(scale/m_pop);
-
- for (std::list<d_bin*>::const_iterator p=m_bins.begin();
- p != m_bins.end(); ++p)
- (*p)->draw_area(adj);
- }
-
- void data_bins::bar_chart(double scale) const
- {
- if (m_pop == 0)
- return;
-
- // else
- __epix_out_of_range("bar_chart", m_lo_ct, m_hi_ct, m_cut_hits);
-
- const double adj(scale/m_pop); // scale=1 -> ht=frac of pop in bin
-
- for (std::list<d_bin*>::const_iterator p=m_bins.begin();
- p != m_bins.end(); ++p)
- (*p)->draw_ht(adj);
- }
-
- // piecewise-cubic interpolation of bar_chart
- void data_bins::plot(double scale) const
- {
- if (m_pop == 0)
- return;
-
- // else
- __epix_out_of_range("data_bins::plot", m_lo_ct, m_hi_ct, m_cut_hits);
-
- // get rectangle corners
- std::vector<P> vertices;
-
- std::list<d_bin*>::const_iterator bn(m_bins.begin());
- vertices.push_back(P((*bn)->lo(),0));
-
- for (bn = m_bins.begin(); bn != m_bins.end(); ++bn)
- {
- vertices.push_back(P((*bn)->lo(), (*bn)->ht(scale/m_pop)));
- vertices.push_back(P((*bn)->hi(), (*bn)->ht(scale/m_pop)));
- }
-
- --bn; // last bin
- vertices.push_back(P((*bn)->hi(),0));
-
- const unsigned int N(vertices.size());
-
- // draw piecewise cubic interpolation
- line(vertices.at(0), 0.5*(vertices.at(0) + vertices.at(1)));
-
- // Magic number 20 to reduce file size
- for (unsigned int i=1; i< N-1; ++i)
- spline(0.5*(vertices.at(i-1) + vertices.at(i)),
- vertices.at(i),
- vertices.at(i),
- 0.5*(vertices.at(i) + vertices.at(i+1)), 20);
-
- line(0.5*(vertices.at(N-2) + vertices.at(N-1)), vertices.at(N-1));
- } // end of plot(scale)
-
-
- // private bookkeeping functions
- void data_bins::initialize()
- {
- if (!m_cuts_locked) // defensive redundancy
- {
- // sort list of cuts, remove duplicates, and lock
- m_cuts.sort();
- m_cuts.unique();
-
- m_cuts_locked=true;
-
- // allocate d_bins
- for (std::list<double>::const_iterator curr = m_cuts.begin();
- curr != m_cuts.end(); ++curr)
- {
- std::list<double>::const_iterator next(curr);
- ++next;
-
- if (next != m_cuts.end() && *curr != *next)
- m_bins.push_back(new d_bin(*curr, *next));
-
- else if (*curr != m_hi_val)
- m_bins.push_back(new d_bin(*curr, m_hi_val));
- }
- }
- }
-
- // Ideally no data lies on a cut, but we'll cope as well as possible
- // otherwise. Data on an end cut is "out of range". Data on an interior
- // cut contributes 1/2 to the population of each adjacent bin.
- void data_bins::insert(double x)
- {
- ++m_pop;
-
- std::list<d_bin*>::iterator p(m_bins.begin());
-
- // check end bins first
- if (x <= m_lo_val)
- {
- ++m_lo_ct;
- if (fabs(x - m_lo_val) < EPIX_EPSILON)
- {
- (*p)->add_datum(x);
- m_cut_hits += 2;
- }
- return;
- }
-
- if (m_hi_val <= x)
- {
- ++m_hi_ct;
- if (fabs(x - m_hi_val) < EPIX_EPSILON)
- {
- p = m_bins.end();
- --p;
- (*p)->add_datum(x);
- m_cut_hits += 2;
- }
- return;
- }
-
- // else
- double success(0.0);
- p = m_bins.begin();
-
- // try "normal" bins serially
- while (success < 0.75 && p!=m_bins.end()) // success is a half-integer
- {
- double ct((*p++)->add_datum(x)); // 1 for yes, 0.5 for endpt, 0 for no
- success += ct;
- if (fabs(ct - 0.5) < EPIX_EPSILON)
- ++m_cut_hits;
- }
-
- if (success < 0.75) // still not added!
- epix_warning("data_bin::insert() internal error");
- }
-} // end of namespace
diff --git a/graphics/epix/data_bins.h b/graphics/epix/data_bins.h
deleted file mode 100644
index e0d9a200e6..0000000000
--- a/graphics/epix/data_bins.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * data_bins.h -- ePiX::data_bins class for histogram data
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.19
- * Last Change: September 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides the "data_bins" class.
- *
- * An object of type data_bins models a closed interval [lo, hi]
- * divided into subintervals (not necessarily of equal length). Each
- * subinterval is a "d_bin", whose endpoints are "cuts". A data_bins
- * can read and sort numerical data, count how many numbers lie in
- * each bin, and print the result as a bar chart (rectangle height
- * proportional to population), histogram (area proportional to
- * population), or as a spline interpolation.
- *
- * Ideally no data lies outside (lo, hi) or on a cut. Data on an end
- * cut is "out of range", data on an interior cut contributes 1/2 to
- * the population of each adjacent bin. A summary statistic warning is
- * printed if any points are out of range or lie on a cut.
- */
-
-#ifndef EPIX_DATA_BINS
-#define EPIX_DATA_BINS
-
-#include <vector>
-#include <list>
-
-namespace ePiX {
-
- class d_bin;
-
- class data_bins {
- public:
- data_bins(double lo, double hi, unsigned int n=1);
-
- data_bins(const data_bins&);
- data_bins& operator= (const data_bins&);
- ~data_bins();
-
- data_bins& cut(double); // add a cut
- data_bins& read(const std::vector<double>&);
-
- unsigned int pop() const; // current population
-
- // draw rectangles
- void histogram(double scale=1) const; // area prop to pop
- void bar_chart(double scale=1) const; // height prop to pop
- void plot(double scale=1) const; // smooth interpolation
-
- private:
- double m_lo_val;
- double m_hi_val;
-
- unsigned int m_lo_ct; // population smaller than m_lo_val
- unsigned int m_hi_ct; // population larger than m_hi_val
- unsigned int m_pop; // current total population
-
- unsigned int m_cut_hits; // number of data on a cut
- bool m_cuts_locked; // true once we read data
-
- std::list<double> m_cuts;
- std::list<d_bin*> m_bins;
-
- // bookkeeping
- void initialize(); // convert cuts to bins and lock
- void insert(double); // add data point
- }; // end of class data_bins
-
-} // end of namespace
-
-#endif /* EPIX_DATA_BINS */
diff --git a/graphics/epix/data_file.cc b/graphics/epix/data_file.cc
deleted file mode 100644
index fb2e6a5a5b..0000000000
--- a/graphics/epix/data_file.cc
+++ /dev/null
@@ -1,687 +0,0 @@
-/*
- * data_file.cc -- ePiX::data_file class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-#include <fstream>
-#include <sstream>
-#include <list>
-#include <vector>
-#include <stdexcept>
-
-#include "errors.h"
-
-#include "functions.h"
-#include "triples.h"
-#include "path.h"
-#include "spline.h"
-
-#include "label_data.h"
-#include "curves.h"
-
-#include "interval.h"
-#include "data_bins.h"
-#include "data_mask.h"
-#include "data_file.h"
-
-namespace ePiX {
-
- const std::string default_delim("\t");
- const std::string default_commt("%");
-
- // magic number -- precision for data_file.write()
- const unsigned int PRECISION(6);
-
- double truncate(double arg, const unsigned int n)
- {
- if (fabs(arg) < pow(0.1, n))
- return 0;
-
- return arg;
- }
-
- // warning message for data_file::tokenize
- void non_parsable(const std::string& msg)
- {
- std::stringstream obuf;
- obuf << "data_file::tokenise():" << std::endl
- << " Non-parsable input \"" << msg << "\", setting value to 0";
- epix_warning(obuf.str());
- }
-
- //// private data_file functions ////
- // returns # of columns, i.e. # of entries in first parsable row
- unsigned int data_file::entries(const char* filename)
- {
- std::ifstream input(filename);
- if (!input)
- {
- epix_warning("Cannot open file \""+std::string(filename)+"\"");
- return(0);
- }
-
- // else
- std::string linebuf;
- std::vector<double> tmp;
-
- while (getline(input, linebuf) && tmp.size() == 0)
- {
- // strip comments
- linebuf = linebuf.substr(0, linebuf.find_first_of(m_commt));
- if (linebuf.length() > 0)
- tmp = tokenise(linebuf);
- }
-
- input.close();
-
- if (tmp.size() == 0)
- {
- std::stringstream obuf; // solely for code readability :)
- obuf << "File \"" << std::string(filename)
- << "\" contains no parsable data";
-
- epix_warning(obuf.str());
- }
-
- return tmp.size();
- } // end of entries(const char*)
-
-
- // private function:
- // Tokenise line using our delimiter, return a vector of doubles
- std::vector<double> data_file::tokenise(std::string line)
- {
- size_t pos(line.find(m_delim, 0)); // first delimiter
- std::string tmpStr; // current chunk of input
- double tmpDbl; // current parsed chunk
- std::vector<double> tmpVec; // output found so far
-
- // read current line into a vector of doubles
- while(pos != std::string::npos)
- {
- tmpStr = line.substr(0, pos);
- line.erase(0, pos+1);
- std::istringstream convStr(tmpStr);
-
- if (!(convStr >> tmpDbl))
- {
- tmpDbl = 0;
- non_parsable(convStr.str());
- }
-
- tmpVec.push_back(tmpDbl);
- pos = line.find(m_delim, 0);
- }
-
- if (line.size()) // There's input remaining
- {
- std::istringstream convStr(line);
-
- if (!(convStr >> tmpDbl))
- {
- tmpDbl = 0;
- non_parsable(convStr.str());
- }
-
- else
- tmpVec.push_back(tmpDbl);
- }
-
- return tmpVec;
- }
-
- //// public data_file functions ////
- data_file::data_file(unsigned int n)
- : m_precision(PRECISION), m_data(n),
- m_delim(default_delim),
- m_commt(default_commt) { }
-
- // provide two version to avoid exposing default delim, commt
- data_file::data_file(const char* filename,
- const std::string& delim, const std::string& commt )
- : m_precision(PRECISION), m_delim(delim), m_commt(commt)
- {
- // get number of columns by parsing first line of file
- const unsigned int N(entries(filename));
- m_data.resize(N);
-
- if (N > 0) // file contains data
- read(filename);
-
- } // end of data_file()
-
- // filename-only version
- data_file::data_file(const char* filename)
- : m_precision(PRECISION), m_delim(default_delim), m_commt(default_commt)
- {
- // get number of columns by parsing first line of file
- const unsigned int N(entries(filename));
- m_data.resize(N);
-
- if (N > 0) // file contains data
- read(filename);
-
- } // end of data_file(const char*)
-
-
- // file made from components
- data_file::data_file(double f(double),
- double t_min, double t_max, unsigned int num_pts)
- : m_precision(PRECISION), m_data(1),
- m_delim(default_delim), m_commt(default_commt)
- {
- const double dt((t_max - t_min)/num_pts);
- for (unsigned int i=0; i<= num_pts; ++i)
- m_data.at(0).push_back(f(t_min+i*dt));
- }
-
- data_file::data_file(double f1(double), double f2(double),
- double t_min, double t_max, unsigned int num_pts)
- : m_precision(PRECISION), m_data(2),
- m_delim(default_delim), m_commt(default_commt)
- {
- const double dt((t_max - t_min)/num_pts);
- for (unsigned int i=0; i<= num_pts; ++i)
- {
- m_data.at(0).push_back(f1(t_min+i*dt));
- m_data.at(1).push_back(f2(t_min+i*dt));
- }
- }
-
-
- data_file::data_file(double f1(double), double f2(double), double f3(double),
- double t_min, double t_max, unsigned int num_pts)
- : m_precision(PRECISION), m_data(3),
- m_delim(default_delim), m_commt(default_commt)
- {
- const double dt((t_max - t_min)/num_pts);
- for (unsigned int i=0; i<= num_pts; ++i)
- {
- m_data.at(0).push_back(f1(t_min+i*dt));
- m_data.at(1).push_back(f2(t_min+i*dt));
- m_data.at(2).push_back(f3(t_min+i*dt));
- }
- }
-
-
- data_file& data_file::read(const char* filename)
- {
- unsigned int columns(entries(filename));
- if (columns != m_data.size())
- {
- std::stringstream msg;
- msg << "Column count mismatch in file " << filename;
- epix_warning(msg.str());
- }
-
- else if (0 < columns)
- {
- std::ifstream input(filename);
- std::string linebuf;
- std::vector<double> line;
-
- bool warned(false);
-
- while (getline(input, linebuf))
- {
- // strip comments
- linebuf = linebuf.substr(0, linebuf.find_first_of(m_commt));
- if (linebuf.length() > 0)
- {
- line = tokenise(linebuf);
-
- if (line.size() > m_data.size())
- {
- if (!warned)
- {
- epix_warning("File has more columns than allocated");
- warned = true;
- }
- }
- else if (line.size() < m_data.size())
- {
- if (!warned)
- {
- epix_warning("File has fewer columns than allocated");
- warned = true;
- }
- }
- else
- {
- for (unsigned int i = 0; i < m_data.size(); i++)
- m_data.at(i).push_back(line.at(i));
- }
- } // linebuf non-empty
- } // end of file
- input.close();
- }
- return *this;
- } // end of data_file::read(const char*, const std::string&)
-
-
- // transform column(s)
- data_file& data_file::transform(double f(double), unsigned int col)
- {
- unsigned int rows(m_data.at(0).size());
-
- if (0 < col) // apply to selected column
- for (unsigned int i=0; i<rows; ++i)
- m_data.at(col-1).at(i) = f(m_data.at(col-1).at(i));
-
- else // apply to all columns, default
- {
- for (unsigned int j=0; j<m_data.size(); ++j)
- for (unsigned int i=0; i<rows; ++i)
- m_data.at(j).at(i) = f(m_data.at(j).at(i));
- }
-
- return *this;
- }
-
- // apply f to selected columns, components of image go back to columns
- data_file& data_file::transform(P f(double, double),
- unsigned int col1, unsigned int col2)
- {
- unsigned int rows(m_data.at(0).size());
-
- for (unsigned int i=0; i<rows; ++i)
- {
- P tmp(f(m_data.at(col1 - 1).at(i), m_data.at(col2 - 1).at(i)));
-
- m_data.at(col1 - 1).at(i) = tmp.x1();
- m_data.at(col2 - 1).at(i) = tmp.x2();
- }
-
- return *this;
- }
-
- data_file& data_file::transform(P f(double, double, double),
- unsigned int col1, unsigned int col2)
- {
- unsigned int rows(m_data.at(0).size());
-
- for (unsigned int i=0; i<rows; ++i)
- {
- P tmp(f(m_data.at(col1 - 1).at(i), m_data.at(col2 - 1).at(i), 0));
-
- m_data.at(col1 - 1).at(i) = tmp.x1();
- m_data.at(col2 - 1).at(i) = tmp.x2();
- }
-
- return *this;
- }
-
- data_file& data_file::transform(P f(double, double, double),
- unsigned int col1,
- unsigned int col2,
- unsigned int col3)
- {
- unsigned int rows(m_data.at(0).size());
-
- for (unsigned int i=0; i<rows; ++i)
- {
- P tmp(f(m_data.at(col1 - 1).at(i),
- m_data.at(col2 - 1).at(i),
- m_data.at(col3 - 1).at(i)));
-
- m_data.at(col1 - 1).at(i) = tmp.x1();
- m_data.at(col2 - 1).at(i) = tmp.x2();
- m_data.at(col3 - 1).at(i) = tmp.x3();
- }
-
- return *this;
- }
-
- // Erase rows where the data is outside of the specified range
- data_file& data_file::prune(const data_mask& dm, const unsigned int col)
- {
- std::vector<std::vector<double>::iterator> iter(m_data.size());
- for (unsigned int i = 0; i < m_data.size(); i++)
- iter.at(i) = m_data.at(i).begin();
-
- while (iter.at(0) != m_data.at(0).end())
- {
- if ( dm.masks(*iter.at(col-1)) )
- for (unsigned int j = 0; j < m_data.size(); j++)
- m_data.at(j).erase(iter.at(j));
-
- else
- for (unsigned int j = 0; j < m_data.size(); j++)
- iter.at(j)++;
- }
-
- return *this;
- }
-
- data_file& data_file::prune(const interval& range, const unsigned int col)
- {
- data_mask dm(range);
- return prune(dm, col);
- }
-
- data_file& data_file::prune(double rmin, double rmax,
- const unsigned int col)
- {
- data_mask dm(rmin, rmax);
- return prune(dm, col);
- }
-
-
- // (col1|col2)
- double data_file::dot(unsigned int col1, unsigned int col2) const
- {
- double sum(0);
-
- if ((col1 > m_data.size()) || (col2 > m_data.size()) )
- epix_warning("Invalid column index in dot product");
-
- else
- for (unsigned int i=0; i < m_data.at(0).size(); ++i)
- sum += m_data.at(col1-1).at(i)*m_data.at(col2-1).at(i);
-
- return sum;
- } // end of dot
-
- // avg (mean) of col1
- double data_file::avg(unsigned int col1) const
- {
- double sum(0);
-
- if (col1 > m_data.size())
- epix_warning("Invalid column index in mean");
-
- else
- for (unsigned int i=0; i < m_data.at(0).size(); ++i)
- sum += m_data.at(col1-1).at(i);
-
- return sum/m_data.at(0).size();
- } // end of avg
-
- // variance (x|x) - n*\bar{x}^2
- double data_file::var(unsigned int col1) const
- {
- double mean(avg(col1));
-
- return dot(col1, col1) - mean*mean*m_data.at(0).size();
- } // end of var
-
- // covariance (x|y) - n*\bar{x}*\bar{y}
- double data_file::covar(unsigned int col1, unsigned int col2) const
- {
- return dot(col1, col2) - (m_data.at(0).size())*avg(col1)*avg(col2);
- } // end of covar
-
- void data_file::regression(unsigned int col1, unsigned int col2) const
- {
- Line(P(avg(col1), avg(col2)), covar(col1, col2)/var(col1));
- }
-
-
- //// Output functions ////
- // return selected column
- std::vector<double> data_file::column(unsigned int n) const
- {
- if (1 <= n && n <= m_data.size())
- return m_data.at(n-1);
- else
- {
- if (0 < m_data.size())
- {
- epix_warning("Out of range argument to data_file::column()");
- return m_data.at(0);
- }
- else
- {
- epix_warning("data_file::column() requested for empty file");
- std::vector<double> err_val(1, 0);
- return err_val;
- }
- }
- }
-
- // apply f to selected column
- std::vector<double> data_file::column(double f(double), unsigned int n) const
- {
- // must copy data
- std::vector<double> value(m_data.at(0).size());
- unsigned int col(n);
-
- if (col < 1 || m_data.size() < col)
- {
- if (0 < m_data.size())
- {
- epix_warning("Out of range argument to data_file::column()");
- col=1;
- }
- else
- {
- epix_warning("data_file::column() requested for empty file");
- std::vector<double> err_val(1, 0);
- return err_val;
- }
- }
-
- for (unsigned int i=0; i<m_data.at(0).size(); ++i)
- value.at(i) = f(m_data.at(col-1).at(i));
-
- return value;
- }
-
-
- // set precision for write()
- void data_file::precision(const unsigned int n) const
- {
- m_precision=n;
- }
-
- // write file or selected columns
- void data_file::write(const char* filename) const
- {
- std::ofstream output(filename);
- if (!output)
- {
- epix_warning("data_file::write() cannot open file");
- return;
- }
-
- // else
- output.precision(m_precision);
- output.setf(std::ios_base::showpoint); // pad with 0s
- output.setf(std::ios_base::right); // right-justify
-
- unsigned int cols(m_data.size());
-
- for (unsigned int j=0; j < m_data.at(0).size(); ++j)
- {
- output << m_data.at(0).at(j);
- for (unsigned int i=1; i < cols; ++i)
- output << m_delim << m_data.at(i).at(j);
-
- output << std::endl;
- }
- output.close();
- }
-
-
- void data_file::write(const char* fname, std::string pt_out(double, double),
- unsigned int col1, unsigned int col2) const
- {
- std::ofstream output(fname);
- if (!output)
- {
- epix_warning("data_file::write() cannot open file");
- return;
- }
-
- // else
- output.precision(m_precision);
-
- for (unsigned int i=0; i < m_data.at(0).size(); ++i)
- try
- {
- output << pt_out(m_data.at(col1-1).at(i), m_data.at(col2-1).at(i));
- }
-
- catch (std::out_of_range)
- {
- epix_warning("data_file::write(): Invalid column index");
- return;
- }
-
- output.close();
- } // end of data_file::write(const char*, string function)
-
- // experimental: LaTeX tabular environment
- void data_file::tabular(const char* filename,
- const std::string& alignment,
- const std::string& legend) const
- {
- std::ofstream output(filename);
- if (!output)
- {
- epix_warning("data_file::table() cannot open file");
- return;
- }
-
- // else
- using std::endl;
-
- output.precision(m_precision);
- unsigned int cols(m_data.size());
-
- output << "\\begin{tabular}{" << alignment << "}" << endl
- << "\\hline" << endl;
- if (legend != "")
- output << legend << endl << "\\hline" << endl;
-
- for (unsigned int j=0; j < m_data.at(0).size(); ++j)
- {
- output << "$" << truncate(m_data.at(0).at(j), m_precision) << "$";
- for (unsigned int i=1; i < cols; ++i)
- output << " & $" << truncate(m_data.at(i).at(j), m_precision) << "$";
-
- output << " \\\\" << endl;
- }
-
- output << "\\hline" << endl
- << "\\end{tabular}" << endl;
-
- output.close();
- } // end of data_file::tabular()
-
-
- void data_file::plot(epix_mark_type TYPE,
- unsigned int col1, unsigned int col2, unsigned int col3,
- P f(double, double, double)) const
- {
- unsigned int num_entries(m_data.at(0).size());
-
- std::vector<P> data(num_entries);
-
- // create path
- for (unsigned int i=0; i < num_entries; ++i)
- try
- {
- if (col3 == 0)
- data.at(i) = f(m_data.at(col1-1).at(i),
- m_data.at(col2-1).at(i),
- 0);
-
- else
- data.at(i) = f(m_data.at(col1-1).at(i),
- m_data.at(col2-1).at(i),
- m_data.at(col3-1).at(i));
- }
-
- catch (std::out_of_range)
- {
- epix_warning("data_file::plot(): Invalid column index");
- return;
- }
-
- // and write it
- if (PATH == TYPE) // N.B. Unaffected by "select"
- {
- path temp(data, false, false); // not closed or filled
- temp.draw();
- }
-
- else
- for (unsigned int i=0; i < num_entries; ++i)
- {
- // if (m_select(data.at(i)))
- label_data temp(data.at(i), TYPE);
- temp.draw();
- }
- }
-
- void data_file::plot(epix_mark_type TYPE, P f(double, double, double),
- unsigned int col1, unsigned int col2,
- unsigned int col3) const
- {
- plot(TYPE, col1, col2, col3, f);
- }
-
- //// global functions ////
- void plot(const char* filename, epix_mark_type TYPE,
- unsigned int col1, unsigned int col2, unsigned int col3,
- P f(double, double, double))
- {
- data_file temp(filename);
- temp.plot(TYPE, col1, col2, col3, f);
- }
-
- void plot(const char* filename, epix_mark_type TYPE,
- P f(double, double, double),
- unsigned int col1, unsigned int col2, unsigned int col3)
- {
- data_file temp(filename);
- temp.plot(TYPE, col1, col2, col3, f);
- }
-
- // pass 3rd arg by value
- void histogram(const char* filename, unsigned int col, data_bins db,
- double scale)
- {
- data_file temp(filename);
- db.read(temp.column(col));
- db.histogram(scale);
- }
-
- void bar_chart(const char* filename, unsigned int col, data_bins db,
- double scale)
- {
- data_file temp(filename);
- db.read(temp.column(col));
- db.bar_chart(scale);
- }
-} // end of namespace
diff --git a/graphics/epix/data_file.h b/graphics/epix/data_file.h
deleted file mode 100644
index e5a3af956e..0000000000
--- a/graphics/epix/data_file.h
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * data_file.h -- ePiX::data_file class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.6
- * Last Change: July 04, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_DATA_FILE
-#define EPIX_DATA_FILE
-
-#include <vector>
-#include <list>
-
-#include "enums.h"
-
-namespace ePiX {
-
- class data_bins;
- class data_mask;
- class interval;
-
- class data_file {
- public:
- explicit data_file(unsigned int n=2);
-
- // get size from first line of file;
- // provide two versions to avoid exposing default delim/commt strings
- data_file(const char* filename,
- const std::string& delim, const std::string& commt);
- explicit data_file(const char* filename);
-
- // file made from components
- data_file(double f(double),
- double t_min, double t_max, unsigned int num_pts);
-
- data_file(double f1(double), double f2(double),
- double t_min, double t_max, unsigned int num_pts);
-
- data_file(double f1(double), double f2(double), double f3(double),
- double t_min, double t_max, unsigned int num_pts);
-
- // input
- data_file& read(const char*);
-
- // transform column(s)
- data_file& transform(double f(double), unsigned int col=0);
-
- // apply f to selected columns; components of image go back to columns
- data_file& transform(P f(double, double),
- unsigned int col1=1, unsigned int col2=2);
-
- data_file& transform(P f(double, double, double),
- unsigned int col1, unsigned int col2);
-
- data_file& transform(P f(double, double, double),
- unsigned int col1,
- unsigned int col2,
- unsigned int col3);
-
- // remove rows where specified entry is masked or outside interval/range
- data_file& prune(const data_mask&, const unsigned int col);
- data_file& prune(const interval&, const unsigned int col);
- data_file& prune(double, double, const unsigned int col);
-
- // basic statistical operations on columns
- double dot(unsigned int col1, unsigned int col2) const; // dot product
- double avg(unsigned int col1) const; // mean
- double var(unsigned int col1) const; // |x|^2 - n*avg^2
- double covar(unsigned int col1, unsigned int col2) const;
- void regression(unsigned int col1, unsigned int col2) const;
-
-
- // output functions
- // extract column
- std::vector<double> column(unsigned int) const;
- // apply f to values
- std::vector<double> column(double f(double), unsigned int) const;
-
- // set C++ output precision for write
- void precision(unsigned int n=6) const;
-
- // Setters and getters for delimiter and comment character
- void delimiter(const char* delim) { m_delim = delim; }
- std::string delimiter() const { return m_delim; }
-
- void comment(const char* commt) { m_commt = commt; }
- std::string comment() const { return m_commt; }
-
- // write raw data to file
- void write(const char* filename) const;
-
- // write selected columns formatted by string-valued function
- void write(const char* filename, std::string pt_out(double, double),
- unsigned int col1=1, unsigned int col2=2) const;
-
- // LaTeX tabular environment
- void tabular(const char* filename,
- const std::string& alignment,
- const std::string& legend="") const;
-
-
- /*
- // (un)set cropping criterion for plotting
- void select(bool Fsel(P));
- void select(const selection&); // e.g. select(all());
- */
-
- // scatter plots; f applied to selected columns
- void plot(epix_mark_type TYPE,
- unsigned int col1=1, unsigned int col2=2, unsigned int col3=0,
- P f(double, double, double) = xyz) const;
-
- void plot(epix_mark_type TYPE, P f(double, double, double),
- unsigned int col1=1, unsigned int col2=2,
- unsigned int col3=0) const;
-
- private:
- std::vector<double> tokenise(std::string line);
- unsigned int entries(const char* filename);
-
- mutable unsigned int m_precision;
- // selection m_select;
-
- std::vector<std::vector<double> > m_data;
- std::string m_delim; // Field delimiter
- std::string m_commt; // Comment character
- }; // end of class data_file
-
-
- //// Global functions that use file_data, data_bins ////
- void plot(const char* filename, epix_mark_type TYPE,
- unsigned int col1=1, unsigned int col2=2, unsigned int col3=0,
- P f(double, double, double) = xyz);
-
- void plot(const char* filename, epix_mark_type TYPE,
- P f(double, double, double),
- unsigned int col1=1, unsigned int col2=2, unsigned int col3=0);
-
- // pass 3rd arg by value
- void histogram(const char* filename, unsigned int col, data_bins,
- double scale=1);
- void bar_chart(const char* filename, unsigned int col, data_bins,
- double scale=1);
-} // end of namespace
-
-#endif /* EPIX_DATA_FILE */
diff --git a/graphics/epix/data_mask.cc b/graphics/epix/data_mask.cc
deleted file mode 100644
index d2f0290426..0000000000
--- a/graphics/epix/data_mask.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * data_mask.cc -- ePiX::data_mask class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.8
- * Last Change: July 22, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include "functions.h"
-#include "interval.h"
-#include "data_mask.h"
-
-namespace ePiX {
-
- double identity(double x) { return x; }
-
- data_mask::data_mask(std::string arg)
- : m_range(arg), m_filter(identity), m_reverse(false) { }
-
- data_mask::data_mask(std::string arg, double f(double))
- : m_range(arg), m_filter(f), m_reverse(false) { }
-
-
- data_mask::data_mask(const interval& range)
- : m_range(range), m_filter(identity), m_reverse(false) { }
-
- data_mask::data_mask(const interval& range, double f(double))
- : m_range(range), m_filter(f), m_reverse(false) { }
-
- data_mask::data_mask(double arg1, double arg2)
- : m_range(arg1, arg2), m_filter(identity), m_reverse(false) { }
-
- data_mask::data_mask(double arg1, double arg2, double f(double))
- : m_range(arg1, arg2), m_filter(f), m_reverse(false) { }
-
- data_mask& data_mask::reverse()
- {
- m_reverse = !m_reverse;
- return *this;
- }
-
- bool data_mask::masks(double x) const
- {
- bool masked(!m_range.contains(m_filter(x)));
-
- if (m_reverse)
- masked = !masked;
-
- return masked;
- }
-} // end of namespace
diff --git a/graphics/epix/data_mask.h b/graphics/epix/data_mask.h
deleted file mode 100644
index e522af0975..0000000000
--- a/graphics/epix/data_mask.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * data_mask.h -- ePiX::data_mask, for selective row removal from data_file
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.6
- * Last Change: July 3, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_DATA_MASK
-#define EPIX_DATA_MASK
-
-#include <string>
-
-#include "interval.h"
-
-namespace ePiX {
-
- class data_mask {
- public:
- data_mask(std::string);
- data_mask(std::string, double f(double));
-
- data_mask(const interval& range);
- data_mask(const interval& range, double f(double));
-
- data_mask(double range_min, double range_max);
- data_mask(double range_min, double range_max,
- double f(double));
-
- data_mask& reverse(); // negate mask criterion
- bool masks(double) const; // true if we mask arg
-
- private:
- interval m_range;
- double (*m_filter)(double); // filter criterion
- bool m_reverse;
-
- }; // end of data_mask
-} // end of namespace
-
-#endif /* EPIX_DATA_MASK */
diff --git a/graphics/epix/debug.h b/graphics/epix/debug.h
deleted file mode 100644
index 204063447a..0000000000
--- a/graphics/epix/debug.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef EPIX_DEBUG
-#define EPIX_DEBUG
-
-#include <iostream>
-#include <cstdlib>
-#include <sstream>
-#include <string>
-
-#include "pairs.h"
-#include "triples.h"
-
-#include "errors.h"
-
-namespace ePiX
-{
- inline void debug_msg(const std::string& msg)
- {
- std::cerr << msg << std::endl;
- }
-
- inline void debug_print(const pair& arg, const std::string& msg="")
- {
- std::cerr << msg << " ("
- << arg.x1() << ", "
- << arg.x2() << ")" << std::endl;
- }
-
- inline void debug_print(const P& arg, const std::string& msg="")
- {
- std::cerr << msg << " ("
- << arg.x1() << ", "
- << arg.x2() << ", "
- << arg.x3() << ")" << std::endl;
- }
-
-}
-#endif /* EPIX_DEBUG */
diff --git a/graphics/epix/depcomp b/graphics/epix/depcomp
deleted file mode 100644
index 04701da536..0000000000
--- a/graphics/epix/depcomp
+++ /dev/null
@@ -1,530 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2005-07-09.11
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
- '')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
- depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
- DEPDIR directory where to store dependencies.
- depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
- libtool Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "depcomp $scriptversion"
- exit $?
- ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
- echo "depcomp: Variables source, object and depmode must be set" 1>&2
- exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
- sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags. We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write. Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
- # HP compiler uses -M and no extra arg.
- gccflag=-M
- depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff. Hmm.
- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- mv "$tmpdepfile" "$depfile"
- ;;
-
-gcc)
-## There are various ways to get dependency output from gcc. Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-## up in a subdir. Having to rename by hand is ugly.
-## (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-## than renaming).
- if test -z "$gccflag"; then
- gccflag=-MD,
- fi
- "$@" -Wp,"$gccflag$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
- sed -e 's/^[^:]*: / /' \
- -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header). We avoid this by adding
-## dummy dependencies for each header file. Too bad gcc doesn't do
-## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
- # dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> $depfile
- echo >> $depfile
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> $depfile
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-aix)
- # The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
- # start of each line; $object doesn't have directory information.
- # Version 6 uses the directory in both cases.
- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
- tmpdepfile="$stripped.u"
- if test "$libtool" = yes; then
- "$@" -Wc,-M
- else
- "$@" -M
- fi
- stat=$?
-
- if test -f "$tmpdepfile"; then :
- else
- stripped=`echo "$stripped" | sed 's,^.*/,,'`
- tmpdepfile="$stripped.u"
- fi
-
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
-
- if test -f "$tmpdepfile"; then
- outname="$stripped.o"
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
-
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mecanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-#nosideeffect)
- # This comment above is used by automake to tell side-effect
- # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
- # in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
- "$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-dashXmstdout)
- # This case only exists to satisfy depend.m4. It is never actually
- # run, as this mode is specially recognized in the preamble.
- exit 1
- ;;
-
-makedepend)
- "$@" || exit $?
- # Remove any Libtool call
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
- # X makedepend
- shift
- cleared=no
- for arg in "$@"; do
- case $cleared in
- no)
- set ""; shift
- cleared=yes ;;
- esac
- case "$arg" in
- -D*|-I*)
- set fnord "$@" "$arg"; shift ;;
- # Strip any option that makedepend may not understand. Remove
- # the object too, otherwise makedepend will parse it as a source file.
- -*|$object)
- ;;
- *)
- set fnord "$@" "$arg"; shift ;;
- esac
- done
- obj_suffix="`echo $object | sed 's/^.*\././'`"
- touch "$tmpdepfile"
- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile" "$tmpdepfile".bak
- ;;
-
-cpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- cat < "$tmpdepfile" >> "$depfile"
- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvisualcpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o,
- # because we must use -o when running libtool.
- "$@" || exit $?
- IFS=" "
- for arg
- do
- case "$arg" in
- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
- esac
- done
- "$@" -E |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-none)
- exec "$@"
- ;;
-
-*)
- echo "Unknown depmode $depmode" 1>&2
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/graphics/epix/deriv.h b/graphics/epix/deriv.h
deleted file mode 100644
index 56214ef462..0000000000
--- a/graphics/epix/deriv.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * deriv.h -- ePiX derivative function template
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.0.23
- * Last Change: January 06, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_DERIV
-#define EPIX_DERIV
-
-#include "constants.h"
-
-namespace ePiX {
-
- // moved from functions.h to hide global constant EPIX_EPSILON
- template<class T> T deriv(T f(double), double t, double dt=EPIX_EPSILON)
- {
- return (1.0/dt)*(f(t+0.5*dt) - f(t-0.5*dt));
- }
-} // end of namespace
-
-#endif /* EPIX_DERIV */
diff --git a/graphics/epix/doc/Makefile.am b/graphics/epix/doc/Makefile.am
deleted file mode 100644
index ec9ac95e5f..0000000000
--- a/graphics/epix/doc/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-# Makefile.am for ePiX v1.x "doc" directory
-#
-
-EPIXFLAGS = --no-defaults -I.. -L.. -lepix -v
-
-%.eepic: %.xp
- ../epix-local $(EPIXFLAGS) $<
-
-XPS := $(wildcard *.xp)
-
-EEPICS = $(XPS:.xp=.eepic)
-
-CLEANFILES = *~ *.aux *.dvi *.log *.out *.idx *.ilg *.ind *.toc \
- epix.info.bz2 manual_src.tar manual.pdf manual.ps \
- manual_src.tar.gz manual.pdf.gz manual.ps.gz manual-stamp
-
-MAINTAINERCLEANFILES = *.eepic *.aux *.dvi *.log *.out *.toc *.idx *.ind *.ilg
-
-## Targets ##
-doc_DATA = manual.pdf.gz manual.ps.gz manual_src.tar.gz epix.info.bz2
-
-
-# tar up tex, xp, and eepic files; build ps, pdf
-manual-stamp: manual.tex $(XPS) $(EEPICS)
- latex -interaction=batchmode manual &>/dev/null
- latex -interaction=batchmode manual &>/dev/null
- makeindex manual.idx &>/dev/null
- ../laps-local --pdf manual.tex
- touch manual-stamp
-
-manual_src.tar.gz: manual-stamp
- tar -cf manual_src.tar manual.aux manual.ind manual.tex manual.toc \
- $(XPS) $(EEPICS)
- gzip -9 manual_src.tar
-
-#PS
-manual.ps.gz: manual-stamp
- gzip -9 -c manual.ps > manual.ps.gz
-
-#PDF
-manual.pdf.gz: manual-stamp
- gzip -9 -c manual.pdf > manual.pdf.gz
-
-epix.info.bz2: manual-stamp epix.info
- bzip2 -fk epix.info
diff --git a/graphics/epix/doc/Makefile.in b/graphics/epix/doc/Makefile.in
deleted file mode 100644
index 293c547251..0000000000
--- a/graphics/epix/doc/Makefile.in
+++ /dev/null
@@ -1,364 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# Makefile.am for ePiX v1.x "doc" directory
-#
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(docdir)"
-docDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(doc_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BASH_PATH = @BASH_PATH@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENABLE_EPIX_EL_FALSE = @ENABLE_EPIX_EL_FALSE@
-ENABLE_EPIX_EL_TRUE = @ENABLE_EPIX_EL_TRUE@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-RUNTIME_COMPILER = @RUNTIME_COMPILER@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-EPIXFLAGS = --no-defaults -I.. -L.. -lepix -v
-XPS := $(wildcard *.xp)
-EEPICS = $(XPS:.xp=.eepic)
-CLEANFILES = *~ *.aux *.dvi *.log *.out *.idx *.ilg *.ind *.toc \
- epix.info.bz2 manual_src.tar manual.pdf manual.ps \
- manual_src.tar.gz manual.pdf.gz manual.ps.gz manual-stamp
-
-MAINTAINERCLEANFILES = *.eepic *.aux *.dvi *.log *.out *.toc *.idx *.ind *.ilg
-doc_DATA = manual.pdf.gz manual.ps.gz manual_src.tar.gz epix.info.bz2
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu doc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-uninstall-info-am:
-install-docDATA: $(doc_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- @list='$(doc_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
- $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- done
-
-uninstall-docDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(doc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
- rm -f "$(DESTDIR)$(docdir)/$$f"; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(docdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-docDATA
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-docDATA uninstall-info-am
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am \
- install-docDATA install-exec install-exec-am install-info \
- install-info-am install-man install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
- pdf-am ps ps-am uninstall uninstall-am uninstall-docDATA \
- uninstall-info-am
-
-
-%.eepic: %.xp
- ../epix-local $(EPIXFLAGS) $<
-
-# tar up tex, xp, and eepic files; build ps, pdf
-manual-stamp: manual.tex $(XPS) $(EEPICS)
- latex -interaction=batchmode manual &>/dev/null
- latex -interaction=batchmode manual &>/dev/null
- makeindex manual.idx &>/dev/null
- ../laps-local --pdf manual.tex
- touch manual-stamp
-
-manual_src.tar.gz: manual-stamp
- tar -cf manual_src.tar manual.aux manual.ind manual.tex manual.toc \
- $(XPS) $(EEPICS)
- gzip -9 manual_src.tar
-
-#PS
-manual.ps.gz: manual-stamp
- gzip -9 -c manual.ps > manual.ps.gz
-
-#PDF
-manual.pdf.gz: manual-stamp
- gzip -9 -c manual.pdf > manual.pdf.gz
-
-epix.info.bz2: manual-stamp epix.info
- bzip2 -fk epix.info
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/graphics/epix/doc/alignment.eepic b/graphics/epix/doc/alignment.eepic
deleted file mode 100644
index 1c5d93bd48..0000000000
--- a/graphics/epix/doc/alignment.eepic
+++ /dev/null
@@ -1,19 +0,0 @@
-%% Generated from alignment.xp on Fri Jan 7 14:18:43 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [-1,1] x [-1,1]
-%% Actual size: 72pt x 24pt
-%% Figure offset: right by 0pt, up by 0pt
-%%
-\setlength{\unitlength}{1pt}
-\begin{picture}(72,24)(-0,-0)
-%% ---
-\path(0.00140226,12)(12.001,12)(24.0006,12)(36.0002,12)(47.9998,12)
- (59.9994,12)(71.999,12)
-\path(36,0.00046742)(36,12.0001)(36,23.9997)
-\put(36,12){\makebox(0,0)[bl]{\texttt{[tr]}}}
-\put(36,12){\makebox(0,0)[c]{{\circle*{3}}}}
-\put(36,12){\makebox(0,0)[br]{\texttt{[tl]}}}
-\put(36,12){\makebox(0,0)[tl]{\texttt{[br]}}}
-\put(36,12){\makebox(0,0)[tr]{\texttt{[bl]}}}
-\end{picture}
diff --git a/graphics/epix/doc/alignment.xp b/graphics/epix/doc/alignment.xp
deleted file mode 100644
index e6bfc3c298..0000000000
--- a/graphics/epix/doc/alignment.xp
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*-ePiX-*- */
-/* alignment.c -- ePiX's reverse-LaTeX label alignment option */
-#include "epix.h"
-using namespace ePiX;
-
-P O(0,0);
-
-int main()
-{
- bounding_box(P(-1,-1), P(1,1));
- picture(P(72,24));
- unitlength("1pt");
-
- begin();
-
- Line(O, E_1);
- Line(O, E_2);
-
- font_face("tt");
- dot(O, P(0,0), "[tr]", tr);
- label(O, P(0,0), "[tl]", tl);
- label(O, P(0,0), "[br]", br);
- label(O, P(0,0), "[bl]", bl);
-
- end();
-}
diff --git a/graphics/epix/doc/alignment_lr.eepic b/graphics/epix/doc/alignment_lr.eepic
deleted file mode 100644
index 111098caf3..0000000000
--- a/graphics/epix/doc/alignment_lr.eepic
+++ /dev/null
@@ -1,17 +0,0 @@
-%% Generated from alignment_lr.xp on Fri Jan 7 14:18:31 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [-1,1] x [-1,1]
-%% Actual size: 72pt x 24pt
-%% Figure offset: right by 0pt, up by 0pt
-%%
-\setlength{\unitlength}{1pt}
-\begin{picture}(72,24)(-0,-0)
-%% ---
-\put(0,12){\makebox(0,0)[r]{\texttt{[l]}}}
-\put(0,12){\makebox(0,0)[c]{{\circle*{3}}}}
-\put(0,12){\makebox(0,0)[l]{\texttt{[r]}}}
-\put(72,12){\makebox(0,0)[b]{\texttt{[t]}}}
-\put(72,12){\makebox(0,0)[c]{{\circle*{3}}}}
-\put(72,12){\makebox(0,0)[t]{\texttt{[b]}}}
-\end{picture}
diff --git a/graphics/epix/doc/alignment_lr.xp b/graphics/epix/doc/alignment_lr.xp
deleted file mode 100644
index a6871278e3..0000000000
--- a/graphics/epix/doc/alignment_lr.xp
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*-ePiX-*- */
-/* alignment_lr.c -- ePiX's reverse-LaTeX label alignment option */
-#include "epix.h"
-using namespace ePiX;
-
-P p1(-1,0), p2(1,0);
-
-int main()
-{
- bounding_box(P(-1,-1), P(1,1));
- picture(P(72,24));
- unitlength("1pt");
-
- begin();
-
- font_face("tt");
- dot(p1, P(0,0), "[l]", l);
- label(p1, P(0,0), "[r]", r);
-
- dot(p2, P(0,0), "[t]", t);
- label(p2, P(0,0), "[b]", b);
-
- end();
-}
diff --git a/graphics/epix/doc/arrow.eepic b/graphics/epix/doc/arrow.eepic
deleted file mode 100644
index 98adf21b49..0000000000
--- a/graphics/epix/doc/arrow.eepic
+++ /dev/null
@@ -1,22 +0,0 @@
-%% Generated from arrows.xp on Mon Jul 2 20:38:11 EDT 2007 by
-%% ePiX-1.1.6
-%%
-%% Cartesian bounding box: [-2,2] x [-1,1]
-%% Actual size: 24 x 12pt
-%% Figure offset: left by 0pt, down by 0pt
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}
-\setlength{\unitlength}{1pt}
-\begin{picture}(24,12)(-0,-0)
-\path(0,6)(24,6)
-%%
-\path(17.8125,4.875)(15.75,4.875)
-\path(19.875,5.25)(15.75,5.25)
-\path(21.9375,5.625)(15.75,5.625)
-\path(24,6)(15.75,6)
-\path(21.9375,6.375)(15.75,6.375)
-\path(19.875,6.75)(15.75,6.75)
-\path(17.8125,7.125)(15.75,7.125)
-\path(15.75,6)(15.75,4.5)(24,6)(15.75,7.5)(15.75,6)
-%%
-\end{picture}
diff --git a/graphics/epix/doc/arrow.xp b/graphics/epix/doc/arrow.xp
deleted file mode 100644
index 34c47ad5e0..0000000000
--- a/graphics/epix/doc/arrow.xp
+++ /dev/null
@@ -1,18 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(-2,-1),P(2,1), "24x12pt");
-
- begin();
-#ifdef CAMBER25
- arrow_camber(0.25);
-#elif CAMBER50
- arrow_camber(0.5);
-#endif
-
- arrow(P(xmin(),0), P(xmax(),0));
- end();
-}
diff --git a/graphics/epix/doc/arrow25.eepic b/graphics/epix/doc/arrow25.eepic
deleted file mode 100644
index 196889e2b2..0000000000
--- a/graphics/epix/doc/arrow25.eepic
+++ /dev/null
@@ -1,22 +0,0 @@
-%% Generated from arrows.xp on Mon Jul 2 20:38:23 EDT 2007 by
-%% ePiX-1.1.6
-%%
-%% Cartesian bounding box: [-2,2] x [-1,1]
-%% Actual size: 24 x 12pt
-%% Figure offset: left by 0pt, down by 0pt
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}
-\setlength{\unitlength}{1pt}
-\begin{picture}(24,12)(-0,-0)
-\path(0,6)(24,6)
-%%
-\path(17.8125,4.875)(16.2656,4.875)
-\path(19.875,5.25)(16.7813,5.25)
-\path(21.9375,5.625)(17.2969,5.625)
-\path(24,6)(17.8125,6)
-\path(21.9375,6.375)(17.2969,6.375)
-\path(19.875,6.75)(16.7813,6.75)
-\path(17.8125,7.125)(16.2656,7.125)
-\path(17.8125,6)(15.75,4.5)(24,6)(15.75,7.5)(17.8125,6)
-%%
-\end{picture}
diff --git a/graphics/epix/doc/arrow50.eepic b/graphics/epix/doc/arrow50.eepic
deleted file mode 100644
index e22fec0fd0..0000000000
--- a/graphics/epix/doc/arrow50.eepic
+++ /dev/null
@@ -1,22 +0,0 @@
-%% Generated from arrows.xp on Mon Jul 2 20:38:34 EDT 2007 by
-%% ePiX-1.1.6
-%%
-%% Cartesian bounding box: [-2,2] x [-1,1]
-%% Actual size: 24 x 12pt
-%% Figure offset: left by 0pt, down by 0pt
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}
-\setlength{\unitlength}{1pt}
-\begin{picture}(24,12)(-0,-0)
-\path(0,6)(24,6)
-%%
-\path(17.8125,4.875)(16.7813,4.875)
-\path(19.875,5.25)(17.8125,5.25)
-\path(21.9375,5.625)(18.8438,5.625)
-\path(24,6)(19.875,6)
-\path(21.9375,6.375)(18.8438,6.375)
-\path(19.875,6.75)(17.8125,6.75)
-\path(17.8125,7.125)(16.7813,7.125)
-\path(19.875,6)(15.75,4.5)(24,6)(15.75,7.5)(19.875,6)
-%%
-\end{picture}
diff --git a/graphics/epix/doc/basepoint.eepic b/graphics/epix/doc/basepoint.eepic
deleted file mode 100644
index efd76dfaa5..0000000000
--- a/graphics/epix/doc/basepoint.eepic
+++ /dev/null
@@ -1,16 +0,0 @@
-%% Generated from basepoint.xp on Tue Jan 4 15:32:04 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [0,3.75] x [0,1]
-%% Actual size: 3.75pc x 1pc
-%% Figure offset: right by 0pc, up by 0pc
-%%
-\setlength{\unitlength}{1pc}
-\begin{picture}(3.75,1)(-0,-0)
-%% ---
-\path(0,-0.375)(3.75,-0.375)(3.75,1)(0,1)(0,-0.375)
-\allinethickness{0.15pt}%
-\path(0,0)(3.75,0)
-\put(0,0){$y=f(x)$}
-\put(0,0){\makebox(0,0)[c]{{\circle*{0.111111}}}}
-\end{picture}
diff --git a/graphics/epix/doc/basepoint.xp b/graphics/epix/doc/basepoint.xp
deleted file mode 100644
index 7fc15f6cb1..0000000000
--- a/graphics/epix/doc/basepoint.xp
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main() {
- bounding_box(P(0,0),P(3.75,1));
- unitlength("1pc");
- picture(3.75,1);
- // offset(-0.5,0);
-
- begin();
-
- rect(P(x_min, y_min-0.375), P(x_max, y_max));
-
- pen(0.15);
- line(P(x_min,0), P(x_max,0));
-
- dot_size(2);
-
- // std::cout << "\n\\LARGE";
- /*
- label(P(0,0), P(0,0), "$b$");
- ddot(P(0,0));
-
- label(P(1,0), P(0,0), "$f$");
- ddot(P(1,0));
-
- label(P(2,0), P(0,0), "$p$");
- ddot(P(2,0));
- */
-
- label(P(0,0), P(0,0), "$y=f(x)$");
- ddot(P(0,0));
-
- end();
-}
diff --git a/graphics/epix/doc/camera.eepic b/graphics/epix/doc/camera.eepic
deleted file mode 100644
index 7da56f9987..0000000000
--- a/graphics/epix/doc/camera.eepic
+++ /dev/null
@@ -1,285 +0,0 @@
-%% Generated from camera.xp on Sat Sep 22 17:10:34 EDT 2007 by
-%% ePiX-1.2.0
-%%
-%% Cartesian bounding box: [-3.5,3.5] x [-3.5,2.5]
-%% Actual size: 2.625 x 2.25in
-%% Figure offset: left by 0in, down by 0in
-%%
-%% usepackages epic,eepic,xcolor
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}%
-\xdefinecolor{rgb_7f7f7f}{rgb}{0.498039,0.498039,0.498039}%
-\xdefinecolor{rgb_e5e5e5}{rgb}{0.898039,0.898039,0.898039}%
-\xdefinecolor{rgb_ffffff}{rgb}{1,1,1}%
-\setlength{\unitlength}{1in}%
-\begin{picture}(2.625,2.25)(0,0)%
-\path(1.42243,1.30711)(1.4086,1.26997)(1.29561,1.27568)
-\path(1.3125,1.3125)(1.4523,1.30564)(1.59359,1.29871)
-\path(1.3125,1.3125)(1.3125,1.44704)(1.3125,1.58496)
-\path(0.307912,0.721822)(0.173332,2.09409)(2.55902,2.04543)
- (2.39965,0.566596)(0.307912,0.721822)
-\put(1.58249,0.490175){\makebox(0,0)[l]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize \textbf{Sea}}}}}
-\put(0.937572,1.11972){\makebox(0,0)[b]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize \textbf{Sky}}}}}
-\put(0.735053,0.174015){\makebox(0,0)[r]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize \textbf{Eye}}}}}
-\put(0.929482,0.537641){\makebox(0,0)[r]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Viewpoint}}}}
-\put(0.957156,0.537641){\color{rgb_000000}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(2.476,2.01776){\makebox(0,0)[tr]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Canvas}}}}
-\path(0.957156,0.537641)(1.17567,1.01413)(1.3125,1.3125)
-\color{rgb_7f7f7f}%
-\path(1.83216,0.911179)(1.84054,0.911179)
-\path(1.82052,0.916691)(1.83729,0.916691)
-\path(1.80888,0.922203)(1.83404,0.922203)
-\path(1.79724,0.927715)(1.83079,0.927715)
-\path(1.7856,0.933227)(1.82754,0.933227)
-\path(1.77396,0.938739)(1.82429,0.938739)
-\path(1.76232,0.944251)(1.82104,0.944251)
-\path(1.75068,0.949763)(1.81779,0.949763)
-\path(1.73904,0.955275)(1.81454,0.955275)
-\path(1.7274,0.960787)(1.81129,0.960787)
-\path(1.71576,0.966299)(1.80804,0.966299)
-\path(1.70412,0.971811)(1.80479,0.971811)
-\path(1.69248,0.977323)(1.80154,0.977323)
-\path(1.68084,0.982835)(1.79829,0.982835)
-\path(1.6692,0.988347)(1.79503,0.988347)
-\path(1.65756,0.993859)(1.79178,0.993859)
-\path(1.64592,0.999371)(1.78853,0.999371)
-\path(1.63428,1.00488)(1.78528,1.00488)
-\path(1.62264,1.0104)(1.78203,1.0104)
-\path(1.611,1.01591)(1.77878,1.01591)
-\path(1.60612,1.02142)(1.77553,1.02142)
-\path(1.60892,1.02693)(1.77228,1.02693)
-\path(1.61172,1.03244)(1.76903,1.03244)
-\path(1.61452,1.03796)(1.76578,1.03796)
-\path(1.61732,1.04347)(1.76253,1.04347)
-\path(1.62012,1.04898)(1.75928,1.04898)
-\path(1.62292,1.05449)(1.75603,1.05449)
-\path(1.62572,1.06)(1.75278,1.06)
-\path(1.62852,1.06551)(1.74952,1.06551)
-\path(1.63132,1.07103)(1.74627,1.07103)
-\path(1.63412,1.07654)(1.74302,1.07654)
-\path(1.63692,1.08205)(1.73977,1.08205)
-\path(1.63972,1.08756)(1.73652,1.08756)
-\path(1.64252,1.09307)(1.73327,1.09307)
-\path(1.64532,1.09859)(1.73002,1.09859)
-\path(1.64812,1.1041)(1.72677,1.1041)
-\path(1.65091,1.10961)(1.72352,1.10961)
-\path(1.65371,1.11512)(1.72027,1.11512)
-\path(1.65651,1.12063)(1.71702,1.12063)
-\path(1.65931,1.12615)(1.71377,1.12615)
-\path(1.66211,1.13166)(1.71052,1.13166)
-\path(1.66491,1.13717)(1.70726,1.13717)
-\path(1.66771,1.14268)(1.70401,1.14268)
-\path(1.67051,1.14819)(1.70076,1.14819)
-\path(1.67331,1.15371)(1.69751,1.15371)
-\path(1.67611,1.15922)(1.69426,1.15922)
-\path(1.67891,1.16473)(1.69101,1.16473)
-\path(1.68171,1.17024)(1.68776,1.17024)
-\path(1.83836,0.908239)(1.83836,0.914877)
-\path(1.83293,0.910811)(1.83293,0.924087)
-\path(1.8275,0.913384)(1.8275,0.933297)
-\path(1.82207,0.915956)(1.82207,0.942506)
-\path(1.81664,0.918528)(1.81664,0.951716)
-\path(1.81121,0.9211)(1.81121,0.960926)
-\path(1.80577,0.923672)(1.80577,0.970136)
-\path(1.80034,0.926244)(1.80034,0.979345)
-\path(1.79491,0.928816)(1.79491,0.988555)
-\path(1.78948,0.931388)(1.78948,0.997765)
-\path(1.78405,0.93396)(1.78405,1.00697)
-\path(1.77862,0.936532)(1.77862,1.01618)
-\path(1.77319,0.939104)(1.77319,1.02539)
-\path(1.76775,0.941676)(1.76775,1.0346)
-\path(1.76232,0.944248)(1.76232,1.04381)
-\path(1.75689,0.94682)(1.75689,1.05302)
-\path(1.75146,0.949392)(1.75146,1.06223)
-\path(1.74603,0.951964)(1.74603,1.07144)
-\path(1.7406,0.954536)(1.7406,1.08065)
-\path(1.73517,0.957108)(1.73517,1.08986)
-\path(1.72973,0.95968)(1.72973,1.09907)
-\path(1.7243,0.962252)(1.7243,1.10828)
-\path(1.71887,0.964824)(1.71887,1.11749)
-\path(1.71344,0.967396)(1.71344,1.1267)
-\path(1.70801,0.969968)(1.70801,1.13591)
-\path(1.70258,0.97254)(1.70258,1.14512)
-\path(1.69715,0.975112)(1.69715,1.15433)
-\path(1.69171,0.977684)(1.69171,1.16354)
-\path(1.68628,0.980256)(1.68628,1.17275)
-\path(1.68085,0.982828)(1.68085,1.16855)
-\path(1.67542,0.9854)(1.67542,1.15786)
-\path(1.66999,0.987972)(1.66999,1.14716)
-\path(1.66456,0.990544)(1.66456,1.13647)
-\path(1.65912,0.993116)(1.65912,1.12577)
-\path(1.65369,0.995689)(1.65369,1.11508)
-\path(1.64826,0.998261)(1.64826,1.10439)
-\path(1.64283,1.00083)(1.64283,1.09369)
-\path(1.6374,1.0034)(1.6374,1.083)
-\path(1.63197,1.00598)(1.63197,1.07231)
-\path(1.62654,1.00855)(1.62654,1.06161)
-\path(1.6211,1.01112)(1.6211,1.05092)
-\path(1.61567,1.01369)(1.61567,1.04022)
-\path(1.61024,1.01626)(1.61024,1.02953)
-\color{rgb_000000}%
-\path(1.68451,1.17575)(1.8438,0.905667)(1.60481,1.01884)(1.68451,1.17575)
-\path(1.55858,1.06528)(1.62462,1.12321)(1.68451,1.17575)
-\path(1.64966,0.825085)(1.75291,0.867943)(1.8438,0.905667)
-\path(1.42984,0.888834)(1.52409,0.958865)(1.60481,1.01884)
-\path(0.957156,0.537641)(1.4039,0.929569)(1.68451,1.17575)
-\path(0.957156,0.537641)(1.50556,0.765274)(1.8438,0.905667)
-\path(0.957156,0.537641)(1.35769,0.835234)(1.60481,1.01884)
-\color{rgb_e5e5e5}%
-\path(1.64572,0.826226)(1.5548,1.06009)
-\path(1.63918,0.828123)(1.55101,1.0549)
-\path(1.63264,0.830021)(1.54722,1.04971)
-\path(1.6261,0.831918)(1.54344,1.04452)
-\path(1.61955,0.833815)(1.53965,1.03933)
-\path(1.61301,0.835712)(1.53586,1.03414)
-\path(1.60647,0.837609)(1.53208,1.02895)
-\path(1.59993,0.839507)(1.52829,1.02376)
-\path(1.59339,0.841404)(1.5245,1.01857)
-\path(1.58684,0.843301)(1.52072,1.01338)
-\path(1.5803,0.845198)(1.51693,1.00819)
-\path(1.57376,0.847095)(1.51314,1.003)
-\path(1.56722,0.848993)(1.50936,0.997814)
-\path(1.56068,0.85089)(1.50557,0.992624)
-\path(1.55413,0.852787)(1.50178,0.987435)
-\path(1.54759,0.854684)(1.498,0.982245)
-\path(1.54105,0.856581)(1.49421,0.977056)
-\path(1.53451,0.858479)(1.49042,0.971866)
-\path(1.52797,0.860376)(1.48664,0.966677)
-\path(1.52142,0.862273)(1.48285,0.961487)
-\path(1.51488,0.86417)(1.47906,0.956298)
-\path(1.50834,0.866067)(1.47528,0.951108)
-\path(1.5018,0.867965)(1.47149,0.945919)
-\path(1.49526,0.869862)(1.4677,0.940729)
-\path(1.48871,0.871759)(1.46392,0.93554)
-\path(1.48217,0.873656)(1.46013,0.93035)
-\path(1.47563,0.875553)(1.45634,0.925161)
-\path(1.46909,0.877451)(1.45256,0.919971)
-\path(1.46255,0.879348)(1.44877,0.914781)
-\path(1.456,0.881245)(1.44498,0.909592)
-\path(1.44946,0.883142)(1.4412,0.904402)
-\path(1.44292,0.885039)(1.43741,0.899213)
-\path(1.43638,0.886937)(1.43362,0.894023)
-\path(1.56052,1.06017)(1.55261,1.05709)
-\path(1.56246,1.05506)(1.54664,1.04891)
-\path(1.5644,1.04995)(1.54066,1.04072)
-\path(1.56633,1.04484)(1.53469,1.03253)
-\path(1.56827,1.03973)(1.52872,1.02435)
-\path(1.57021,1.03461)(1.52274,1.01616)
-\path(1.57215,1.0295)(1.51677,1.00797)
-\path(1.57409,1.02439)(1.5108,0.999787)
-\path(1.57602,1.01928)(1.50482,0.991601)
-\path(1.57796,1.01417)(1.49885,0.983414)
-\path(1.5799,1.00906)(1.49288,0.975228)
-\path(1.58184,1.00395)(1.4869,0.967042)
-\path(1.58377,0.998841)(1.48093,0.958855)
-\path(1.58571,0.993731)(1.47496,0.950669)
-\path(1.58765,0.988621)(1.46898,0.942483)
-\path(1.58959,0.98351)(1.46301,0.934296)
-\path(1.59152,0.9784)(1.45704,0.92611)
-\path(1.59346,0.973289)(1.45106,0.917923)
-\path(1.5954,0.968179)(1.44509,0.909737)
-\path(1.59734,0.963068)(1.43911,0.901551)
-\path(1.59928,0.957958)(1.43314,0.893364)
-\path(1.60121,0.952847)(1.43369,0.887715)
-\path(1.60315,0.947737)(1.44233,0.88521)
-\path(1.60509,0.942626)(1.45097,0.882705)
-\path(1.60703,0.937516)(1.45961,0.880199)
-\path(1.60896,0.932405)(1.46825,0.877694)
-\path(1.6109,0.927295)(1.47689,0.875189)
-\path(1.61284,0.922184)(1.48552,0.872684)
-\path(1.61478,0.917074)(1.49416,0.870179)
-\path(1.61672,0.911963)(1.5028,0.867673)
-\path(1.61865,0.906853)(1.51144,0.865168)
-\path(1.62059,0.901742)(1.52008,0.862663)
-\path(1.62253,0.896632)(1.52872,0.860158)
-\path(1.62447,0.891521)(1.53736,0.857653)
-\path(1.6264,0.886411)(1.54599,0.855147)
-\path(1.62834,0.8813)(1.55463,0.852642)
-\path(1.63028,0.87619)(1.56327,0.850137)
-\path(1.63222,0.871079)(1.57191,0.847632)
-\path(1.63416,0.865969)(1.58055,0.845127)
-\path(1.63609,0.860858)(1.58919,0.842621)
-\path(1.63803,0.855748)(1.59783,0.840116)
-\path(1.63997,0.850637)(1.60646,0.837611)
-\path(1.64191,0.845527)(1.6151,0.835106)
-\path(1.64384,0.840416)(1.62374,0.8326)
-\path(1.64578,0.835306)(1.63238,0.830095)
-\path(1.64772,0.830195)(1.64102,0.82759)
-\color{rgb_000000}%
-\path(1.55858,1.06528)(1.64966,0.825085)(1.42984,0.888834)(1.55858,1.06528)
-\path(1.69177,1.3845)(1.6229,1.16677)(1.54714,0.927292)
-\put(1.69177,1.3845){\makebox(0,0)[b]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Object}}}}
-\path(2.05075,0.923554)(1.88188,0.980517)(1.71366,1.03726)
-\put(2.05075,0.923554){\makebox(0,0)[l]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Shadow}}}}
-\put(1.12218,1.68556){\makebox(0,0)[b]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Target}}}}
-\path(1.12218,1.68556)(1.29391,1.34894)
-\path(1.27634,1.40359)(1.2621,1.39054)
-\path(1.27896,1.39892)(1.26528,1.38638)
-\path(1.28062,1.39336)(1.26846,1.38222)
-\path(1.28229,1.38781)(1.27164,1.37806)
-\path(1.28395,1.38226)(1.27482,1.3739)
-\path(1.28561,1.3767)(1.278,1.36974)
-\path(1.28727,1.37115)(1.28118,1.36558)
-\path(1.28893,1.3656)(1.28437,1.36142)
-\path(1.29059,1.36005)(1.28755,1.35726)
-\path(1.29225,1.35449)(1.29073,1.3531)
-\path(1.25949,1.39395)(1.29061,1.35998)
-\path(1.26348,1.39703)(1.28731,1.37102)
-\path(1.26812,1.39939)(1.28401,1.38205)
-\path(1.27276,1.40176)(1.28071,1.39309)
-\path(1.26816,1.39941)(1.25892,1.3947)(1.29391,1.34894)
- (1.2774,1.40413)(1.26816,1.39941)
-\put(1.3125,1.3125){\color{rgb_000000}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{0.8pt}%
-\path(0.957156,0.537641)(1.55482,0.490175)
-\allinethickness{0.0055348in}%
-\path(1.4989,0.489651)(1.50786,0.485229)
-\path(1.49933,0.495061)(1.51726,0.486218)
-\path(1.49976,0.500472)(1.52665,0.487207)
-\path(1.50454,0.503736)(1.53604,0.488197)
-\path(1.52968,0.496955)(1.54543,0.489186)
-\path(1.54888,0.489549)(1.54985,0.491516)
-\path(1.54293,0.488923)(1.54487,0.492858)
-\path(1.53699,0.488297)(1.5399,0.494199)
-\path(1.53104,0.487671)(1.53493,0.495541)
-\path(1.5251,0.487045)(1.52995,0.496882)
-\path(1.51916,0.486419)(1.52498,0.498223)
-\path(1.51321,0.485792)(1.52001,0.499565)
-\path(1.50727,0.485166)(1.51504,0.500906)
-\path(1.50133,0.48454)(1.51006,0.502247)
-\path(1.49903,0.491318)(1.50509,0.503589)
-\allinethickness{0.8pt}%
-\path(1.49929,0.494585)(1.49847,0.48424)(1.55482,0.490175)
- (1.50012,0.50493)(1.49929,0.494585)
-\path(0.957156,0.537641)(0.790401,0.174015)
-\allinethickness{0.0055348in}%
-\path(0.807364,0.192334)(0.808098,0.200697)
-\path(0.80171,0.186228)(0.803178,0.202954)
-\path(0.796055,0.180122)(0.798257,0.20521)
-\path(0.807022,0.201191)(0.793617,0.202367)
-\path(0.810836,0.196084)(0.793081,0.197642)
-\path(0.806749,0.19167)(0.792545,0.192917)
-\path(0.802662,0.187256)(0.792009,0.188191)
-\path(0.798575,0.182843)(0.791473,0.183466)
-\path(0.794488,0.178429)(0.790937,0.178741)
-\allinethickness{0.8pt}%
-\path(0.803586,0.202767)(0.794153,0.207092)(0.790401,0.174015)
- (0.813019,0.198441)(0.803586,0.202767)
-\path(0.957156,0.537641)(0.937572,1.09205)
-\allinethickness{0.0055348in}%
-\path(0.938782,1.08718)(0.936611,1.08655)
-\path(0.939993,1.08231)(0.935649,1.08104)
-\path(0.941204,1.07743)(0.934688,1.07554)
-\path(0.942414,1.07256)(0.933727,1.07003)
-\path(0.943625,1.06769)(0.932765,1.06453)
-\path(0.944835,1.06282)(0.931804,1.05902)
-\path(0.946046,1.05794)(0.930842,1.05352)
-\path(0.947256,1.05307)(0.929881,1.04801)
-\path(0.948467,1.0482)(0.929251,1.04261)
-\path(0.931094,1.05496)(0.934635,1.0428)
-\path(0.933253,1.06732)(0.940334,1.043)
-\path(0.935413,1.07969)(0.946034,1.0432)
-\allinethickness{0.8pt}%
-\path(0.939306,1.04296)(0.949677,1.04333)(0.937572,1.09205)
- (0.928935,1.0426)(0.939306,1.04296)
-\end{picture}%
diff --git a/graphics/epix/doc/camera.xp b/graphics/epix/doc/camera.xp
deleted file mode 100644
index 66f8fdb334..0000000000
--- a/graphics/epix/doc/camera.xp
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double ht(4);
-
-const P target(0,0,0);
-const P observer(0,-4,0);
-const P dtarg(-0.5,0,1);
-const double dx(0.375);
-
-// location of label
-const P obj_loc(1,0,0.25);
-
-P F(P arg)
-{
- double x(arg.x2());
- return (ht/(ht+x))*P(arg.x1(), 0, arg.x3());
-}
-
-P P1(0.75, -1, -0.25);
-P P2(1, -1.25, -0.75);
-P P3(0.5, -1.5, -0.5 );
-P midpt((1.0/3)*(P1+P2+P3));
-
-int main() {
- bounding_box(P(-3.5,-3.5),P(3.5,2.5));
- unitlength("0.375in");
- picture(P(7,6));
-
- begin();
-
- camera.at(P(1.5,-10,3.5));
- camera.range(10);
-
- font_size("footnotesize");
- right_angle(target, E_1, -E_2);
-
- line(target, target+2*dx*E_1);
- line(target, target+2*dx*E_3);
-
- // grid(P(-3,0,-2), P(3,0,2), 6, 8);
- grid(P(-3,0,-2), P(3,0,2));
-
- masklabel(observer+E_1, P(2,0), "\\textbf{Sea}", r);
- masklabel(observer+E_3, P(0,2), "\\textbf{Sky}", t);
- masklabel(observer-E_2, P(-4,0), "\\textbf{Eye}", l);
-
- masklabel(observer, P(-2,0), "Viewpoint", l);
- dot(observer);
-
- masklabel(P(3,0,2), P(-6,-2), "Canvas", bl);
-
- line(observer, target);
-
- fill(Black(0.5));
- triangle(F(P1), F(P2), F(P3));
-
- line(P1, F(P1));
- line(P2, F(P2));
- line(P3, F(P3));
-
- line(observer, F(P1));
- line(observer, F(P2));
- line(observer, F(P3));
-
- fill(Black(0.1));
- triangle(P1, P2, P3);
-
- line(obj_loc, midpt);
- masklabel(obj_loc, P(0,0), "Object", t);
-
- line(P(2,0,-1), F(midpt));
- masklabel(P(2,0,-1), P(0,0), "Shadow", r);
-
- masklabel(target+dtarg, P(0,0), "Target", t);
- arrow(target+dtarg, target+0.1*dtarg, 0.5);
- dot(target);
-
- bold();
- arrow(observer, observer+E_1, 0.5);
- arrow(observer, observer-E_2, 0.5);
- arrow(observer, observer+E_3, 0.5);
-
- end();
-}
diff --git a/graphics/epix/doc/cb.eepic b/graphics/epix/doc/cb.eepic
deleted file mode 100644
index 7df0354645..0000000000
--- a/graphics/epix/doc/cb.eepic
+++ /dev/null
@@ -1,25 +0,0 @@
-%% Generated from cb.xp on Tue Jan 4 15:32:10 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [-2,2] x [-1,1]
-%% Actual size: 1.5in x 0.75in
-%% Figure offset: right by 0in, up by 0in
-%%
-\setlength{\unitlength}{1in}
-\begin{picture}(1.5,0.75)(-0,-0)
-%% ---
-\path(0,0.375)(1.5,0.375)
-\put(0,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(0.375,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(0.75,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(1.125,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(1.5,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-%% ---
-\path(0.75,0)(0.75,0.75)
-\put(0.75,0){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}}
-\put(0.75,0.75){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}}
-%% ---
-\thicklines
-\path(0,0.375)(0.375,0.75)(0.75,0.375)(1.125,0.75)(1.5,0.375)
-\put(0.75,-0.055348){\makebox(0,0)[t]{\code{cb}}}
-\end{picture}
diff --git a/graphics/epix/doc/cb.xp b/graphics/epix/doc/cb.xp
deleted file mode 100644
index e0434b483e..0000000000
--- a/graphics/epix/doc/cb.xp
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- bounding_box(P(-2,-1),P(2,1));
- unitlength("1in");
- picture(1.5,0.75);
-
- begin();
-
- h_axis(4);
- v_axis(1);
-
- bold();
- plot(cb, x_min, x_max, 4);
-
- label(P(0,y_min), P(0,-4), "\\code{cb}", b);
-
- end();
-}
diff --git a/graphics/epix/doc/color_density.eepic b/graphics/epix/doc/color_density.eepic
deleted file mode 100644
index 1b0ee79028..0000000000
--- a/graphics/epix/doc/color_density.eepic
+++ /dev/null
@@ -1,139 +0,0 @@
-%% Generated from color_density.xp on Thu Jul 5 10:01:14 EDT 2007 by
-%% ePiX-1.1.6
-%%
-%% Cartesian bounding box: [-2,2] x [0,1.375]
-%% Actual size: 4 x 1.5in
-%% Figure offset: left by 0in, down by 0in
-%%
-\newrgbcolor{rgb_000000}{0 0 0}
-\newrgbcolor{rgb_005454}{0 0.329412 0.329412}
-\newrgbcolor{rgb_00a9a9}{0 0.662745 0.662745}
-\newrgbcolor{rgb_00fefe}{0 0.996078 0.996078}
-\newrgbcolor{rgb_00ffff}{0 1 1}
-\newrgbcolor{rgb_540000}{0.329412 0 0}
-\newrgbcolor{rgb_54ffff}{0.329412 1 1}
-\newrgbcolor{rgb_a90000}{0.662745 0 0}
-\newrgbcolor{rgb_a9ffff}{0.662745 1 1}
-\newrgbcolor{rgb_fe0000}{0.996078 0 0}
-\newrgbcolor{rgb_feffff}{0.996078 1 1}
-\newrgbcolor{rgb_ff0000}{1 0 0}
-\newrgbcolor{rgb_ff5454}{1 0.329412 0.329412}
-\newrgbcolor{rgb_ffa9a9}{1 0.662745 0.662745}
-\newrgbcolor{rgb_fffefe}{1 0.996078 0.996078}
-\psset{unit=1in,linewidth=0.4pt}
-\begin{pspicture}(4,1.5)(-0,-0)
-\psset{fillcolor=rgb_feffff}%
-\psline[fillstyle=solid]
- (-0.123,1.22727)(0.127,1.22727)(0.127,1.5)(-0.123,1.5)(-0.123,1.22727)
-%%
-\psline(-0.123,1.22727)(0.127,1.22727)(0.127,1.5)(-0.123,1.5)(-0.123,1.22727)
-%%
-\psset{fillcolor=rgb_a9ffff}%
-\psline[fillstyle=solid]
- (0.21,1.22727)(0.46,1.22727)(0.46,1.5)(0.21,1.5)(0.21,1.22727)
-%%
-\psline(0.21,1.22727)(0.46,1.22727)(0.46,1.5)(0.21,1.5)(0.21,1.22727)
-%%
-\psset{fillcolor=rgb_54ffff}%
-\psline[fillstyle=solid]
- (0.543,1.22727)(0.793,1.22727)(0.793,1.5)(0.543,1.5)(0.543,1.22727)
-%%
-\psline(0.543,1.22727)(0.793,1.22727)(0.793,1.5)(0.543,1.5)(0.543,1.22727)
-%%
-\psset{fillcolor=rgb_00fefe}%
-\psline[fillstyle=solid]
- (0.876,1.22727)(1.126,1.22727)(1.126,1.5)(0.876,1.5)(0.876,1.22727)
-%%
-\psline(0.876,1.22727)(1.126,1.22727)(1.126,1.5)(0.876,1.5)(0.876,1.22727)
-%%
-\psset{fillcolor=rgb_00a9a9}%
-\psline[fillstyle=solid]
- (1.209,1.22727)(1.459,1.22727)(1.459,1.5)(1.209,1.5)(1.209,1.22727)
-%%
-\psline(1.209,1.22727)(1.459,1.22727)(1.459,1.5)(1.209,1.5)(1.209,1.22727)
-%%
-\psset{fillcolor=rgb_005454}%
-\psline[fillstyle=solid]
- (1.542,1.22727)(1.792,1.22727)(1.792,1.5)(1.542,1.5)(1.542,1.22727)
-%%
-\psline(1.542,1.22727)(1.792,1.22727)(1.792,1.5)(1.542,1.5)(1.542,1.22727)
-%%
-\psset{fillcolor=rgb_000000}%
-\psline[fillstyle=solid]
- (1.875,1.22727)(2.125,1.22727)(2.125,1.5)(1.875,1.5)(1.875,1.22727)
-%%
-\psline(1.875,1.22727)(2.125,1.22727)(2.125,1.5)(1.875,1.5)(1.875,1.22727)
-%%
-\psset{fillcolor=rgb_540000}%
-\psline[fillstyle=solid]
- (2.208,1.22727)(2.458,1.22727)(2.458,1.5)(2.208,1.5)(2.208,1.22727)
-%%
-\psline(2.208,1.22727)(2.458,1.22727)(2.458,1.5)(2.208,1.5)(2.208,1.22727)
-%%
-\psset{fillcolor=rgb_a90000}%
-\psline[fillstyle=solid]
- (2.541,1.22727)(2.791,1.22727)(2.791,1.5)(2.541,1.5)(2.541,1.22727)
-%%
-\psline(2.541,1.22727)(2.791,1.22727)(2.791,1.5)(2.541,1.5)(2.541,1.22727)
-%%
-\psset{fillcolor=rgb_fe0000}%
-\psline[fillstyle=solid]
- (2.874,1.22727)(3.124,1.22727)(3.124,1.5)(2.874,1.5)(2.874,1.22727)
-%%
-\psline(2.874,1.22727)(3.124,1.22727)(3.124,1.5)(2.874,1.5)(2.874,1.22727)
-%%
-\psset{fillcolor=rgb_ff5454}%
-\psline[fillstyle=solid]
- (3.207,1.22727)(3.457,1.22727)(3.457,1.5)(3.207,1.5)(3.207,1.22727)
-%%
-\psline(3.207,1.22727)(3.457,1.22727)(3.457,1.5)(3.207,1.5)(3.207,1.22727)
-%%
-\psset{fillcolor=rgb_ffa9a9}%
-\psline[fillstyle=solid]
- (3.54,1.22727)(3.79,1.22727)(3.79,1.5)(3.54,1.5)(3.54,1.22727)
-%%
-\psline(3.54,1.22727)(3.79,1.22727)(3.79,1.5)(3.54,1.5)(3.54,1.22727)
-%%
-\psset{fillcolor=rgb_fffefe}%
-\psline[fillstyle=solid]
- (3.873,1.22727)(4.123,1.22727)(4.123,1.5)(3.873,1.5)(3.873,1.22727)
-%%
-\psline(3.873,1.22727)(4.123,1.22727)(4.123,1.5)(3.873,1.5)(3.873,1.22727)
-%%
-\psline(0,0)(4,0)
-%%
-\rput(0,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}}
-\rput(1,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}}
-\rput(2,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}}
-\rput(3,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}}
-\rput(4,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}}
-\psline(2,0)(2,1.09091)
-%%
-\rput(2,0){\makebox(0,0){{$\rule{4pt}{0.5pt}$}}}
-\rput(2,1.09091){\makebox(0,0){{$\rule{4pt}{0.5pt}$}}}
-\rput(0,-0.055348){\makebox(0,0)[t]{{$-2$}}}
-\rput(1,-0.055348){\makebox(0,0)[t]{{$-1$}}}
-\rput(2,-0.055348){\makebox(0,0)[t]{{$\phantom{-}0$}}}
-\rput(3,-0.055348){\makebox(0,0)[t]{{$\phantom{-}1$}}}
-\rput(4,-0.055348){\makebox(0,0)[t]{{$\phantom{-}2$}}}
-\psset{linecolor=rgb_00ffff}%
-\psline(0,1.09091)(1,1.09091)
-%%
-\psline(1,1.09091)(2,0)
-%%
-\psline(2,0)(3,0)
-%%
-\psline(3,0)(4,1.09091)
-%%
-\psset{linewidth=0.8pt}%
-\psset{linecolor=rgb_ff0000}%
-\psline
- (0,1.09091)(1,0)
-%%
-\psline(1,0)(2,0)
-%%
-\psline(2,0)(3,1.09091)
-%%
-\psline(3,1.09091)(4,1.09091)
-%%
-\end{pspicture}
diff --git a/graphics/epix/doc/color_density.xp b/graphics/epix/doc/color_density.xp
deleted file mode 100644
index f561fa43e3..0000000000
--- a/graphics/epix/doc/color_density.xp
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double dX(0.125), dY(0.25);
-
-int main()
-{
- picture(P(-2, 0), P(2, 1.125 + dY), "4 x 1.5in");
-
- begin();
-
- fill();
- for (int i=-6; i<=6; ++i)
- {
- const double x(0.333*i);
- fill(Red(x));
- rect(P(x-dX, 1.125), P(x+dX, 1.125+dY));
- }
- nofill();
-
- h_axis(4);
- v_axis(P(0,0), P(0,1), 1);
-
- h_axis_labels(4, P(0,-4), b);
- red(-1);
- line(P(-2,1), P(-1,1));
- line(P(-1,1), P(0,0));
- line(P(0,0), P(1,0));
- line(P(1,0), P(2,1));
-
- red();
- bold();
- line(P(-2,1), P(-1,0));
- line(P(-1,0), P(0,0));
-
- line(P(0,0), P(1,1));
- line(P(1,1), P(2,1));
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/doc/dots.eepic b/graphics/epix/doc/dots.eepic
deleted file mode 100644
index 839663481d..0000000000
--- a/graphics/epix/doc/dots.eepic
+++ /dev/null
@@ -1,19 +0,0 @@
-%% Generated from dots.xp on Tue Jan 4 15:32:12 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [0,8] x [0,1]
-%% Actual size: 72pt x 12pt
-%% Figure offset: right by 10pt, up by 2pt
-%%
-\setlength{\unitlength}{1pt}
-\begin{picture}(72,12)(-10,-2)
-%% ---
-\put(0,0){\makebox(0,0)[c]{{\circle*{4.5}}}}
-\put(9,0){\makebox(0,0)[c]{{\circle*{3}}}}
-\put(18,0){\makebox(0,0)[c]{{\circle*{2}}}}
-\put(36,0){\makebox(0,0)[c]{\rule{3pt}{3pt}}}
-\put(45,0){\makebox(0,0)[c]{\rule{2pt}{2pt}}}
-\path(58.5,0)(78.75,0)
-\put(63,0){\makebox(0,0)[c]{{\circle{4.5}}}}
-\whiten\put(72,0){\makebox(0,0)[c]{{\circle{3}}}}
-\end{picture}
diff --git a/graphics/epix/doc/dots.xp b/graphics/epix/doc/dots.xp
deleted file mode 100644
index 1f13fb6099..0000000000
--- a/graphics/epix/doc/dots.xp
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*-ePiX-*- */
-/* dots.c -- Dot primitives */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- unitlength("1pt");
- bounding_box(P(0,0), P(8,1));
- picture(P(72,12));
- offset(P(10,2));
-
- begin();
-
- spot(P(0,0));
- dot(P(1,0));
- ddot(P(2,0));
-
- box(P(4,0));
- bbox(P(5,0));
-
- line(P(6.5,0), P(8.75,0));
-
- ring(P(7,0));
- circ(P(8,0));
-
- end();
-}
diff --git a/graphics/epix/doc/ePiX.eepic b/graphics/epix/doc/ePiX.eepic
deleted file mode 100644
index 4bdec31118..0000000000
--- a/graphics/epix/doc/ePiX.eepic
+++ /dev/null
@@ -1,1099 +0,0 @@
-%% Generated from ePiX.xp on Sat Sep 22 20:16:03 EDT 2007 by
-%% ePiX-1.2.0
-%%
-%% Cartesian bounding box: [-0.5,5.75] x [2,10]
-%% Actual size: 4 x 7.5in
-%% Figure offset: left by 0in, down by 0in
-%%
-%% usepackages epic,eepic,xcolor
-%%
-\xdefinecolor{cmy_000019}{cmyk}{0,0,0.0980392,0}%
-\xdefinecolor{rgb_0000ff}{rgb}{0,0,1}%
-\xdefinecolor{rgb_009800}{rgb}{0,0.596078,0}%
-\xdefinecolor{rgb_7f7f7f}{rgb}{0.498039,0.498039,0.498039}%
-\xdefinecolor{rgb_ff0000}{rgb}{1,0,0}%
-\setlength{\unitlength}{1in}%
-\begin{picture}(4,7.5)(0,0)%
-\color{rgb_7f7f7f}%
-\path(0.32,7.03125)(0.96,7.03125)
-\path(0.902922,7.02606)(0.931461,7.02606)
-\path(0.902922,7.03125)(0.96,7.03125)
-\path(0.902922,7.03644)(0.931461,7.03644)
-\path(0.954811,7.03031)(0.954811,7.03219)
-\path(0.949622,7.02936)(0.949622,7.03314)
-\path(0.944433,7.02842)(0.944433,7.03408)
-\path(0.939244,7.02748)(0.939244,7.03502)
-\path(0.934056,7.02653)(0.934056,7.03597)
-\path(0.928867,7.02559)(0.928867,7.03691)
-\path(0.923678,7.02465)(0.923678,7.03785)
-\path(0.918489,7.0237)(0.918489,7.0388)
-\path(0.9133,7.02276)(0.9133,7.03974)
-\path(0.908111,7.02182)(0.908111,7.04068)
-\path(0.902922,7.02087)(0.902922,7.04163)
-\path(0.902922,7.03125)(0.902922,7.02087)(0.96,7.03125)
- (0.902922,7.04163)(0.902922,7.03125)
-\put(0.32,7.0866){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\footnotesize \texttt{xp}, \texttt{flx}}}}
-\put(0.32,7.03125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(0.97999,7.08981){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\footnotesize \texttt{eepic}}}}
-\put(0.96,7.03125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{1.2pt}%
-\color{rgb_ff0000}%
-\path(0.96,7.03125)(0.963187,7.03115)(0.966347,7.03086)
- (0.969482,7.03039)(0.972591,7.02972)(0.975676,7.02888)
- (0.978736,7.02785)(0.981772,7.02665)(0.984785,7.02528)
- (0.987774,7.02374)(0.990741,7.02203)(0.993685,7.02016)
- (0.996608,7.01813)(0.999509,7.01594)(1.00239,7.0136)
- (1.00525,7.01111)(1.00809,7.00847)(1.01091,7.00569)
- (1.01371,7.00277)(1.01649,6.99972)(1.01926,6.99653)
- (1.02201,6.99321)(1.02474,6.98976)(1.02745,6.98619)(1.03014,6.9825)
- (1.03282,6.97869)(1.03549,6.97477)(1.03814,6.97074)(1.04077,6.9666)
- (1.04339,6.96235)(1.046,6.95801)(1.04859,6.95356)(1.05117,6.94903)
- (1.05374,6.9444)(1.0563,6.93968)(1.05884,6.93488)(1.06138,6.93)
- (1.0639,6.92504)(1.06641,6.92)(1.06891,6.9149)(1.07141,6.90972)
- (1.07389,6.90448)(1.07637,6.89918)(1.07884,6.89382)(1.0813,6.8884)
- (1.08375,6.88293)(1.0862,6.87742)(1.08864,6.87185)(1.09107,6.86625)
- (1.0935,6.86061)(1.09593,6.85493)(1.09835,6.84921)(1.10076,6.84347)
- (1.10317,6.8377)(1.10558,6.83191)(1.10799,6.8261)(1.1104,6.82028)
- (1.1128,6.81444)(1.1152,6.80859)(1.1176,6.80273)(1.12,6.79688)
- (1.1224,6.79102)(1.1248,6.78516)(1.1272,6.77931)(1.1296,6.77347)
- (1.13201,6.76765)(1.13442,6.76184)(1.13683,6.75605)
- (1.13924,6.75028)(1.14165,6.74454)(1.14407,6.73882)(1.1465,6.73314)
- (1.14893,6.7275)(1.15136,6.7219)(1.1538,6.71633)(1.15625,6.71082)
- (1.1587,6.70535)(1.16116,6.69993)(1.16363,6.69457)(1.16611,6.68927)
- (1.16859,6.68403)(1.17109,6.67885)(1.17359,6.67375)(1.1761,6.66871)
- (1.17862,6.66375)(1.18116,6.65887)(1.1837,6.65407)(1.18626,6.64935)
- (1.18883,6.64472)(1.19141,6.64019)(1.194,6.63574)(1.19661,6.6314)
- (1.19923,6.62715)(1.20186,6.62301)(1.20451,6.61898)
- (1.20718,6.61506)(1.20986,6.61125)(1.21255,6.60756)
- (1.21526,6.60399)(1.21799,6.60054)(1.22074,6.59722)
- (1.22351,6.59403)(1.22629,6.59098)(1.22909,6.58806)
- (1.23191,6.58528)(1.23475,6.58264)(1.23761,6.58015)
- (1.24049,6.57781)(1.24339,6.57562)(1.24631,6.57359)
- (1.24926,6.57172)(1.25223,6.57001)(1.25522,6.56847)(1.25823,6.5671)
- (1.26126,6.5659)(1.26432,6.56487)(1.26741,6.56403)(1.27052,6.56336)
- (1.27365,6.56289)(1.27681,6.5626)(1.28,6.5625)
-\path(1.28,6.5625)(1.6,6.5625)
-\allinethickness{0.0055348in}%
-\path(1.59481,6.56156)(1.59402,6.56359)
-\path(1.58962,6.56061)(1.58804,6.56467)
-\path(1.58443,6.55967)(1.58207,6.56576)
-\path(1.57924,6.55873)(1.57609,6.56685)
-\path(1.57406,6.55778)(1.57011,6.56793)
-\path(1.56887,6.55684)(1.56413,6.56902)
-\path(1.56368,6.5559)(1.55815,6.57011)
-\path(1.55849,6.55495)(1.55217,6.5712)
-\path(1.5533,6.55401)(1.5462,6.57228)
-\path(1.54811,6.55307)(1.54292,6.56641)
-\path(1.55244,6.57115)(1.54292,6.56745)
-\path(1.56195,6.56942)(1.54292,6.56202)
-\path(1.57146,6.56769)(1.54292,6.55659)
-\path(1.58097,6.56596)(1.54755,6.55296)
-\path(1.59049,6.56423)(1.57377,6.55773)
-\allinethickness{1.2pt}%
-\path(1.54292,6.5625)(1.54292,6.55212)(1.6,6.5625)(1.54292,6.57288)(1.54292,6.5625)
-\path(1.6,6.5625)(2.24,6.5625)
-\allinethickness{0.0055348in}%
-\path(2.18926,6.57172)(2.18292,6.56591)
-\path(2.19561,6.57057)(2.18292,6.55895)
-\path(2.20195,6.56942)(2.1831,6.55216)
-\path(2.20829,6.56827)(2.19259,6.55388)
-\path(2.21463,6.56711)(2.20207,6.5556)
-\path(2.22097,6.56596)(2.21155,6.55733)
-\path(2.22732,6.56481)(2.22103,6.55905)
-\path(2.23366,6.56365)(2.23052,6.56078)
-\path(2.18292,6.5602)(2.18926,6.55328)
-\path(2.18292,6.56827)(2.19561,6.55443)
-\path(2.18674,6.57218)(2.20195,6.55558)
-\path(2.19562,6.57057)(2.20829,6.55673)
-\path(2.20449,6.56896)(2.21463,6.55789)
-\path(2.21337,6.56734)(2.22097,6.55904)
-\path(2.22225,6.56573)(2.22732,6.56019)
-\path(2.23112,6.56411)(2.23366,6.56135)
-\allinethickness{1.2pt}%
-\path(2.18292,6.5625)(2.18292,6.55212)(2.24,6.5625)
- (2.18292,6.57288)(2.18292,6.5625)
-\put(1.6,6.61785){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\footnotesize \texttt{dvi}}}}}
-\put(1.6,6.5625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(2.21793,6.59482){\makebox(0,0)[br]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\footnotesize \texttt{ps}}}}}
-\put(2.24,6.5625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(0.96,6.09375)(0.963187,6.09385)(0.966347,6.09414)
- (0.969482,6.09461)(0.972591,6.09528)(0.975676,6.09612)
- (0.978736,6.09715)(0.981772,6.09835)(0.984785,6.09972)
- (0.987774,6.10126)(0.990741,6.10297)(0.993685,6.10484)
- (0.996608,6.10687)(0.999509,6.10906)(1.00239,6.1114)
- (1.00525,6.11389)(1.00809,6.11653)(1.01091,6.11931)
- (1.01371,6.12223)(1.01649,6.12528)(1.01926,6.12847)
- (1.02201,6.13179)(1.02474,6.13524)(1.02745,6.13881)(1.03014,6.1425)
- (1.03282,6.14631)(1.03549,6.15023)(1.03814,6.15426)(1.04077,6.1584)
- (1.04339,6.16265)(1.046,6.16699)(1.04859,6.17144)(1.05117,6.17597)
- (1.05374,6.1806)(1.0563,6.18532)(1.05884,6.19012)(1.06138,6.195)
- (1.0639,6.19996)(1.06641,6.205)(1.06891,6.2101)(1.07141,6.21528)
- (1.07389,6.22052)(1.07637,6.22582)(1.07884,6.23118)(1.0813,6.2366)
- (1.08375,6.24207)(1.0862,6.24758)(1.08864,6.25315)(1.09107,6.25875)
- (1.0935,6.26439)(1.09593,6.27007)(1.09835,6.27579)(1.10076,6.28153)
- (1.10317,6.2873)(1.10558,6.29309)(1.10799,6.2989)(1.1104,6.30472)
- (1.1128,6.31056)(1.1152,6.31641)(1.1176,6.32227)(1.12,6.32812)
- (1.1224,6.33398)(1.1248,6.33984)(1.1272,6.34569)(1.1296,6.35153)
- (1.13201,6.35735)(1.13442,6.36316)(1.13683,6.36895)
- (1.13924,6.37472)(1.14165,6.38046)(1.14407,6.38618)(1.1465,6.39186)
- (1.14893,6.3975)(1.15136,6.4031)(1.1538,6.40867)(1.15625,6.41418)
- (1.1587,6.41965)(1.16116,6.42507)(1.16363,6.43043)(1.16611,6.43573)
- (1.16859,6.44097)(1.17109,6.44615)(1.17359,6.45125)(1.1761,6.45629)
- (1.17862,6.46125)(1.18116,6.46613)(1.1837,6.47093)(1.18626,6.47565)
- (1.18883,6.48028)(1.19141,6.48481)(1.194,6.48926)(1.19661,6.4936)
- (1.19923,6.49785)(1.20186,6.50199)(1.20451,6.50602)
- (1.20718,6.50994)(1.20986,6.51375)(1.21255,6.51744)
- (1.21526,6.52101)(1.21799,6.52446)(1.22074,6.52778)
- (1.22351,6.53097)(1.22629,6.53402)(1.22909,6.53694)
- (1.23191,6.53972)(1.23475,6.54236)(1.23761,6.54485)
- (1.24049,6.54719)(1.24339,6.54938)(1.24631,6.55141)
- (1.24926,6.55328)(1.25223,6.55499)(1.25522,6.55653)(1.25823,6.5579)
- (1.26126,6.5591)(1.26432,6.56013)(1.26741,6.56097)(1.27052,6.56164)
- (1.27365,6.56211)(1.27681,6.5624)(1.28,6.5625)
-\put(0.97999,6.03519){\makebox(0,0)[t]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\footnotesize \texttt{tex}}}}}
-\put(0.96,6.09375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(2.24,6.5625)(2.24533,6.55472)(2.25067,6.54701)(2.256,6.53936)
- (2.26133,6.53177)(2.26667,6.52425)(2.272,6.5168)(2.27733,6.50941)
- (2.28267,6.50208)(2.288,6.49482)(2.29333,6.48763)(2.29867,6.4805)
- (2.304,6.47344)(2.30933,6.46644)(2.31467,6.45951)(2.32,6.45264)
- (2.32533,6.44583)(2.33067,6.4391)(2.336,6.43242)(2.34133,6.42581)
- (2.34667,6.41927)(2.352,6.41279)(2.35733,6.40638)(2.36267,6.40003)
- (2.368,6.39375)(2.37333,6.38753)(2.37867,6.38138)(2.384,6.37529)
- (2.38933,6.36927)(2.39467,6.36331)(2.4,6.35742)(2.40533,6.3516)
- (2.41067,6.34583)(2.416,6.34014)(2.42133,6.33451)(2.42667,6.32894)
- (2.432,6.32344)(2.43733,6.318)(2.44267,6.31263)(2.448,6.30732)
- (2.45333,6.30208)(2.45867,6.29691)(2.464,6.2918)(2.46933,6.28675)
- (2.47467,6.28177)(2.48,6.27686)(2.48533,6.27201)(2.49067,6.26722)
- (2.496,6.2625)(2.50133,6.25785)(2.50667,6.25326)(2.512,6.24873)
- (2.51733,6.24427)(2.52267,6.23988)(2.528,6.23555)(2.53333,6.23128)
- (2.53867,6.22708)(2.544,6.22295)(2.54933,6.21888)(2.55467,6.21488)
- (2.56,6.21094)(2.56533,6.20706)(2.57067,6.20326)(2.576,6.19951)
- (2.58133,6.19583)(2.58667,6.19222)(2.592,6.18867)(2.59733,6.18519)
- (2.60267,6.18177)(2.608,6.17842)(2.61333,6.17513)(2.61867,6.17191)
- (2.624,6.16875)(2.62933,6.16566)(2.63467,6.16263)(2.64,6.15967)
- (2.64533,6.15677)(2.65067,6.15394)(2.656,6.15117)(2.66133,6.14847)
- (2.66667,6.14583)(2.672,6.14326)(2.67733,6.14076)(2.68267,6.13831)
- (2.688,6.13594)(2.69333,6.13363)(2.69867,6.13138)(2.704,6.1292)
- (2.70933,6.12708)(2.71467,6.12503)(2.72,6.12305)(2.72533,6.12113)
- (2.73067,6.11927)(2.736,6.11748)(2.74133,6.11576)(2.74667,6.1141)
- (2.752,6.1125)(2.75733,6.11097)(2.76267,6.10951)(2.768,6.10811)
- (2.77333,6.10677)(2.77867,6.1055)(2.784,6.1043)(2.78933,6.10316)
- (2.79467,6.10208)(2.8,6.10107)(2.80533,6.10013)(2.81067,6.09925)
- (2.816,6.09844)(2.82133,6.09769)(2.82667,6.09701)(2.832,6.09639)
- (2.83733,6.09583)(2.84267,6.09535)(2.848,6.09492)(2.85333,6.09456)
- (2.85867,6.09427)(2.864,6.09404)(2.86933,6.09388)(2.87467,6.09378)(2.88,6.09375)
-\allinethickness{0.0055348in}%
-\path(2.82289,6.08916)(2.83102,6.08515)
-\path(2.82293,6.09461)(2.83919,6.08659)
-\path(2.82296,6.10005)(2.84735,6.08802)
-\path(2.82634,6.10385)(2.85551,6.08945)
-\path(2.84423,6.10048)(2.86367,6.09088)
-\path(2.86211,6.09712)(2.87184,6.09232)
-\path(2.8738,6.09266)(2.87482,6.09473)
-\path(2.8676,6.09157)(2.86963,6.0957)
-\path(2.8614,6.09048)(2.86445,6.09668)
-\path(2.8552,6.0894)(2.85927,6.09765)
-\path(2.84899,6.08831)(2.85408,6.09863)
-\path(2.84279,6.08722)(2.8489,6.0996)
-\path(2.83659,6.08613)(2.84372,6.10058)
-\path(2.83039,6.08504)(2.83854,6.10155)
-\path(2.82419,6.08395)(2.83335,6.10253)
-\path(2.82292,6.09285)(2.82817,6.1035)
-\allinethickness{1.2pt}%
-\path(2.82292,6.0941)(2.82286,6.08372)(2.88,6.09375)
- (2.82299,6.10448)(2.82292,6.0941)
-\put(2.93535,6.09375){\makebox(0,0)[l]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\footnotesize \texttt{pdf}}}}}
-\put(2.88,6.09375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{0.4pt}%
-\color{rgb_7f7f7f}%
-\path(2.24,6.5625)(2.24533,6.57028)(2.25067,6.57799)(2.256,6.58564)
- (2.26133,6.59323)(2.26667,6.60075)(2.272,6.6082)(2.27733,6.61559)
- (2.28267,6.62292)(2.288,6.63018)(2.29333,6.63737)(2.29867,6.6445)
- (2.304,6.65156)(2.30933,6.65856)(2.31467,6.66549)(2.32,6.67236)
- (2.32533,6.67917)(2.33067,6.6859)(2.336,6.69258)(2.34133,6.69919)
- (2.34667,6.70573)(2.352,6.71221)(2.35733,6.71862)(2.36267,6.72497)
- (2.368,6.73125)(2.37333,6.73747)(2.37867,6.74362)(2.384,6.74971)
- (2.38933,6.75573)(2.39467,6.76169)(2.4,6.76758)(2.40533,6.7734)
- (2.41067,6.77917)(2.416,6.78486)(2.42133,6.79049)(2.42667,6.79606)
- (2.432,6.80156)(2.43733,6.807)(2.44267,6.81237)(2.448,6.81768)
- (2.45333,6.82292)(2.45867,6.82809)(2.464,6.8332)(2.46933,6.83825)
- (2.47467,6.84323)(2.48,6.84814)(2.48533,6.85299)(2.49067,6.85778)
- (2.496,6.8625)(2.50133,6.86715)(2.50667,6.87174)(2.512,6.87627)
- (2.51733,6.88073)(2.52267,6.88512)(2.528,6.88945)(2.53333,6.89372)
- (2.53867,6.89792)(2.544,6.90205)(2.54933,6.90612)(2.55467,6.91012)
- (2.56,6.91406)(2.56533,6.91794)(2.57067,6.92174)(2.576,6.92549)
- (2.58133,6.92917)(2.58667,6.93278)(2.592,6.93633)(2.59733,6.93981)
- (2.60267,6.94323)(2.608,6.94658)(2.61333,6.94987)(2.61867,6.95309)
- (2.624,6.95625)(2.62933,6.95934)(2.63467,6.96237)(2.64,6.96533)
- (2.64533,6.96823)(2.65067,6.97106)(2.656,6.97383)(2.66133,6.97653)
- (2.66667,6.97917)(2.672,6.98174)(2.67733,6.98424)(2.68267,6.98669)
- (2.688,6.98906)(2.69333,6.99137)(2.69867,6.99362)(2.704,6.9958)
- (2.70933,6.99792)(2.71467,6.99997)(2.72,7.00195)(2.72533,7.00387)
- (2.73067,7.00573)(2.736,7.00752)(2.74133,7.00924)(2.74667,7.0109)
- (2.752,7.0125)(2.75733,7.01403)(2.76267,7.01549)(2.768,7.01689)
- (2.77333,7.01823)(2.77867,7.0195)(2.784,7.0207)(2.78933,7.02184)
- (2.79467,7.02292)(2.8,7.02393)(2.80533,7.02487)(2.81067,7.02575)
- (2.816,7.02656)(2.82133,7.02731)(2.82667,7.02799)(2.832,7.02861)
- (2.83733,7.02917)(2.84267,7.02965)(2.848,7.03008)(2.85333,7.03044)
- (2.85867,7.03073)(2.864,7.03096)(2.86933,7.03112)(2.87467,7.03122)(2.88,7.03125)
-\path(2.87464,7.03024)(2.87481,7.03216)
-\path(2.86927,7.02923)(2.86961,7.03307)
-\path(2.86391,7.02822)(2.86442,7.03399)
-\path(2.85855,7.02721)(2.85922,7.0349)
-\path(2.85318,7.02621)(2.85403,7.03581)
-\path(2.84782,7.0252)(2.84883,7.03672)
-\path(2.84246,7.02419)(2.84364,7.03763)
-\path(2.8371,7.02318)(2.83844,7.03854)
-\path(2.83173,7.02217)(2.83325,7.03946)
-\path(2.82637,7.02116)(2.82805,7.04037)
-\path(2.87938,7.03113)(2.82289,7.03609)
-\path(2.86058,7.0276)(2.82292,7.0309)
-\path(2.84178,7.02406)(2.82296,7.02571)
-\path(2.82292,7.0309)(2.82299,7.02052)(2.88,7.03125)
- (2.82286,7.04128)(2.82292,7.0309)
-\put(2.86001,7.08981){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\footnotesize \texttt{eps}}}}
-\put(2.88,7.03125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(2.88,7.03125)(3.52,7.03125)
-\path(3.47434,7.03955)(3.46292,7.03623)
-\path(3.48575,7.03748)(3.46292,7.03083)
-\path(3.49717,7.0354)(3.46292,7.02543)
-\path(3.50858,7.03333)(3.4706,7.02227)
-\path(3.46292,7.03964)(3.46811,7.02182)
-\path(3.46808,7.04069)(3.4733,7.02276)
-\path(3.47385,7.03964)(3.47849,7.0237)
-\path(3.47962,7.03859)(3.48368,7.02465)
-\path(3.48539,7.03754)(3.48887,7.02559)
-\path(3.49116,7.03649)(3.49406,7.02653)
-\path(3.49692,7.03545)(3.49924,7.02748)
-\path(3.50269,7.0344)(3.50443,7.02842)
-\path(3.50846,7.03335)(3.50962,7.02936)
-\path(3.51423,7.0323)(3.51481,7.03031)
-\path(3.46292,7.03125)(3.46292,7.02087)(3.52,7.03125)
- (3.46292,7.04163)(3.46292,7.03125)
-\put(3.57535,7.03125){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\footnotesize \begin{minipage}{0.225in}\texttt{png mng gif}\end{minipage}}}}
-\put(3.52,7.03125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(1.92,6.09375){\makebox(0,0)[c]{\hbox{\color{rgb_009800}\texttt{\Large laps}}}}
-\allinethickness{1.2pt}%
-\color{rgb_ff0000}%
-\path(0.32,5.15625)(0.96,5.15625)
-\allinethickness{0.0055348in}%
-\path(0.902922,5.15435)(0.90863,5.14691)
-\path(0.902922,5.16284)(0.914338,5.14795)
-\path(0.907102,5.16587)(0.920046,5.14899)
-\path(0.914659,5.16449)(0.925753,5.15002)
-\path(0.922216,5.16312)(0.931461,5.15106)
-\path(0.929773,5.16175)(0.937169,5.1521)
-\path(0.93733,5.16037)(0.942877,5.15314)
-\path(0.944886,5.159)(0.948584,5.15417)
-\path(0.952443,5.15762)(0.954292,5.15521)
-\path(0.948429,5.15415)(0.952865,5.15755)
-\path(0.936859,5.15204)(0.945731,5.15884)
-\path(0.925288,5.14994)(0.938596,5.16014)
-\path(0.913717,5.14783)(0.931461,5.16144)
-\path(0.902922,5.14633)(0.924326,5.16274)
-\path(0.902922,5.15309)(0.917192,5.16403)
-\path(0.902922,5.15986)(0.910057,5.16533)
-\allinethickness{1.2pt}%
-\path(0.902922,5.15625)(0.902922,5.14587)(0.96,5.15625)
- (0.902922,5.16663)(0.902922,5.15625)
-\put(0.32,5.2116){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{xp}, \texttt{flx}}}}}}
-\put(0.32,5.15625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(0.97999,5.21481){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eepic}}}}}}
-\put(0.96,5.15625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{0.4pt}%
-\color{rgb_7f7f7f}%
-\path(0.96,5.15625)(0.963187,5.15615)(0.966347,5.15586)
- (0.969482,5.15539)(0.972591,5.15472)(0.975676,5.15388)
- (0.978736,5.15285)(0.981772,5.15165)(0.984785,5.15028)
- (0.987774,5.14874)(0.990741,5.14703)(0.993685,5.14516)
- (0.996608,5.14313)(0.999509,5.14094)(1.00239,5.1386)
- (1.00525,5.13611)(1.00809,5.13347)(1.01091,5.13069)
- (1.01371,5.12777)(1.01649,5.12472)(1.01926,5.12153)
- (1.02201,5.11821)(1.02474,5.11476)(1.02745,5.11119)(1.03014,5.1075)
- (1.03282,5.10369)(1.03549,5.09977)(1.03814,5.09574)(1.04077,5.0916)
- (1.04339,5.08735)(1.046,5.08301)(1.04859,5.07856)(1.05117,5.07403)
- (1.05374,5.0694)(1.0563,5.06468)(1.05884,5.05988)(1.06138,5.055)
- (1.0639,5.05004)(1.06641,5.045)(1.06891,5.0399)(1.07141,5.03472)
- (1.07389,5.02948)(1.07637,5.02418)(1.07884,5.01882)(1.0813,5.0134)
- (1.08375,5.00793)(1.0862,5.00242)(1.08864,4.99685)(1.09107,4.99125)
- (1.0935,4.98561)(1.09593,4.97993)(1.09835,4.97421)(1.10076,4.96847)
- (1.10317,4.9627)(1.10558,4.95691)(1.10799,4.9511)(1.1104,4.94528)
- (1.1128,4.93944)(1.1152,4.93359)(1.1176,4.92773)(1.12,4.92188)
- (1.1224,4.91602)(1.1248,4.91016)(1.1272,4.90431)(1.1296,4.89847)
- (1.13201,4.89265)(1.13442,4.88684)(1.13683,4.88105)
- (1.13924,4.87528)(1.14165,4.86954)(1.14407,4.86382)(1.1465,4.85814)
- (1.14893,4.8525)(1.15136,4.8469)(1.1538,4.84133)(1.15625,4.83582)
- (1.1587,4.83035)(1.16116,4.82493)(1.16363,4.81957)(1.16611,4.81427)
- (1.16859,4.80903)(1.17109,4.80385)(1.17359,4.79875)(1.1761,4.79371)
- (1.17862,4.78875)(1.18116,4.78387)(1.1837,4.77907)(1.18626,4.77435)
- (1.18883,4.76972)(1.19141,4.76519)(1.194,4.76074)(1.19661,4.7564)
- (1.19923,4.75215)(1.20186,4.74801)(1.20451,4.74398)
- (1.20718,4.74006)(1.20986,4.73625)(1.21255,4.73256)
- (1.21526,4.72899)(1.21799,4.72554)(1.22074,4.72222)
- (1.22351,4.71903)(1.22629,4.71598)(1.22909,4.71306)
- (1.23191,4.71028)(1.23475,4.70764)(1.23761,4.70515)
- (1.24049,4.70281)(1.24339,4.70063)(1.24631,4.69859)
- (1.24926,4.69672)(1.25223,4.69501)(1.25522,4.69347)(1.25823,4.6921)
- (1.26126,4.6909)(1.26432,4.68987)(1.26741,4.68903)(1.27052,4.68836)
- (1.27365,4.68789)(1.27681,4.6876)(1.28,4.6875)
-\path(1.28,4.6875)(1.6,4.6875)
-\path(1.59287,4.6862)(1.59429,4.68854)
-\path(1.58575,4.68491)(1.58858,4.68958)
-\path(1.57862,4.68361)(1.58288,4.69061)
-\path(1.5715,4.68232)(1.57717,4.69165)
-\path(1.56437,4.68102)(1.57146,4.69269)
-\path(1.55725,4.67973)(1.56575,4.69373)
-\path(1.55012,4.67843)(1.56005,4.69476)
-\path(1.543,4.67714)(1.55434,4.6958)
-\path(1.54292,4.68744)(1.54863,4.69684)
-\path(1.59185,4.68602)(1.58488,4.69025)
-\path(1.58369,4.68453)(1.56976,4.693)
-\path(1.57554,4.68305)(1.55464,4.69575)
-\path(1.56738,4.68157)(1.54292,4.69643)
-\path(1.55923,4.68009)(1.54292,4.68999)
-\path(1.55108,4.6786)(1.54292,4.68356)
-\path(1.54292,4.6875)(1.54292,4.67712)(1.6,4.6875)(1.54292,4.69788)(1.54292,4.6875)
-\path(1.6,4.6875)(2.24,4.6875)
-\path(2.22632,4.68501)(2.18292,4.69269)
-\path(2.21185,4.68238)(2.18292,4.6875)
-\path(2.19739,4.67975)(2.18292,4.68231)
-\path(2.18811,4.69693)(2.18466,4.67744)
-\path(2.1933,4.69599)(2.1902,4.67844)
-\path(2.19849,4.69505)(2.19573,4.67945)
-\path(2.20368,4.6941)(2.20126,4.68046)
-\path(2.20887,4.69316)(2.2068,4.68146)
-\path(2.21406,4.69222)(2.21233,4.68247)
-\path(2.21924,4.69127)(2.21787,4.68348)
-\path(2.22443,4.69033)(2.2234,4.68448)
-\path(2.22962,4.68939)(2.22893,4.68549)
-\path(2.23481,4.68844)(2.23447,4.68649)
-\path(2.18292,4.6875)(2.18292,4.67712)(2.24,4.6875)
- (2.18292,4.69788)(2.18292,4.6875)
-\put(1.6,4.74285){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{dvi}}}}}
-\put(1.6,4.6875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(2.21793,4.71982){\makebox(0,0)[br]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{ps}}}}}
-\put(2.24,4.6875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(0.96,4.21875)(0.963187,4.21885)(0.966347,4.21914)
- (0.969482,4.21961)(0.972591,4.22028)(0.975676,4.22112)
- (0.978736,4.22215)(0.981772,4.22335)(0.984785,4.22472)
- (0.987774,4.22626)(0.990741,4.22797)(0.993685,4.22984)
- (0.996608,4.23188)(0.999509,4.23406)(1.00239,4.2364)
- (1.00525,4.23889)(1.00809,4.24153)(1.01091,4.24431)
- (1.01371,4.24723)(1.01649,4.25028)(1.01926,4.25347)
- (1.02201,4.25679)(1.02474,4.26024)(1.02745,4.26381)(1.03014,4.2675)
- (1.03282,4.27131)(1.03549,4.27523)(1.03814,4.27926)(1.04077,4.2834)
- (1.04339,4.28765)(1.046,4.29199)(1.04859,4.29644)(1.05117,4.30097)
- (1.05374,4.3056)(1.0563,4.31032)(1.05884,4.31512)(1.06138,4.32)
- (1.0639,4.32496)(1.06641,4.33)(1.06891,4.3351)(1.07141,4.34028)
- (1.07389,4.34552)(1.07637,4.35082)(1.07884,4.35618)(1.0813,4.3616)
- (1.08375,4.36707)(1.0862,4.37258)(1.08864,4.37815)(1.09107,4.38375)
- (1.0935,4.38939)(1.09593,4.39507)(1.09835,4.40079)(1.10076,4.40653)
- (1.10317,4.4123)(1.10558,4.41809)(1.10799,4.4239)(1.1104,4.42972)
- (1.1128,4.43556)(1.1152,4.44141)(1.1176,4.44727)(1.12,4.45312)
- (1.1224,4.45898)(1.1248,4.46484)(1.1272,4.47069)(1.1296,4.47653)
- (1.13201,4.48235)(1.13442,4.48816)(1.13683,4.49395)
- (1.13924,4.49972)(1.14165,4.50546)(1.14407,4.51118)(1.1465,4.51686)
- (1.14893,4.5225)(1.15136,4.5281)(1.1538,4.53367)(1.15625,4.53918)
- (1.1587,4.54465)(1.16116,4.55007)(1.16363,4.55543)(1.16611,4.56073)
- (1.16859,4.56597)(1.17109,4.57115)(1.17359,4.57625)(1.1761,4.58129)
- (1.17862,4.58625)(1.18116,4.59113)(1.1837,4.59593)(1.18626,4.60065)
- (1.18883,4.60528)(1.19141,4.60981)(1.194,4.61426)(1.19661,4.6186)
- (1.19923,4.62285)(1.20186,4.62699)(1.20451,4.63102)
- (1.20718,4.63494)(1.20986,4.63875)(1.21255,4.64244)
- (1.21526,4.64601)(1.21799,4.64946)(1.22074,4.65278)
- (1.22351,4.65597)(1.22629,4.65902)(1.22909,4.66194)
- (1.23191,4.66472)(1.23475,4.66736)(1.23761,4.66985)
- (1.24049,4.67219)(1.24339,4.67437)(1.24631,4.67641)
- (1.24926,4.67828)(1.25223,4.67999)(1.25522,4.68153)(1.25823,4.6829)
- (1.26126,4.6841)(1.26432,4.68513)(1.26741,4.68597)(1.27052,4.68664)
- (1.27365,4.68711)(1.27681,4.6874)(1.28,4.6875)
-\put(0.97999,4.16019){\makebox(0,0)[t]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{tex}}}}}
-\put(0.96,4.21875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(2.24,4.6875)(2.24533,4.67972)(2.25067,4.67201)(2.256,4.66436)
- (2.26133,4.65677)(2.26667,4.64925)(2.272,4.6418)(2.27733,4.63441)
- (2.28267,4.62708)(2.288,4.61982)(2.29333,4.61263)(2.29867,4.6055)
- (2.304,4.59844)(2.30933,4.59144)(2.31467,4.58451)(2.32,4.57764)
- (2.32533,4.57083)(2.33067,4.5641)(2.336,4.55742)(2.34133,4.55081)
- (2.34667,4.54427)(2.352,4.53779)(2.35733,4.53138)(2.36267,4.52503)
- (2.368,4.51875)(2.37333,4.51253)(2.37867,4.50638)(2.384,4.50029)
- (2.38933,4.49427)(2.39467,4.48831)(2.4,4.48242)(2.40533,4.4766)
- (2.41067,4.47083)(2.416,4.46514)(2.42133,4.45951)(2.42667,4.45394)
- (2.432,4.44844)(2.43733,4.443)(2.44267,4.43763)(2.448,4.43232)
- (2.45333,4.42708)(2.45867,4.42191)(2.464,4.4168)(2.46933,4.41175)
- (2.47467,4.40677)(2.48,4.40186)(2.48533,4.39701)(2.49067,4.39222)
- (2.496,4.3875)(2.50133,4.38285)(2.50667,4.37826)(2.512,4.37373)
- (2.51733,4.36927)(2.52267,4.36488)(2.528,4.36055)(2.53333,4.35628)
- (2.53867,4.35208)(2.544,4.34795)(2.54933,4.34388)(2.55467,4.33988)
- (2.56,4.33594)(2.56533,4.33206)(2.57067,4.32826)(2.576,4.32451)
- (2.58133,4.32083)(2.58667,4.31722)(2.592,4.31367)(2.59733,4.31019)
- (2.60267,4.30677)(2.608,4.30342)(2.61333,4.30013)(2.61867,4.29691)
- (2.624,4.29375)(2.62933,4.29066)(2.63467,4.28763)(2.64,4.28467)
- (2.64533,4.28177)(2.65067,4.27894)(2.656,4.27617)(2.66133,4.27347)
- (2.66667,4.27083)(2.672,4.26826)(2.67733,4.26576)(2.68267,4.26331)
- (2.688,4.26094)(2.69333,4.25863)(2.69867,4.25638)(2.704,4.2542)
- (2.70933,4.25208)(2.71467,4.25003)(2.72,4.24805)(2.72533,4.24613)
- (2.73067,4.24427)(2.736,4.24248)(2.74133,4.24076)(2.74667,4.2391)
- (2.752,4.2375)(2.75733,4.23597)(2.76267,4.23451)(2.768,4.23311)
- (2.77333,4.23177)(2.77867,4.2305)(2.784,4.2293)(2.78933,4.22816)
- (2.79467,4.22708)(2.8,4.22607)(2.80533,4.22513)(2.81067,4.22425)
- (2.816,4.22344)(2.82133,4.22269)(2.82667,4.22201)(2.832,4.22139)
- (2.83733,4.22083)(2.84267,4.22035)(2.848,4.21992)(2.85333,4.21956)
- (2.85867,4.21927)(2.864,4.21904)(2.86933,4.21888)(2.87467,4.21878)(2.88,4.21875)
-\path(2.82416,4.22925)(2.82805,4.20963)
-\path(2.82975,4.2282)(2.83325,4.21054)
-\path(2.83533,4.22715)(2.83844,4.21146)
-\path(2.84091,4.2261)(2.84364,4.21237)
-\path(2.8465,4.22505)(2.84883,4.21328)
-\path(2.85208,4.224)(2.85403,4.21419)
-\path(2.85767,4.22295)(2.85922,4.2151)
-\path(2.86325,4.2219)(2.86442,4.21601)
-\path(2.86883,4.22085)(2.86961,4.21693)
-\path(2.87442,4.2198)(2.87481,4.21784)
-\path(2.82289,4.21293)(2.86575,4.22143)
-\path(2.82292,4.21845)(2.85149,4.22411)
-\path(2.82295,4.22396)(2.83724,4.22679)
-\path(2.82292,4.2191)(2.82286,4.20872)(2.88,4.21875)
- (2.82299,4.22948)(2.82292,4.2191)
-\put(2.93535,4.21875){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{pdf}}}}}
-\put(2.88,4.21875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(2.24,4.6875)(2.24533,4.69528)(2.25067,4.70299)(2.256,4.71064)
- (2.26133,4.71823)(2.26667,4.72575)(2.272,4.7332)(2.27733,4.74059)
- (2.28267,4.74792)(2.288,4.75518)(2.29333,4.76237)(2.29867,4.7695)
- (2.304,4.77656)(2.30933,4.78356)(2.31467,4.79049)(2.32,4.79736)
- (2.32533,4.80417)(2.33067,4.8109)(2.336,4.81758)(2.34133,4.82419)
- (2.34667,4.83073)(2.352,4.83721)(2.35733,4.84362)(2.36267,4.84997)
- (2.368,4.85625)(2.37333,4.86247)(2.37867,4.86862)(2.384,4.87471)
- (2.38933,4.88073)(2.39467,4.88669)(2.4,4.89258)(2.40533,4.8984)
- (2.41067,4.90417)(2.416,4.90986)(2.42133,4.91549)(2.42667,4.92106)
- (2.432,4.92656)(2.43733,4.932)(2.44267,4.93737)(2.448,4.94268)
- (2.45333,4.94792)(2.45867,4.95309)(2.464,4.9582)(2.46933,4.96325)
- (2.47467,4.96823)(2.48,4.97314)(2.48533,4.97799)(2.49067,4.98278)
- (2.496,4.9875)(2.50133,4.99215)(2.50667,4.99674)(2.512,5.00127)
- (2.51733,5.00573)(2.52267,5.01012)(2.528,5.01445)(2.53333,5.01872)
- (2.53867,5.02292)(2.544,5.02705)(2.54933,5.03112)(2.55467,5.03512)
- (2.56,5.03906)(2.56533,5.04294)(2.57067,5.04674)(2.576,5.05049)
- (2.58133,5.05417)(2.58667,5.05778)(2.592,5.06133)(2.59733,5.06481)
- (2.60267,5.06823)(2.608,5.07158)(2.61333,5.07487)(2.61867,5.07809)
- (2.624,5.08125)(2.62933,5.08434)(2.63467,5.08737)(2.64,5.09033)
- (2.64533,5.09323)(2.65067,5.09606)(2.656,5.09883)(2.66133,5.10153)
- (2.66667,5.10417)(2.672,5.10674)(2.67733,5.10924)(2.68267,5.11169)
- (2.688,5.11406)(2.69333,5.11637)(2.69867,5.11862)(2.704,5.1208)
- (2.70933,5.12292)(2.71467,5.12497)(2.72,5.12695)(2.72533,5.12887)
- (2.73067,5.13073)(2.736,5.13252)(2.74133,5.13424)(2.74667,5.1359)
- (2.752,5.1375)(2.75733,5.13903)(2.76267,5.14049)(2.768,5.14189)
- (2.77333,5.14323)(2.77867,5.1445)(2.784,5.1457)(2.78933,5.14684)
- (2.79467,5.14792)(2.8,5.14893)(2.80533,5.14987)(2.81067,5.15075)
- (2.816,5.15156)(2.82133,5.15231)(2.82667,5.15299)(2.832,5.15361)
- (2.83733,5.15417)(2.84267,5.15465)(2.848,5.15508)(2.85333,5.15544)
- (2.85867,5.15573)(2.864,5.15596)(2.86933,5.15612)(2.87467,5.15622)(2.88,5.15625)
-\path(2.86706,5.15382)(2.87286,5.1575)
-\path(2.85412,5.15138)(2.86572,5.15876)
-\path(2.84118,5.14895)(2.85857,5.16001)
-\path(2.82824,5.14651)(2.85143,5.16126)
-\path(2.82297,5.14896)(2.84429,5.16252)
-\path(2.82293,5.15473)(2.83715,5.16377)
-\path(2.8229,5.1605)(2.83,5.16503)
-\path(2.8743,5.15518)(2.87281,5.15751)
-\path(2.8686,5.1541)(2.86563,5.15877)
-\path(2.8629,5.15303)(2.85844,5.16003)
-\path(2.85719,5.15196)(2.85126,5.1613)
-\path(2.85149,5.15089)(2.84407,5.16256)
-\path(2.84579,5.14981)(2.83688,5.16382)
-\path(2.84009,5.14874)(2.8297,5.16508)
-\path(2.83439,5.14767)(2.82286,5.16579)
-\path(2.82869,5.1466)(2.82292,5.15566)
-\path(2.82292,5.1559)(2.82299,5.14552)(2.88,5.15625)
- (2.82286,5.16628)(2.82292,5.1559)
-\put(2.86001,5.21481){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{eps}}}}}
-\put(2.88,5.15625){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(2.88,5.15625)(3.52,5.15625)
-\path(3.51287,5.15495)(3.50817,5.1584)
-\path(3.50573,5.15366)(3.49634,5.16055)
-\path(3.4986,5.15236)(3.48451,5.1627)
-\path(3.49146,5.15106)(3.47268,5.16485)
-\path(3.48433,5.14976)(3.46292,5.16548)
-\path(3.47719,5.14847)(3.46292,5.15895)
-\path(3.47006,5.14717)(3.46292,5.15241)
-\path(3.46863,5.16559)(3.46292,5.15782)
-\path(3.47434,5.16455)(3.46292,5.14901)
-\path(3.48005,5.16351)(3.46773,5.14675)
-\path(3.48575,5.16248)(3.4752,5.1481)
-\path(3.49146,5.16144)(3.48267,5.14946)
-\path(3.49717,5.1604)(3.49013,5.15082)
-\path(3.50288,5.15936)(3.4976,5.15218)
-\path(3.50858,5.15833)(3.50507,5.15353)
-\path(3.51429,5.15729)(3.51253,5.15489)
-\path(3.46292,5.15625)(3.46292,5.14587)(3.52,5.15625)
- (3.46292,5.16663)(3.46292,5.15625)
-\put(3.57535,5.15625){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \begin{minipage}{0.225in}\texttt{png mng gif}\end{minipage}}}}}
-\put(3.52,5.15625){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(1.92,4.21875){\makebox(0,0)[c]{\hbox{\color{rgb_009800}\texttt{\Large epix}}}}
-\allinethickness{1.2pt}%
-\color{rgb_ff0000}%
-\path(0.32,3.28125)(0.96,3.28125)
-\allinethickness{0.0055348in}%
-\path(0.908111,3.29068)(0.902922,3.27138)
-\path(0.9133,3.28974)(0.9085,3.27189)
-\path(0.918489,3.2888)(0.914223,3.27293)
-\path(0.923678,3.28785)(0.919945,3.27397)
-\path(0.928867,3.28691)(0.925667,3.27501)
-\path(0.934056,3.28597)(0.931389,3.27605)
-\path(0.939244,3.28502)(0.937111,3.27709)
-\path(0.944433,3.28408)(0.942833,3.27813)
-\path(0.949622,3.28314)(0.948556,3.27917)
-\path(0.954811,3.28219)(0.954278,3.28021)
-\path(0.902922,3.27602)(0.914338,3.27295)
-\path(0.902922,3.28116)(0.925753,3.27502)
-\path(0.902922,3.28631)(0.937169,3.2771)
-\path(0.902922,3.29145)(0.948584,3.27917)
-\allinethickness{1.2pt}%
-\path(0.902922,3.28125)(0.902922,3.27087)(0.96,3.28125)
- (0.902922,3.29163)(0.902922,3.28125)
-\put(0.32,3.3366){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{xp}, \texttt{flx}}}}}}
-\put(0.32,3.28125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(0.97999,3.33981){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eepic}}}}}}
-\put(0.96,3.28125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(0.96,3.28125)(0.963187,3.28115)(0.966347,3.28086)
- (0.969482,3.28039)(0.972591,3.27972)(0.975676,3.27888)
- (0.978736,3.27785)(0.981772,3.27665)(0.984785,3.27528)
- (0.987774,3.27374)(0.990741,3.27203)(0.993685,3.27016)
- (0.996608,3.26813)(0.999509,3.26594)(1.00239,3.2636)
- (1.00525,3.26111)(1.00809,3.25847)(1.01091,3.25569)
- (1.01371,3.25277)(1.01649,3.24972)(1.01926,3.24653)
- (1.02201,3.24321)(1.02474,3.23976)(1.02745,3.23619)(1.03014,3.2325)
- (1.03282,3.22869)(1.03549,3.22477)(1.03814,3.22074)(1.04077,3.2166)
- (1.04339,3.21235)(1.046,3.20801)(1.04859,3.20356)(1.05117,3.19903)
- (1.05374,3.1944)(1.0563,3.18968)(1.05884,3.18488)(1.06138,3.18)
- (1.0639,3.17504)(1.06641,3.17)(1.06891,3.1649)(1.07141,3.15972)
- (1.07389,3.15448)(1.07637,3.14918)(1.07884,3.14382)(1.0813,3.1384)
- (1.08375,3.13293)(1.0862,3.12742)(1.08864,3.12185)(1.09107,3.11625)
- (1.0935,3.11061)(1.09593,3.10493)(1.09835,3.09921)(1.10076,3.09347)
- (1.10317,3.0877)(1.10558,3.08191)(1.10799,3.0761)(1.1104,3.07028)
- (1.1128,3.06444)(1.1152,3.05859)(1.1176,3.05273)(1.12,3.04688)
- (1.1224,3.04102)(1.1248,3.03516)(1.1272,3.02931)(1.1296,3.02347)
- (1.13201,3.01765)(1.13442,3.01184)(1.13683,3.00605)
- (1.13924,3.00028)(1.14165,2.99454)(1.14407,2.98882)(1.1465,2.98314)
- (1.14893,2.9775)(1.15136,2.9719)(1.1538,2.96633)(1.15625,2.96082)
- (1.1587,2.95535)(1.16116,2.94993)(1.16363,2.94457)(1.16611,2.93927)
- (1.16859,2.93403)(1.17109,2.92885)(1.17359,2.92375)(1.1761,2.91871)
- (1.17862,2.91375)(1.18116,2.90887)(1.1837,2.90407)(1.18626,2.89935)
- (1.18883,2.89472)(1.19141,2.89019)(1.194,2.88574)(1.19661,2.8814)
- (1.19923,2.87715)(1.20186,2.87301)(1.20451,2.86898)
- (1.20718,2.86506)(1.20986,2.86125)(1.21255,2.85756)
- (1.21526,2.85399)(1.21799,2.85054)(1.22074,2.84722)
- (1.22351,2.84403)(1.22629,2.84098)(1.22909,2.83806)
- (1.23191,2.83528)(1.23475,2.83264)(1.23761,2.83015)
- (1.24049,2.82781)(1.24339,2.82563)(1.24631,2.82359)
- (1.24926,2.82172)(1.25223,2.82001)(1.25522,2.81847)(1.25823,2.8171)
- (1.26126,2.8159)(1.26432,2.81487)(1.26741,2.81403)(1.27052,2.81336)
- (1.27365,2.81289)(1.27681,2.8126)(1.28,2.8125)
-\path(1.28,2.8125)(1.6,2.8125)
-\allinethickness{0.0055348in}%
-\path(1.54292,2.80731)(1.59652,2.81313)
-\path(1.54292,2.8125)(1.57865,2.81638)
-\path(1.54292,2.81769)(1.56079,2.81963)
-\path(1.59481,2.81156)(1.5946,2.81348)
-\path(1.58962,2.81061)(1.5892,2.81446)
-\path(1.58443,2.80967)(1.58381,2.81544)
-\path(1.57924,2.80873)(1.57841,2.81643)
-\path(1.57406,2.80778)(1.57301,2.81741)
-\path(1.56887,2.80684)(1.56761,2.81839)
-\path(1.56368,2.8059)(1.56221,2.81937)
-\path(1.55849,2.80495)(1.55682,2.82035)
-\path(1.5533,2.80401)(1.55142,2.82133)
-\path(1.54811,2.80307)(1.54602,2.82231)
-\allinethickness{1.2pt}%
-\path(1.54292,2.8125)(1.54292,2.80212)(1.6,2.8125)(1.54292,2.82288)(1.54292,2.8125)
-\path(1.6,2.8125)(2.24,2.8125)
-\allinethickness{0.0055348in}%
-\path(2.23481,2.81156)(2.23373,2.81364)
-\path(2.22962,2.81061)(2.22746,2.81478)
-\path(2.22443,2.80967)(2.22119,2.81592)
-\path(2.21924,2.80873)(2.21492,2.81706)
-\path(2.21406,2.80778)(2.20864,2.8182)
-\path(2.20887,2.80684)(2.20237,2.81934)
-\path(2.20368,2.8059)(2.1961,2.82048)
-\path(2.19849,2.80495)(2.18983,2.82162)
-\path(2.1933,2.80401)(2.18356,2.82276)
-\path(2.18811,2.80307)(2.18292,2.81306)
-\path(2.19108,2.8214)(2.18292,2.81716)
-\path(2.19923,2.81991)(2.18292,2.81144)
-\path(2.20738,2.81843)(2.18292,2.80573)
-\path(2.21554,2.81695)(2.18919,2.80326)
-\path(2.22369,2.81547)(2.20612,2.80634)
-\path(2.23185,2.81398)(2.22306,2.80942)
-\allinethickness{1.2pt}%
-\path(2.18292,2.8125)(2.18292,2.80212)(2.24,2.8125)
- (2.18292,2.82288)(2.18292,2.8125)
-\put(1.6,2.86785){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{dvi}}}}}}
-\put(1.6,2.8125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(2.21793,2.84482){\makebox(0,0)[br]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{ps}}}}}}
-\put(2.24,2.8125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{0.4pt}%
-\color{rgb_7f7f7f}%
-\path(0.96,2.34375)(0.963187,2.34385)(0.966347,2.34414)
- (0.969482,2.34461)(0.972591,2.34528)(0.975676,2.34612)
- (0.978736,2.34715)(0.981772,2.34835)(0.984785,2.34972)
- (0.987774,2.35126)(0.990741,2.35297)(0.993685,2.35484)
- (0.996608,2.35688)(0.999509,2.35906)(1.00239,2.3614)
- (1.00525,2.36389)(1.00809,2.36653)(1.01091,2.36931)
- (1.01371,2.37223)(1.01649,2.37528)(1.01926,2.37847)
- (1.02201,2.38179)(1.02474,2.38524)(1.02745,2.38881)(1.03014,2.3925)
- (1.03282,2.39631)(1.03549,2.40023)(1.03814,2.40426)(1.04077,2.4084)
- (1.04339,2.41265)(1.046,2.41699)(1.04859,2.42144)(1.05117,2.42597)
- (1.05374,2.4306)(1.0563,2.43532)(1.05884,2.44012)(1.06138,2.445)
- (1.0639,2.44996)(1.06641,2.455)(1.06891,2.4601)(1.07141,2.46528)
- (1.07389,2.47052)(1.07637,2.47582)(1.07884,2.48118)(1.0813,2.4866)
- (1.08375,2.49207)(1.0862,2.49758)(1.08864,2.50315)(1.09107,2.50875)
- (1.0935,2.51439)(1.09593,2.52007)(1.09835,2.52579)(1.10076,2.53153)
- (1.10317,2.5373)(1.10558,2.54309)(1.10799,2.5489)(1.1104,2.55472)
- (1.1128,2.56056)(1.1152,2.56641)(1.1176,2.57227)(1.12,2.57812)
- (1.1224,2.58398)(1.1248,2.58984)(1.1272,2.59569)(1.1296,2.60153)
- (1.13201,2.60735)(1.13442,2.61316)(1.13683,2.61895)
- (1.13924,2.62472)(1.14165,2.63046)(1.14407,2.63618)(1.1465,2.64186)
- (1.14893,2.6475)(1.15136,2.6531)(1.1538,2.65867)(1.15625,2.66418)
- (1.1587,2.66965)(1.16116,2.67507)(1.16363,2.68043)(1.16611,2.68573)
- (1.16859,2.69097)(1.17109,2.69615)(1.17359,2.70125)(1.1761,2.70629)
- (1.17862,2.71125)(1.18116,2.71613)(1.1837,2.72093)(1.18626,2.72565)
- (1.18883,2.73028)(1.19141,2.73481)(1.194,2.73926)(1.19661,2.7436)
- (1.19923,2.74785)(1.20186,2.75199)(1.20451,2.75602)
- (1.20718,2.75994)(1.20986,2.76375)(1.21255,2.76744)
- (1.21526,2.77101)(1.21799,2.77446)(1.22074,2.77778)
- (1.22351,2.78097)(1.22629,2.78402)(1.22909,2.78694)
- (1.23191,2.78972)(1.23475,2.79236)(1.23761,2.79485)
- (1.24049,2.79719)(1.24339,2.79937)(1.24631,2.80141)
- (1.24926,2.80328)(1.25223,2.80499)(1.25522,2.80653)(1.25823,2.8079)
- (1.26126,2.8091)(1.26432,2.81013)(1.26741,2.81097)(1.27052,2.81164)
- (1.27365,2.81211)(1.27681,2.8124)(1.28,2.8125)
-\put(0.97999,2.28519){\makebox(0,0)[t]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{tex}}}}}
-\put(0.96,2.34375){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{1.2pt}%
-\color{rgb_ff0000}%
-\path(2.24,2.8125)(2.24533,2.80472)(2.25067,2.79701)(2.256,2.78936)
- (2.26133,2.78177)(2.26667,2.77425)(2.272,2.7668)(2.27733,2.75941)
- (2.28267,2.75208)(2.288,2.74482)(2.29333,2.73763)(2.29867,2.7305)
- (2.304,2.72344)(2.30933,2.71644)(2.31467,2.70951)(2.32,2.70264)
- (2.32533,2.69583)(2.33067,2.6891)(2.336,2.68242)(2.34133,2.67581)
- (2.34667,2.66927)(2.352,2.66279)(2.35733,2.65638)(2.36267,2.65003)
- (2.368,2.64375)(2.37333,2.63753)(2.37867,2.63138)(2.384,2.62529)
- (2.38933,2.61927)(2.39467,2.61331)(2.4,2.60742)(2.40533,2.6016)
- (2.41067,2.59583)(2.416,2.59014)(2.42133,2.58451)(2.42667,2.57894)
- (2.432,2.57344)(2.43733,2.568)(2.44267,2.56263)(2.448,2.55732)
- (2.45333,2.55208)(2.45867,2.54691)(2.464,2.5418)(2.46933,2.53675)
- (2.47467,2.53177)(2.48,2.52686)(2.48533,2.52201)(2.49067,2.51722)
- (2.496,2.5125)(2.50133,2.50785)(2.50667,2.50326)(2.512,2.49873)
- (2.51733,2.49427)(2.52267,2.48988)(2.528,2.48555)(2.53333,2.48128)
- (2.53867,2.47708)(2.544,2.47295)(2.54933,2.46888)(2.55467,2.46488)
- (2.56,2.46094)(2.56533,2.45706)(2.57067,2.45326)(2.576,2.44951)
- (2.58133,2.44583)(2.58667,2.44222)(2.592,2.43867)(2.59733,2.43519)
- (2.60267,2.43177)(2.608,2.42842)(2.61333,2.42513)(2.61867,2.42191)
- (2.624,2.41875)(2.62933,2.41566)(2.63467,2.41263)(2.64,2.40967)
- (2.64533,2.40677)(2.65067,2.40394)(2.656,2.40117)(2.66133,2.39847)
- (2.66667,2.39583)(2.672,2.39326)(2.67733,2.39076)(2.68267,2.38831)
- (2.688,2.38594)(2.69333,2.38363)(2.69867,2.38138)(2.704,2.3792)
- (2.70933,2.37708)(2.71467,2.37503)(2.72,2.37305)(2.72533,2.37113)
- (2.73067,2.36927)(2.736,2.36748)(2.74133,2.36576)(2.74667,2.3641)
- (2.752,2.3625)(2.75733,2.36097)(2.76267,2.35951)(2.768,2.35811)
- (2.77333,2.35677)(2.77867,2.3555)(2.784,2.3543)(2.78933,2.35316)
- (2.79467,2.35208)(2.8,2.35107)(2.80533,2.35013)(2.81067,2.34925)
- (2.816,2.34844)(2.82133,2.34769)(2.82667,2.34701)(2.832,2.34639)
- (2.83733,2.34583)(2.84267,2.34535)(2.848,2.34492)(2.85333,2.34456)
- (2.85867,2.34427)(2.864,2.34404)(2.86933,2.34388)(2.87467,2.34378)(2.88,2.34375)
-\allinethickness{0.0055348in}%
-\path(2.82869,2.3534)(2.82294,2.34686)
-\path(2.83439,2.35233)(2.82289,2.33925)
-\path(2.84009,2.35126)(2.82501,2.3341)
-\path(2.84579,2.35019)(2.83287,2.33548)
-\path(2.85149,2.34911)(2.84072,2.33686)
-\path(2.85719,2.34804)(2.84858,2.33823)
-\path(2.8629,2.34697)(2.85643,2.33961)
-\path(2.8686,2.3459)(2.86429,2.34099)
-\path(2.8743,2.34482)(2.87214,2.34237)
-\path(2.8229,2.34038)(2.82921,2.33484)
-\path(2.82294,2.34704)(2.83556,2.33595)
-\path(2.82298,2.35369)(2.84191,2.33706)
-\path(2.83154,2.35287)(2.84826,2.33818)
-\path(2.84123,2.35104)(2.8546,2.33929)
-\path(2.85092,2.34922)(2.86095,2.34041)
-\path(2.86062,2.3474)(2.8673,2.34152)
-\path(2.87031,2.34557)(2.87365,2.34264)
-\allinethickness{1.2pt}%
-\path(2.82292,2.3441)(2.82286,2.33372)(2.88,2.34375)
- (2.82299,2.35448)(2.82292,2.3441)
-\put(2.93535,2.34375){\makebox(0,0)[l]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{pdf}}}}}}
-\put(2.88,2.34375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(2.24,2.8125)(2.24533,2.82028)(2.25067,2.82799)(2.256,2.83564)
- (2.26133,2.84323)(2.26667,2.85075)(2.272,2.8582)(2.27733,2.86559)
- (2.28267,2.87292)(2.288,2.88018)(2.29333,2.88737)(2.29867,2.8945)
- (2.304,2.90156)(2.30933,2.90856)(2.31467,2.91549)(2.32,2.92236)
- (2.32533,2.92917)(2.33067,2.9359)(2.336,2.94258)(2.34133,2.94919)
- (2.34667,2.95573)(2.352,2.96221)(2.35733,2.96862)(2.36267,2.97497)
- (2.368,2.98125)(2.37333,2.98747)(2.37867,2.99362)(2.384,2.99971)
- (2.38933,3.00573)(2.39467,3.01169)(2.4,3.01758)(2.40533,3.0234)
- (2.41067,3.02917)(2.416,3.03486)(2.42133,3.04049)(2.42667,3.04606)
- (2.432,3.05156)(2.43733,3.057)(2.44267,3.06237)(2.448,3.06768)
- (2.45333,3.07292)(2.45867,3.07809)(2.464,3.0832)(2.46933,3.08825)
- (2.47467,3.09323)(2.48,3.09814)(2.48533,3.10299)(2.49067,3.10778)
- (2.496,3.1125)(2.50133,3.11715)(2.50667,3.12174)(2.512,3.12627)
- (2.51733,3.13073)(2.52267,3.13512)(2.528,3.13945)(2.53333,3.14372)
- (2.53867,3.14792)(2.544,3.15205)(2.54933,3.15612)(2.55467,3.16012)
- (2.56,3.16406)(2.56533,3.16794)(2.57067,3.17174)(2.576,3.17549)
- (2.58133,3.17917)(2.58667,3.18278)(2.592,3.18633)(2.59733,3.18981)
- (2.60267,3.19323)(2.608,3.19658)(2.61333,3.19987)(2.61867,3.20309)
- (2.624,3.20625)(2.62933,3.20934)(2.63467,3.21237)(2.64,3.21533)
- (2.64533,3.21823)(2.65067,3.22106)(2.656,3.22383)(2.66133,3.22653)
- (2.66667,3.22917)(2.672,3.23174)(2.67733,3.23424)(2.68267,3.23669)
- (2.688,3.23906)(2.69333,3.24137)(2.69867,3.24362)(2.704,3.2458)
- (2.70933,3.24792)(2.71467,3.24997)(2.72,3.25195)(2.72533,3.25387)
- (2.73067,3.25573)(2.736,3.25752)(2.74133,3.25924)(2.74667,3.2609)
- (2.752,3.2625)(2.75733,3.26403)(2.76267,3.26549)(2.768,3.26689)
- (2.77333,3.26823)(2.77867,3.2695)(2.784,3.2707)(2.78933,3.27184)
- (2.79467,3.27292)(2.8,3.27393)(2.80533,3.27487)(2.81067,3.27575)
- (2.816,3.27656)(2.82133,3.27731)(2.82667,3.27799)(2.832,3.27861)
- (2.83733,3.27917)(2.84267,3.27965)(2.848,3.28008)(2.85333,3.28044)
- (2.85867,3.28073)(2.864,3.28096)(2.86933,3.28112)(2.87467,3.28122)(2.88,3.28125)
-\allinethickness{0.0055348in}%
-\path(2.82295,3.27579)(2.83249,3.27231)
-\path(2.82292,3.28106)(2.84199,3.2741)
-\path(2.82289,3.28633)(2.85149,3.27589)
-\path(2.82456,3.29098)(2.861,3.27767)
-\path(2.85228,3.28612)(2.8705,3.27946)
-\path(2.87406,3.28013)(2.87481,3.28216)
-\path(2.86813,3.27902)(2.86961,3.28307)
-\path(2.86219,3.2779)(2.86442,3.28399)
-\path(2.85626,3.27678)(2.85922,3.2849)
-\path(2.85032,3.27567)(2.85403,3.28581)
-\path(2.84439,3.27455)(2.84883,3.28672)
-\path(2.83845,3.27343)(2.84364,3.28763)
-\path(2.83252,3.27232)(2.83844,3.28854)
-\path(2.82658,3.2712)(2.83325,3.28946)
-\path(2.82295,3.27639)(2.82805,3.29037)
-\allinethickness{1.2pt}%
-\path(2.82292,3.2809)(2.82299,3.27052)(2.88,3.28125)
- (2.82286,3.29128)(2.82292,3.2809)
-\put(2.86001,3.33981){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eps}}}}}}
-\put(2.88,3.28125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{0.4pt}%
-\color{rgb_7f7f7f}%
-\path(2.88,3.28125)(3.52,3.28125)
-\path(3.51481,3.28031)(3.51477,3.2822)
-\path(3.50962,3.27936)(3.50954,3.28315)
-\path(3.50443,3.27842)(3.50432,3.2841)
-\path(3.49924,3.27748)(3.49909,3.28505)
-\path(3.49406,3.27653)(3.49386,3.286)
-\path(3.48887,3.27559)(3.48863,3.28695)
-\path(3.48368,3.27465)(3.4834,3.2879)
-\path(3.47849,3.2737)(3.47818,3.28885)
-\path(3.4733,3.27276)(3.47295,3.2898)
-\path(3.46811,3.27182)(3.46772,3.29076)
-\path(3.48855,3.28697)(3.46292,3.28644)
-\path(3.51417,3.28231)(3.46292,3.28125)
-\path(3.49512,3.27673)(3.46292,3.27606)
-\path(3.46292,3.28125)(3.46292,3.27087)(3.52,3.28125)
- (3.46292,3.29163)(3.46292,3.28125)
-\put(3.57535,3.28125){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \begin{minipage}{0.225in}\texttt{png mng gif}\end{minipage}}}}}
-\put(3.52,3.28125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(1.92,2.34375){\makebox(0,0)[c]{\hbox{\color{rgb_009800}\texttt{\Large elaps}}}}
-\allinethickness{1.2pt}%
-\color{rgb_ff0000}%
-\path(0.32,1.40625)(0.96,1.40625)
-\allinethickness{0.0055348in}%
-\path(0.912435,1.4149)(0.902922,1.41097)
-\path(0.921948,1.41317)(0.902922,1.40531)
-\path(0.931461,1.41144)(0.902922,1.39966)
-\path(0.940974,1.40971)(0.91102,1.39734)
-\path(0.950487,1.40798)(0.93551,1.4018)
-\path(0.902922,1.40939)(0.908111,1.39682)
-\path(0.905721,1.41612)(0.9133,1.39776)
-\path(0.911752,1.41502)(0.918489,1.3987)
-\path(0.917783,1.41393)(0.923678,1.39965)
-\path(0.923814,1.41283)(0.928867,1.40059)
-\path(0.929845,1.41173)(0.934056,1.40153)
-\path(0.935876,1.41064)(0.939244,1.40248)
-\path(0.941907,1.40954)(0.944433,1.40342)
-\path(0.947938,1.40844)(0.949622,1.40436)
-\path(0.953969,1.40735)(0.954811,1.40531)
-\allinethickness{1.2pt}%
-\path(0.902922,1.40625)(0.902922,1.39587)(0.96,1.40625)
- (0.902922,1.41663)(0.902922,1.40625)
-\put(0.32,1.4616){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{xp}, \texttt{flx}}}}}}
-\put(0.32,1.40625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(0.97999,1.46481){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eepic}}}}}}
-\put(0.96,1.40625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(0.96,1.40625)(0.963187,1.40615)(0.966347,1.40586)
- (0.969482,1.40539)(0.972591,1.40472)(0.975676,1.40388)
- (0.978736,1.40285)(0.981772,1.40165)(0.984785,1.40028)
- (0.987774,1.39874)(0.990741,1.39703)(0.993685,1.39516)
- (0.996608,1.39313)(0.999509,1.39094)(1.00239,1.3886)
- (1.00525,1.38611)(1.00809,1.38347)(1.01091,1.38069)
- (1.01371,1.37777)(1.01649,1.37472)(1.01926,1.37153)
- (1.02201,1.36821)(1.02474,1.36476)(1.02745,1.36119)(1.03014,1.3575)
- (1.03282,1.35369)(1.03549,1.34977)(1.03814,1.34574)(1.04077,1.3416)
- (1.04339,1.33735)(1.046,1.33301)(1.04859,1.32856)(1.05117,1.32403)
- (1.05374,1.3194)(1.0563,1.31468)(1.05884,1.30988)(1.06138,1.305)
- (1.0639,1.30004)(1.06641,1.295)(1.06891,1.2899)(1.07141,1.28472)
- (1.07389,1.27948)(1.07637,1.27418)(1.07884,1.26882)(1.0813,1.2634)
- (1.08375,1.25793)(1.0862,1.25242)(1.08864,1.24685)(1.09107,1.24125)
- (1.0935,1.23561)(1.09593,1.22993)(1.09835,1.22421)(1.10076,1.21847)
- (1.10317,1.2127)(1.10558,1.20691)(1.10799,1.2011)(1.1104,1.19528)
- (1.1128,1.18944)(1.1152,1.18359)(1.1176,1.17773)(1.12,1.17188)
- (1.1224,1.16602)(1.1248,1.16016)(1.1272,1.15431)(1.1296,1.14847)
- (1.13201,1.14265)(1.13442,1.13684)(1.13683,1.13105)
- (1.13924,1.12528)(1.14165,1.11954)(1.14407,1.11382)(1.1465,1.10814)
- (1.14893,1.1025)(1.15136,1.0969)(1.1538,1.09133)(1.15625,1.08582)
- (1.1587,1.08035)(1.16116,1.07493)(1.16363,1.06957)(1.16611,1.06427)
- (1.16859,1.05903)(1.17109,1.05385)(1.17359,1.04875)(1.1761,1.04371)
- (1.17862,1.03875)(1.18116,1.03387)(1.1837,1.02907)(1.18626,1.02435)
- (1.18883,1.01972)(1.19141,1.01519)(1.194,1.01074)(1.19661,1.0064)
- (1.19923,1.00215)(1.20186,0.998013)(1.20451,0.99398)
- (1.20718,0.990058)(1.20986,0.98625)(1.21255,0.982559)
- (1.21526,0.978989)(1.21799,0.975542)(1.22074,0.972222)
- (1.22351,0.969033)(1.22629,0.965977)(1.22909,0.963057)
- (1.23191,0.960278)(1.23475,0.957642)(1.23761,0.955152)
- (1.24049,0.952812)(1.24339,0.950625)(1.24631,0.948594)
- (1.24926,0.946723)(1.25223,0.945015)(1.25522,0.943472)
- (1.25823,0.942099)(1.26126,0.940898)(1.26432,0.939874)
- (1.26741,0.939028)(1.27052,0.938364)(1.27365,0.937886)
- (1.27681,0.937597)(1.28,0.9375)
-\path(1.28,0.9375)(1.6,0.9375)
-\allinethickness{0.0055348in}%
-\path(1.54292,0.934917)(1.54926,0.928275)
-\path(1.54292,0.942712)(1.55561,0.929428)
-\path(1.54596,0.947325)(1.56195,0.930581)
-\path(1.55497,0.945688)(1.56829,0.931735)
-\path(1.56397,0.94405)(1.57463,0.932888)
-\path(1.57298,0.942413)(1.58097,0.934041)
-\path(1.58199,0.940775)(1.58732,0.935194)
-\path(1.59099,0.939138)(1.59366,0.936347)
-\path(1.59067,0.935804)(1.59366,0.938653)
-\path(1.58135,0.934109)(1.58732,0.939806)
-\path(1.57202,0.932413)(1.58097,0.940959)
-\path(1.5627,0.930718)(1.57463,0.942112)
-\path(1.55337,0.929022)(1.56829,0.943265)
-\path(1.54405,0.927327)(1.56195,0.944419)
-\path(1.54292,0.933461)(1.55561,0.945572)
-\path(1.54292,0.940669)(1.54926,0.946725)
-\allinethickness{1.2pt}%
-\path(1.54292,0.9375)(1.54292,0.927122)(1.6,0.9375)
- (1.54292,0.947878)(1.54292,0.9375)
-\path(1.6,0.9375)(2.24,0.9375)
-\allinethickness{0.0055348in}%
-\path(2.23385,0.936381)(2.23481,0.938443)
-\path(2.22769,0.935262)(2.22962,0.939387)
-\path(2.22154,0.934143)(2.22443,0.94033)
-\path(2.21538,0.933024)(2.21924,0.941274)
-\path(2.20923,0.931905)(2.21406,0.942217)
-\path(2.20308,0.930787)(2.20887,0.943161)
-\path(2.19692,0.929668)(2.20368,0.944104)
-\path(2.19077,0.928549)(2.19849,0.945047)
-\path(2.18461,0.92743)(2.1933,0.945991)
-\path(2.18292,0.935846)(2.18811,0.946934)
-\path(2.23185,0.936017)(2.22148,0.940867)
-\path(2.22369,0.934535)(2.20297,0.944233)
-\path(2.21554,0.933052)(2.18445,0.9476)
-\path(2.20738,0.93157)(2.18292,0.943017)
-\path(2.19923,0.930087)(2.18292,0.937719)
-\path(2.19108,0.928605)(2.18292,0.93242)
-\allinethickness{1.2pt}%
-\path(2.18292,0.9375)(2.18292,0.927122)(2.24,0.9375)
- (2.18292,0.947878)(2.18292,0.9375)
-\put(1.6,0.992848){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{dvi}}}}}}
-\put(1.6,0.9375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(2.21793,0.969823){\makebox(0,0)[br]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{ps}}}}}}
-\put(2.24,0.9375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{0.4pt}%
-\color{rgb_7f7f7f}%
-\path(0.96,0.46875)(0.963187,0.468847)(0.966347,0.469136)
- (0.969482,0.469614)(0.972591,0.470278)(0.975676,0.471124)
- (0.978736,0.472148)(0.981772,0.473349)(0.984785,0.474722)
- (0.987774,0.476265)(0.990741,0.477973)(0.993685,0.479844)
- (0.996608,0.481875)(0.999509,0.484062)(1.00239,0.486402)
- (1.00525,0.488892)(1.00809,0.491528)(1.01091,0.494307)
- (1.01371,0.497227)(1.01649,0.500283)(1.01926,0.503472)
- (1.02201,0.506792)(1.02474,0.510239)(1.02745,0.513809)
- (1.03014,0.5175)(1.03282,0.521308)(1.03549,0.52523)
- (1.03814,0.529263)(1.04077,0.533403)(1.04339,0.537647)
- (1.046,0.541992)(1.04859,0.546435)(1.05117,0.550972)
- (1.05374,0.555601)(1.0563,0.560317)(1.05884,0.565118)(1.06138,0.57)
- (1.0639,0.57496)(1.06641,0.579996)(1.06891,0.585103)
- (1.07141,0.590278)(1.07389,0.595518)(1.07637,0.60082)
- (1.07884,0.606181)(1.0813,0.611597)(1.08375,0.617065)
- (1.0862,0.622582)(1.08864,0.628145)(1.09107,0.63375)
- (1.0935,0.639394)(1.09593,0.645074)(1.09835,0.650786)
- (1.10076,0.656528)(1.10317,0.662295)(1.10558,0.668086)
- (1.10799,0.673896)(1.1104,0.679722)(1.1128,0.685562)
- (1.1152,0.691411)(1.1176,0.697266)(1.12,0.703125)(1.1224,0.708984)
- (1.1248,0.714839)(1.1272,0.720688)(1.1296,0.726528)
- (1.13201,0.732354)(1.13442,0.738164)(1.13683,0.743955)
- (1.13924,0.749722)(1.14165,0.755464)(1.14407,0.761176)
- (1.1465,0.766856)(1.14893,0.7725)(1.15136,0.778105)
- (1.1538,0.783668)(1.15625,0.789185)(1.1587,0.794653)
- (1.16116,0.800069)(1.16363,0.80543)(1.16611,0.810732)
- (1.16859,0.815972)(1.17109,0.821147)(1.17359,0.826254)
- (1.1761,0.83129)(1.17862,0.83625)(1.18116,0.841132)
- (1.1837,0.845933)(1.18626,0.850649)(1.18883,0.855278)
- (1.19141,0.859815)(1.194,0.864258)(1.19661,0.868603)
- (1.19923,0.872847)(1.20186,0.876987)(1.20451,0.88102)
- (1.20718,0.884942)(1.20986,0.88875)(1.21255,0.892441)
- (1.21526,0.896011)(1.21799,0.899458)(1.22074,0.902778)
- (1.22351,0.905967)(1.22629,0.909023)(1.22909,0.911943)
- (1.23191,0.914722)(1.23475,0.917358)(1.23761,0.919848)
- (1.24049,0.922188)(1.24339,0.924375)(1.24631,0.926406)
- (1.24926,0.928277)(1.25223,0.929985)(1.25522,0.931528)
- (1.25823,0.932901)(1.26126,0.934102)(1.26432,0.935126)
- (1.26741,0.935972)(1.27052,0.936636)(1.27365,0.937114)
- (1.27681,0.937403)(1.28,0.9375)
-\put(0.97999,0.410187){\makebox(0,0)[t]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{tex}}}}}
-\put(0.96,0.46875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(2.24,0.9375)(2.24533,0.92972)(2.25067,0.922005)
- (2.256,0.914355)(2.26133,0.906771)(2.26667,0.899251)
- (2.272,0.891797)(2.27733,0.884408)(2.28267,0.877083)
- (2.288,0.869824)(2.29333,0.86263)(2.29867,0.855501)(2.304,0.848438)
- (2.30933,0.841439)(2.31467,0.834505)(2.32,0.827637)
- (2.32533,0.820833)(2.33067,0.814095)(2.336,0.807422)
- (2.34133,0.800814)(2.34667,0.794271)(2.352,0.787793)
- (2.35733,0.78138)(2.36267,0.775033)(2.368,0.76875)
- (2.37333,0.762533)(2.37867,0.75638)(2.384,0.750293)
- (2.38933,0.744271)(2.39467,0.738314)(2.4,0.732422)
- (2.40533,0.726595)(2.41067,0.720833)(2.416,0.715137)
- (2.42133,0.709505)(2.42667,0.703939)(2.432,0.698438)
- (2.43733,0.693001)(2.44267,0.68763)(2.448,0.682324)
- (2.45333,0.677083)(2.45867,0.671908)(2.464,0.666797)
- (2.46933,0.661751)(2.47467,0.656771)(2.48,0.651855)
- (2.48533,0.647005)(2.49067,0.64222)(2.496,0.6375)(2.50133,0.632845)
- (2.50667,0.628255)(2.512,0.62373)(2.51733,0.619271)
- (2.52267,0.614876)(2.528,0.610547)(2.53333,0.606283)
- (2.53867,0.602083)(2.544,0.597949)(2.54933,0.59388)
- (2.55467,0.589876)(2.56,0.585938)(2.56533,0.582064)
- (2.57067,0.578255)(2.576,0.574512)(2.58133,0.570833)
- (2.58667,0.56722)(2.592,0.563672)(2.59733,0.560189)
- (2.60267,0.556771)(2.608,0.553418)(2.61333,0.55013)
- (2.61867,0.546908)(2.624,0.54375)(2.62933,0.540658)
- (2.63467,0.53763)(2.64,0.534668)(2.64533,0.531771)
- (2.65067,0.528939)(2.656,0.526172)(2.66133,0.52347)
- (2.66667,0.520833)(2.672,0.518262)(2.67733,0.515755)
- (2.68267,0.513314)(2.688,0.510937)(2.69333,0.508626)
- (2.69867,0.50638)(2.704,0.504199)(2.70933,0.502083)
- (2.71467,0.500033)(2.72,0.498047)(2.72533,0.496126)
- (2.73067,0.494271)(2.736,0.49248)(2.74133,0.490755)
- (2.74667,0.489095)(2.752,0.4875)(2.75733,0.48597)(2.76267,0.484505)
- (2.768,0.483105)(2.77333,0.481771)(2.77867,0.480501)
- (2.784,0.479297)(2.78933,0.478158)(2.79467,0.477083)(2.8,0.476074)
- (2.80533,0.47513)(2.81067,0.474251)(2.816,0.473437)
- (2.82133,0.472689)(2.82667,0.472005)(2.832,0.471387)
- (2.83733,0.470833)(2.84267,0.470345)(2.848,0.469922)
- (2.85333,0.469564)(2.85867,0.469271)(2.864,0.469043)
- (2.86933,0.46888)(2.87467,0.468783)(2.88,0.46875)
-\path(2.86583,0.471416)(2.82296,0.474287)
-\path(2.86567,0.466235)(2.82292,0.469098)
-\path(2.84427,0.462478)(2.82289,0.46391)
-\path(2.82817,0.478501)(2.82689,0.459429)
-\path(2.83335,0.477526)(2.8322,0.460361)
-\path(2.83854,0.476551)(2.83751,0.461293)
-\path(2.84372,0.475576)(2.84282,0.462225)
-\path(2.8489,0.474601)(2.84814,0.463157)
-\path(2.85408,0.473625)(2.85345,0.464089)
-\path(2.85927,0.47265)(2.85876,0.465021)
-\path(2.86445,0.471675)(2.86407,0.465954)
-\path(2.86963,0.4707)(2.86938,0.466886)
-\path(2.87482,0.469725)(2.87469,0.467818)
-\path(2.82292,0.469098)(2.82286,0.458721)(2.88,0.46875)
- (2.82299,0.479476)(2.82292,0.469098)
-\put(2.93535,0.46875){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{pdf}}}}}
-\put(2.88,0.46875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\allinethickness{1.2pt}%
-\color{rgb_ff0000}%
-\path(2.24,0.9375)(2.24533,0.94528)(2.25067,0.952995)
- (2.256,0.960645)(2.26133,0.968229)(2.26667,0.975749)
- (2.272,0.983203)(2.27733,0.990592)(2.28267,0.997917)(2.288,1.00518)
- (2.29333,1.01237)(2.29867,1.0195)(2.304,1.02656)(2.30933,1.03356)
- (2.31467,1.04049)(2.32,1.04736)(2.32533,1.05417)(2.33067,1.0609)
- (2.336,1.06758)(2.34133,1.07419)(2.34667,1.08073)(2.352,1.08721)
- (2.35733,1.09362)(2.36267,1.09997)(2.368,1.10625)(2.37333,1.11247)
- (2.37867,1.11862)(2.384,1.12471)(2.38933,1.13073)(2.39467,1.13669)
- (2.4,1.14258)(2.40533,1.1484)(2.41067,1.15417)(2.416,1.15986)
- (2.42133,1.16549)(2.42667,1.17106)(2.432,1.17656)(2.43733,1.182)
- (2.44267,1.18737)(2.448,1.19268)(2.45333,1.19792)(2.45867,1.20309)
- (2.464,1.2082)(2.46933,1.21325)(2.47467,1.21823)(2.48,1.22314)
- (2.48533,1.22799)(2.49067,1.23278)(2.496,1.2375)(2.50133,1.24215)
- (2.50667,1.24674)(2.512,1.25127)(2.51733,1.25573)(2.52267,1.26012)
- (2.528,1.26445)(2.53333,1.26872)(2.53867,1.27292)(2.544,1.27705)
- (2.54933,1.28112)(2.55467,1.28512)(2.56,1.28906)(2.56533,1.29294)
- (2.57067,1.29674)(2.576,1.30049)(2.58133,1.30417)(2.58667,1.30778)
- (2.592,1.31133)(2.59733,1.31481)(2.60267,1.31823)(2.608,1.32158)
- (2.61333,1.32487)(2.61867,1.32809)(2.624,1.33125)(2.62933,1.33434)
- (2.63467,1.33737)(2.64,1.34033)(2.64533,1.34323)(2.65067,1.34606)
- (2.656,1.34883)(2.66133,1.35153)(2.66667,1.35417)(2.672,1.35674)
- (2.67733,1.35924)(2.68267,1.36169)(2.688,1.36406)(2.69333,1.36637)
- (2.69867,1.36862)(2.704,1.3708)(2.70933,1.37292)(2.71467,1.37497)
- (2.72,1.37695)(2.72533,1.37887)(2.73067,1.38073)(2.736,1.38252)
- (2.74133,1.38424)(2.74667,1.3859)(2.752,1.3875)(2.75733,1.38903)
- (2.76267,1.39049)(2.768,1.39189)(2.77333,1.39323)(2.77867,1.3945)
- (2.784,1.3957)(2.78933,1.39684)(2.79467,1.39792)(2.8,1.39893)
- (2.80533,1.39987)(2.81067,1.40075)(2.816,1.40156)(2.82133,1.40231)
- (2.82667,1.40299)(2.832,1.40361)(2.83733,1.40417)(2.84267,1.40465)
- (2.848,1.40508)(2.85333,1.40544)(2.85867,1.40573)(2.864,1.40596)
- (2.86933,1.40612)(2.87467,1.40622)(2.88,1.40625)
-\allinethickness{0.0055348in}%
-\path(2.82288,1.41337)(2.82817,1.3965)
-\path(2.82772,1.41543)(2.83335,1.39747)
-\path(2.83353,1.41441)(2.83854,1.39845)
-\path(2.83934,1.41339)(2.84372,1.39942)
-\path(2.84515,1.41237)(2.8489,1.4004)
-\path(2.85096,1.41135)(2.85408,1.40137)
-\path(2.85677,1.41033)(2.85927,1.40235)
-\path(2.86257,1.40931)(2.86445,1.40332)
-\path(2.86838,1.40829)(2.86963,1.4043)
-\path(2.87419,1.40727)(2.87482,1.40527)
-\path(2.83547,1.39787)(2.86857,1.40826)
-\path(2.82296,1.39954)(2.85714,1.41026)
-\path(2.82293,1.40512)(2.84572,1.41227)
-\path(2.82289,1.4107)(2.83429,1.41427)
-\allinethickness{1.2pt}%
-\path(2.82292,1.4059)(2.82299,1.39552)(2.88,1.40625)
- (2.82286,1.41628)(2.82292,1.4059)
-\put(2.86001,1.46481){\makebox(0,0)[b]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eps}}}}}}
-\put(2.88,1.40625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\path(2.88,1.40625)(3.52,1.40625)
-\allinethickness{0.0055348in}%
-\path(3.50867,1.40419)(3.51287,1.40755)
-\path(3.49734,1.40213)(3.50573,1.40884)
-\path(3.48601,1.40007)(3.4986,1.41014)
-\path(3.47467,1.39801)(3.49146,1.41144)
-\path(3.46334,1.39595)(3.48433,1.41274)
-\path(3.46292,1.40262)(3.47719,1.41403)
-\path(3.46292,1.40962)(3.47006,1.41533)
-\path(3.51429,1.40521)(3.51235,1.40764)
-\path(3.50858,1.40417)(3.5047,1.40903)
-\path(3.50288,1.40314)(3.49705,1.41042)
-\path(3.49717,1.4021)(3.4894,1.41181)
-\path(3.49146,1.40106)(3.48175,1.41321)
-\path(3.48575,1.40002)(3.47409,1.4146)
-\path(3.48005,1.39899)(3.46644,1.41599)
-\path(3.47434,1.39795)(3.46292,1.41222)
-\path(3.46863,1.39691)(3.46292,1.40404)
-\allinethickness{1.2pt}%
-\path(3.46292,1.40625)(3.46292,1.39587)(3.52,1.40625)
- (3.46292,1.41663)(3.46292,1.40625)
-\put(3.57535,1.40625){\makebox(0,0)[l]{\fboxrule0.1pt%
-\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \begin{minipage}{0.225in}\texttt{png mng gif}\end{minipage}}}}}}
-\put(3.52,1.40625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}%
-\put(1.92,0.46875){\makebox(0,0)[c]{\hbox{\color{rgb_009800}\texttt{\Large flix}}}}
-\end{picture}%
diff --git a/graphics/epix/doc/ePiX.xp b/graphics/epix/doc/ePiX.xp
deleted file mode 100644
index c39e6b2ac0..0000000000
--- a/graphics/epix/doc/ePiX.xp
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-void emph(const std::string& prog)
-{
- if (prog == "all")
- black();
- else
- {
- bbold(Red());
- label_color(Blue());
- label_mask(Yellow(0.1));
- label_border(Red(), "0.1pt");
- }
-}
-
-void restore(const std::string& prog)
-{
- if (prog == "all")
- emph(prog);
-
- else
- {
- plain();
- black(0.5);
- label_mask(Neutral());
- }
-}
-
-void diagram(const std::string& prog)
-{
- font_size("footnotesize");
- arrow_width(1.5);
- restore(prog);
-
- if (prog != "laps")
- emph(prog);
-
- arrow(P(0,1), P(1,1));
-
- dot(P(0,1), P(0,4), "\\texttt{xp}, \\texttt{flx}", t);
- dot(P(1,1), P(2,4), "\\texttt{eepic}", t);
- restore(prog);
-
- if (prog != "epix")
- emph(prog);
-
- spline(P(1,1), P(1.2,1), P(1.3,0.5), P(1.5,0.5));
- arrow(P(1.5,0.5), P(2,0.5));
- arrow(P(2,0.5), P(3,0.5));
-
- dot(P(2,0.5), P(0,4), "\\texttt{dvi}", t);
- dot(P(3,0.5), P(-2,2), "\\texttt{ps}", tl);
- restore(prog);
-
- if(prog == "laps")
- emph(prog);
-
- spline(P(1,0), P(1.2,0), P(1.3,0.5), P(1.5,0.5));
-
- dot(P(1,0), P(2,-4), "\\texttt{tex}", b);
-
- if (prog == "elaps") // and laps
- emph(prog);
-
- arrow(P(3,0.5), P(3.5,0), P(4,0));
-
- dot(P(4,0), P(4,0), "\\texttt{pdf}", r);
- restore(prog);
-
- if (prog == "elaps" || prog == "flix")
- emph(prog);
-
- arrow(P(3,0.5), P(3.5,1), P(4,1));
-
- dot(P(4,1), P(-2,4), "\\texttt{eps}", t);
- restore(prog);
-
- if(prog == "flix")
- emph(prog);
-
- arrow(P(4,1), P(5,1));
-
- dot(P(5,1), P(4,0),
- "\\begin{minipage}{0.225in}\\texttt{png mng gif}\\end{minipage}", r);
- restore(prog);
-
- if (prog != "all")
- {
- font_size("Large");
- font_face("tt");
- label_color(Green(0.6));
- label(P(2.5,0), prog);
- }
-
-}
-
-int main()
-{
-#ifdef SHOW_ALL
- picture(P(-0.5,0), P(5.75,10), "4 x 7.5 in");
-#else
- picture(P(-0.5,2), P(5.75,10), "4 x 7.5 in");
-#endif
-
- begin();
- // border();
-
- screen laps(P(0,0), P(5,1));
- activate(laps);
-
- diagram("laps");
- laps.v_scale(0.5, P(0,0.5));
- inset(laps, P(0,8), P(5,10));
- deactivate(laps);
-
-
- screen epix(P(0,0), P(5,1));
- activate(epix);
-
- diagram("epix");
- epix.v_scale(0.5, P(0,0.5));
- inset(epix, P(0,6), P(5,8));
- deactivate(epix);
-
-
- screen elaps(P(0,0), P(5,1));
- activate(elaps);
-
- diagram("elaps");
- elaps.v_scale(0.5, P(0,0.5));
- inset(elaps, P(0,4), P(5,6));
- deactivate(elaps);
-
-
- screen flix(P(0,0), P(5,1));
- activate(flix);
-
- diagram("flix");
- flix.v_scale(0.5, P(0,0.5));
- inset(flix, P(0,2), P(5,4));
- deactivate(flix);
-
-#ifdef SHOW_ALL
- screen all(P(0,0), P(5,1));
- activate(all);
-
- diagram("all");
- all.v_scale(0.5, P(0,0.5));
- inset(all, P(0,0), P(5,2));
- deactivate(all);
-#endif
-
- end();
-}
diff --git a/graphics/epix/doc/epix.info b/graphics/epix/doc/epix.info
deleted file mode 100644
index 3b30c42c39..0000000000
--- a/graphics/epix/doc/epix.info
+++ /dev/null
@@ -1,4696 +0,0 @@
-This is epix.info, produced by makeinfo version 4.9 from epix.texi.
-
- This is the manual for ePiX, Version 1.2 Copyright (C) 2001, 2002,
-2003, 2004, 2005, 2006, 2007 Andrew D. Hwang
-
-
-File: epix.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
-
-ePiX manual
-***********
-
-This is the manual for ePiX, Version 1.2 Copyright (C) 2001, 2002,
-2003, 2004, 2005, 2006, 2007 Andrew D. Hwang
-
-* Menu:
-
-* Introduction ::
-* Getting Started ::
-* Reference Manual ::
-* Advanced Topics ::
-* Software Freedom::
-* Acknowledgments::
-* Function Index::
-* Concept Index::
-
- --- The Detailed Node Listing ---
-
-Introduction
-
-* Changes in Version 1.2::
-* Software Dependencies::
-* Installation::
-
-Getting Started
-
-* Running `ePiX'::
-* The Drawing Model::
-* Tutorial::
-* `C++' Basics::
-* Animation::
-* Layout Tricks::
-
-Reference Manual
-
-* File Structure::
-* Picture Size and Aspect Ratio::
-* Color::
-* Scene Attributes::
-* Drawing Attributes::
-* Creating and Drawing Objects::
-* More About `C++'::
-* Attribute Quick Reference::
-
-Advanced Topics
-
-* Hidden Object Removal::
-* Extensions::
-* Programmer's Guide::
-
-
-File: epix.info, Node: Introduction, Next: Getting Started, Prev: Top, Up: Top
-
-1 Introduction
-**************
-
-`ePiX', a collection of batch utilities, creates mathematically
-accurate figures, plots, and animations containing `LaTeX' typography.
-The input syntax is easy to learn, and the user interface resembles
-that of `LaTeX' itself: You prepare a scene description in a text
-editor, then "compile" the input file into a picture. `LaTeX'- and
-web-compatible output types include a `LaTeX' picture-like environment
-written with `PSTricks', `tikz', or `eepic' macros; vector images
-(`eps', `ps', and `pdf'); and bitmapped images and movies (`png',
-`mng', and `gif').
-
- `ePiX''s strengths include:
-
- * Quality of output: `ePiX' creates accurate, publication-quality
- figures whose appearance matches that of `LaTeX'. Typography may
- be put in a figure as easily as in an ordinary `LaTeX' document.
-
- * Ease of use: Figure objects and their attributes are specified
- by simple, descriptive commands.
-
- * Flexibility: Objects are described by attributes and Cartesian
- location; as in `LaTeX', printed appearance is determined when the
- figure is compiled. A well-designed figure can be altered
- dramatically, yet precisely, with command-line switches or minor
- changes to the input file.
-
- * Power and extendibility: `ePiX' inherits the power of `C++' as a
- programming language; variables, data structures, loops, and
- recursion can be used to draw complicated plots and figures with
- just a few lines of input. External code can be incorporated in a
- figure with a command line option or by using a Makefile.
-
- * Economy of storage and transmission: For a document containing
- many figures, a compressed tar file of the `LaTeX' sources and
- `ePiX' files is typically a few percent the size of the compressed
- PostScript file.
-
- * License: `ePiX' is _free software_. You are granted the right to
- use the program for whatever purpose, and to inspect, modify,
- and re-distribute the source code, so long as you do not
- restrict the rights of others to do the same. In short, the
- license is similar to the terms under which theorems are
- published.
-
-
- `ePiX' facilitates logical, as opposed to visual, structuring of
-mathematical figures, analogous to the relationship between `LaTeX' and
-a word processor. A few stylistic defaults streamline the creation of
-simple figures, but there are few internal restrictions on the contents
-or appearance of a figure; aesthetic and practical decisions are left
-to you.
-
- If you are a:
-
- * Potential user, you may wish to skip immediately to "Software
- Dependencies" before investing additional time.
-
- * New user, proceed from here until you have enough understanding
- to run the software, then experiment with the samples files while
- reading Chapter *Note chapter:started::, , or return to the
- manual as needed.
-
- * More advanced user, browse at will, probably starting with
- Chapter *Note chapter:ref-man::, .
-
-
- This manual is relatively conversational, and occasionally redundant,
-especially between portions meant for readers at different levels of
-familiarity. Throughout, you are assumed to be familiar with `LaTeX'
-and basic linear algebra: the description of points, vectors, lines,
-and planes in three-dimensional space. Other material, such as `C++'
-syntax, is introduced as needed.
-
-* Menu:
-
-* Changes in Version 1.2::
-* Software Dependencies::
-* Installation::
-
-
-File: epix.info, Node: Changes in Version 1.2, Next: Software Dependencies, Prev: Introduction, Up: Introduction
-
-1.1 Changes in Version 1.2
-==========================
-
-`ePiX' 1.2.x has been written almost entirely from scratch. The
-conceptual model is unchanged, but there are a few changes of syntax.
-If you're new to `ePiX', please skip straight to Section *Note
-section:software_deps::, .
-
-
-
-Except as noted below, `ePiX' 1.0 files will compile under Version 1.2.
-Generally, global variables have been deprecated or removed, and should
-be replaced by function calls in new files. The following changes are
-either required, or else strongly recommended (and may become
-mandatory).
-
- * (Mandatory) The global variable tix in a `flix' file must be
- manipulated through the function tix().
-
- * (Mandatory) The command `use_pstricks()' is obsolete. PSTricks
- output is obtained systematically as an output format.
-
- * (Mandatory) Deprecated "aliases" no longer exist: `triple' (for
- the `P' class), `D' (for `Deriv'), and `I' (for `Integral').
- Lowercase trig function names conflicted with the standard
- namespace and have been removed.
-
- * (Mandatory) Geometric object commands (`circle', `plane',
- `segment', and `sphere'), which formerly created class objects,
- now perform drawing just as `ellipse', `line', `rect', etc., do.
- The classes are available with capitalized names (`Circle',
- etc.).
-
- * (Mandatory) Camera orientation is controlled with functions
- named `tilt', `pan', and `roll'; each rotates the camera about
- an axis through the viewpoint, not through the target.
-
- * (Recommended) The global size variables x_min, x_max, y_min,
- y_max, x_size, and y_size should be replaced by the function
- calls xmin(), etc. (No underscores.)
-
- * (Suggested) The camera may be accessed through the function
- `cam()'.
-
- * (Suggested) The size and bounding box are given in one command,
- such as `picture(P(-1,0), P(1,1), "4x3in")'. The old syntax will
- be retained indefinitely.
-
-
-
-
- * Output is cleanly separated from the internal representation.
- Figures may be written with a choice of macros--`PSTricks',
- `tikz', and `eepic' at present--and new output types are easily
- coded so long as the format supports arbitrary line segments,
- color, and the ability to place a `LaTeX' box at a specified
- location.
-
- * Colors are a manipulable data type, available in RGB, CMY, CMYK,
- and Gray models. `xcolor'-style operations, such as color model
- conversion, blending, superposition, and inversion are provided.
-
- The camera has a filter which affects the colors of all scene
- elements. Filters performing CMYK separation are provided.
-
- * Color filling is controlled with declarations, similarly to line
- colors in `ePiX' 1.0. Arrows and markers of type spot, dot, ddot,
- and circ are now colored like other markers. Parametric surfaces
- may be color-shaded.
-
- If a figure contains many shaded elements, a color-capable output
- format (e.g.\ `PSTricks' or `tikz') should be used for
- efficiency. Filled regions are implemented as fine hatching in
- `eepic'.
-
- * An `axis' class provides coordinate axes with labels in a
- variety of styles: decimals or scientific notation of specified
- precision, fractions, trig fractions, logarithmic labels in
- arbitrary (integer) base, and user-supplied styles.
-
- * `ePiX' 1.2.x performs page layout. Sub-figures may be manipulated
- flexibly. The sample files give several applications.
-
- * Non-member intersection operators for circles, planes, spheres,
- and segments are provided. A "non-generic" intersection does not
- throw an exception, but instead returns an undrawable "malformed"
- object.
-
-
-
-File: epix.info, Node: Software Dependencies, Next: Installation, Prev: Changes in Version 1.2, Up: Introduction
-
-1.2 Software Dependencies
-=========================
-
-If you run GNU/Linux, a BSD, or Solaris, you probably have (and can
-surely install) all the external software needed to use `ePiX'. On Mac
-OS X, you will need the Apple developer tools and an X server (XCode
-and XDarwin on the Tiger disks), and the free `fink' package manager to
-build a GNU environment. For Windows, you'll need to install Cygwin
-and several packages. Detailed instructions are given below.
-
- "Under the hood", an input file is successively converted to a
-`LaTeX' picture; `dvi'; PostScript, `pdf' or `eps'; and if desired, to
-a bitmapped image or movie. Four shell scripts--`epix', `laps',
-`elaps', and `flix'--automate the various file format conversions.
-
- `ePiX' consists of a `C++' library, header, and shell scripts, and
-requires GNU `bash' and a compiler _for normal use_. For complete
-functionality, you need `g++' (Version 3.2 or later), `bash', a text
-editor (`ePiX' works particularly well with `emacs'), a `LaTeX'
-distribution, `Ghostscript', `gv' (or your favorite PS/PDF previewer),
-and `ImageMagick'. GNU `grep' and `sed' are good to have. You may need
-additional "developer packages" (`binutils', `make') in order to build
-`ePiX'. The more up to date your software is, the better your
-experience is likely to be, but bleeding edge versions are not
-necessary, or even always desirable.
-
- Aside from their reliance on specific programs, `ePiX''s shell
-scripts are written using Unix-style pathnames. Thus, the most
-straightforward way to use `ePiX' is to install a GNU environment.
-
- Jay Belanger's `emacs' mode allows you to write, compile, and view
-`ePiX' figures without leaving `emacs'. If you use another editor,
-you'll want to create template source files so you don't have to type
-boilerplate code each time you write a new figure.
-
-
-
-Cygwin can be used to run `ePiX' under Windows. Download `setup.exe'
-from `http://www.cygwin.com', then install the packages you need. The
-following are recommended, and sufficient for the actions described in
-this manual.
-
-(Archive) bzip2, tar
-(Devel) binutils, coreutils, gcc, gcc-g++, make, sed
-(Editors) emacs, emacs-X11, vim
-(Graphics) ImageMagick, ghostscript-base, ghostscript-x11, gv
-(Publishing) tetex (all)
-(Shells) bash, bash-completion
-(X11) X-start-menu-icons, X-startup-scripts,
- XFree86-lib-compat, xorg-x11-fscl, xorg-x11-fsrv
-
-
-
-File: epix.info, Node: Installation, Prev: Software Dependencies, Up: Introduction
-
-1.3 Installation
-================
-
-`ePiX' is distributed over the World-Wide Web as source code. Packages
-may be found at `http://mathcs.holycross.edu/~ahwang/epix/ePiX.html'
-The latest stable release is also on the CTAN mirrors, in the
-`graphics' directory. (Some users of Red Hat have reported file
-permission problems when unpacking the CTAN tarballs. If you encounter
-this difficulty, please try downloading the sources from the project
-main page.) Unpack the compressed tar file with the appropriate
-command:
-
- tar -zxvf epix-x.y.z.tar.gz
- tar -jxvf epix-x.y.z.tar.bz2
- (`x.y.z' is the version number) or, if your `tar' doesn't do
-decompression,
-
- gunzip -c epix-x.y.z.tar.gz | tar -xvf -
- bzcat epix-x.y.z.tar.bz2 | tar -xvf -
- `cd' to the source directory, `epix-x.y.z'. The `INSTALL' file
-contains detailed installation instructions. If you're impatient, the
-short of it is `./configure [--options]; make; make install'. Run
-`./configure --help' for a list of options.
-
- By default, `ePiX' installs in subdirectories of `/usr/local'; if
-you want to install elsewhere, supply `./configure' with the
-appropriate `--prefix'. You may also want to consult `POST-INSTALL' for
-information on setting your `PATH' variable so your shell can find
-`ePiX'. The manual and sample files are in `/usr/local/share/doc/epix'.
-
-
-
-There are two mailing lists, one for user questions, one for
-development discussion. Please visit
-`http://savannah.nongnu.org/mail/?group=epix' to subscribe.
-
-
-File: epix.info, Node: Getting Started, Next: Reference Manual, Prev: Introduction, Up: Top
-
-2 Getting Started
-*****************
-
-This chapter describes the basics of creating figures in `ePiX' for
-readers familiar with `LaTeX' but completely new to `C++'. No detailed
-knowledge of `C++' is needed to use `ePiX', only a bit of grammar that
-is easily absorbed by example.
-
- Section *Note section:running::, describes the commands (shell
-scripts) comprising `ePiX', and explains how to set up a graphical
-environment using standard *nix programs. Section *Note
-section:overview::, briefly describes figure creation. Section *Note
-section:tutorial::, presents a few files side-by-side with their
-output, and should be read at a computer so you can run the exercises.
-
-* Menu:
-
-* Running `ePiX'::
-* The Drawing Model::
-* Tutorial::
-* `C++' Basics::
-* Animation::
-* Layout Tricks::
-
-
-File: epix.info, Node: Running `ePiX', Next: The Drawing Model, Prev: Getting Started, Up: Getting Started
-
-2.1 Running `ePiX'
-==================
-
-An "input file" is a human-written figure specification containing
-`ePiX' commands. An "output file" is machine-created, and is included
-directly into a `LaTeX' document with the appropriate packages.
-
- Conversion ("compiling" a figure) is accomplished with four shell
-scripts, `laps', `epix', `elaps', and `flix'. Each script has a
-preferred extension for its input files, and is invoked with a command
-of the form
-
- <script> [options] <input file(s)>
- Often, no options are necessary. `<script> --help' describes
-`<script>''s options.
-
- By default, output file names are constructed by replacing the input
-extension with the (preferred) output extension. For brevity,
-extensions may be omitted. If the script has doubts about your intent,
-it proceeds with default behavior and prints a warning message.
-
- The author is a great fan of <TAB> completion, under which a shell,
-based on what has been typed so far, automatically fills in a command
-when the <TAB> key is pressed. `ePiX' comes with code snippets that
-complete intelligently when the first part of a command is one of the
-shell scripts. For example, if command completion is active, typing
-`epix' <TAB> prints only names of `epix' input files. To use this
-feature, you must install Ian MacDonald's `bash completion' package.
-The `INSTALL' and `POST_INSTALL' files contain details.
-
-
-
-`laps' performs `LaTeX' to PostScript/PDF conversion, and is
-independent of the rest of `ePiX'. By default, `laps' invokes `LaTeX'
-and `dvips'. The option `--pdf' creates a PDF file by post-processing
-the PostScript with `ps2pdf'. Other `TeX'-family processors
-(`pslatex', `pdftex', etc.) may be used instead of `LaTeX' by invoking
-`laps' with an appropriate option.
-
-
-
-`epix' compiles an input file into a `LaTeX' picture. The input file
-should have extension `xp' (for eXtended Picture). Jay Belanger's
-`emacs' mode is Highly Recommended; the installation procedure can be
-found in the `POST_INSTALL' file. When this mode is active, `emacs'
-automatically inserts a preamble template when a new `xp' file is
-created. In addition, you can peruse `ePiX''s info file, or format,
-compile, and preview files, all from within `emacs'.
-
- Output files from the script `epix' have extension `eepic', after
-Conrad Kwok's enhancements to the `LaTeX' picture environment. In
-Version 1.2, however, an output file need not contain `eepic' macros at
-all.
-
- An output file is `input' directly into a `LaTeX' document whose
-preamble contains appropriate `usepackage' lines. Rotated text
-requires the `rotating' package.
-
-
-
-`elaps' creates stand-alone vector images (`eps' or `pdf') from `epix'
-input files or `eepic' figures, even those not produced with `epix'.
-`elaps' automatically loads the `LaTeX' packages needed for features
-described in this manual. Additional `LaTeX' packages and `dvips'
-options may be specified on the command line.
-
-
-
-`flix' creates bitmapped images and movies, Section *Note
-section:animation::, . Input files should have extension `flx', and
-must contain a valid `epix' header as well as additional code. Jay
-Belanger's `emacs' mode facilitates creation of `flix' files.
-
-
-File: epix.info, Node: The Drawing Model, Next: Tutorial, Prev: Running `ePiX', Up: Getting Started
-
-2.2 The Drawing Model
-=====================
-
-To draw a figure manually, you select a sheet of paper of appropriate
-size and add paths, markers, and labels. These scene elements have
-attributes (line color, line width, fill color, font size, etc.)
-affecting their appearance.
-
- `ePiX''s drawing model behaves similarly. A `picture' command sets
-the _canvas_ (or logical drawing area, a Cartesian rectangle) and the
-true size of the final figure. A `begin' command initializes the
-"virtual paper" for drawing. Subsequent _drawing commands_ add objects
-to the scene: lines, curves, function plots, labels, and the like. The
-printed appearance of scene elements is determined by the current
-"attribute state" and controlled by _style declaration_ which remain in
-effect until superseded. Finally, an `end' command closes the figure and
-prints it to the output file.
-
- In this manual, command descriptions follow a few conventions.
-Optional arguments are enclosed in square brackets. A `len' argument is
-either a number (representing a length in `pt') or a double-quoted
-string containing a number and a two-letter `LaTeX' length unit, such
-as `"1.5pt"' or `"6cm"'. A `color' argument is a named primary
-(`Red()', `Cyan()', `White()', etc.), or a `Color' specified by
-densities (`RGB(r,g,b)', `CMY(c,m,y)', etc.)
-
- * Fill color: `fill(color)', `nofill()'.
-
- * Line color and width: `plain([color])', `bold([color])'.
-
- * Text size: `font_size([size])', returns to `normalsize' if no
- argument is given.
-
-
- \noindent A complete list of style commands is found in Section
-*Note section:quickref::, , starting on page *Note section:quickref::.
-
- To handle three-dimensional scenes, a `camera' performs point
-projection from a selected spatial location to the canvas. As a user,
-you'll need to control relatively few of the `camera''s parameters.
-Keep in mind, however, that elements are added to a scene in the same
-order their commands appear in the output file, and that later elements
-generally cover earlier ones. Some three-dimensional scenes require
-manual ordering of the input file; such ordering is dependent on the
-`camera''s location.
-
- By default, `ePiX' draws thin, solid, black lines, performs no
-filling of regions, prints text in a 12 pt Roman font, and looks down
-the z axis from a large distance, giving orthogonal projection on the
-(x,y) plane. When the `camera' is moved, the z axis points vertically
-up on the page.
-
-
-File: epix.info, Node: Tutorial, Next: `C++' Basics, Prev: The Drawing Model, Up: Getting Started
-
-2.3 Tutorial
-============
-
-This section presents sample input files side-by-side with their output
-so you can compare what you write with what you'll see on the screen or
-page. `ePiX' provides standard drawing capabilities, but like all
-software has its own idioms and personality. The basic syntax, which
-comes from `C'/`C++', should be mostly self-explanatory. One-line
-comments begin with the string "//".
-
- To use the sample files interactively, you'll need working software:
-`bash', `emacs', `ePiX', `g++', `gv', and a running X server. To
-complete your "GUI", start `gv' and select "Watch file" from the "State"
-menu. The loaded file will update automatically when it changes.
-
- Create a "scratch" directory, `cd' into it, and run the command
-
- tar -zxf /usr/local/share/doc/epix/sample_src.tar.gz
- (Change the path as appropriate for your installation.) This unpacks
-copies of the sample files into your scratch directory, including all
-the files mentioned in this manual. The `README' file serves as a table
-of contents.
-
- Open a sample file in `emacs', compile it from the drop-down menu
-(or with the keyboard command), then open the `EPS' file in `gv'. Now
-you're ready to follow the tutorial interactively. A few suggested
-exercises are included with each file. Naturally, as you study more
-files, you'll be able to make more interesting changes on your own.
-
-
-
-The first sample, `hello.xp', contains code needed to specify the
-figure's size, followed by the classic greeting. The `border' command
-draws a box around the figure in the specified color and width, and
-serves here merely to delimit the output from the surrounding page.
-
-/* -*-ePiX-*- */
-#include "epix.h" // These lines are analogous
-using namespace ePiX; // to a usepackage command.
-
-int main()
-{
- picture(P(-1,-1), P(1,1), "2 x 1in"); // corners, true size
-
- begin(); // ---- Figure body starts here ----
-
- border(Black(), "1pt"); // color, line width
-
- font_size("Huge"); // May be any font size, e.g. "scriptsize"
- label(P(0,0), "Hello, world!");
-
- end(); // ---- End figure; write output file ----
-}
-
-
-[Image]
-
- * Change the color and width of the border. (`RGB(r,g,b);' creates
- an RGB color, CMY colors are analogous. Named primaries are
- available. The densities should be between 0 and 1 for
- "expected" behavior.)
-
- * Add `backing(Cyan());' after the `border' command.
-
- * Put the command `crop_ellipse();' before the `border' command.
- Permute the `crop_ellipse' command with the `border' and
- `backing' lines, and note how the attribute (`crop') affects
- objects (`border', `backing').
-
-
-
-
-Our next file uses simple objects to draw a 2-D house-and-sun scene.
-
-
-int main()
-{
- picture(P(0,0), P(5,2), "3.75 x 1.5in");
-
- begin();
-
- triangle(P(0.9, 1), P(3.1, 1), P(2, 1.5)); // vertices
- circle(P(4,1.5), 0.25); // center and radius
-
- rect(P(1,0), P(3,1)); // opposite corners
-
- fill(Black(0.1)); // light gray
- rect(P(2.3,0), P(2.7,0.8)); // the door
- nofill();
-
- bold(); // draw thicker lines
- grid(P(1.4, 0.2), P(2, 0.6), 2, 2); // corners, number of squares
-
- line(P(xmin(), 0), P(xmax(), 0)); // endpoints
-
- end();
-}
-
-
-[Image]
-
- * Add declarations such as `bold(RGB(1,0.9,0.5))' or
- `fill(Yellow())' to color the scene. (Color and filling are
- orthogonal attributes.)
-
- \noindent The sample file `house.flx' uses loops to draw gradient
-fills of the lawn, sky, and sun, and animates a sunset.
-
-
-
-Plotted functions must be defined in the "preamble", before `main'.
-"High-level" elements--coordinate axes and grids, axis labels, and
-graphs--are drawn with mnemonically-named commands.
-
-// double = double-precision floating point
-double f(double x) { return 0.75*Sin(x) - 0.25*Sin(2*x); }
-
-int main()
-{
- picture(P(-2,-1), P(2,1), "5 x 1in"); // [-2,2] x [-1,1]
-
- begin();
- revolutions(); // set angle units, [0,1] = one turn
-
- h_axis(16); // axes w/default endpts
- v_axis(4);
- h_axis_labels(4, P(0,-4), b); // shift down 4pt, align below
-
- plain(Red());
- plot(f, xmin(), xmax(), 120); // use 120 intervals
-
- end();
-}
-
-
-[Image]
-
- * Define and plot some different functions; adjust the bounding
- box as necessary. (Use repeated multiplication for polynomials.
- The `polarplot' command graphs r=f(\theta).)
-
- * Change the arguments to `h_axis_labels'. The first specifies the
- number of intervals to label; the second gives the label offset
- in `pt'. The last puts each label below (`b') its Cartesian
- location.
-
-
-
-
-Functions of two or three variables are defined just like functions of
-one variable, but for plotting the return type must be a point (`P'),
-not a real number (`double'). The `domain' class specifies the set of
-inputs to plot.
-
-
-P f(double r, double th)
-{
- return P(r*Cos(th), r*Sin(th), pow(r, 3)*Cos(3*th));
-}
-
-int main()
-{
- picture(P(-1,-1), P(1, 1), "2 x 1in");
- begin();
- pst_format(); // use PSTricks macros for output
-
- // corners ([0,1] x [0,2\pi]) and fineness
- // (8x40 rectangles, plotted at 16x120 resolution)
- domain R(P(0,0), P(1, 2*M_PI), mesh(8,40), mesh(16,120));
-
- camera.at(P(3,1,2)); // set the viewpoint
- arrow(P(0,0,0), P(1.25,0,0)); // coordinate axes
- arrow(P(0,0,0), P(0,1.25,0));
-
- plain(Blue(1.2)); // line color and width
- fill(Yellow()); // shading color
- surface(f, R);
-
- end();
-}
-
-
-[Image]
-
-
-
-A function can be defined by an arbitrary algorithm, and a `domain' may
-be used to plot a family of functions for several values of one
-variable.
-
-
-P sin_n(double x, double n) // Taylor polynomial of sin x
-{
- const int N((int) floor(n)); // convert n to an index bound
- const double sqx(-pow(x, 2)); // -x^2
- double val(x), summand(x);
-
- for (int i=1; i <= 2*N+1; i += 2)
- {
- summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)!
- val += summand;
- }
-
- return P(x, val); // return (x, y)
-}
-
-int main()
-{
- picture(P(0, -1), P(6*M_PI, 1), "5 x 1in");
-
- begin();
-
- set_crop();
- bold(Green());
- plot(Sin, 0, xmax(), 120);
-
- domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(120, 40));
- for (int i=3; 0 <= i; --i) // print in descending degree
- {
- bold(RGB(0.25*i, 0, 1-0.25*i)); // degree-dependent color
- plot(sin_n, R.slice2(5*i+1)); // plot for n = 5i+1
- }
- end();
-}
-
-
-[Image]
-
-
-
-Page layout can be composed from sub-pages with `screen' objects. In
-the loop body below, objects are added to the "active" `screen', then
-`inset' into the "canvas", the screen representing the entire figure.
-
-
-P f(double u, double v)
-{
- return P((u-v)*(u+v), 2*u*v, u);
-}
-
-int main()
-{
- picture(P(0,0), P(2,3), "5x7.5in"); // overall size
-
- begin();
-
- domain R(P(-1,-1), P(1,1), mesh(12,12), mesh(24,24));
-
- for (int i=0; i<2; ++i)
- for (int j=0; j<3; ++j)
- {
- screen my(P(-3,-3), P(3,3));
- activate(my);
- border(Red(0.6), "1pt");
- // frame-dependent viewpoint
- camera.at(sph(10, (2*j+i+1)*M_PI/8, M_PI/6));
-
- plot(f, R);
- arrow(P(0,0,0), 2*E_1);
- arrow(P(0,0,0), 2*E_2);
- // SW corner at (i, 2-j), padded by 0.05 on all sides
- inset(P(i+0.05,2.05-j), P(i+0.95,2.95-j));
- }
-
- end();
-}
-
-
-[Image]
-
-
-File: epix.info, Node: `C++' Basics, Next: Animation, Prev: Tutorial, Up: Getting Started
-
-2.4 `C++' Basics
-================
-
-An `ePiX' source file is a `C++' program. If you've successfully
-modified and compiled the sample files, you know enough `C++' to use
-`ePiX'. In the author's experience, `C' grammar suffices for most
-applications. An excellent introduction to definitions of functions
-and variables, control statements, and overall program structure is
-Kernighan and Ritchie's _The `C' Programming Language_, second edition
-`KnR'.
-
-
-
-Jay Belanger's `emacs' mode for `ePiX' inserts a file template when an
-empty buffer is opened with the extension `xp'. This section explains
-the purposes served by the template. A few additional remarks may help
-you avoid basic syntax pitfalls.
-
- A `C++' file consists of "statements", analogous to ordinary
-sentences. Common types include _declarations_ (which "register" a
-function, variable, or type name with the compiler), _definitions_
-(which assign meaning to declared names), and _function calls_ (which
-cause a named function to execute). Most statements in an `ePiX' input
-file are function calls ("commands"). Plain declarations are
-relatively rare in user files, since a definition serves to declare any
-new names that it contains.
-
- Every statement ends with a semicolon, and conventionally a file
-contains at most one statement per line. The compiler ignores nearly
-all whitespace (spaces, tabs, and newlines), which should be used
-freely to make files easy to read. Other punctuation (periods, commas,
-(semi)colons, parentheses, braces, and quotes) dictates file parsing,
-and must adhere stringently to grammar.
-
- An `ePiX' file always begins with the lines
-
-#include "epix.h" // N.B. pre-processor directive, no semicolon
-using namespace ePiX;
- The first line is analogous to a `LaTeX' `usepackage' command: It
-loads the contents of the "header" file `epix.h', importing the names
-of commands provided by `ePiX'. To avoid name conflicts, `ePiX''s
-commands are enclosed in a "namespace". For example, the `label'
-command is actually known to the compiler as `ePiX::label'. The second
-line above tells the compiler to apply the prefix tacitly.
-
-
-
-Definitions of variables and functions play the same role in a figure
-that macro definitions play in a `LaTeX' document: gathering and
-organizing information on which the figure depends. A variable is
-defined by supplying its type, name, and initial value. By far the most
-common data types in `ePiX' are `double' (double-precision floating
-point number), `P', and `int'. The name of a variable may consist
-(only) of letters (including the underscore character) and digits, and
-must begin with a letter:
-
-my_var, var2, MY_var, aLongVariableName; // valid
-my-var, 2var, \v@@riable, $x, ${MY_VARIABLE}; // not valid
- Variable names are case-sensitive, and numerous (non-universal)
-conventions govern the significance of capitalization. Generally, make
-names descriptive but not unwieldy, and avoid language keywords (such
-as `const', `true', `double', `class', or `public') and names that
-begin with an underscore.
-
- A function accepts "arguments" and "returns a value". To define a
-function in `C++', you must specify the return type, the name of the
-function, the types of the arguments, and the algorithm by which the
-value is computed from the inputs. The code block
-
-double f(double x)
-{
- return sqrt(1-x*x);
-}
- specifies the `double'-valued function f of one `double' variable
-defined by the formula f(x)=\sqrt1-x^2.
-
-
-
-`C++' has two types of comments. `C'-style comments, which may span
-several lines, are delimited by the strings `/*' and `*/'. One-line
-comments, analogous to the `LaTeX' `\%', are begun with `//'. A
-one-line comment may appear within a multi-line comment, but a
-`C'-style comment may not; the compiler will mistake the first `*/' it
-encounters as the end of the current multi-line comment.
-
-
-
-All the "action" in a `C++' program occurs inside the special function
-`main'. Running a compiled `C++' program is viewed by the operating
-system as calling the program's `main' function. The return value (an
-`int') is the program's exit status. The contents of the output file
-start with `begin()' and terminate with `end()'. Intervening
-statements constitute the _body_ of the file.
-
- In `C++', a function may not be defined inside another function.
-Thus, variables may be defined inside `main', but functions cannot be.
-
-
-
-In `C++', a `string' is a sequence of characters. Most `string's in
-`ePiX' input files are _literals_, double-quoted `string's whose value
-is read from the input. In a string literal, backslash is an escape
-character; a single backslash is produced by a double backslash in the
-input file. Certain letters have special meanings when
-backslash-escaped, including "\n" (newline) and "\t" (<TAB>). Unlike
-`LaTeX', `C++' does not require a space to separate an escape sequence
-from following text; the string "\\textwidth" literally represents a
-`LaTeX' command, while "\textwidth" is read "`TABextwidth'" by the
-compiler.
-
- Though not commonly needed, raw text can be printed to the output
-file. The functions `write', `pre_write', and `post_write' accept
-`string' arguments. `write' prints its argument where the call appears
-in the input file. The other functions print their arguments before or
-after the completed picture, respectively. These commands must be in
-the file body. As an application, a complete `LaTeX' `figure'
-environment (with caption and label) can be produced by an `ePiX' file,
-Figure *Note fig:captioned::, .
-
-
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(-1,-1), P(1,1), "10cm x 3in);
- begin();
- pre_write("\@float Figure[hbt]"); // comes before the picture
-
- post_write("\@caption{A \@code{LaTeX}\ figure.}"); // and after
- post_write("\@end float");
-
- < ... other ePiX commands ... >
- write("%% A comment near the end, but inside the picture.");
- end();
-} // End of main()
-
-Figure: Generating a self-contained figure in `ePiX'.
-
-
-
-An algorithm's behavior usually depends on internal state. A
-_conditional statement_ causes blocks of code to be executed according
-to criteria. A _loop_ repeatedly executes a code block, usually
-changing the values of variables in a predictable way, so that the loop
-exits after finitely many traversals.
-
-
-File: epix.info, Node: Animation, Next: Layout Tricks, Prev: `C++' Basics, Up: Getting Started
-
-2.5 Animation
-=============
-
-`ePiX' is well-suited to the creation of mathematically accurate
-animations: If a figure depends suitably upon a "time" parameter, then
-a loop can be used to draw the entire figure for multiple time values,
-yielding successive "snapshots" of the figure as time progresses. The
-shell script `flix' automates the process of compiling a suitable input
-file into a collection of `png's and assembling these frames into a
-`mng' or `gif' animation. ImageMagick is the image-handling engine.
-
- A `flix' file is an `epix' file with two restrictions:
- * The `double' variable `tix()' is used as "clock".
-
- * `main' accepts two command line arguments and sets `tix()'
- accordingly.
- Jay Belanger's `emacs' mode recognizes the file extension `.flx' and
-inserts template code if an empty buffer is opened. Creation of `flix'
-files is as easy as creation of `epix' files. The `samples' directory
-contains a handful of `flix' files that may be consulted for ideas.
-
- By default, `flix' creates movies with 24 frames, in which `tix()'
-runs from 0 to 1, and animates at 0.08 sec/frame. These and other
-parameters can be changed with command-line options.
-
- A "typical" `.flx' file may take 30 seconds to a few minutes to
-compile, depending on the number of frames and the complexity of each
-frame. To facilitate debugging, `elaps' can be run on a `flix' file.
-`elaps' runs in a fraction of the time, and if `elaps' can't produce a
-viewable image, `flix' will surely fail. While running, `flix' prints
-a progress bar counting the number of `eps' files that have been
-created. There will be a delay of a few seconds (or more) after the
-last frame is produced, during which ImageMagick's `convert' utility
-assembles the movie.
-
-
-File: epix.info, Node: Layout Tricks, Prev: Animation, Up: Getting Started
-
-2.6 Layout Tricks
-=================
-
-
-
-Stereograms are created by drawing a single scene twice from slightly
-different points of view. To create a stereogram with `ePiX', write a
-"scene" function containing the necessary drawing commands, then set
-the camera appropriately and call the scene function twice, once for
-each frame.
-
-
-
-The sample files `lorenz.xp' and `twisted_cubic.xp' use page layout to
-draw crossed-eyes stereograms. For each frame, create and activate a
-`screen', set the camera, and call the scene function. The frames are
-inset side by side in the final picture. For a crossed-eyes stereogram,
-the frame from the "rightmost" camera position is placed on the left.
-
-
-
-The sample files `cube.flx' and `mirrorball.flx' contain animated
-red-cyan stereograms, suitable for viewing with 3-D glasses. The
-technique works best with black-and-white line drawings, but the basic
-approach is the same as for crossed-eyes stereograms: Create a scene
-function and call it twice, setting the camera appropriately. Layout is
-unnecessary since the frames are superposed. Pen colors should be
-close to red and cyan, but "optimal" choices depend on one's eyes and
-3-D glasses.
-
-
-
-Either form of stereogram can be animated in a `.flx' file, but keeping
-one's eyes properly crossed requires practice while most people can
-instantly see depth with 3-D glasses. As always when using `flix',
-debug the scene with `elaps' before compiling a movie. If a
-stereoscopic effect is difficult to see in a still image, it will be
-even harder to perceive in a movie.
-
-
-
-`ePiX' can place external images into a figure, similarly to Rolf
-Niepraschk's `overpic' package. You provide the Cartesian center point,
-the file name, and optionally the true height and/or width of the image:
-
- label(P(a,b), "\\includegraphics[width=w,height=h]{file}");
- This effect requires the `graphicx' package. When compiling a
-stand-alone graphic containing an external image, you must specify the
-`graphicx' package on the command line: `elaps -p graphicx <file>'
-
-
-File: epix.info, Node: Reference Manual, Next: Advanced Topics, Prev: Getting Started, Up: Top
-
-3 Reference Manual
-******************
-
-This chapter details `ePiX''s capabilities, discussing attributes and
-data types, and listing available commands in the form
-
- label(P posn, [P offset], string text, [align]);
- circle(P ctr, double rad=1, normal=P(0,0,1));
- As in Chapter *Note chapter:started::, , function arguments are given
-by type (`P', `double', `string', etc.)\ and name, or by name alone if
-the type is clear. Optional arguments are enclosed in square brackets.
-A few argument types, such as `[align]' above, admit only a small
-number of values; these cases are explained when the corresponding
-command is first introduced.
-
- A name followed by an equals sign and a value indicates a default
-argument; if omitted in an input file, the compiler substitutes the
-default value. Only trailing arguments may be specified this way. For
-example, if the `rad' argument of the `circle' command is omitted, the
-`normal' argument _must_ be omitted as well.
-
- In an input file, only an argument's value is given, not the type:
-
- label(P(0,0), P(0,-4), "Hello world", b);
- circle(P(0,-0.25), sqrt(2)); // use default normal
-
- Generally, `len' signifies either a number (representing a length in
-`pt') or a double-quoted string containing a number and a two-letter
-`LaTeX' length unit, such as `"1.5pt"' or `"6cm"'. `color' represents a
-`Color' object constructed from a named primary (`Blue()',
-`Magenta(0.7)', etc.), a color specification (`RGB(r,g,b)',
-`CMY(c,m,y)', etc.), or an operator applied to an existing `Color'.
-
-* Menu:
-
-* File Structure::
-* Picture Size and Aspect Ratio::
-* Color::
-* Scene Attributes::
-* Drawing Attributes::
-* Creating and Drawing Objects::
-* More About `C++'::
-* Attribute Quick Reference::
-
-
-File: epix.info, Node: File Structure, Next: Picture Size and Aspect Ratio, Prev: Reference Manual, Up: Reference Manual
-
-3.1 File Structure
-==================
-
-An `ePiX' input file constitutes a short `C++' program. When this
-program is compiled and run by one of the shell scripts, it creates a
-figure file suitable for inclusion in `LaTeX'.
-
- Like a `LaTeX' document, an `ePiX' file contains a _preamble_, which
-sets up a drawing environment, and a _body_, which contains actual
-figure-generating commands. The minimal file has the form
-
-#include "epix.h" // N.B. no semicolon
-using namespace ePiX;
-
-int main() {
- picture(P(a1,b1), P(a2,b2), "n1 [unit1] x n2 unit2");
- begin(); // end of preamble, start of body
- end(); // end of body
-}
- `ePiX' commands are of four general types: drawing, attribute setting,
-definitions (of data and functions), and operations on existing
-objects. Except as noted below, drawing and attribute commands must
-appear in the body, between `begin()' and `end()'. Function definitions
-must come in the preamble, before `main()'. Data definitions may appear
-in the preamble or body.
-
-
-
-The `end()' command writes the output file to `stdout', using `eepic'
-macros by default. The shell scripts redirect `stdout' to an
-appropriate disk file.
-
- The attribute-setting command `pst_format()' causes the output file
-to be written using `PSTricks' macros when `end' is called. Similarly,
-`tikz_format()' causes the file to be written using `tikz' macros, and
-`eepic_format()' causes the file to be written using `eepic' macros.
-These commands may appear anywhere in the figure body. There is no
-reason for a file to contain more than one such command.
-
- The output format may be selected on the command line, overriding any
-explicit request in the input file. Supplying `epix', `elaps', or
-`flix' with one of the options `--pst', `--tikz', or `--eepic' is
-tantamount to issuing a `pst_format()' (etc.)\ command just before the
-end of the file. These options are listed in decreasing precedence. If
-more than one is given, the "strongest" applies, regardless of the
-command line order.
-
- A figure may be written directly to a specified disk file, in a
-format unaffected by the command line flags above. The command
-
- print_eepic("file.tex");
- writes the figure to the named file using `eepic' macros. Analogous
-commands exist for the formats `pst' and `tikz'. These commands perform
-an immediate action. Consequently, the command's location in the input
-file is significant, and multiple commands may appear in a single file,
-so long as distinct file name arguments are provided. Applications
-include writing the same figure in multiple formats, or creating
-successive "snapshots" of a lengthy computation.
-
-
-File: epix.info, Node: Picture Size and Aspect Ratio, Next: Color, Prev: File Structure, Up: Reference Manual
-
-3.2 Picture Size and Aspect Ratio
-=================================
-
-The `picture' command specifies a figure's logical and true sizes. In
-the "minimal file" snippet above, the _canvas_ is the Cartesian
-rectangle [a_1,a_2]\times[b_1,b_2] whose corners are given. Either pair
-of opposite corners is acceptable, but confusion is less likely when
-the SW and NE corners are given, in this order.
-
- The true (printed) width and height are read from `picture''s third
-argument, a "size `string'" such as "4cm x 1in", containing a number
-and optional `LaTeX' length unit, an `x', another number, and a
-mandatory length unit. Spaces may be used for legibility. The
-mandatory length unit becomes the `LaTeX' `unitlength'. The argument
-"4cm x 1in" creates a picture 4 cm wide and 1 in high, but internally
-converts 4 cm to inches. Recognized length units are `pt' (points, the
-default), `cm' (centimeters), `in' (inches), `mm' (millimeters), `pc'
-(picas), and `bp' (big points). (`1in = 2.54cm = 72bp = 72.27pt', `1pc
-= 12pt'.)
-
- The logical and true sizes may be defined separately with the
-commands
-
- bounding_box(P(a1,b1), P(a2,b2));
- picture(n1, n2);
- unitlength(len); // len a length string, not a double
- One way or another, the logical and true dimensions _must_ have
-positive values when the `begin()' command is issued.
-
- `LaTeX' treats the contents of a picture environment as a single box,
-aligned by default on its lower left corner. An `offset' command
-accepts two `double' arguments or a size `string' and shifts the page
-location accordingly. The command `offset("0.25 x -0.5cm")' shifts the
-picture right 0.25 cm and down 0.5 cm. If the `unitlength' is 1 cm,
-the command `offset(0.25, -0.5)' has the same effect.
-
- A non-zero `offset' causes a picture's contents to appear in a
-location where `LaTeX' does not expect them. This can be useful in a
-`LaTeX' document, but should be avoided when compiling a stand-alone
-image, since `dvips' may crop according to rules of its own.
-
- The canvas's corners are `(xmin(),ymin())' and `(xmax(),ymax())',
-while its width and height are `xsize()' and `ysize()'. The canvas is a
-virtual, advisory data structure; its dimensions are not directly
-related to the figure's printed size, and picture elements may lie
-outside the canvas. Affine scaling maps the canvas to the page when the
-output file is written.
-[Image]
-
- The figure's aspect ratio is controlled by sizing the canvas. The
-aspect ratio is "true" if the canvas and page rectangles are
-geometrically similar, e.g., if both boxes are 1.5 times as wide as
-they are tall.
-
-
-File: epix.info, Node: Color, Next: Scene Attributes, Prev: Picture Size and Aspect Ratio, Up: Reference Manual
-
-3.3 Color
-=========
-
-`ePiX' provides a `Color' data type. Four models are implemented:
-`RGB', `CMY', `CMYK', and `Gray'. A `Color' holds primary color
-"channels", each carrying an intensity between 0 (no color) and 1 (full
-saturation). "No color" means black in `RGB' and `Gray', white in
-`CMY(K)'. `RGB', `CMY', and `CMYK' colors are written to the output
-file as commands in the corresponding model. `Gray' shades are written
-in `RGB'.
-
- Operations on red-green-blue colors are described below.
-Functionally, colors are converted to `RGB', operated upon, then
-converted back to the original model. Conversions are as described in
-Uwe Kern's `xcolor' manual `xcolor'.
-
-
-
-Each color model has a "constructor" creating a color of specified
-densities. The `RGB' and `CMY' models have named "primary"
-constructors; the density argument is optional and defaults to 1.
-
- // red-green-blue colors
- RGB(double r=0, double g=0, double b=0);
- Red(d=1); Green(d=1); Blue(d=1);
- White(d=1); Black(d=1);
-
-
- // cyan-magenta-yellow colors
- CMY(double c=0, double m=0, double y=0);
- Cyan(d=1); Magenta(d=1); Yellow(d=1);
- CMY_White(d=1); CMY_Black(d=1);
-
- // gray
- Gray(double d=0); // equivalent to RGB(d, d, d)
- Each `CMY' constructor has a corresponding `CMYK' function, e.g.\
-`CyanK()' or `CMYK_White()'.
-
- Though color densities lie between 0 and 1, `ePiX''s primary color
-constructors take arguments mod 4, viewed as elements of [-2,2].
-Consider `Red(d)', "red with density d". For integer values of d, the
-constructor has the following meanings: `Red(0)' is black, `Red(1)' is
-red, `Red(2)'=`Red(-2)' is white, and `Red(-1)' is anti-red, or cyan.
-For non-integer d, the constructor interpolates between the bracketing
-integer values, Figure *Note fig:densities::, . Other primary
-constructors work analogously.
-
-
-[Image]
-
-Figure[hbt]
-
- Let \delta:[-2,2]\to[0,1] be the piecewise-linear function that
-converts real numbers to primary color densities, \clip:R\to[0,1] the
-clipping function. The non-primary constructor `RGB(r, g, b)' computes
-the density of the red channel as
-\clip\bigl(\delta(r)+\delta(-g)+\delta(-b)\bigr); the green and blue
-channel densities are computed similarly. Every color can be created
-with arguments between 0 and 1, but the constructor accepts arbitrary
-real arguments and returns colors varying "continuously and
-periodically".
-
- Colors possess an "alpha-channel" for transparency. Except as
-supported by the output format, this feature is a stub.
-
-
-
-Colors can be scaled, inverted, blended, superposed, and filtered. In
-the code below, `tint' is a `Color'. The effect of each operation is
-described in the `rgb' model; the visual result is the same in all
-models.
-
- tint *= double c; // multiply channels by c, rebuild
- tint.invert(); // (r, g, b) -> (1-r, 1-g, 1-b)
- tint.blend(Color col, double t); // (1-t)*tint + t*col
- tint.superpose(col); // add channels, then clip to [0,1]
- tint.alpha(double d); // set alpha channel to clip(d)
-
- tint.filter(col); // return min density in each channel
- Except for `filter', these operators modify their object. `filter'
-simulates the effect of viewing `col' through a transparent sheet of
-`tint', and returns a new `Color' object having the same model as
-`tint' without modifying `tint' itself.
-
-
-File: epix.info, Node: Scene Attributes, Next: Drawing Attributes, Prev: Color, Up: Reference Manual
-
-3.4 Scene Attributes
-====================
-
-Objects in a scene sit in 3-dimensional space. A _camera_ maps objects
-to the _active screen_. The active `screen' may, in turn crop its
-contents. Each drawing command creates an object, "photographs" it, and
-adds the image to the active `screen'. This section describes the
-`Camera' and `screen' classes and a few associated concepts.
-
-
-
-By default, angles are measured in `radian's. Two other angular modes
-are available: `degrees' and `revolutions'. The angular mode is set
-with a named command, `radians()', `degrees()', or `revolutions()'. The
-current angular mode affects all trigonometric functions and operations.
-
-
-
-Three-dimensional scenes are drawn on flat paper by applying a
-mathematical transformation. By default, `ePiX' uses _point
-projection_, the technique used by art students when they trace on a
-window with grease pencil, Figure *Note fig:camera::, .
-
-
-[Image]
-
-Figure[hbt]
-
- `ePiX' depicts a Cartesian world by projecting mathematically to a
-screen plane, then affinely scaling to a printed page. The camera,
-which maps the world to the screen, consists of a _body_ (data that
-determines the position and orientation of the camera), a _lens_ (the
-actual mapping to the screen plane), and a _filter_ (a color through
-which the scene is viewed).
-
-
-
-The camera's spatial orientation is described by a triple of mutually
-perpendicular unit vectors. In memory of happy days at the beach,
-these vectors are called _sea_, _sky_, and _eye_. The screen plane is
-parallel to the sea-sky plane; the sea vector points horizontally to
-the right, sky points vertically upward. The eye is their cross
-product, which points directly at the viewer.
-
- The sea-sky-eye basis is located at the _viewpoint_, the camera's
-spatial location. The _target_, the origin of the screen plane, lies on
-the line through the viewpoint in the direction opposite the eye
-vector. The distance from the viewpoint to the target is the _range_.
-The _camera sphere_ is centered at the viewpoint and passes through the
-target. The orientation, viewpoint, target, and range completely (and
-redundantly) determine the camera's geometric situation in the world.
-
-
-
-A _lens_ maps the world to the screen. `ePiX' comes with four lenses:
-_shadow_ (the default), _orthogonal_, _fisheye_, and _bubble_. Each
-lens simulates the appearance of world objects as seen by an observer
-at the viewpoint. The shadow lens is point projection from the
-viewpoint to the screen plane. The orthogonal lens projects from
-infinite distance. Each of the other lenses performs radial projection
-to the camera sphere, then maps the sphere to the screen plane; the
-fisheye lens does orthogonal projection (so the entire image lies
-inside the disk centered at the target whose radius is the range) while
-the bubble lens does stereographic projection from the target's
-antipode.
-
- An input file normally uses a single camera, so a global object named
-`camera' is defined automatically. At the start of a figure, the
-`camera' looks down on the (x_1,x_2)-plane from a distant point on the
-x_3-axis. The resulting view, essentially projection along the axis, is
-suitable for 2-dimensional figures.
-
- The `camera' is manipulated similarly to a real camera:
-
- camera.at(P posn); // set viewpoint to posn
- camera.look_at(P targ); // set target to targ
- camera.range(double dist); // fix target, move viewpoint
- camera.focus(double dist); // fix viewpoint, move target
- camera.tilt(double angle); // rotate about the sea axis
- camera.pan(double angle); // rotate about the sky axis
- camera.roll(double angle); // rotate about the eye axis
- camera.clip_range(dist); // cull scenery closer than dist
- Explicitly setting the viewpoint or target makes the sky vector
-parallel to the projection of the x_3 axis when possible; otherwise the
-x_2-axis is used. Setting the range or focus moves the `camera'
-parallel along the eye line. Each command re-sizes the image; note that
-increasing the focus _enlarges_ the image. The three rotation
-operations fix the viewpoint, but only roll fixes the target.
-
-
-
-The `camera' has a _filter_ through which all scene `Color's pass. For
-uniformity, the filter should only be set at the start of the file
-body, before any visible elements have been placed in the scene. The
-filter has two primary uses--model conversion and color separation--but
-can also be used for special effects.
-
- There is a `Neutral' color, for which filtering has no effect at
-all. The `camera''s default filter is `Neutral'. In addition, each
-color model has a _neutral_ representative, `RGB_Neutral', etc. Passing
-`Color's through a neutral filter preserves their appearance but
-converts them to the neutral `Color''s model.
-
- Filtering can be used to "split" a `Color' into primary
-constituents. For `RGB' channels, the primaries themselves are suitable
-filters. For `CMYK' channels, there are special _process_ filters,
-named C_Process, etc.
-
- camera.filter(CMY_Neutral()); // convert all colors to CMY
- camera.filter(Gray_Neutral()); // black and white photography
- camera.filter(Green()); // the green channel
- camera.filter(M_Process()); // the magenta channel
- camera.filter(Red(1.4)); // la vie en rose?
-
-
-
-
-Two operations handle elements lying far from the target. _Cropping_
-culls elements based on their screen location, and is described later.
-_Clipping_ removes objects whose spatial location lies outside the
-"clip region".
-
- Initially, the clip region is a very large box centered at the
-origin. Commands are provided to resize this box, keeping the faces
-parallel to coordinate planes.
-
- clip_box(P pt1, P pt2); // opposite corners
- clip_box(P pt); // opposite corners pt and -pt
- clip_to (P pt); // pt and P(0,0,0)
- clip_box(); // very large box
- Additional "clippers" may be added manually. Individual clipping
-planes are specified by a point and inward-pointing normal vector.
-Parallel planes cutting a "slice" or "slab" are described by a
-location, direction, and a distance. The location lies halfway between
-the clipping planes, and the planes' normals point toward the location.
-
- clip_face(P loc, P perp); // perp points inward
- clip_slice(loc, perp); // very close parallel planes
- clip_slice(loc, perp, dist); // planes separated by dist
- clip_restore(); // remove manually-added clip planes
- Like `clip_restore', the `clip_box' and `clip_to' commands remove all
-user-specified half spaces.
-
-
-
-By default, drawing occurs in the Cartesian coordinate system of the
-`canvas'. However, insets and subfigures are most naturally composed in
-"local" coordinates, then placed into their final location as a unit, a
-process called _layout_. `ePiX' implements layout with the `screen'
-class.
-
-
-
-A `screen' is a Cartesian plane containing a distinguished coordinate
-rectangle, its _bounding box_. The `canvas' of a figure is a `screen',
-as is the internal representation of the printed page. At any point of
-a file body, some `screen' is _active_, or "open for drawing". A new
-`screen' is created from a pair of opposite corners, but is not used
-until explicitly activated.
-
- screen subfig(P(a1,b1), P(a2,b2)); // [a1, a2] x [b1, b2]
- activate(subfig); // open subfig for drawing
- // commands to draw in subfig
- deactivate(subfig); // re-activate the previous screen
-
- The `canvas' is automatically drawn at the `end' of the input file.
-The contents of other `screen's must be incorporated into the `canvas'
-explicitly with an `import' or `inset' command. `import' affinely
-scales the bounding box of the "child" `screen' to the `canvas'. `inset'
-specifies corners in the "parent" where the child is placed.
-
- import(); // active screen to canvas
- import(subfig); // subfig to canvas
- inset(P sw, P ne); // active screen to specified rectangle
- inset(subfig, sw, ne); // subfig to specified rectangle
- inset(subfig); // inset to subfig's corners
-
-
-
-The portion of a `screen' enclosed by a specified rectangle can be
-_extracted_. Each of the commands
-
- subfig.extract(P sw, P ne);
- canvas().extract(P sw, P ne);
- returns the `screen' having stated corners and containing part of
-`subfig' or the `canvas', respectively. Elliptical and diamond-shaped
-portions of a `screen' may be extracted. The contents occupy the
-ellipse or diamond inscribed in the given rectangle.
-
- subfig.extract_ellipse(sw, ne);
- canvas().extract_diamond(sw, ne);
- The `screen' returned by `extract' (or its variants) may be used just
-like a manually-constructed `screen', for example to construct a
-magnified inset.
-
-
-
-On occasion, it is necessary to draw at known page size, independently
-of the unit length. For 2-dimensional drawing in the (x_1,x_2)-plane
-with the `camera' in its default location, the coordinates (horizontal,
-vertical, or both) of a `screen' may be interpreted as true pt offsets
-relative to a specified point rather than as Cartesian coordinates.
-
- inlay(subfig, P loc);
- inlay_horizontal(subfig, loc);
- inlay_vertical(subfig, loc);
- Each command maps the origin of `subfig' to the specified location in
-the active `screen'. The first performs affine scaling so that one
-Cartesian unit in `subfig' maps to one true pt on the page. The second
-and third commands perform this scaling only in the named direction.
-
- The `inlay' functions are suitable only for 2-dimensional effects.
-For 3-dimensional true-size drawing, the function `pt_to_screen'
-converts a true length of 1 pt into Cartesian coordinates in the active
-`screen'. For example, the command `line(P(0,0),
-P(pt_to_screen(12),0))' draws a line segment 12 pt long with its left
-endpoint at the Cartesian origin. True size drawing is unusual in an
-input file, but has definite uses in library code; `ePiX''s right angle
-marker is a typical application.
-
- Either type of true-size drawing works as described when drawing in
-the `canvas', and _only_ when drawing in a `screen' imported to the
-`canvas' at "true Cartesian" size (one `screen' unit maps to one
-Cartesian unit in the `canvas'). In other situations, the true size
-coordinate(s) will be scaled by additional affine transformation(s).
-
-
-
-A `screen' has a _crop mask_: rectangular (default), elliptical, or
-diamond-shaped. If cropping is switched on in the active `screen',
-added elements are cropped to the crop mask. For example, cropping by
-the default crop mask in the `canvas' ensures the figure lies inside
-the printed region allocated by `LaTeX'.
-
- The `crop' commands below affect the active `screen' only. Cropping
-is not a "global" attribute, but must be set or unset explicitly for
-each `screen'. By default, cropping is switched off.
-
- set_crop(); // activate cropping
- set_crop(false); // deactivate cropping
- crop_diamond(); // <>-shaped mask, set crop state
- crop_ellipse(); // etc...
- crop(); // crop active screen's contents
- Normally the crop mask is inscribed in the `screen''s bounding box.
-The commands `crop_diamond' and `crop_ellipse' also accept a pair of
-`P' arguments, which are treated as corners of the crop box.
-
- The active `screen' may be decorated with a `border' (outline of
-specified color and line width) and `backing' (solid fill color). The
-crop mask determines the shape of the `border' and `backing'.
-
- border(color, len);
- backing(color);
- Identically-named member functions can be applied to an arbitrary
-`screen' whether or not it is active:
-
- scr.crop_rectangle().backing(Blue(1.8));
- canvas().crop();
-
-
-
-A _plane affine map_ has the form T(x) = Ax+b for some invertible
-2\times2 matrix A and a constant vector b. `ePiX''s `affine' class
-allows affine maps to be built and applied to `screen's' contents.
-
- An affine map is uniquely determined by the images of three
-non-collinear points. The constructor returns the affine map sending
-the points (1,0), (0,1), and (0,0) to `pt1', `pt2', and `pt0',
-respectively.
-
- affine af(P pt1, P pt2, P pt0=P(0,0));
- To emphasize, the arguments are locations, not displacements, and the
-image of the origin comes last. There is also a `void' constructor
-(taking no arguments) which returns the identity map.
-
- To facilitate construction of affine maps, an existing `affine' may
-be post-composed with a variety of "elementary" affine transformations.
-In the commands below, `th' is an angle (in current units), `sc' is a
-non-zero `double', and `ctr' is a point fixed by the composing
-transformation. In each command, `ctr' defaults to (0,0).
-
- affine af; // the identity map
- af.shift(P arg); // translate by arg
- af.rotate(th, [ctr]); // counterclockwise rotation about ctr
- af.reflect(th, [ctr]); // reflect across line through ctr
-
- af.h_scale(sc, [ctr]); // horizontal scaling
- af.v_scale(sc, [ctr]); // vertical scaling
- af.scale(sc, [ctr]); // dilatation
-
- af.h_shear(sc, [ctr]); // shear preserving horizontals
- af.v_shear(sc, [ctr]); // shear preserving verticals
-
- af.invert(); // the inverse
- af.postcomp(affine f); // post-compose with f
- af(f); // pre-compose, af not modified
- A non-invertible `affine' can be created _only_ by shearing or scaling
-with an extremely large or extremely small argument, or by supplying
-three collinear points to the constructor. Calling `invert' on a
-non-invertible map merely issues a warning and performs no action.
-
- An `affine' may be applied to a `screen''s current contents. The
-`screen' class has eight member functions (`shift' through `shear')
-with syntax identical to the affine map functions. In addition, an
-arbitrary `affine' may be applied to a `screen':
-
- scr.shift(arg); // shift scr's contents by arg; etc.
- scr.apply(f); // apply f to scr's contents
- To apply a composition of several maps to a `screen', it's best to
-build an `affine' map by composition, then `apply' the map. Composing
-`affine's is cheap; `apply'ing an `affine' is costly in proportion to
-the number of elements in the `screen'.
-
- Applying an `affine' to a `screen' has no effect on the bounding
-box, `border', or `backing', and may move elements outside the bounding
-box even if cropping is active. To ensure a `screen''s contents lie
-inside the bounding box, `crop' the `screen' _after_ `apply'ing the
-`affine'(s).
-
- The sample file `inverse.xp' uses `affine' maps to depict branches
-of inverse functions in one variable, `symmetry.xp' depicts the
-permutation group S_3 by its action on a regular hexagon.
-
-
-File: epix.info, Node: Drawing Attributes, Next: Creating and Drawing Objects, Prev: Scene Attributes, Up: Reference Manual
-
-3.5 Drawing Attributes
-======================
-
-`ePiX' maintains drawing states for filled regions, paths, and text
-objects.
-
-
-
-Filling is either on or off. When filling is active, closed paths are
-filled with the current _fill color_.
-
- fill(); // turn filling on
- fill(color); // turn filling on, specify color
- nofill(); // turn filling off, same as fill(false);
-
-
-
-Paths and borders of filled regions are drawn with two _pen_s, each
-described by color and line width. The _line pen_ draws all path-like
-objects. The _base pen_ does nothing unless it is wider then the line
-pen, in which case it draws an "underlayer" or "border" on the line pen.
-
- pen(len); // set line pen width
- pen(color); // set line color, keep width
- pen(color, len); // set color and width
- As usual, `len' may be either a length string or a `double',
-interpreted as a width in `pt'. There are `base' functions with the
-same signatures and analogous meanings for the base pen.
-
- The line width can be set with named declarations; the optional
-argument sets the line color:
-
- plain([color]); // 0.4pt
- bold([color]); // 0.8pt
- bbold([color]); // 1.6pt
-
-
-
-By default, path-like objects are drawn with solid lines. Dashed,
-dotted, and free-form path style patterns are also available. (The
-`base' underlayer is always solid.) The page length of a pattern
-defaults to 12 pt, but can be set.
-
- line_style(string);
- dash_size(len=12);
- The path style is set with a WYSIWYG string of dashes, spaces, and
-periods, representing a pattern of dashes, gaps, and dots. In the
-sample styles below, the repeating units have the same page size, 12 pt.
-[Image]
-
- For brevity and uniformity, named commands are provided.
-
- solid(); "-" dashed(); "- -" dotted(); " . "
- A sequence of n dashes, spaces, and dots corresponds to a dash/dot
-pattern in an interval divided into n subintervals of equal length. If
-the ith character is a dash or space, the ith subinterval is drawn
-solid or empty, respectively. If the ith character is a period, a dot is
-placed at the midpoint of the ith subinterval.
-
- This pattern is applied to a path-like object as follows. The page
-length of each edge is divided by the current `dash_size' and the
-ceiling (next largest integer) taken. This many copies of the current
-path style are scaled onto the edge. The first and last characters are
-adjacent in repeated units.
-
- There are three inequivalent ways to adjust the dash length/dot
-spacing in a non-line path: Change the `dash_length', create a path
-with a different number of points, or use a longer, repetitive pattern.
-For best results, the style string should not be longer than about a
-dozen characters.
-
- If you need several dashed/dotted line styles in multiple figures,
-it's best to define a custom header instead of hard-coding line styles.
-See Section *Note section:extensions::, for guidance.
-
-
-
-Two types of textual element may appear in a file: _labels_ (text
-boxes) and _markers_ (`LaTeX' symbols). A marker occupies a box of zero
-size, and is placed at a specified Cartesian location. A label has
-typographical size, and is usually offset from its Cartesian location.
-For placement, an _alignment point_ is attached to each label, and
-Cartesian coordinates position the alignment point.
-
-
-
-A label is printed as a `LaTeX' box. By default, the alignment point
-is its reference point, the intersection of the left edge and the
-baseline, which is used by `LaTeX' to position the box on the
-page:[Image]
-
- The alignment point may be _offset_ manually by a specified number
-of `pt'. Additionally, a label's location with respect to the alignment
-point can be chosen with an optional `LaTeX'-style alignment option.
-This scheme allows labels to be placed easily where they will not
-overlap other parts of the figure, and ensures labels stay properly
-positioned when the size or aspect ratio of a figure changes.
-
- label(P posn, P offset, string msg, [align]);
- label(posn, msg);
- The first two components of the `offset' argument are numbers of `pt'
-to shift the alignment point right and up. The optional `align'
-argument may be one--or an appropriate pair--of `t', `b', `r', or `l'
-(top, bottom, right, left), or `c' (center). These alignment options
-specify the position of the label _relative to the Cartesian location_
-`posn', namely they work _opposite_ to the way they work in `LaTeX'.
-[Image]\qquad [Image]
-
- The `msg' argument is usually a snippet of `LaTeX' code enclosed in
-double quotes. `C++' treats "\" as an escape character, so a double
-backslash is needed in the source to get a single backslash in the
-output. For example,
-
- label(P(0,0), P(2,-1), "$\\rho = \\sin\\theta$", br);
- positions an alignment point `2pt' right and `1pt' below the
-(Cartesian) origin, and typesets the equation \rho=\sin\theta below and
-to the right.
-
- Labels can be rotated; the (counterclockwise) angle is set in current
-angle units with the command `label_angle(theta)'. For example, a
-rotation angle of 90 degrees prints labels along a vertical axis.
-Though label rotation has legitimate uses, it can make labels more
-difficult to read, defeating their purpose. Do not use rotated labels
-merely because they are available. As a practical matter, if an output
-file contains rotated labels, the enclosing document must use the
-`rotating' package. `elaps' automatically loads this package.
-
- An `affine' behaves moderately intelligently when acting on a marker
-or label. The mapping is applied to the label's location, and the
-"linear part" is used to adjust the offset and label angle. No attempt
-is made to treat alignment. For best results, if a `screen' will have
-an `affine' applied to it, label positions should be fine-tuned only
-with offsets, not alignment arguments. In all situations, the font
-itself is unchanged; no attempt is made to print sheared, scaled, or
-reflected text. The sample file `inverse.xp' illustrates the effect of
-affine maps on labels.
-
-
-
-By default, the font in an `ePiX' figure is that of the enclosing
-document. The font size and face are changed with "declaration-style"
-commands such as
-
-font_size("Large");
-font_face("sc");
- The argument of font_size is a valid `LaTeX' size. If no argument is
-given, `normalsize' is understood. font_face accepts a two-letter
-string, appended to the string "`text'" to give a `LaTeX' font
-declaration command ("`textsc'" above). Finer-grained control is
-accomplished by placing `LaTeX' commands into the label text.
-
-
-
-Each label command has a corresponding "mask" version (`masklabel')
-that draws an opaque rectangle under the label text. The mask size
-exceeds the label's size by an amount of _padding_, and the mask is
-itself surrounded by a rectangular _border_, of specified color and
-width.
-
- label_color(color); // set label text color
- label_mask(color=White()); // set mask color
- label_pad(string len);
-
- label_border(color, [len]); // set color (and line width)
- label_border(len); // set line width only
- no_label_border(); // turn off label borders
-
-
-
-`ePiX''s marker types, listed in Table *Note table:marker::, , are
-obtained with the command marker(P pt, <MARKER TYPE>); Several
-"dot-like" marker types are available by name: [Image]
-
- spot(P pt); dot(P pt); ddot(P pt);
- --- box(P pt); bbox(P pt);
- ring(P pt); circ(P pt); ---
- A `circ' is filled with the current `mask_color', and a `ring' is
-"hollow". Each dot-like marker can also be called with label syntax,
-generating a labeled marker with one command.
-
- dot(P posn, offset=P(0,0), msg="", align=none); // etc.
-
- By default, `spot' and `ring' are 4 pt in diameter; `dot', `box',
-and `circ' are 3 pt in diameter; `ddot' and `bbox' are 2 pt in
-diameter. At arbitrary diameter, a `spot' is 4/3 the diameter of a `dot'
-and a `ddot' is 2/3 the diameter. The command `dot_size(diam=3)' sets
-the diameter of a `dot', and hence the size of all dot-like markers.
-
-
-[Image]
-
-Table[tb]
-
-
-
-When constructing and placing a label,
- * Offsets are specified in `pt' (true length), not Cartesian
- units: A label's location relative to its alignment point should
- not depend on the logical or printed size of the figure.
-
- * The label text is enclosed in double quotes (the single
- character `"'), and contains the `LaTeX' code to generate the
- label. Backslashes are doubled.
-
-
-
-Old-style color declarations set the fill color, line color, and text
-color.
-
- rgb(r, g, b); cmyk(c, m, y, k);
- rgb(P); cmyk(P); // for function-controlled colors
- red(d); // similarly for other primaries
-
-
-
-File: epix.info, Node: Creating and Drawing Objects, Next: More About `C++', Prev: Drawing Attributes, Up: Reference Manual
-
-3.6 Creating and Drawing Objects
-================================
-
-Scene elements include geometric objects, coordinate grids, axis
-labels, and function plots. A few commands create an object (a point,
-line segment, circle, sphere, or plane) that can be used in subsequent
-computations, but most drawing commands automatically create, draw, and
-discard objects.
-
-
-
-The simplest object in the world, and by far the most common named data
-structure, is `P', an ordered triple of real numbers (double-precision
-floats). The function `P(x1,x2,x3)' creates the point (x_1,x_2,x_3). If
-only two arguments are provided, x_3=0 by default. This convention
-allows `ePiX' to treat 2- and 3-dimensional figures uniformly. The
-standard basis is available: `E_1=P(1,0,0)', etc.
-
- Depending on context, a `P' may represent either a _location_
-(point) or a _displacement_ (vector). Almost all `ePiX' functions treat
-a `P' as a point. However, algebraic operators and commands that plot
-vector fields treat `P' arguments as displacements.
-
- Polar, cylindrical, and spherical coordinate `P' constructors are
-sensitive to the current angular mode.
-
- P pt=polar(r,t); // (r*Cos(t), r*Sin(t), 0)
- P pt=cis(t); // (Cos(t), Sin(t), 0) = polar(1, t)
- P pt=cyl(r,t,z); // (r*Cos(t), r*Sin(t), z)
- P pt=sph(r,t,phi); // polar(r,t)*Cos(phi) + (0,0,r*Sin(phi))
-
- Algebraic operations--addition/subtraction, scalar multiplication;
-scalar, cross, and componentwise products; orthogonalization--can be
-performed on `P's. In compound expressions, the binary operators below
-should be enclosed in parentheses, and scalars must be collected at
-left, `P's at right.
-
- double u=pt.x1(); // first coordinate of pt, etc.
- P(a,b,c)|P(x,y,z); // scalar product, ax+by+cz
- P(a,b,c)&P(x,y,z); // componentwise product (ax, by, cz)
- P(a,b,c)*P(x,y,z); // cross product (bz-cy, cx-az, ay-bx)
- J(p); // quarter turn about the x3-axis
- p%q; // orthogonalization, p (mod q)
- Explicitly, `p\%q' is the unique vector `p+k*q' perpendicular to `q'.
-
- `P' operations express mathematical relationships, and therefore
-imbue a figure with logical structure, making the input file easier to
-read, modify, and maintain. Commonly, a file preamble will define a few
-named points with hard-coded coordinates, then define additional points
-of interest using `P' operators.
-
-
-
-In addition to `P', objects of type `Circle', `Plane', `Segment', and
-`Sphere' can be used for Euclidean geometry constructions. Simple
-affine operations are supplied for each type, as is a `draw()'
-function, which represents the object as a path in the screen.
-
- obj.shift(P arg); // translate by arg
- obj.move_to(P arg); // move center to arg
- obj.scale(double c); // scale about center by c
- obj.draw();
- A `Segment''s "center" is its midpoint. A `Plane' has no center;
-`move_to' translates the `Plane' to pass through `arg', and `scale' has
-no effect.
-
- A `Circle' data structure consists of a center, radius, and a
-perpendicular unit vector. Three constructors are provided:
-
- Circle(center=P(0,0,0), double rad=1, normal=E_3);
- Circle(P center, P point);
- Circle(P p1, P p2, P p3);
- The second constructor creates the `Circle' parallel to the (x_1,x_2)
-plane, with given center, and radius equal to the distance between the
-arguments. (A warning is printed if the second argument does not lie on
-the circle, namely, if the arguments do not lie in a plane parallel to
-the (x_1,x_2) plane.) The third returns the `Circle' passing through
-the given points; the points must not be collinear.
-
- The data defining a `Circle' are recovered with member functions
-named `center()', `radius()', and `perp()'.
-
- A `Plane' is specified by a point and normal vector, or by three
-non-collinear points. The `draw()' function clips the plane and draws
-the resulting polygon. Unless the clip box has been set manually, the
-clipped polygon's vertices will have large coordinates.
-
- A `Segment' is constructed from its endpoints. The member function
-`midpoint()' returns the center.
-
- A `Sphere' is specified by a point and a radius--by default the
-origin and unity, or by the center and a point on the sphere. Member
-functions `center()' and `radius()' return the defining data.
-Capabilities specific to geography and spherical geometry are described
-below, pp. *Note non-eucl::ff.
-
- The `draw()' function of a `Sphere' draws the horizon visible from
-the current viewpoint. While this horizon is a circle in object space,
-its image in the screen is generally an ellipse. Antipodal points are
-not generally mapped to points symmetrically placed with respect to the
-center of this ellipse. These effects are most pronounced when the
-viewpoint is close to the `Sphere' and the center is not close to the
-`target'.
-
-
-
-To facilitate geometric computation, `ePiX''s `Circle', `Plane',
-`Segment', and `Sphere' classes can be intersected with the `*'
-operator.
-
- A `Circle' has a center, radius, and unit normal; a `Plane' has a
-distinguished point and unit normal; a `Segment' has two endpoints; a
-`Sphere' has a center and radius. An object is _malformed_ if these
-conditions are not met. The constructors return well-formed objects
-with two exceptions: `Circle' and `Plane' create malformed objects if
-called with three collinear points. The operator `*' returns a
-malformed object if either argument is malformed, or if the operands
-are disjoint, tangent, or coincident. Malformedness is benign: Calling
-`draw()' on a malformed object does nothing.
-
-
-
-A `frame' comprises three mutually perpendicular unit vectors. The
-constructor takes three vectors. The `frame''s third vector e_3 is
-positively proportional to `v3', the second vector e_2 is positively
-proportional to `v2\%v3', and the first is the cross product,
-e_1=e_2\times e_3. Thus, a `frame' is right-handed, and does not depend
-on `v1'.
-
- The elements of a `frame' are named `sea', `sky', and `eye', just as
-for the `camera'. A `frame' can be rotated through an arbitrary angle
-about any of its elements.
-
- frame(); // the standard basis {E_1, E_2, E_3}
- frame fr(v1, v2, v3); // orthonormalize {v1, v2, v3}
- fr.sea(); // the first element of fr, etc.
- fr.rot1(theta); // rotate fr through theta about sea, etc.
-
-
-
-Basic path-like objects are drawn with named commands. Arguments of
-polygon commands are endpoints/vertices. Except for `line' and `Line',
-the following are subject to filling.
-
- line(P p1, P p2, [double expand]);
- Line(p1, p2); // draw line through p1, p2 (crop required)
- triangle(P p1, P p2, P p3);
- rect(P p1, P p2);
- quad(P p1, P p2, P p3, P p4); // quadrilateral
- circle(ctr=P(0,0,0), rad=1, normal=E_3);
- circle(ctr, pt);
- circle(pt1, pt2, pt3);
- The optional `line' argument is an expansion parameter:
-`line(p1,p2,t);' draws a segment centered at the midpoint of `p1' and
-`p2', with length scaled by 2^t/100. (Setting t=100 doubles the length,
-while t=-100 halves the length.) The arguments of `rect()' must lie in
-a plane parallel to a coordinate plane. The arguments to `circle'
-commands are the same as for `Circle' constructors.
-
- Quadratic and cubic splines are described by their control points. A
-list of `P' is drawn as a "natural" spline (the C^2 piecewise cubic
-curve with vanishing second derivatives at the endpoints); the number
-of points per cubic segment must be specified. Circular and elliptical
-arcs are given by center, a basis, angular range, and an optional
-number of intervals.
-
- spline(P p1, P p2, P p3, [int n]); // quadratic
- spline(P p1, P p2, P p3, P p4, [int n]); // cubic
- spline(vector<P>, int n); // natural spline
-
- arc(P ctr, rad, t_min, t_max); // parallel to (x1,x2)-plane
- ellipse(P ctr, P v1, P v2); // in plane spanned by v1, v2
- ellipse(P ctr, P v1, P v2, t_min, t_max, [int n]);
- If parameter bounds are omitted in an `ellipse' command, the entire
-ellipse is drawn. When the angular range subtends one or more full
-turns in an `arc' or `ellipse' the curve is subject to filling.
-
- Commands for planar (half-)ellipses remain from `ePiX''s early days:
-
- ellipse(P ctr, P radius);
- ellipse_left(P ctr, P radius);
- ellipse_right(P ctr, P radius);
- ellipse_top(P ctr, P radius);
- ellipse_bottom(P ctr, P radius);
- If `radius' is `P(a,b)', these commands draw all or half of the
-ellipse with given center in the (x_1,x_2) plane, axes parallel to the
-coordinate axes, and axis lengths 2a and 2b.
-
- Two commands are available to mark off right angles or a subtended
-angle. Each accepts a spatial location and two non-zero directions, and
-draws a scene element in the plane spanned by the vectors.
-
- right_angle(P loc, P v1, P v2, scale=8);
- arc_measure(P loc, P v1, P v2, scale=8);
- arc_measure(P loc, P v1, P v2, offset, text, align, scale=8);
- The `right_angle' command does not check its arguments for
-perpendicularity. The `arc_measure' commands mark the _small_ angle
-subtended by the directions; the label form places a label at the
-midpoint of the arc. The (optional) `scale' argument is the true size
-in `pt' of the marker.
-
-
-
-Consider a path made up of equal-length segments that can point at any
-angle of the form 2\pi k/n radians, for 0\leq k<n, like spokes on a
-wheel. A path is specified by a finite sequence of integers, taken
-modulo n. For example, if n=6, then the sequence 0, 1, -1, 0 corresponds
-to the ASCII path _/_. `ePiX''s fractal approximation starts with such
-a "seed" then recursively (up to a specified depth) replaces each
-segment with a scaled and rotated copy of the seed, Figure *Note
-fig:fractal::, . The seed above generates the standard von Koch
-snowflake fractal. In code:
-
- const int seed[] = {6, 4, 0, 1, -1, 0};
- fractal(P(a,b), P(c,d), depth, seed);
- The first entry of `seed[]' (here 6) is the number of "spokes" n, the
-second (4) is the number of terms in the seed, and the remaining
-entries are the seed proper. The final path joins (a,b) to (c,d). The
-number of segments in the final path grows exponentially in the depth,
-so depths larger than 5 or 6 are likely to exceed the capabilities of
-`LaTeX' and/or PostScript.
-
-[Image]
-
-Figure[hbt]
-
-
-
-Line segments, splines, and arcs can be drawn with arrowheads at one
-end. In profile, an arrowhead's width is `3pt', and its height is 5.5
-times the width. The actual printed height depends on the head's
-orientation with respect to the camera. By default, an arrowhead is a
-filled triangle. The shape and size are adjusted with declarations:
-
- arrow_width(w=3); // width in pt
- arrow_ratio(r=5.5); // height-to-width
- arrow_inset(c=0); // base indent as frac of ht
- [Image]\qquad [Image]\qquad [Image] \\ The `inset' must be between -1
-and 1. Each `arrow' command accepts an optional `scale' argument, which
-scales the arrowhead.
-
- arrow(P tail, P tip, [scale]);
- arrow(P p1, P p2, P p3, [scale]); // spline arrows
- arrow(P p1, P p2, P p3, P p4, [scale]);
- arrow(P ctr, P v1, P v2, t_min, t_max, [scale]); // ellipse
- A few "special-purpose" commands are supplied:
-
- dart (P p1, P p2); // same as arrow(p1, p2, 0.5);
- aarrow(P p1, P p2); // double-headed arrow <--->
- arc_arrow(ctr, rad, t_min, t_max, [scale]);
- If an `arc_arrow' is too short, nothing is drawn.
-
-
-
-`ePiX' provides an `axis' class for coordinate axes. Labels are
-generated automatically in a variety of styles: decimal, scientific
-notation, fraction, and trigonometric fraction. Logarithmic axes and
-labels are available. Axis and labeling commands from Version 1.0 have
-been retained.
-
-
-
-An `axis' consists of a line segment divided into a specified number of
-equal-length subintervals by "major" (long) tick marks. Each
-subinterval may be divided further by "minor" (short) tick marks.
-Minor ticks may be equally-spaced ("Cartesian") or logarithmically
-placed. Finally, a label is written at each major tick mark with
-specified offset and alignment. Labels are generated automatically from
-the endpoints, so the line should be parallel to a coordinate axis.
-Label attributes (masking, borders, font size and face, rotation angle)
-are determined by the current label style, not by the `axis'.
-
- The command
-
- axis(P tail, P head, int n, P offset=P(0,0), [align = none]);
- creates an axis joining `tail' to `head', divided into `n' segments of
-equal length, with a major tick mark and label at each division point
-and endpoint. The `offset' and `align' arguments have the same meaning
-as for ordinary labels.
-
- The number and length of minor ticks, and the alignment of ticks, are
-controlled with member functions:
-
- axis Ax(P(a,c), P(b,c), n);
- Ax.subdivide(n); // put n-1 minor ticks in each axis segment
- Ax.tick_ratio(r); // minor length = r*major length
- Ax.align(AL=c); // align all ticks; AL = t, b, l, r, or c
- By default, major ticks are `6pt' long and twice the length of minor
-ticks. The global declaration `tick_size(len)' sets the major length,
-subject to "reasonable stylistic limits". For visual consistency, tick
-lengths should not be changed casually.
-
- Labels on an `axis' may be drawn in several styles, selected with
-member functions:
-
- Ax.dec(); // decimals (default)
- Ax.frac(); // fractions, e.g. 0.5 -> \frac{1}{2}
- Ax.trig(); // fractional multiples of \pi
- Ax.sci(); // scientific notation, k\times base^N
-
- Ax.unmark(double); // remove label at selected location
- Ax.precision(p); // set number of digits for decimal labels
- Ax.align_labels(AL); // re-align labels
- Arbitrary textual labels depending on one coordinate are obtained by
-writing a `string'-valued function of `double' and "registering" it:
-
- // f represents x as a string in given precision and base
- std::string f(double x, unsigned int prec, unsigned int base);
- Ax.label_rep(f);
- For example, textual tags can be printed instead of numeric labels.
-
- By default, an `axis' is Cartesian. The member function `log(int
-b=10)' converts an `axis' to "log mode" with specified base; this
-affects both tick marks and labeling. If `b' is at least 3, minor tick
-marks appropriate for a logarithmic axis base `b' are drawn. Second,
-labels are written in decimal or scientific notation appropriately for
-a logarithmic axis; that is, "k\times b^N" (or its decimal value) is
-written at location N+\log_b k.
-
- Minor ticks of a log `axis' may be labeled individually; again, this
-is controlled with member functions:
-
- Ax.tag(d); // labels at N+log_b(d)
- Ax.tag235(); // tag 2, 3, and 5 if b=10
- Ax.tags(); // tag 1, ..., b-1
- Ax.untag(); // remove all tags, including 1
- Ax.untag(double); // remove one tag, e.g. Ax.untag(9);
-
- For convenience, an `axis' object along an edge of the active
-`screen' can be created with a named command:
-
- top_axis(n, offset, align);
- bottom_axis(n, offset, align);
- left_axis(n, offset, align);
- right_axis(n, offset, align);
- The ticks automatically point into the bounding box.
-
- The functions above create objects or set `axis' attributes, but
-write no output. Tick marks and labels can be printed separately, or at
-once:
-
- Ax.draw(); // axis, tick marks, and labels
- Ax.draw_ticks(); // axis and ticks only
- Ax.draw_labels();
-
-
-
-`ePiX' formerly supplied commands for drawing simple axes and their
-labels. These commands have been kept for compatibility. Horizontal
-axes are generated with
-
- h_axis(p1, p2, n, align=c); // n subintervals (n+1 ticks)
- h_log_axis(p1, p2, n, align=c, base=10);
- For vertical axes, use `v_axis'. The style of tick mark is
-appropriate for an axis of the given type. Horizontal axis tick marks
-may be aligned `t' (above the axis) or `b' (below). Similarly, vertical
-axis ticks may be aligned `r' or `l'.
-
- The endpoint arguments of a coordinate axis may be omitted, in which
-case they default to p_1=(x_min,0) and p_2=(x_max,0) for a horizontal
-axis, or to p_1=(0,y_min) and p_2=(0,y_max) for a vertical axis. If the
-bounding box has integer width and/or height, omitting the number of
-points draws tick marks one unit apart.
-
- Labels for a horizontal Cartesian or logarithmic axis are generated
-with the commands
-
- h_axis_labels(P p1, P p2, int n, P offset, [align]);
- h_axis_masklabels(p1, p2, n, offset, [align]);
- h_axis_log_labels(p1, p2, [n], offset, [align], base=10);
- h_axis_log_masklabels(p1, p2, [n], offset, [align], base=10);
- Labels for a vertical axis are generated with `v_axis_labels', etc.
-The labels are automatically generated to match their horizontal
-location. The first puts (n+1) evenly-spaced labels on the segment
-joining `p1' and `p2'. As with ordinary labels, the `offset' is in
-`pt', and the optional `LaTeX'-style alignment option positions the
-labels using their corners. The second command draws masked labels
-according to the current label masking attributes. The third writes
-labels in exponential notation, using the Cartesian coordinate as
-exponent.
-
- As for coordinate axes, the initial and final points may be omitted
-in an `axis_[mask]labels' command, with the same defaults. The
-`offset' and number of labels must always be specified.
-
-
-
-Broken axes are best drawn using page layout, especially if axis labels
-are to be drawn. To accomplish the task, create a screen for each piece
-of axis, using appropriate Cartesian coordinates for the corners, then
-`inset' the screens so the axis pieces are nearly end to end. A zig-zag
-glyph signifies the break:
-
- axis_break(P, P, scale=12);
- The `P' arguments are the screen coordinates of the ends to be joined;
-the optional third argument is the true height and width in `pt' of the
-glyph. The sample file `coord_tricks.xp' uses layout and axis breaks.
-
-
-
-Cartesian grids fill a coordinate rectangle, and have a specified
-number of lines in each direction. A polar grid has specified radius,
-and numbers of rings and sectors.
-
- grid(n1, n2); // fills the bounding box
- grid(p1, p2, n1, n2); // fills the box with corners p1, p2
- polar_grid(r, n1, n2);
-
- Log and semi-log grids are drawn with analogous syntax:
-
- log_grid (p1, p2, n1, n2, [base1], [base2]); // log-log
- log1_grid(p1, p2, n1, n2, [base]); // log-lin
- log2_grid(p1, p2, n1, n2, [base]); // lin-log
- The n_i arguments dictate the number of squares, namely the number of
-orders of magnitude spanned in the logarithmic direction(s). The
-(optional) base arguments default to 10, and control the number of
-lines drawn per order of magnitude. As with Cartesian grids, the
-corners are optional; if omitted, the grid fills the bounding box.
-
- Graph paper may be created by superimposing grids:
-
- pen(0.25);
- grid(10*xsize(), 10*ysize());
- pen(0.5);
- grid(2*xsize(), 2*ysize());
- pen(1);
- grid(xsize(), ysize());
-
-
-
-A `path' data structure is an ordered list of points that can be
-cropped, clipped, mapped, concatenated, and drawn. The first four
-constructors mirror polygon-drawing commands above. Function graphs
-and parametric paths are built from a real- or `P'-valued function `f'
-of one variable.
-
- path(p1, p2, expand=0); // line (endpoints)
- path(p1, p2, p3, [n]); // quadratic spline
- path(p1, p2, p3, p4, [n]); // cubic spline
- path(p1, v1, v2, t_min, t_max, [n]); // ellipse
- path(f, t_min, t_max, [n]);
-
- The member function `pt()' accepts a `P' or three (or two) doubles
-and appends the specified point to a `path'. This snippet creates a
-regular n-gon:
-
- path ngon; // declare new path
- for (int i=0; i<=n; ++i)
- ngon.pt(cis(i*full_turn()/n)); // works in all angle modes
- Compound paths may be built by concatenation. If `path1' and `path2'
-share an endpoint, the commands
-
- path1 += path2;
- path1 -= path2;
- replace `path1' with the result of traversing `path1' "forward", then
-following `path2' in the forward or reverse direction (respectively).
-For expected results, the first (or last) point on `path2' should be
-the last point of `path1'. The notation suggests 1-dimensional homology
-chains. The sample file `contour.xp' illustrates path creation and
-manipulation.
-
- A `path' is a data structure, and must be drawn explicitly to create
-visible output. By default a `path' is not a closed loop (even if the
-first and last points are the same), and is not filled when drawn.
-Member functions perform these tasks. Continuing the n-gon snippet
-above,
-
- ngon.close(); // mark path as closed
- ngon.fill(); // draw filled region if filling is active
- ngon.draw(); // print to the screen
- `path::close()' adds a closing edge if necessary. Once a `path' is
-closed, no more points can be added. A closed path clips and crops
-differently than an open `path' with the same data. `path::fill()' has
-no effect on an unclosed `path'.
-
-
-
-The noun "map" refers to a `C++' function that accepts one or more
-`double' arguments and returns a `double' or a `P'. Mathematically, a
-map can be depicted in two ways: as a graph (which retains information
-about the domain), or as a parametrized curve or surface (which
-discards domain information). `ePiX' assumes that `double'-valued maps
-are graphed and `P'-valued maps are drawn parametrically. Either sort
-of depiction is called a "plot". `ePiX' plots are either "wire mesh",
-produced by a `plot' command, or "shaded", produced by a `surface'
-command.
-
-
-
-For the moment, "function" means "function of one variable" (precisely,
-a `double'-valued function of a `double' variable). A function graph
-depends on the domain and the number of points to use. Each of the
-commands
-
- plot(f, t_min, t_max, n);
- polarplot(f, t_min, t_max, n);
- shadeplot(f, t_min, t_max, n);
- graphs the function `f' on the interval `[t_min, t_max]' by dividing
-the interval into `n' subintervals of equal length. The first gives a
-Cartesian plot, the second a polar plot with bounds in current angular
-units, the third shades the region between the graph and the horizontal
-axis. If two functions are given to `shadeplot', the region between
-their graphs is shaded.
-
-
-
-An `ePiX' `domain' is a coordinate box of dimension one, two, or three,
-specified by a pair of opposite corners and two _meshes_ ("coarse" and
-"fine", respectively) which specify the amount of data to be plotted.
-Plotting is explained in detail below.
-
- // [a1,a2] x [b1,b2]: n1 x n2 rectangles, m1 x m2 intervals
- domain R2(P(a1,b1), P(a2,b2), mesh(n1,n2), [mesh(m1,m2)]);
-
- // [a1,a2] x [b1,b2] x [c1,c2] divided analogously
- domain R3(P(a1,b1,c1), P(a2,b2,c2),
- mesh(n1,n2,n3), [mesh(m1,m2,m3)]);
- If unspecified, the fine mesh is the same as the coarse mesh. For
-expected behavior, the coarse mesh should "divide" the fine mesh, in
-that m_i should be a (usually small) integer multiple of n_i for each i.
-
- A `domain' may be _resized_ in any coordinate for which the
-thickness is positive, and can be _sliced_ by setting one variable to a
-constant. The result of slicing is a `domain' whose dimension is one
-smaller than the original. Finally, "`slices'" operators return the
-list of `domain's obtained by setting one variable to evenly-spaced
-constants. By default, the number of slices is specified by the coarse
-mesh. An optional argument specifies the number of slices. This
-argument need not be related to the coarse mesh.
-
- R2.resize2(a,b); // [a1,b1] x [a,b]
- R2.slice1(t); // set x1 = t
- R3.slices3([n]); // (n+1) domains with x3 = const
-[Image]
-
- \smallskip When possible, resizing preserves grid square sizes.
-Generally, though, integer truncation occurs: If `R=domain(P(0,0),
-P(1,1), mesh(10,6))', then `R.resize1(0,0.25)' is the rectangle
-[0,0.25]\times[0,1] subdivided into 2\times6 subrectangles, since
-10\div4=2 in integer arithmetic. For expected behavior, choose mesh
-sizes to avoid integer truncation.
-
- The arguments of a `plot' command are a map, followed by either a
-domain or its logical equivalent.
-
- double f(double t) { return t*t; }
- P F(double u, double v) { return P(u, v, exp(u)*Sin(v)); }
- P G(double u, double v, double w) { return P(v*w, u*w, u*v); }
-
- plot(f, a, b, n); // f:[a,b] -> R, using n intervals
- plot(F, R2); // graph of exp(u)*Sin(v)
- plot(G, R3.slice2(0.5); // G: R^3 -> R^3 restricted to y=0.5
- By (compiler-enforced) convention, `plot' commands involving a
-`P'-valued map accept a `domain' argument, as in the second and third
-commands above. To plot a `double'-valued function, by contrast, supply
-the logical equivalent of a `domain', usually the endpoints and the
-number of intervals, as in the first `plot' command above.
-
- Resizing and slicing allow a map `F' to be plotted selectively over
-parts of its domain. This can be used to emphasize parts of the image,
-layer scene elements, patch surfaces together, and so forth. Resize
-and slice(s) commands may be used directly in a `plot' command:
-
- plot(F, R2.resize1(0,0.5));
- plot(F, R2.slices1());
-
-
-
-The `P' arguments of a `domain' are a pair of opposite corners. The
-first `mesh' argument, the _coarse_ mesh, specifies the number of
-subdivisions in each coordinate direction. The second `mesh', the
-_fine_ mesh, determines the number of points used in each direction
-when plotting.
-
- Separating the roles of coarse and fine meshes allows a plot to
-conform closely to a surface without using a fine grid of curves. Both
-parts of Figure *Note fig:plot::, are drawn with a 6\times20 coarse
-mesh. In the first picture, the fine mesh is also 6\times20, while in
-the second, the fine mesh is 12\times60.
-
-
-[Image] [Image]
-
-Figure[hbt]
-
- The coarse mesh is significant only for domains of dimension at
-least 2. The coarse mesh's size determines the number of curves or
-surfaces plotted _perpendicularly_ to a coordinate direction, while the
-fine mesh's size determines the number of segments used _along_ that
-direction. For predictable results, the fine mesh should be a small
-multiple of the coarse mesh.
-
- Plotting works analogously for 3-dimensional `domain's and maps
-depending on three variables: The "one-dimensional skeleton" of the
-`domain''s image is drawn. A `P'-valued map of three variables can be
-plotted over a 1- or 2-dimensional `domain'. (The effect may be
-unexpected unless the domain arises by slicing, however.) A map
-depending on one or two variables cannot be plotted over a
-3-dimensional `domain'.
-
-
-
-`ePiX''s shaded surface plotting implements a degree of hidden surface
-removal. The algorithm breaks a surface into mesh fragments, sorts them
-in decreasing (approximate) distance to the camera, and prints them.
-If filling is active, a mesh fragment is shaded according to the angle
-between the normal vector and the direction to the camera, simulating
-constant ambient lighting; otherwise, the current fill color is used.
-This technique works fairly well for surfaces without intersection, and
-even acceptably handles intersecting surfaces for which mesh elements
-intersect only along boundaries.
-
- The syntax of a `surface' command is identical to a `plot' command
-when only a single surface is drawn. For example,
-
- surface(F, R, cull=0);
- plots the `P'-valued function `F' over the domain `R', the shaded
-equivalent of the corresponding `plot' command. The optional `cull'
-argument removes elements that point toward (`cull=-1') or away from
-(`cull=1') the camera. Naturally, orientation of mesh elements depends
-on the parametrization `F', not merely on the surface. Culling reduces
-the output file size, but is useful mostly for closed, convex surfaces.
-
- There are special commands for surfaces of rotation; each accepts a
-final `cull' argument.
-
- surface_rev(f, t_min, t_max, n_lats, n_longs);
- surface_rev(f, g, t_min, t_max, n_lats, n_longs=24);
- surface_rev(f, g, R, frame coords);
- The first revolves the graph of f about the x-axis, the second uses
-the parametric curve t\mapsto\bigl(f(t),g(t)\bigr) as profile. In each
-case, the parameter interval [t_min,t_max] is divided into n_lats
-equal-length subintervals, n_longs copies of the profile curve are
-drawn, and the complete surface (one full turn) is drawn.
-
- The third form uses a `domain' to control the range of longitudes,
-and draws a surface of rotation in the Cartesian coordinate system
-defined by the orthonormal basis `coords', by default the standard
-basis. The arguments `f' and `g' define a parametric curve in the plane
-spanned by the first two elements of `coords', and the first element is
-the axis of rotation.
-
- As in wire mesh plotting, the fine mesh is used to draw the
-boundaries of surface patches; this tends to make surfaces look
-smoother for modest-sized coarse meshes. If the coarse mesh is too
-coarse, however, two visually undesirable effects can occur. First,
-adjacent regions of the surface may be shaded very differently, since
-shading is constant over patches defined by the coarse mesh. Second, a
-patch nearly tangent to a line of sight may be drawn badly if the patch
-bends back on itself, since the boundary of the _patch_ is drawn, not
-the visible edge of the mathematical surface. See
-`samples/artifacts.xp'.
-
-
-
-A scene containing two or more shaded surfaces cannot generally be
-built up one surface at a time. Instead, multiple surfaces must be
-assembled into a single data structure before they can be drawn.
-Multiple surfaces are built from one or more maps and one or more
-2-dimensional `domain's. In the code snippets below, `F' and `G' are
-`P'-valued functions of 3 variables, and `R' is a 3-dimensional
-`domain'.
-
- To plot the images of several `domain's under a _single map_,
-assemble the `domain's into a list if necessary, then issue a `surface'
-command:
-
- surface(F, R.slices3(), cull=0);
-
- domain_list DL(R.slice1(0)); // build domain list
- DL.add(R.slice2(0.5)); // add a domain, etc.
- surface(G, DL, cull=0); // draw
- For multiple maps, `ePiX' provides the `scenery' class. Conceptually,
-`scenery' is an agglomeration of shaded surfaces, built one surface at
-a time from maps and 2-dimensional `domain's. The `add' function
-accepts two arguments--a map, and either a `domain' or a list of
-`domain's--and contributes its data to the `scenery' rather than
-plotting immediately. Completed `scenery' is drawn manually.
-
- scenery S(F, R.slice3(0.25)); // S contains one surface
- S.add(F, R.slice2(0)); // S contains two surfaces
- S.add(G, R.slices1(3)); // S contains six surfaces
- S.draw(cull=0);
- Complete examples are included in the `samples' directory:
-`spherical.xp' and `minkowski.xp'.
-
- In principle, a scene may contain arbitrarily many surfaces. However,
-figures that contain many objects tend to tax `LaTeX''s internal
-stacks. Frequent color changes exacerbate the problem. Even if you use
-`hugelatex' (or increase `LaTeX''s memory), a figure containing more
-than a few thousand mesh elements is unlikely to compile. At moderate
-resolution, a surface can easily contain 1000 patches. Each shell
-script has a command-line option to invoke `hugelatex'; your mileage
-may vary.
-
-
-
-By default, a `surface' or `scenery' is colored according to the
-current fill color. For finer control, each `surface', `surface_rev',
-and `scenery' command accepts an optional position-dependent `color'
-specification.
-
- surface(F, R, color, cull=0);
- surface_rev(f, [g], t_min, t_max, n_lats, n_longs, color);
- surface_rev(f, g, R, color, [coords]);
-
- scenery S(F, R, color);
- S.add(F, R, color);
- The `color' argument is a `P'-valued function of two or three
-`double's whose output is interpreted as a set of `RGB' densities. If
-`color' takes two arguments, they are `domain' coordinates, and the
-surface is colored according to parameter values. If `color' takes
-three arguments, they are Cartesian coordinates, and the surface is
-colored according to spatial location. Please see the sample files
-`surface_shade.xp' and `S2_harmonics.xp'.
-
-
-
-`ePiX' provides high-level commands for plotting derivatives and
-definite integrals, Riemann sums, tangent lines, slope- and vector
-fields, and solutions of planar and spatial systems of differential
-equations.
-
- In this section, `f' and `g' are `double'-valued functions of one
-variable.
-
-
-
-
- sup(f, a, b); // max/min of f on [a,b]
- inf(f, a, b);
- newton(f, g, x0); // find approximate crossing point
- Newton's method returns the crossing point of the given functions,
-starting from the specified seed, which should be reasonably close to
-the expected solution. If a critical point is hit or 5 iterations pass,
-a warning is issued and the current result (probably incorrect) is
-returned. The second function g defaults to the zero function if
-omitted.
-
-
-
-The classes `Deriv' and `Integral' are used to calculate values of
-derivatives and integrals, and to plot these functions.
-
- Deriv df(f); // function object: df(x) = f'(x)
- df.eval(t); // return f'(t)
- df.left(t); // deriv from left at t: (f(t)-f(t-dt))/dt
- df.right(t); // deriv from right at t: (f(t+dt)-f(t))/dt
-
- Integral prim(f,a); // function object: prim(x) = int_a^x f
- prim.eval(b); // numerical integral of f over [a,b]
- double val(Integral(f).eval(1)); // val = \int_0^1 f
- The lower limit on an integral is 0 by default. `Deriv's and
-`Integral's can be used directly in a `plot' command:
-
- plot(Deriv(f), a, b, n); // plot f' over [a,b]
- plot(Integral(f, x0), a, b, n);
- riemann_sum(f, a, b, n, TYPE);
- The second graphs the definite integral x\mapsto\int_x_0^x f(t)\,dt
-over [a,b]. As above, x_0 defaults to 0. The third draws rectangles or
-trapezoids whose area approximates the definite integral of f over
-[a,b]. The `TYPE' may be `UPPER', `LOWER', `LEFT', `RIGHT', `MIDPT', or
-`TRAP'.
-
- Tangent lines and envelopes (families of tangent lines) are drawn
-with
-
- tan_line(f, t); // f real- or vector-valued
- envelope(f, t_min, t_max, n); // family of tangent lines
- tan_field(f, g, t_min, t_max, n); // field of tangents
- The sample files `conic.xp' and `lissajous.xp' illustrate these
-features.
-
-
-
-Let `F' be a `P'-valued function of two or three variables.
-
- ode_plot(F, p_0, t_min, t_max, n);
- flow(F, p_0, t_max, n);
- The first plots the solution curve of the initial-value problem
-\dotx=F(x), x(0)=p_0, over the specified time interval. If t_min is
-omitted, its value is 0, so the curve starts at p_0. With manual
-calculation to rotate a planar field a quarter turn, `ode_plot' can be
-used to draw level curves (isobars) of a function of two variables; see
-the sample file `dipole.xp'. The `flow' function returns the result of
-starting at p_0 and flowing by F for time t_max, using Euler's method
-with n time steps. This is useful for placing markers or arrowheads
-precisely along a flow line.
-
- A planar or spatial vector field itself may be plotted over a domain
-`R' in three styles:
-
- vector_field(F, R, [scale]); // true length
- dart_field (F, R, [scale]); // const length
- slope_field (F, R, [scale]); // const length
- The field is sampled at the grid points of the coarse mesh. If the
-domain is 2-dimensional, the plot is a planar slice of the field, even
-if the field depends on three variables. If the domain is
-3-dimensional, the field is drawn in successive slices x_3=const,
-starting at the height of the first corner of `R' and ending at the
-height of the second corner.
-
- The optional final argument, which defaults to 1, scales the
-arrowheads in a vector field, and scales the (constant) length of field
-elements for slope and dart fields. The sample files `layout2.xp',
-`lorenz.xp', `slopefield.xp', and `vfield.xp' illustrate usage.
-
- In each field-plotting command, the domain argument may be replaced
-by two points, representing corners of a coordinate rectangle, and two
-integers, the number of grid intervals in the selected coordinate
-directions. Only planar slices of a vector field can be plotted using
-the alternative syntax.
-
-
-
-`ePiX' provides limited features for spherical and hyperbolic geometry:
-the ability to draw lines in the half-plane and Poincar\'e disk models
-of the hyperbolic plane, and to draw latitudes, longitudes, great
-circle arcs, spherical triangles, regular polyhedra, and parametrized
-curves on a sphere.
-
- Hyperbolic line segments are specified by their endpoints in the
-upper half space or ball (Poincar\'e) models. In each case there is no
-output if either endpoint lies outside the model.
-
- hyperbolic_line(p, q);
- disk_line(p, q);
- For compatibility with 2-dimensional hyperbolic space, the half-space
-model is the set \(x_1,x_2,x_3)\mid x_2>0\.
-
- A `frame' determines geographical coordinates on a `Sphere': the
-first element points toward longitude 0 on the equator, the third
-element points to the north pole. A latitude line depends on a
-`Sphere', a `frame', the numerical latitude, and a range of longitudes.
-A longitude line is described similarly.
-
- latitude(lat, long_min, long_max, Sphere S, frame coords);
- longitude(lngtd, lat_min, lat_max, Sphere S, frame coords);
- By default, `coords' is the standard `frame' and `S' is the unit
-sphere. These commands draw only the portion of the curve that is
-visible from the current viewpoint. The function `back_latitude' draws
-the invisible portion of a latitude line.
-
- Spherical arcs and triangles are described by their endpoints. Only
-the direction vector from the center of the sphere to an endpoint is
-significant; if a sphere is scaled or moved, the same function call
-will draw the corresponding object on the new sphere.
-
- The following draw the visible (front) portions of great circle arcs:
-
- front_arc(p1, p2, S); // short arc on S from p1 to p2
- front_arc2(p1, p2, S); // arc from p1 to -p1 through p2
- front_line(p1, p2, S); // great circle through p1 and p2
- Triangles and regular (Platonic) polyhedra are provided. The sample
-file `sample/polyhedra.xp' illustrates usage.
-
- front_triangle(p1, p2, p3, S); // spherical triangle
- front_tetra(S, coords); // regular tetrahedron
- front_cube(S, coords); // hexahedron
- front_octa(S, coords); // octahedron
- front_dodeca(S, coords); // dodecahedron
- front_icosa(S, coords); // icosahedron
- Each function has a `back' version, which draws the hidden portion.
-The tetrahedron, cube, and octahedron are (up to scale) inscribed in
-the cube of side length 2 centered at the origin whose sides are
-parallel to `frame'. The point (1,1,1) is a vertex of the tetrahedron.
-
- Up to scale, the icosahedron's vertices lie on the golden rectangle
-with vertices (\pm\gamma,0,\pm1) and its images under cyclic
-permutation of coordinates. The dodecahedron is dual to the icosahedron.
-
-
-
-Parametrized paths on a `Sphere S' (by default the unit sphere) can be
-specified either by radial projection of a `P'-valued curve, or by
-stereographic projection of a plane curve given as a pair of
-`double'-valued functions:
-
- frontplot_R(phi, t_min, t_max, n, [S]); // radial
- frontplot_N(f1, f2, t_min, t_max, n, [S]); // from north pole
- frontplot_S(f1, f2, t_min, t_max, n, [S]); // from south pole
- Attempts to perform radial projection on a path through the origin
-will generate division-by-zero errors. Stereographic projection maps
-the equatorial plane \x_3=0\ to the unit sphere by projection from the
-corresponding pole: N=(0,0,1), S=(0,0,-1).
-
- Each spherical plot command has a `back' version that prints only
-the portion of the path invisible from the current viewpoint. Because
-of the way `ePiX' layers output, it is generally best to put hidden
-portions of the input before visible portions, with line width and/or
-style that suggests hidden lines.
-
-
-
-Files of numerical data can be created, manipulated, analyzed, plotted
-(paths, scatter plots, and histograms), read, and written. The format
-for a data file is one or more floating-point numbers per line, with
-the same number of entries per line. Anything that appears on a line
-after the `LaTeX' comment character `\%' is a comment.
-
- `ePiX' provides two `plot' commands for file data. The first
-facilitates plotting selected columns; the second simplifies plotting
-the first two columns with one or both scales logarithmic. Either form
-can be used to plot selected columns logarithmically.
-
- The general commands read numbers from two or three columns of a
-specified file, pass them as arguments to a `P'-valued function `F',
-and plot the resulting points:
-
- plot("filename", STYLE, [i_1], [i_2], [i_3], [F]);
- plot("filename", STYLE, F, [i_1], [i_2], [i_3]);
- The first argument is the name of the data file. The `STYLE' may be
-`PATH', which joins the points in the order they appear, or any of the
-marker types in Table *Note table:marker::, . The integers i_k specify
-columns from which to extract data; these default, respectively, to the
-first column, second column, and null (a column of zeroes). If the
-"coordinate system" `F' is omitted in the first command, it defaults to
-the Cartesian point constructor. The function `F' is mandatory in the
-second form; useful choices include `log_log', `log_lin', and
-`lin_log', which plot the corresponding coordinate logarithmically.
-
-
-
-For more elaborate analysis, the `data_file' class presents an
-interface to a file as an ordered list of columns. There are two
-general ways to create a `data_file': read in an external file, or
-generate data (up to three columns) using specified `double'-valued
-functions. In the constructors below, each function `fi' is a
-`double'-valued function of one variable.
-
- data_file DF("my_data"); // read data from disk file
- data_file DF(f1, t_min, t_max, num_pts); // values of f1
- data_file DF(f1, f2, t_min, t_max, num_pts);
- data_file DF(f1, f2, f3, t_min, t_max, num_pts);
- data_file DF(3); // create empty data_file with 3 columns
- DF.read("file1"); // read a disk file
-
- Columns of a `data_file' can be transformed by a user-specified
-function, averaged, correlated, extracted (for use by other code),
-scatter plotted, and written to a disk file at specified precision.
-Below, the function `f' is a `double'-valued function of one variable
-and `F' is a `P'-valued function of two or three variables, whose
-components are written back to the selected columns.
-
- DF.transform(f, i); // apply f to selected column(s)
- DF.transform(F, i=1, j=2);
- DF.transform(F, i, j, k);
- Basic statistical operations on columns are provided.
-
- DF.dot(i,j); // dot product of columns i, j
- DF.avg(i); // mean of column i
- DF.var(i); // population variance
- DF.covar(i,j); // covariance
- DF.regression(i,j); // plot regression line
- A `data_file' is scatter plotted using syntax as described above. %
-The output is cropped automatically to the bounding box.
-
- DF.plot(STYLE, [i1], [i2], [i3], [F]);
- DF.plot(STYLE, F, [i1], [i2], [i3]);
- Histograms and bar charts are described below.
-
- A `data_file' can be written to a disk file as raw data, or in
-specified format. Below, `fmt' denotes a `string'-valued formatting
-function of two variables and `myfile' is the name of the disk file to
-be written.
-
- DF.precision(4); // set to 4 significant figures
- DF.write("myfile"); // write as tab-separated columns
- DF.write("myfile", fmt, [i1], [i2]); // apply fmt to cols
- A column can be extracted as a `C++' `vector' for use by another
-function.
-
- DF.column(i); // i-th column
- DF.column(f, i); // i-th column, transformed by f
-
-
-
-`ePiX' provides a `data_mask' class for culling data from a file
-according to the values in a specified column, and a `data_bins' class
-for sorting data by value.
-
- A `data_mask' consists of an interval of numbers and a "filter"
-function. The (closed, open, or half-open) interval is given as a
-string in standard mathematical notation, or by its endpoints (for a
-closed interval). The filter is a `double'-valued function of
-`double', by default the identity, f(x)=x.
-
- data_mask dm("[a, b]", [f]);
- data_mask dm(a, b, [f]);
- A `data_mask' "passes" inputs x if f(x) lies in the interval. The
-member function `reverse()' inverts this logical test.
-
- The `data_file' class has `prune' functions to cull rows for which a
-specified column's entry satisfies a `data_mask''s criterion.
-
- DF.prune(dm, i); // remove row if i-th column entry fails
- DF.prune(a, b, i); // remove row if i-th column outside [a,b]
-
- A `data_bins' object models an interval divided at specified
-locations into "bins", not necessarily of equal length. Numerical data
-is read in and the number of points in each bin counted. The lifetime
-of a `data_bins' object has two stages. First, "cuts" (endpoints of
-subintervals) are added. Then, once data is read, the cuts are "locked"
-and cannot subsequently be changed.
-
- // [xmin, xmax] divided into n equal intervals, 1 by default
- data_bins db(xmin, xmax, [n]);
- db.cut(x); // add a cut at x (if x is in bounds)
- db.read(vector<double>); // read data, lock bins
-
- A `data_bins' object can be plotted as a histogram (rectangles'
-_area_ is proportional to the bin population), bar chart (rectangles'
-_height_ is proportional to the bin population), or spline
-interpolation of a bar chart.
-
- db.histogram(c=1); // c = vertical scale factor
- db.bar_chart(c=1);
- db.plot(c=1);
- By default (`c=1'), the height of a bar chart rectangle is the
-fraction of the total population contained in the bin; thus, the height
-is always between 0 and 1. For a histogram, the height of a rectangle
-is the fraction of the population per horizontal unit in the bin; thus,
-the total area over an interval [a,b] does not depend on how [a,b] has
-been subdivided. The sample files `dataplot.xp' and `histogram.xp'
-illustrate use.
-
- Statistical convention dictates cuts be chosen distinctly from data
-values; that is, values should all fall strictly within a bin, not at a
-boundary point. With large, unknown data sets, this convention may be
-difficult to uphold. `ePiX' attempts to handle anomalous data
-intelligently, by keeping counts of values "out-of-range" or "on-cut".
-
- In detail, if x<a or x>b is a data value, it is counted as
-out-of-range and does not contribute to the histogram population. If
-x=a or x=b, the value counts as both out-of-range and on-cut but is
-added to the population of the lowest or highest bin, respectively. Any
-other cut appearing as a data input is flagged as on-cut, and
-increments the population of each adjacent bin by one-half. When a
-histogram or bar chart is written, `ePiX' prints a warning message
-summarizing the number of anomalous data seen.
-
-
-
-Simple horizontal and vertical error bars are provided. The final
-(optional) argument is the true height or width (respectively) in pt.
-
- h_error_bar(P location, double error, <mark type>, ht=6);
- v_error_bar(P location, double error, <mark type>, wd=6);
-
- To create more complex elements, such as asymmetric bars, whisker
-plots, labeled error bars, and the like, write a custom function using
-true-size drawing, see page *Note truesize::. For example, a fillable,
-labeled, asymmetric, vertical rectangular error bar can be implemented
-(entirely in `ePiX') like this:
-
- void error_bar(P loc, double lo, double hi, P offset,
- std::string text, align, double wd=6)
- {
- const double width(pt_to_screen(0.5*wd)); // converts to 3pt
- rect(loc - P(width, lo), loc + P(width, hi));
- line(loc - P(width, 0), loc + P(width, 0));
- label(loc + P(width, 0), offset, text, align);
- }
- For stylistic uniformity, functions such as this should be put into a
-library and used systematically. Section *Note section:extensions::,
-outlines the process of writing, compiling, and using a custom library.
-
-
-
-A `legend' systematically labels different parts of a plot by
-associating visual "keys" with explanatory text. This tends to be most
-useful for plots containing several distinct but conceptually related
-graphs requiring contrast.
-
- Visually, a `legend' is represented as an aligned list of rows, each
-containing a box (the key), a gap (the label skip), and some text.
-These rows are printed in a (usually large) masked label. By default,
-keys are `12pt' squares bordered in black, the label skip is `6pt', the
-background is white, and the border is plain black. These attributes
-are controlled (simultaneously for all items) with member functions.
-Parameters of type `double' represent lengths in `pt'.
-
- legend L;
- L.backing(color); // set background
- L.border(color, [double]); // set border color [and width]
- L.border(double); // border width
-
- L.item_border(color, [double]);
- L.item_border(double); // same, for item borders
-
- L.label_skip(double);
- L.key_size(double);
-
-
-
-There are three types of legend key, representing filled regions,
-paths, and markers. Fill and path keys get their visual attributes from
-the current drawing state. A mark key must be told the marker type.
-Each is created by specifying the item text.
-
- L.fill_item(text);
- L.path_item(text);
- L.mark_item(<mark type>, text);
- Keys in the printed legend appear in the same order they are created
-in the input file.
-
-
-
-Normally, a `legend' is defined near the start of a file, and an item
-is added at the point in the file where the corresponding object or
-plot is drawn, so that the item receives the correct attributes. A
-`legend' is placed into the figure with the `draw' function. The
-arguments have the same meaning as for ordinary `label's.
-
- L.draw(P location, P offset, align);
- All three arguments are mandatory. "Global" `legend' settings
-(border, backing, etc.) may be changed anywhere between the `legend''s
-creation and `draw' function. The sample file `legend.xp' revisits the
-example on page *Note taylor_poly::, including a trig-labeled axis and a
-legend. The file `shadeplot.xp' contains filled keys, and `dataplot.xp'
-contains a `legend' with items of mixed type.
-
-
-File: epix.info, Node: More About `C++', Next: Attribute Quick Reference, Prev: Creating and Drawing Objects, Up: Reference Manual
-
-3.7 More About `C++'
-====================
-
-A textbook or similarly detailed reference is essential for serious
-study of `C' or `C++'. _The `C' Programming Language_, second edition,
-by Kernighan and Ritchie `KnR', is an excellent, manageable resource
-for the basics of procedural programming. _C++ Primer Plus_, by Stephen
-Prata `Prata', clearly lays out the extensive details of `C++'.
-Marshall Cline's _`C++' FAQ Lite_ `Cline' engagingly discusses common
-points of confusion and furnishes tips on good design and programming.
-
- `C++' is a powerful, complex language whose syntax is similar to that
-of `C', or to the scripting languages of Maple and Mathematica. An
-`ePiX' input file is source code for a `C++' program that writes a
-`LaTeX' picture as output. `ePiX' may be viewed as an extension to
-`C++'; in the same way that `LaTeX' furnishes a high-level interface to
-`TeX', `ePiX' provides a high-level bridge between the computational
-power of `C++' and the `LaTeX' `picture' environment.
-
- Like all high-level programming languages, `C++' provides variables,
-functions, and control structures. Variables hold pieces of data such
-as numerical values and geometric locations, while functions operate on
-data. A control structure, such as a loop or conditional statement,
-affects the program's course according to the program's current state.
-A source file is composed primarily of "statements", which perform
-actions ranging from defining variables and functions to setting figure
-attributes, performing calculations, and writing objects to the output
-file.
-
-
-
-Names of variables and functions may consist (only) of letters, digits,
-and the underscore character. The first character of a name must not be
-a digit, and the language standard reserves names starting with
-underscore for library authors. Names are case-sensitive, but it's
-usually a bad idea to use a single name capitalized and uncapitalized
-in a single file. Numerous capitalization conventions are used
-informally; this document uses uncapitalized words separated by
-underscores for variables and functions, and occasionally uses all
-capitals for constants. As with names of `LaTeX' macros, primary
-considerations are clarity (of meaning), readability, and consistency.
-
- Every variable in `C++' has a "type", such as integer (`int'),
-double-precision floating point (`double'), or Boolean (`bool', true or
-false). `ePiX' provides additional types, the most common of which is
-`P', for point. The construct `P(x,y,z)' creates (x,y,z), while
-`P(x,y)' gives (x,y,0), which is effectively the pair (x,y). A variable
-is defined by giving its type, its name, and an initializing expression.
-
- In `C' and `C++', a _pointer_ variable holds the memory address of
-another variable. Pointers are useful for manipulating (possibly large)
-data structures through "handles" of fixed small size. `C++' also
-provides _references_, which bind an additional name to an existing
-object and allow the object to be manipulated through this alias. The
-statements
-
- double x=1; // ordinary variable definition
- double& rx=x; // bind a reference, signified by &
- define a variable `x' having the value 1, and bind a reference
-variable `rx' to it. As long as `rx' exists, it refers to `x'. If the
-value of `x' changes, the value of `rx' does as well. Conversely, the
-value of `x' can be altered by assigning to `rx'. However, `rx' is the
-size of a pointer, regardless of the size of `x', so `rx' can be passed
-efficiently in a function call.
-
-
-
-In a programming language, the term "function" refers to a block of
-code that is executable by name. A `C++' function takes a list of
-"arguments", and has a "return value". This information, together with
-the function's name, must be provided when a function is defined. A
-function may not be defined inside another function. However, a
-function may call other functions (including itself) as part of its
-execution:
-
- int factorial(unsigned int n)
- {
- if (n == 0) return 1;
- else return n*factorial(n-1);
- }
-
- The special type `void' represents a "null type". A function that
-performs an action but does not return a value has return type `void'.
-A function that takes no arguments may be viewed as taking a single
-`void' argument.
-
- Every `C++' program has a special function `main()', which is called
-by the operating system when the program is run. The arguments of
-`main()' are command-line arguments, and the return type is an integer
-that signals success or failure. User-specified functions must be
-defined before the call to `main()' or in a separately-compiled file.
-
- Functions in `C++' may be as simple as an algebraic formula or as
-complex as an arbitrary algorithm. Greatest common divisors, finite
-sums, numerical derivatives and integrals, solutions of differential
-equations, recursively generated fractal curves, and curves of best fit
-are a few applications in `ePiX'. Several sample files contain
-user-level algorithms, which do not require knowledge of `ePiX''s
-internal data structures. The source file `functions.cc' contains
-simple functions defined by algorithms, and `functions.h' illustrates
-the use of `C++' templates. Other source files, such as `plots.cc', may
-be consulted for Simpson's rule, Euler's method, and the like.
-
-
-
-`C++' knows several familiar mathematical functions by name:
-
- sqrt exp log log10 ceil floor fabs
- (`fabs' is the absolute value for a floating-point argument.) `ePiX'
-provides trig and inverse trig functions sensitive to angular mode:
-
- Cos Sin Tan
- Sec Csc Cot
- Acos Asin Atan
- The inverse functions are principle branches.
-
- The function `pow(x,y)' returns x^y when x>0, and `atan2(y,x)' (N.B.
-argument order) returns Arg(x+iy)\in(-\pi,\pi], the principle branch of
-arg. `C++' knows many constants to 20 decimal places, such as `M_PI',
-`M_PI_2', and `M_E' for \pi, \pi/2, and e respectively. `ePiX' defines
-a few additional functions:
-
- sgn zero sinx cb
- `sgn' is the signum function; `zero' is the constant function; `sinx'
-is the function x\mapsto \sin(x)/x with the discontinuity removed; `cb'
-(for "Charlie Brown") is the period-2 extension of the absolute value
-function on [-1,1].
-
- The GNU `C++' library defines other functions, including inverse
-hyperbolic functions (`acosh', etc.), `log' and `exp' with base 2, 10,
-or arbitrary b (`log2', etc.), the error and gamma functions (`erf' and
-`tgamma' [sic], respectively), and Bessel functions of first and second
-kind: `j0', `j1', `y0', etc. Use, e.g., `jn(5, )' to get higher
-indices. The GNU `C' library reference manual `GNUC' describes these
-and other functions in detail.
-
- Functions may be used in subsequent definitions, and functions of two
-(or more) variables are defined in direct analogy to functions of one
-variable:
-
-double f(double t) { return t*t*log(t*t); } // t^2 \ln(t^2)
-double g(double s, double t) { return exp(2*s)*Sin(t); }
-
-
-
-
-Unlike `C', `C++' supports "object-oriented programming". In a
-nutshell, a _class_ is an abstraction in computer code of some concept,
-such as a point, a sphere, a mapping that can be plotted, or a camera.
-Classes allow a programmer to separate an object's _interface_ (the set
-of meaningful operations) from its _implementation_ (the data
-structures and algorithms that realize the interface).
-
- A class implementation consists of _members_ (named data elements)
-and _member functions_ (functions that belong to the class and have
-free access to members). `C++' classes enforce access permissions on
-their members, protecting data from being manipulated except as
-promised by the interface.
-
- An ideal interface looks like a black box: It hides the
-implementation completely. In order to cooperate, two classes need
-only know each other's interfaces. This separation of form and function
-modularizes a program, and facilitates debugging, code reuse, and
-overall maintainability, particularly in large programs.
-
- In simple programming, classes may be treated like built-in types.
-Each class object has its own member functions, whose call syntax
-differs from standard function calls:
-
- Circle C1(P(1,0), 1.5); // circle of given center and radius
- C1.draw(); // member function Circle::draw();
- Naturally, this call draws the circle `C1'. Generally, a member
-function call consists of a class object's name, a period, and the name
-of the member function. Arguments, if any, go in the parentheses after
-the member function name, just as in a regular function call.
-
- A few short paragraphs cannot do more than scratch the surface of
-classes and object-oriented programming. For more details, please
-consult a book, such as Prata `Prata' or Stroustrup `S', or Cline's
-on-line FAQ `Cline'.
-
-
-
-`C' and `C++' are "call by value" languages. Variables are not passed
-to a function; instead a copy of the value is made, and the function
-operates only on the copy. Though this feature causes occasional
-inconvenience, it prevents an object from being altered unexpectedly by
-a function call in a different part of the program. Calling by value
-helps localize the logic of a program, and circumvents easy-to-write
-but extremely hard-to-find bugs.
-
- In `C++', a function may accept reference arguments. Passing an
-object by reference grants the calling function access to the object
-itself, not to a copy. There are two common applications: The object is
-a large data structure for which copying is "expensive", or the
-function _needs_ to modify its arguments (e.g., a function `swap(x,y)'
-that exchanges the values of `x' and `y').
-
- For the first situation, `C++' provides the `const' keyword, which
-ensures the function does not modify its arguments, but accepts a
-reference merely for efficiency. Any attempt to modify a `const'
-argument will be caught by the compiler. Most `ePiX' commands accept
-`const' reference arguments.
-
- The ability to pass function arguments by reference is sometimes
-touted as a feature in `C++' texts. However, the technique circumvents
-the data encapsulation of calling by value, and should be avoided
-unless absolutely necessary. If a function merely "updates" the value
-of a variable, probably the variable should be of class type, and the
-update should be performed by a member function.
-
- A function declaration must indicate that its arguments are
-references. The declarations below have the indicated idiomatic
-meanings.
-
- class matrix;
- double det(matrix); // call by value, perhaps inefficient
- matrix& transpose(matrix&); // probably changes its argument
- double trace(const matrix&); // does not change its argument
- Unlike pointer arguments, reference arguments impose no syntactic
-burden on the user. If `A' is a `matrix', then `transpose(A);' and
-`trace(A);' will compile. You need not declare explicit reference
-variables and pass those to the function.
-
-
-
-`C++' provides "overloading": Multiple functions can be given the same
-name, so long as the number and/or type of their arguments differ. (It
-is _not_ enough for the return types alone to differ. The compiler
-must be able to select a function from its calling syntax.) To the
-user, the appearance is that a single function intelligently handles
-multiple argument lists. Naturally, overloaded names should refer to
-functions that are conceptually related.
-
-
-
-A `C++' statement ends with a semicolon. A collection of statements
-enclosed by curly braces is a "code block", and may be viewed as a
-single logical statement. Curly braces determine a "scope", inside
-which variable names may be re-used without ambiguity. Function bodies
-are code blocks, as are the alternatives associated to control
-statements. A variable defined between curly braces is said to be
-_local_ to the scope in which it is defined; its value cannot be used
-out of scope. Variables should be declared in the smallest scope
-possible.
-
- The compiler is not picky about spaces, tabs, and newlines, so an
-input file should be formatted to make local scopes visually apparent.
-`emacs' automatically indents code to reflect scope, though the default
-behavior does not please all users. As with variable naming, clarity
-and consistency are paramount.
-
-
-
-A `C++' source file is compiled in multiple stages that occur
-transparently to the user. The first step, pre-processing, involves
-simple text replacement for file inclusion, macro expansion and
-conditional compilation. Next, the source is compiled and assembled:
-Human-readable language instructions are parsed, then represented in
-assembly language. Finally, the object files are linked: Function calls
-are resolved to hard-coded file offsets, possibly involving external
-library files, and the program instructions are packaged into an
-executable binary that the operating system can run.
-
- Pre-processing is used much less in `C++' than in `C'; the language
-itself supports safer and more featureful alternatives to macros, such
-as `const' variables and inline functions. File inclusion and
-conditional compilation are the chief uses of the pre-processor. Lines
-of the form
-
- #include <iostream>
- #include "epix.h"
- cause the contents of a _header file_ to be read into the source file.
-A header file contains variable and function _declarations_, statements
-that specify types and names but do not define actual data.
-Declarations tell the compiler just enough to resolve expressions and
-function calls without knowing specific values or function definitions.
-
- Conditional compilation is similar to conditional `LaTeX' code. For
-example, a file might produce either color or monochrome output as
-follows:
-
-#ifdef COLOR
- ... // code for generating color figure
-#endif /* COLOR */
-#ifndef COLOR
- ... // monochrome code
-#endif /* undef COLOR */
- The "compiler symbol" `COLOR' is an ordinary `C++' name. To control
-compilation, either put a `\#define COLOR' line in the file, or
-(better) supply the flag on the command line: \\ epix -DCOLOR
-<file.xp> \\ Every `\#ifdef' must have a matching `\#endif'. Commenting
-the `\#endif' is a good habit; in a realistic file, the start and end
-of a conditional block may be separated by more than one screen.
-
-
-
-As a programming language, `C++' provides certain features common to
-all languages (such as `LaTeX', MetaPost, Perl, Lisp\ldots) and adheres
-to rules of grammar. Salient differences between `LaTeX' and `C++'
-include:
-
- 1. Every `C++' statement and function call must end with a
- semicolon. An omitted semicolon may result in a cryptic error
- message from the compiler. Pre-processor directives, which start
- with a `\#', do not end with a semicolon.
-
- 2. Backslash is an escape character in `C++':
- // Put label $y=\sin x$ at (2,1)
- // Note single ^ backslash in output
- label(P(2,1), P(0,0), "$y=\\sin x$");
- // Double backslash ^^ in source
-
- 3. Variable and function names may contain letters (including
- underscore) and digits _only_, are case sensitive, and must
- begin with a letter.
-
- 4. Variables in `C++' must have a declared _type_, such as `int'
- (integer) or `double' (double-precision floating point). If a
- variable has global scope and its value does not change, the
- definition should probably come in the preamble or at the
- beginning of `main'. Local variables should be defined in the
- smallest possible scope. Unlike `C', `C++' allows variables to be
- defined where they first appear.
-
- 5. `C++' requires explicit use of `*' to denote multiplication;
- juxtaposition is not enough. `C++' does not support the use of ^
- for exponentiation, e.g., t^2 is invalid. Instead, use `t*t' or
- `pow(t,2)'.
-
- 6. `C++' has single- and multi-line comments. Everything between a
- double slash and the next newline is ignored, while the strings
- /* and */ delimit multi-line comments. A single-line comment may
- appear within a multi-line comment, but the compiler does not
- nest multi-line comments.
-
-
- Between them, `C' and `C++' have about 100 reserved keywords which
-cannot be used as function or variable names.
-
-
-File: epix.info, Node: Attribute Quick Reference, Prev: More About `C++', Up: Reference Manual
-
-3.8 Attribute Quick Reference
-=============================
-
-In the body of an input file, the "drawing state" determines the
-figure's appearance. Attributes are declarations, set by commands that
-accept arguments of the stated type.
-
- A `len' argument is a double-quoted string containing a number and a
-two-letter `LaTeX' length unit, such as `"1.5pt"' or `"6cm"'. A `color'
-argument is a named primary (`Red()', `Cyan()', `White()', etc.), a
-`Color' specified by densities (`RGB(...)', `CMYK(...)', etc.), or a
-`Color' object. Using `Neutral()' as a `Color' argument generally turns
-off the corresponding attribute.
-
- * Angular mode: `radians()', `degrees()', or `revolutions()'.
-
- The angular mode affects all trigonometric operations, including
- camera rotations, the drawing of arcs and ellipses, polar plotting,
- label angle, and the trig functions themselves. Angle-sensitive
- trig functions are capitalized, e.g., `Cos', `Tan'.
-
- * Fill style: `fill(color)', `fill(bool)', `nofill()'.
-
- * Path style:
-
- * Width: `plain()', `bold()', `bbold()', `pen(len)'.
-
- * Line style: `line_style(string)'. The argument is a
- WYSIWYG sequence of dashes, spaces, and periods.
- `dash_size(double)' and `dot_sep(double)' set the
- (approximate) length in `pt' of the pattern. The commands
- `solid()', `dashed()', `dotted()' define "standard"
- defaults for brevity.
-
- * Path color: Paths can be drawn using _two_ pens, one atop
- the other. When the "base" pen is white (or the
- background color) and wider than the "line" pen, a path
- masks parts of the figure it crosses. A 3-D effect may be
- obtained by making the base pen a darker shade than the
- "line" pen.
-
- `pen(color,[len])', `base(color,[len])'
-
- Standard widths: `plain(color)', `bold(color)',
- `bbold(color)'
-
-
- * Text attributes:
-
- * Color: `label_color(color)'
-
- * Mask: `label_mask(color)', `label_pad(len)'
-
- * Border: `label_border(color, [len])',
- `label_border(len)'. The command `no_label_border()'
- turns off label borders.
-
- * Font size: `font_size(LaTeX size)', no argument means
- `normalsize'.
-
- * Font face: `font_face(LaTeX font)', two-letter font
- selection string, default is `rm'.
-
- * Rotation: `label_angle(double)'
-
-
-
- Do not confuse `Color' constructors with the similarly-named
-(deprecated) lowercase attribute-setting commands, `rgb(r,g,b)',
-`cmyk(c,m,y,k)', `red(d)', etc. These commands affect text, paths, and
-filled regions. For example, the single command `red()' has the same
-effect as the three commands `pen(Red())', `fill(Red())', and
-`label_color(Red())'.
-
-
-File: epix.info, Node: Advanced Topics, Next: Software Freedom, Prev: Reference Manual, Up: Top
-
-4 Advanced Topics
-*****************
-
-This chapter covers _ad hoc_ tricks and open-ended techniques that
-require relatively more programming sophistication. You will almost
-surely need an external `C++' reference if you do not speak the
-language.
-
-* Menu:
-
-* Hidden Object Removal::
-* Extensions::
-* Programmer's Guide::
-
-
-File: epix.info, Node: Hidden Object Removal, Next: Extensions, Prev: Advanced Topics, Up: Advanced Topics
-
-4.1 Hidden Object Removal
-=========================
-
-`ePiX' writes the output file in the same order that objects appear in
-the input. The order is significant because PostScript builds a figure
-in layers: Objects are drawn over objects that come earlier in the
-file. Shaded polygons can be used to obtain surprisingly effective
-hidden object removal in surface meshes. This section describes the
-data structures defined in the source files `surface.*'.
-
- The basic idea is to create a shaded polygon class that knows its
-approximate distance to the camera. For computational simplicity, a
-mesh "facet" is treated as a quadrilateral, located at the arithmetic
-mean of its vertices. A facet's boundary is created from a map and a
-domain by tracing a fine mesh rectangle counterclockwise.
-
- To draw a parametrized surface, facets are stored in a `C++' vector,
-sorted in decreasing order of distance to the camera, and printed to
-the output file. If filling is active, the gray density of a facet
-depends on the cosine of the angle between the normal vector and the
-vector from the camera to the element.
-
- This simple algorithm works surprisingly well when mesh elements
-intersect at most along complete edges. To incorporate line-like
-elements (e.g., coordinate axes, wire-mesh plots) with shaded surfaces,
-the best technique is often to order high-level scene elements
-manually, breaking up shaded surfaces (for example, with domain
-resizing or clipping) as necessary. The sample file `saddle.xp'
-illustrates possible techniques.
-
- Shaded surfaces can be decorated with a bit of hackery. For example,
-the `facet::draw' function in `facet.cc' can be modified easily to draw
-line elements, tangents, or normal vectors along with the facet itself.
-The sample file `decorate.xp' contains a couple of ideas. (The
-decorations are activated by compiler flags; please consult the file
-itself for information on compiling.)
-
-
-File: epix.info, Node: Extensions, Next: Programmer's Guide, Prev: Hidden Object Removal, Up: Advanced Topics
-
-4.2 Extensions
-==============
-
-Thanks to a suggestion of Andrew Sterian, `ePiX' is extensible. User
-extensions span a spectrum, from header files that require only basic
-knowledge of `C++' to separately compiled libraries that add
-substantial new features. The structure of the source code is outlined
-in Section *Note section:programmers::, .
-
-
-
-A `C++' header file conventionally has suffix `.h', as in `myheader.h'.
-To use this custom header, put a line `\#include "myheader.h"' in your
-source file.
-
- User definitions can be easily and robustly implemented with "inline
-functions". Inline functions are superficially similar to macros, but
-are far more safe and featureful (since they are handled by the
-compiler rather than by the pre-processor). Examples are
-
- inline void Bold() { pen(1.6); }
- inline void purple() { rgb(0.5, 0, 0.7); }
- inline void draw_square(double s) { rect(P(-s,-s),P(s,s)); }
- inline double cube(double x) { return pow(x,3); // x^3 }
- The keyword `void' signifies a function that does not return a value,
-or (when used as an implicit parameter) a function that does not accept
-arguments. Inline function definitions are syntactically identical to
-ordinary function definitions, but _must_ occur in a header file or in
-the source file where they are used. The examples above might be used
-in an input file as follows:
-
- Bold();
- draw_square(cube(1.25));
-
-
-
-The next few sections outline the creation of a "static library" on
-GNU/Linux, and explain how to incorporate custom features at runtime.
-The extensively-commented sample files `std_F.cc' and `std_F.h'
-illustrate the techniques described below, and may be used for guidance
-and experimentation.
-
- A small library is usually written as a _header_ file, which
-contains class and function declarations (also called "prototypes"),
-and a _source_ file, which contains the actual code. Conventionally
-(under *nix), these files have extension `.h' and `.cc' respectively.
-Header and source files may "include" other header files, to
-incorporate additional functionality.
-
-/* my_code.h */
-#ifndef MY_CODE
-#define MY_CODE
-#include <cmath> // standard library math header
-#include "epix.h" // ePiX header
-using ePiX::P;
-
-namespace Mine { // to avoid name conflicts
- // functions for special relativity
- double lorentz_norm(const P&);
- bool spacelike(const P&);
-} // end of namespace
-#endif /* MY_CODE */
- This file exhibits two "safety features". The three `MY_CODE' lines
-prevent the file from being included multiple times. In a file of this
-size, inclusion protection is overkill, but as your code base grows and
-the number of header files increases, this protection is essential.
-Second, the header introduces a "Mine" namespace. Inside this
-namespace, two functions are declared as prototypes, giving the
-function's return type, name, and argument type(s). A header file
-should be commented fairly liberally, so that a year or two from now
-you'll be able to decipher the file's contents. For a longer file,
-version and contact information, an overall comment describing the
-file's features, and license information are appropriate.
-
- Next, the corresponding source file; definitions are also placed into
-the namespace, and must match their prototypes from the header file
-exactly.
-
-/* my_code.cc */
-#include "my_code.h"
-using namespace ePiX;
-
-namespace Mine {
- double lorentz_norm(const P& arg)
- {
- double x(arg.x1()), y(arg.x2()), z(arg.x3()); // extract coords
- return (y-x)*(y+x) + z*z; // -x^2 + y^2 + z^2
- }
- bool spacelike(const P& arg)
- {
- return (lorentz_norm(arg) > 0); // true if inequality is
- }
-} // end of namespace
- Copies of these files are included with the source code so you can
-experiment with them. Next, the source file must be "compiled",
-"archived", and "indexed". In the commands below, the percent sign is
-the prompt.
-
-% g++ -c my_code.cc
-% ar -ru libcustom.a my_code.o
-% ranlib libcustom.a
- Please see your system documentation for details on command options
-and what each step does. For linking (below), the name of the library
-file must begin "lib" and have the extension `.a'. Once these steps are
-successfully completed, put the library `libcustom.a' and header file
-`my_code.h' in your project directory. You're ready to use the code in
-an `ePiX' figure.
-
-
-
-The script `epix' allows input files to be linked with external
-libraries at run time, when the input file is compiled into a temporary
-executable.
-
- `epix' recognizes command line options and passes them verbatim to
-the compiler. The most commonly used options are those of the form
-
- -I<include> -L<libdir> -l<lib>
- For example, to link `figure.xp' against `mylibs/libcustom.a', run the
-command
-
- epix -Lmylibs -lcustom figure
- The options `-I. -L.' tell the compiler to look in the current
-directory for header and library files. Compiler options may appear in
-any order, but must come before the name of the input file(s).
-
- Compiler options may be placed in the configuration file
-`\$HOME/.epixrc', with syntax as above. A line in the config file that
-contains a pound sign (`\#') is a comment, no matter where in the line
-the `\#' appears. If any non-comment line fails to start with a dash,
-the rest of the file is silently discarded. Command-line options are
-read before the config file.
-
-
-
-The script `epix' links by default against the `C' math library
-`libm.a' and the `ePiX' library `libepix.a'. The command option
-`--no-defaults' clears the header and include paths and removes
-`libepix.a' from the link list. The script may therefore be used with
-multiple versions of `ePiX', a potentially useful feature if you
-regularly need to compile old source files, or simply prefer the syntax
-of an older version.
-
- To install and use (say) Version 1.0.0, build the package according
-to its `INSTALL' instructions, but _do not use the makefile to
-install_. Instead, manually install the header and library only, using
-their version number:
-
-# install -m 644 epix.h /usr/local/include/epix-1.0.h
-# install -m 644 libepix.a /usr/local/lib/libepix-1.0.a
- A non-system directory may be used instead of `/usr/local'. To use
-the old version, a source file must `include' the appropriate header
-file (which is identified by its version number). To compile, issue a
-command such as
-
-epix --no-defaults -I/usr/local -L/usr/local -lepix-1.0 file.xp
-
-
-File: epix.info, Node: Programmer's Guide, Prev: Extensions, Up: Advanced Topics
-
-4.3 Programmer's Guide
-======================
-
-This section briefly surveys `ePiX''s implementation, and is intended
-for (potential) programmers. The source code is divided into modules
-with small, well-defined responsibilities, but the user interface is
-mostly compatible with the syntax of Version 1.0. These constraints
-demanded a degree of implementation hiding. For example, the
-user-visible classes defined in `Color.h', `path.h', and `screen.h'
-contain only a pointer to the implementation class, and style data is
-hidden behind global commands.
-
- Functionally, the code consists of the user interface; implementation
-class\-es comprising drawing attributes, spatial objects, screens and
-representations of their elements, and output; and miscellaneous
-utility functions. The headers in each group, and their contents, are
-described in Section *Note section:interface::, .
-
- The user interface headers are assembled into a single file,
-`epix.h', and installed in `/usr/local/include' by default. In normal
-use, the shell scripts read only the user interface header. The
-individual headers, including the components of `epix.h', are installed
-in `/usr/local/include/epix'. These are provided for authors of
-external libraries, who may need access to implementation details.
-
-
-
-`ePiX' harnesses the computational power of `C++' to the typographical
-capabilities of `LaTeX'. Consequently, `ePiX' should be viewed in part
-as a framework for expressing numerical data visually.
-
- In the course of your work, you may develop specialized code filling
-a gap in `ePiX''s functionality. If your code seems likely to be of
-interest to other users, please consider bundling it as an external
-package and notifying the `ePiX' community so your work can be linked
-from the project pages and distributed to interested users.
-
- There are no formal requirements for external packages, but in the
-interest of uniformity contributed code should follow the GNU Coding
-Standards `GNUCoding'. At a minimum, an external package should build
-with the standard `./configure; make; make install' commands, and the
-`configure' script should accept an option `--with-epix' for the user
-to specify a non-default `ePiX' install directory.
-
- If an external package builds a static library, it should provide a
-single header containing all the package's entry points, and enclose
-its interface in a namespace. Entry points should not collide with
-`ePiX' functions. Naming the package "`epix-<...>'" is a good idea, but
-not essential. For example, a package providing textual nodes and
-diagram layout might be named `epix-nodes'. Input files would use the
-package with the lines
-
- #include "epix-nodes.h"
- using namespace ePiX-nodes;
- and be compiled with
-
- epix -lepix-nodes <file>
-
- The user and internal interfaces of `ePiX'-1.2 are not likely to
-change. Still, it's prudent to rely only on the user interface in
-contributed code whenever possible. Doing so also simplifies your work
-as an author; your library can simply `include' the user header file,
-and deal only with high-level objects and drawing attributes.
-
-
-
-These files (in order) comprise the global header `epix.h'.
-
- `enums.h' Marker, alignment, Riemann integral, and vector field
-types.
-
- `length.h' Physical lengths, conceptually a number and two-letter
-`LaTeX' length unit.
-
- `interval.h' Closed, open, and half-open interval ranges for data
-culling.
-
- `triples.h' The `P' class.
-
- `functions.h' Angle-sensitive trig functions, miscellaneous utility
-functions, the `Deriv' and `Integral' classes.
-
- `pairs.h' Screen locations and displacements, with complex
-arithmetic operations.
-
- `Color.h' The Color class interface, named primaries and
-constructors.
-
- `state.h' Angle mode; clipping and cropping; label styles; filling;
-arrow head style; dot and tick sizes, dash length; line style; line and
-base pen attributes; color-setting commands.
-
- `frame.h' Orthonormal bases.
-
- `domain.h' Coordinate boxes for function plotting.
-
- `camera.h' The camera.
-
- `screen.h' The screen class.
-
- `picture.h' Dimension-setting, offset, layout, decoration, verbatim
-text, and output format commands.
-
- `markers.h' Point markers, axis labels, and coordinate axes.
-
- `axis.h' Coordinate axes and labels in various styles.
-
- `legend.h' Plot legends.
-
- `path.h' The path class.
-
- `curves.h' Polygons, arrows, ellipses, arcs, splines, coordinate
-grids, and recursive fractal curves.
-
- `circle.h' The `Circle' shape object class.
-
- `plane.h' The `Plane' shape object class.
-
- `segment.h' The `Segment' shape object class.
-
- `sphere.h' The `Sphere' shape object class.
-
- `intersections.h' Shape object intersection operators.
-
- `plots.h' Plotting commands.
-
- `surface.h' Shaded surface plots.
-
- `data_mask.h' Helper class for data pruning.
-
- `data_file.h' Class for storing and representing data.
-
- `data_bins.h' Class for sorting and counting data.
-
- `geometry.h' Latitudes and longitudes; spherical plotting, arcs,
-polygons, and polyhedra; hyperbolic arcs.
-
-
-
-`Color_Base.h' The Color implementation interface.
-
- `Color_CMY.h' The CMY color model.
-
- `Color_CMYK.h' The CMYK color model.
-
- `Color_Gray.h' The Gray color model.
-
- `Color_Neutral.h' Each color class has a "Neutral" member that
-converts colors to that model by filtering. This file defines the
-unique "model-less" Neutral color for which filtering performs no
-action.
-
- `Color_RGB.h' The RGB color model.
-
- `Color_Sep.h' Classes for CMYK separation.
-
- `active_screen.h' Simple manipulator for the active screen.
-
- `picture_data.h' Picture implementation: two `screen' s
-(representing the `canvas' and the output page), true dimensions and
-offsets, pointer to output format, list of colors, and lists of
-verbatim text to write before and after printing the `picture'
-environment in the output file. For simplicity, the `screen's and
-dimensions are public; encapsulation from the user results from
-"hiding" this header.
-
-
-
-Declaration-style attributes are maintained with functions returning
-static references: `the_angle_style()', `the_arrowhead_style()',
-`the_label_style()', `the_mark_size()', `the_paint_style()', and
-`the_path_style()'. Each function is declared in the analogously-named
-header.
-
- `angle_units.h' Angular modes: `radians' , `revolutions', and
-`degrees'.
-
- `arrow_style.h' Arrow head style data: width, ratio, and inset.
-
- `label_style.h' Text object style: Label and mask colors, padding,
-border color and width, alignment, font size, font face, and angle.
-
- `marker_style.h' Dot and tick sizes.
-
- `paint_style.h' Line and base pens, fill color.
-
- `path_style.h' Solid, dashed, dotted lines.
-
- `pen_data.h' The pen class.
-
-
-
-`arrow_data.h' Arrow representation.
-
- `facet.h' Shaded surface elements.
-
- `label_data.h' Text (label and marker) objects.
-
- `legend_item.h' Items for `legend' s.
-
- `path_data.h' Path implementation.
-
- `spline.h' The natural spline class.
-
- `spline_data.h' Templates for quadratic and cubic splines.
-
-
-
-Elements in a `screen' are represented polymorphically as "`tile's", of
-which there are six types: `glyph' (textual elements), `pen_arrow'
-(arrows), `pen_fill' (filled regions), `pen_line' (path-like elements),
-`verbatim' (raw text), and `legend_tile' (legends).
-
- Border and background shape are dictated by the `screen_mask' class.
-The cropping algorithm assumes the contour of a screen mask is convex.
-
- `affine.h' Affine maps.
-
- `cropping.h' Screen mask cropping.
-
- `glyph.h' Markers and labels.
-
- `legend_tile.h' Screen representation of a `legend' .
-
- `mask_diamond.h' Screen diamond mask.
-
- `mask_ellipse.h' Screen elliptical mask.
-
- `mask_rectangle.h' Screen rectangular mask.
-
- `pen_arrow.h' Arrows.
-
- `pen_fill.h' Filled regions.
-
- `pen_line.h' Paths.
-
- `screen_data.h' Screen implementation class.
-
- `screen_mask.h' Screen mask interface.
-
- `tile.h' Screen element interface.
-
- `verbatim.h' Text in output stream.
-
-
-
-Output is divided into a couple of high-level operations and several
-"atomic" low-level operations. To create a new output format, one need
-only implement the `format' interface for the desired file type. Paths
-and filled regions may be implemented however the output type dictates.
-
- `eepic.h' eepic macros.
-
- `fmt_template.h' "skeleton" header for new output formats.
-
- `format.h' The output interface.
-
- `pst.h' PSTricks macros.
-
- `tikz.h' tikz macros.
-
-
-
-`Color_Utils.h' Functions for setting color channel densities.
-
- `clipping.h' The clip box.
-
- `constants.h' Global constants: Line widths; dot, tick, and dash
-sizes; arrowhead parameters; miscellaneous numerical constants and
-internal parameters.
-
- `crop_algorithms.h' Path and loop clipping templates.
-
- `deriv.h' Finite difference template.
-
- `edge_data.h' Path element representation template.
-
- `errors.h' Warning and error messages.
-
- `frac.h' Rational numbers and operators.
-
- `halfspace.h' Halfspace cutting.
-
- `hatching.h' Filling regions in eepic.
-
- `lens.h' Camera lenses.
-
- `map.h' Wrappers for templated plotting.
-
- `plot_algorithms.h' Plotting templates.
-
- `screen_crop.h' Crop paths and loops.
-
- `utils.h' Truncation, date and time, line breaking.
-
-
-File: epix.info, Node: Software Freedom, Next: Acknowledgments, Prev: Advanced Topics, Up: Top
-
-Appendix A Software Freedom
-***************************
-
-Academics in general, and mathematicians in particular, depend on free
-exchange of information. We prove theorems or establish experimental
-results, write up formal accounts, place preprints on public file
-servers, and submit papers to peer-reviewed journals. If accepted, the
-results--data, techniques, methods of reasoning, citations, and
-conclusions--are published in print and become part of the public
-record, governed by copyright law. Libraries purchase journal
-subscriptions, but researchers and scholars may use ideas from the
-literature merely by giving appropriate citations in their own work.
-"Theft" arises from false claims of authorship.
-
- Carried over to software, the academic process would guarantee rights
-similar to those provided by the GNU General Public License (GPL):
-
- * (GPL 0) To run a program for any purpose.
-
- * (GPL 1) To study how the program works, and adapt it to your
- needs.
-
- * (GPL 2) To redistribute copies of the program.
-
- * (GPL 3) To improve the program, and release improvements to the
- public, so that the whole community benefits.
-
-
- In reality, attitudes toward software differ markedly. Most academics
-work on a proprietary platform, use proprietary software for research
-and teaching, and share information with colleagues and students in
-proprietary, even obfuscated, data formats. Contrary to the academic
-ethic, proprietary software licenses restrict access to information:
-preventing users from learning how a program works internally ("reverse
-engineering"), limiting the number of users who may run a piece of
-software, and forbidding users from running (or sometimes even
-installing) a purchased copy on multiple machines.
-
- Restrictions on use aside, if one cannot examine a program's source
-code, one cannot fully trust the output, any more than one can trust
-(for purposes of scientific publication) results of a commercial
-testing lab.
-
- Consider a hypothetical future world in which scholarly results are
-disseminated like software. Instead of subscriptions, journals sell
-licenses granting readership to a specified number of individuals.
-Photocopying an article for a class or research seminar constitutes
-"piracy", though if the institution has purchased a sufficiently large
-site license the teacher or speaker may bring the physical volume to
-class and project the pages onto a screen.
-
- Of course, reading an article is scarcely enlightening. Mathematics
-papers contain only the statements of theorems. Merely opening the
-journal binds the reader to a lengthy legal agreement, stating that
-theorems be used only for specific purposes and threatening serious
-legal consequences for attempting to discover the author's proofs.
-
- The actions of a single student, employee, or faculty member can
-expose an institution to a costly "journal audit" from the Mathematical
-Society of America (MSA), with the institution responsible for legal
-costs if the audit reveals license violations anywhere in the
-organization.
-
- Mathematicians who long for the Old Days when papers contained
-proofs and were shared freely are dismissed as idealistic cranks or
-labeled anti-business communists. Common knowledge asserts the obvious
-superiority of proprietary journals, and the necessity of licenses for
-keeping mathematicians gainfully employed.
-
- Back in our world, some vendors have attempted to placate opponents
-of closed source with "shared source" licenses, under which one may
-sign a non-disclosure agreement and subsequently examine source code.
-In the future world analogy, a shared source agreement would allow
-journal licensees to sign an NDA, then see the proofs of theorems.
-Readers could thereby correct errors in proofs (benefitting the
-publisher by improving the reliability of the journal), but would be
-legally forbidden from using the ideas elsewhere (denying benefit to
-other mathematicians).
-
- Legally and conceptually codifying software as a commodity ignores a
-fundamental reality: Like an idea or recipe, software can be copied
-without loss of the original. The perception of "theft" by copying
-arises from an artificial belief that software has an owner who must be
-monetarily compensated each time a person acquires a copy. The nature
-of software does not enforce the "sale" model in the way services and
-physical commodities do. It therefore seems philosophically
-inappropriate to treat software as a commodity, and perilous to conform
-the legal system to the enforcement of such a model.
-
- At its best, software enhances our productivity and creativity.
-Sharing software, like sharing ideas, benefits a larger number of
-people without detriment to existing users. I hope this modest program
-is, in conjunction with the much larger efforts of others (especially
-Donald Knuth, Richard Stallman, and the many people who have
-contributed to the authorship of `LaTeX' and its packages), useful to
-you in your mathematical work.
-
- Please visit the Free Software Foundation, at `http://www.fsf.org',
-to learn more about free software and how you can contribute to its
-development and adoption.
-
-
-File: epix.info, Node: Acknowledgments, Next: Function Index, Prev: Software Freedom, Up: Top
-
-Appendix B Acknowledgments
-**************************
-
-`ePiX' is built on the work of many people (unfortunately, most of whom
-I am unaware). The following people have contributed, sometimes
-unknowingly but always generously:
-
- *Infrastructure* Donald Knuth, Conrad Kwok, Leslie Lamport, Tim
-Morgan, Piet van Oostrum, Sunil Podar, Richard Stallman, Till Tantau,
-Herbert Voss, Timothy van Zandt
-
- *Enhancements* Jay Belanger, Robin Blume-Kohout, Julian Gilbey,
-Marcus Hanwell, Yvon Henel, Svend Daugaard Pedersen, Andrew Sterian
-
- *Porting and packaging* Julian Gilbey (Debian); Tsuguru Kato
-(FreeBSD); Markus Dittrich, Danny van Dyk, Christian Faulhammer,
-Olivier Fisette, Chris Gianelloni, Michael Hanselmann, Marcus Hanwell,
-David Holm, Peter Johanson, Patrick Kursawe, Tobias Scherbaum, Markus
-Ullmann (Gentoo); Guido Gonzato (RPM); Rene Rebe (T2)
-
- *Debugging, advice, and other assistance* Jay Belanger, Felipe Paulo
-Guazzi Bergo, Karl Berry, Robin Blume-Kohout, Patrick Cousot, Stephen
-Gibson, Julian Gilbey, Dov Grobgeld, Bob Grover, Jim Hefferon, Jacques
-L'helgoual, Yvon Henel, Hartmut Henkel, Herng-Jeng Jou, Walter
-Kehowski, Kevin McCormick, Ross Moore, Thorsten Riess, Alan Sill, Neel
-Smith, Michael Somos, Andrew Sterian, Ryszard Tanas, Kai Trukenmueller,
-Torbjorn Vik, Wenguang Wang, Gabe Weaver, Mariusz Wodzicki
-
-
-File: epix.info, Node: Function Index, Next: Concept Index, Prev: Acknowledgments, Up: Top
-
-Function Index
-**************
-
-
-* Menu:
-
-* aarrow: Creating and Drawing Objects.
- (line 248)
-* Acos: More About C++. (line 112)
-* activate: Scene Attributes. (line 161)
-* affine: Scene Attributes. (line 271)
-* apply: Scene Attributes. (line 307)
-* arc: Creating and Drawing Objects.
- (line 167)
-* arc_arrow: Creating and Drawing Objects.
- (line 248)
-* arc_measure: Creating and Drawing Objects.
- (line 193)
-* arrow: Creating and Drawing Objects.
- (line 242)
-* arrow_inset: Creating and Drawing Objects.
- (line 235)
-* arrow_ratio: Creating and Drawing Objects.
- (line 235)
-* arrow_width: Creating and Drawing Objects.
- (line 235)
-* Asin: More About C++. (line 112)
-* Atan: More About C++. (line 112)
-* axis: Creating and Drawing Objects.
- (line 275)
-* axis.align: Creating and Drawing Objects.
- (line 284)
-* axis.align_labels: Creating and Drawing Objects.
- (line 296)
-* axis.dec: Creating and Drawing Objects.
- (line 296)
-* axis.draw: Creating and Drawing Objects.
- (line 342)
-* axis.draw_labels: Creating and Drawing Objects.
- (line 342)
-* axis.draw_ticks: Creating and Drawing Objects.
- (line 342)
-* axis.frac: Creating and Drawing Objects.
- (line 296)
-* axis.label_rep: Creating and Drawing Objects.
- (line 307)
-* axis.precision: Creating and Drawing Objects.
- (line 296)
-* axis.sci: Creating and Drawing Objects.
- (line 296)
-* axis.subdivide: Creating and Drawing Objects.
- (line 284)
-* axis.tag: Creating and Drawing Objects.
- (line 323)
-* axis.tag235: Creating and Drawing Objects.
- (line 323)
-* axis.tags: Creating and Drawing Objects.
- (line 323)
-* axis.tick_ratio: Creating and Drawing Objects.
- (line 284)
-* axis.trig: Creating and Drawing Objects.
- (line 296)
-* axis.unmark: Creating and Drawing Objects.
- (line 296)
-* axis.untag: Creating and Drawing Objects.
- (line 323)
-* axis_break: Creating and Drawing Objects.
- (line 394)
-* back_arc: Creating and Drawing Objects.
- (line 851)
-* back_arc2: Creating and Drawing Objects.
- (line 851)
-* back_cube: Creating and Drawing Objects.
- (line 857)
-* back_dodeca: Creating and Drawing Objects.
- (line 857)
-* back_icosa: Creating and Drawing Objects.
- (line 857)
-* back_latitude: Creating and Drawing Objects.
- (line 837)
-* back_line: Creating and Drawing Objects.
- (line 851)
-* back_longitude: Creating and Drawing Objects.
- (line 837)
-* back_octa: Creating and Drawing Objects.
- (line 857)
-* back_tetra: Creating and Drawing Objects.
- (line 857)
-* back_triangle: Creating and Drawing Objects.
- (line 857)
-* backing: Scene Attributes. (line 252)
-* backplot_N: Creating and Drawing Objects.
- (line 879)
-* backplot_R: Creating and Drawing Objects.
- (line 879)
-* backplot_S: Creating and Drawing Objects.
- (line 879)
-* bbold: Drawing Attributes. (line 33)
-* bbox: Drawing Attributes. (line 174)
-* begin: File Structure. (line 12)
-* Black: Color. (line 23)
-* Blue: Color. (line 23)
-* bold: Drawing Attributes. (line 33)
-* border: Scene Attributes. (line 252)
-* bottom_axis: Creating and Drawing Objects.
- (line 332)
-* bounding_box: Picture Size and Aspect Ratio.
- (line 24)
-* box: Drawing Attributes. (line 174)
-* Camera.at: Scene Attributes. (line 75)
-* Camera.clip_range: Scene Attributes. (line 75)
-* Camera.focus: Scene Attributes. (line 75)
-* Camera.look_at: Scene Attributes. (line 75)
-* Camera.pan: Scene Attributes. (line 75)
-* Camera.range: Scene Attributes. (line 75)
-* Camera.roll: Scene Attributes. (line 75)
-* Camera.tilt: Scene Attributes. (line 75)
-* canvas: Scene Attributes. (line 183)
-* cb: More About C++. (line 123)
-* circ: Drawing Attributes. (line 174)
-* circle: Creating and Drawing Objects.
- (line 145)
-* Circle: Creating and Drawing Objects.
- (line 70)
-* cis: Creating and Drawing Objects.
- (line 27)
-* clip_box: Scene Attributes. (line 127)
-* clip_face: Scene Attributes. (line 137)
-* clip_restore: Scene Attributes. (line 137)
-* clip_slice: Scene Attributes. (line 137)
-* clip_to: Scene Attributes. (line 127)
-* CMY: Color. (line 29)
-* CMY_Black: Color. (line 29)
-* CMY_White: Color. (line 29)
-* cmyk: Drawing Attributes. (line 210)
-* CMYK: Color. (line 29)
-* Color.alpha: Color. (line 73)
-* Color.blend: Color. (line 73)
-* Color.filter: Color. (line 73)
-* Color.invert: Color. (line 73)
-* Color.superpose: Color. (line 73)
-* Cos: More About C++. (line 112)
-* Cot: More About C++. (line 112)
-* crop: Scene Attributes. (line 239)
-* crop_diamond: Scene Attributes. (line 239)
-* crop_ellipse: Scene Attributes. (line 239)
-* Csc: More About C++. (line 112)
-* Cyan: Color. (line 29)
-* cyl: Creating and Drawing Objects.
- (line 27)
-* dart: Creating and Drawing Objects.
- (line 248)
-* dart_field: Creating and Drawing Objects.
- (line 793)
-* dash_size: Drawing Attributes. (line 44)
-* dashed: Drawing Attributes. (line 53)
-* data_bins: Creating and Drawing Objects.
- (line 1006)
-* data_bins.bar_chart: Creating and Drawing Objects.
- (line 1016)
-* data_bins.cut: Creating and Drawing Objects.
- (line 1006)
-* data_bins.histogram: Creating and Drawing Objects.
- (line 1016)
-* data_bins.plot: Creating and Drawing Objects.
- (line 1016)
-* data_bins.read: Creating and Drawing Objects.
- (line 1006)
-* data_file: Creating and Drawing Objects.
- (line 931)
-* data_file.avg: Creating and Drawing Objects.
- (line 950)
-* data_file.column: Creating and Drawing Objects.
- (line 973)
-* data_file.covar: Creating and Drawing Objects.
- (line 950)
-* data_file.dot: Creating and Drawing Objects.
- (line 950)
-* data_file.plot: Creating and Drawing Objects.
- (line 958)
-* data_file.precision: Creating and Drawing Objects.
- (line 967)
-* data_file.read: Creating and Drawing Objects.
- (line 931)
-* data_file.regression: Creating and Drawing Objects.
- (line 950)
-* data_file.transform: Creating and Drawing Objects.
- (line 945)
-* data_file.var: Creating and Drawing Objects.
- (line 950)
-* data_file.write: Creating and Drawing Objects.
- (line 967)
-* data_mask: Creating and Drawing Objects.
- (line 988)
-* data_mask.prune: Creating and Drawing Objects.
- (line 996)
-* ddot: Drawing Attributes. (line 174)
-* deactivate: Scene Attributes. (line 161)
-* Deriv: Creating and Drawing Objects.
- (line 745)
-* Deriv.eval: Creating and Drawing Objects.
- (line 745)
-* Deriv.left: Creating and Drawing Objects.
- (line 745)
-* Deriv.right: Creating and Drawing Objects.
- (line 745)
-* disk_line: Creating and Drawing Objects.
- (line 826)
-* domain: Creating and Drawing Objects.
- (line 512)
-* domain.resize: Creating and Drawing Objects.
- (line 531)
-* domain.slice: Creating and Drawing Objects.
- (line 531)
-* domain.slices: Creating and Drawing Objects.
- (line 531)
-* domain_list: Creating and Drawing Objects.
- (line 668)
-* domain_list.add: Creating and Drawing Objects.
- (line 668)
-* dot: Drawing Attributes. (line 174)
-* dot_size: Drawing Attributes. (line 185)
-* dotted: Drawing Attributes. (line 53)
-* draw: Creating and Drawing Objects.
- (line 59)
-* ellipse: Creating and Drawing Objects.
- (line 167)
-* ellipse_bottom: Creating and Drawing Objects.
- (line 180)
-* ellipse_left: Creating and Drawing Objects.
- (line 180)
-* ellipse_right: Creating and Drawing Objects.
- (line 180)
-* ellipse_top: Creating and Drawing Objects.
- (line 180)
-* end: File Structure. (line 12)
-* envelope: Creating and Drawing Objects.
- (line 768)
-* extract: Scene Attributes. (line 183)
-* extract_diamond: Scene Attributes. (line 190)
-* extract_ellipse: Scene Attributes. (line 190)
-* fill: Drawing Attributes. (line 12)
-* flow: Creating and Drawing Objects.
- (line 778)
-* font_face: Drawing Attributes. (line 144)
-* font_size: Drawing Attributes. (line 144)
-* fractal: Creating and Drawing Objects.
- (line 214)
-* frame: Creating and Drawing Objects.
- (line 134)
-* front_arc: Creating and Drawing Objects.
- (line 851)
-* front_arc2: Creating and Drawing Objects.
- (line 851)
-* front_cube: Creating and Drawing Objects.
- (line 857)
-* front_dodeca: Creating and Drawing Objects.
- (line 857)
-* front_icosa: Creating and Drawing Objects.
- (line 857)
-* front_line: Creating and Drawing Objects.
- (line 851)
-* front_octa: Creating and Drawing Objects.
- (line 857)
-* front_tetra: Creating and Drawing Objects.
- (line 857)
-* front_triangle: Creating and Drawing Objects.
- (line 857)
-* frontplot_N: Creating and Drawing Objects.
- (line 879)
-* frontplot_R: Creating and Drawing Objects.
- (line 879)
-* frontplot_S: Creating and Drawing Objects.
- (line 879)
-* Gray: Color. (line 29)
-* Green: Color. (line 23)
-* grid: Creating and Drawing Objects.
- (line 405)
-* h_axis: Creating and Drawing Objects.
- (line 352)
-* h_axis_labels: Creating and Drawing Objects.
- (line 368)
-* h_axis_log_labels: Creating and Drawing Objects.
- (line 368)
-* h_axis_log_masklabels: Creating and Drawing Objects.
- (line 368)
-* h_axis_masklabels: Creating and Drawing Objects.
- (line 368)
-* h_error_bar: Creating and Drawing Objects.
- (line 1047)
-* h_log_axis: Creating and Drawing Objects.
- (line 352)
-* h_scale: Scene Attributes. (line 282)
-* h_shear: Scene Attributes. (line 282)
-* hyperbolic_line: Creating and Drawing Objects.
- (line 826)
-* import: Scene Attributes. (line 172)
-* include: C++ Basics. (line 37)
-* inf: Creating and Drawing Objects.
- (line 731)
-* inlay: Scene Attributes. (line 204)
-* inlay_horizontal: Scene Attributes. (line 204)
-* inlay_vertical: Scene Attributes. (line 204)
-* inset: Scene Attributes. (line 172)
-* Integral: Creating and Drawing Objects.
- (line 745)
-* Integral.eval: Creating and Drawing Objects.
- (line 745)
-* J: Creating and Drawing Objects.
- (line 38)
-* label <1>: Drawing Attributes. (line 99)
-* label: Layout Tricks. (line 46)
-* label_border: Drawing Attributes. (line 160)
-* label_color: Drawing Attributes. (line 160)
-* label_mask: Drawing Attributes. (line 160)
-* label_pad: Drawing Attributes. (line 160)
-* latitude: Creating and Drawing Objects.
- (line 837)
-* left_axis: Creating and Drawing Objects.
- (line 332)
-* legend: Creating and Drawing Objects.
- (line 1083)
-* legend.backing: Creating and Drawing Objects.
- (line 1083)
-* legend.border: Creating and Drawing Objects.
- (line 1083)
-* legend.draw: Creating and Drawing Objects.
- (line 1115)
-* legend.fill_item: Creating and Drawing Objects.
- (line 1101)
-* legend.item_border: Creating and Drawing Objects.
- (line 1083)
-* legend.key_size: Creating and Drawing Objects.
- (line 1083)
-* legend.label_skip: Creating and Drawing Objects.
- (line 1083)
-* legend.mark_item: Creating and Drawing Objects.
- (line 1101)
-* legend.path_item: Creating and Drawing Objects.
- (line 1101)
-* Line: Creating and Drawing Objects.
- (line 145)
-* line: Creating and Drawing Objects.
- (line 145)
-* line_style: Drawing Attributes. (line 44)
-* log1_grid: Creating and Drawing Objects.
- (line 411)
-* log2_grid: Creating and Drawing Objects.
- (line 411)
-* log_grid: Creating and Drawing Objects.
- (line 411)
-* longitude: Creating and Drawing Objects.
- (line 837)
-* Magenta: Color. (line 29)
-* move_to: Creating and Drawing Objects.
- (line 59)
-* newton: Creating and Drawing Objects.
- (line 731)
-* no_label_border: Drawing Attributes. (line 160)
-* nofill: Drawing Attributes. (line 12)
-* ode_plot: Creating and Drawing Objects.
- (line 778)
-* P: Creating and Drawing Objects.
- (line 27)
-* P.x1: Creating and Drawing Objects.
- (line 38)
-* P.x2: Creating and Drawing Objects.
- (line 38)
-* P.x3: Creating and Drawing Objects.
- (line 38)
-* path: Creating and Drawing Objects.
- (line 437)
-* path.close: Creating and Drawing Objects.
- (line 468)
-* path.draw: Creating and Drawing Objects.
- (line 468)
-* path.fill: Creating and Drawing Objects.
- (line 468)
-* pen <1>: Creating and Drawing Objects.
- (line 422)
-* pen: Drawing Attributes. (line 23)
-* picture <1>: Picture Size and Aspect Ratio.
- (line 24)
-* picture: File Structure. (line 12)
-* plain: Drawing Attributes. (line 33)
-* Plane: Creating and Drawing Objects.
- (line 85)
-* plot: Creating and Drawing Objects.
- (line 495)
-* polar: Creating and Drawing Objects.
- (line 27)
-* polar_grid: Creating and Drawing Objects.
- (line 405)
-* polarplot: Creating and Drawing Objects.
- (line 495)
-* post_write: C++ Basics. (line 122)
-* postcomp: Scene Attributes. (line 282)
-* pre_write: C++ Basics. (line 122)
-* pt_to_screen: Scene Attributes. (line 214)
-* quad: Creating and Drawing Objects.
- (line 145)
-* rect: Creating and Drawing Objects.
- (line 145)
-* Red: Color. (line 23)
-* reflect: Scene Attributes. (line 282)
-* rgb: Drawing Attributes. (line 210)
-* RGB: Color. (line 23)
-* riemann_sum: Creating and Drawing Objects.
- (line 756)
-* right_angle: Creating and Drawing Objects.
- (line 193)
-* right_axis: Creating and Drawing Objects.
- (line 332)
-* ring: Drawing Attributes. (line 174)
-* rotate: Scene Attributes. (line 282)
-* scale <1>: Creating and Drawing Objects.
- (line 59)
-* scale: Scene Attributes. (line 282)
-* scenery: Creating and Drawing Objects.
- (line 680)
-* scenery.add: Creating and Drawing Objects.
- (line 680)
-* scenery.draw: Creating and Drawing Objects.
- (line 680)
-* Sec: More About C++. (line 112)
-* Segment: Creating and Drawing Objects.
- (line 90)
-* set_crop: Scene Attributes. (line 239)
-* sgn: More About C++. (line 123)
-* shadeplot: Creating and Drawing Objects.
- (line 495)
-* shift <1>: Creating and Drawing Objects.
- (line 59)
-* shift: Scene Attributes. (line 282)
-* Sin: More About C++. (line 112)
-* sinx: More About C++. (line 123)
-* slope_field: Creating and Drawing Objects.
- (line 793)
-* solid: Drawing Attributes. (line 53)
-* sph: Creating and Drawing Objects.
- (line 27)
-* Sphere: Creating and Drawing Objects.
- (line 93)
-* spline: Creating and Drawing Objects.
- (line 167)
-* spot: Drawing Attributes. (line 174)
-* sup: Creating and Drawing Objects.
- (line 731)
-* surface: Creating and Drawing Objects.
- (line 616)
-* surface_rev: Creating and Drawing Objects.
- (line 627)
-* Tan: More About C++. (line 112)
-* tan_field: Creating and Drawing Objects.
- (line 768)
-* tan_line: Creating and Drawing Objects.
- (line 768)
-* top_axis: Creating and Drawing Objects.
- (line 332)
-* triangle: Creating and Drawing Objects.
- (line 145)
-* unitlength: Picture Size and Aspect Ratio.
- (line 24)
-* v_axis: Creating and Drawing Objects.
- (line 352)
-* v_axis_labels: Creating and Drawing Objects.
- (line 368)
-* v_axis_log_labels: Creating and Drawing Objects.
- (line 368)
-* v_axis_log_masklabels: Creating and Drawing Objects.
- (line 368)
-* v_axis_masklabels: Creating and Drawing Objects.
- (line 368)
-* v_error_bar: Creating and Drawing Objects.
- (line 1047)
-* v_log_axis: Creating and Drawing Objects.
- (line 352)
-* v_scale: Scene Attributes. (line 282)
-* v_shear: Scene Attributes. (line 282)
-* vector_field: Creating and Drawing Objects.
- (line 793)
-* White: Color. (line 23)
-* write: C++ Basics. (line 122)
-* Yellow: Color. (line 29)
-* zero: More About C++. (line 123)
-
-
-File: epix.info, Node: Concept Index, Prev: Function Index, Up: Top
-
-Concept Index
-*************
-
-
-* Menu:
-
-* Affine map: Scene Attributes. (line 264)
-* Affine map!action on labels: Drawing Attributes. (line 130)
-* Angle units <1>: Drawing Attributes. (line 121)
-* Angle units: Scene Attributes. (line 14)
-* Angular mode <1>: More About C++. (line 112)
-* Angular mode: Creating and Drawing Objects.
- (line 27)
-* Animation: Animation. (line 6)
-* Arrow: Creating and Drawing Objects.
- (line 231)
-* Axes: Creating and Drawing Objects.
- (line 257)
-* Axes!broken: Creating and Drawing Objects.
- (line 390)
-* Axes!labeling: Creating and Drawing Objects.
- (line 257)
-* Axes!logarithmic: Creating and Drawing Objects.
- (line 350)
-* Bar Charts: Creating and Drawing Objects.
- (line 1013)
-* Bounding box: Scene Attributes. (line 156)
-* Camera <1>: Hidden Object Removal.
- (line 13)
-* Camera: Scene Attributes. (line 21)
-* Camera!color separation: Scene Attributes. (line 94)
-* Camera!lens: Scene Attributes. (line 57)
-* Camera!manipulation: Scene Attributes. (line 69)
-* Camera!manipulation of: Scene Attributes. (line 116)
-* Camera!viewpoint: Scene Attributes. (line 31)
-* canvas: The Drawing Model. (line 11)
-* Circle: Creating and Drawing Objects.
- (line 69)
-* Classes: More About C++. (line 149)
-* Clipping: Scene Attributes. (line 120)
-* Color <1>: Drawing Attributes. (line 215)
-* Color: Color. (line 6)
-* Color!separation: Scene Attributes. (line 94)
-* Color!surface plotting: Creating and Drawing Objects.
- (line 700)
-* Color!transparency: Color. (line 65)
-* Conditional statement: More About C++. (line 22)
-* Cplusplus@C++ <1>: More About C++. (line 6)
-* Cplusplus@C++: C++ Basics. (line 6)
-* Cropping: Scene Attributes. (line 231)
-* Data plotting: Creating and Drawing Objects.
- (line 897)
-* Domain: Creating and Drawing Objects.
- (line 509)
-* Emacs@emacs <1>: Animation. (line 19)
-* Emacs@emacs <2>: C++ Basics. (line 16)
-* Emacs@emacs <3>: Running ePiX. (line 50)
-* Emacs@emacs: Software Dependencies.
- (line 36)
-* Error bars: Creating and Drawing Objects.
- (line 1046)
-* Filling: Drawing Attributes. (line 11)
-* Fonts: Drawing Attributes. (line 142)
-* Free software <1>: Software Freedom. (line 6)
-* Free software: Introduction. (line 42)
-* Function: More About C++. (line 22)
-* Function!call syntax: More About C++. (line 186)
-* Function!class member: More About C++. (line 156)
-* Function!mathematical: More About C++. (line 108)
-* Function!overloaded: More About C++. (line 229)
-* Function!returning void: More About C++. (line 84)
-* Graph paper: Creating and Drawing Objects.
- (line 422)
-* Graphical interface: Tutorial. (line 13)
-* Hidden object removal: Hidden Object Removal.
- (line 6)
-* Histograms: Creating and Drawing Objects.
- (line 1013)
-* Input file!comment in: More About C++. (line 337)
-* Input file!conditional compilation: More About C++. (line 281)
-* Installation <1>: Installation. (line 31)
-* Installation: Software Dependencies.
- (line 6)
-* Intersection: Creating and Drawing Objects.
- (line 109)
-* Labels <1>: More About C++. (line 310)
-* Labels: Drawing Attributes. (line 80)
-* Labels!alignment: Drawing Attributes. (line 80)
-* Labels!axis: Creating and Drawing Objects.
- (line 257)
-* Labels!backslash in: Drawing Attributes. (line 205)
-* Labels!fonts in: Drawing Attributes. (line 142)
-* Labels!in double quotes: Drawing Attributes. (line 205)
-* Labels!rotated: Drawing Attributes. (line 121)
-* Layout <1>: Scene Attributes. (line 148)
-* Layout: Layout Tricks. (line 6)
-* Legends: Creating and Drawing Objects.
- (line 1072)
-* Mac OS X: Software Dependencies.
- (line 6)
-* Marker types: Drawing Attributes. (line 172)
-* Output format: File Structure. (line 31)
-* Path: Drawing Attributes. (line 11)
-* Path!class: Creating and Drawing Objects.
- (line 433)
-* Path!filled: Drawing Attributes. (line 11)
-* Path!fractal: Creating and Drawing Objects.
- (line 206)
-* Path!style: Drawing Attributes. (line 41)
-* Picture!aspect ratio: Picture Size and Aspect Ratio.
- (line 44)
-* Picture!bounding box: Picture Size and Aspect Ratio.
- (line 44)
-* Picture!offset: Picture Size and Aspect Ratio.
- (line 6)
-* Picture!size: Picture Size and Aspect Ratio.
- (line 6)
-* Plane: Creating and Drawing Objects.
- (line 85)
-* Plotting: Creating and Drawing Objects.
- (line 480)
-* Plotting!calculus: Creating and Drawing Objects.
- (line 721)
-* Plotting!data: Creating and Drawing Objects.
- (line 897)
-* Plotting!spherical: Creating and Drawing Objects.
- (line 833)
-* Plotting!surface: Creating and Drawing Objects.
- (line 605)
-* Point: Creating and Drawing Objects.
- (line 14)
-* Pointer: More About C++. (line 52)
-* post_write: C++ Basics. (line 122)
-* pre_write: C++ Basics. (line 122)
-* Preamble: File Structure. (line 10)
-* Screen: Scene Attributes. (line 21)
-* Screen!active: Scene Attributes. (line 148)
-* Segment: Creating and Drawing Objects.
- (line 90)
-* Sphere: Creating and Drawing Objects.
- (line 93)
-* Stereograms: Layout Tricks. (line 8)
-* Variable!local: More About C++. (line 239)
-* Variable!names: More About C++. (line 34)
-* Variable!pointer: More About C++. (line 52)
-* Variable!reference: More About C++. (line 186)
-* Variable!type of: More About C++. (line 45)
-* Viewpoint: Scene Attributes. (line 31)
-* Windows operating system: Software Dependencies.
- (line 40)
-* write: C++ Basics. (line 122)
-
-
-
-Tag Table:
-Node: Top185
-Node: Introduction1105
-Node: Changes in Version 1.24664
-Node: Software Dependencies8541
-Ref: section:software_deps8714
-Node: Installation11086
-Node: Getting Started12670
-Ref: chapter:started12806
-Node: Running `ePiX'13556
-Ref: section:running13709
-Node: The Drawing Model16861
-Ref: section:overview17013
-Node: Tutorial19428
-Ref: section:tutorial19560
-Ref: taylor_poly24927
-Node: `C++' Basics26756
-Ref: fig:captioned32767
-Node: Animation33131
-Ref: section:animation33262
-Node: Layout Tricks34998
-Ref: section:layout35116
-Node: Reference Manual37114
-Ref: chapter:ref-man37255
-Node: File Structure38952
-Node: Picture Size and Aspect Ratio41705
-Ref: page:scaling44202
-Node: Color44417
-Ref: section:color44557
-Ref: fig:densities46382
-Node: Scene Attributes47847
-Ref: fig:camera48882
-Ref: truesize56642
-Node: Drawing Attributes62495
-Ref: table:marker70626
-Node: Creating and Drawing Objects71285
-Ref: fig:fractal81596
-Ref: fig:plot96868
-Ref: non-eucl107182
-Node: More About `C++'121128
-Ref: references130049
-Node: Attribute Quick Reference137418
-Ref: section:quickref137580
-Node: Advanced Topics140341
-Ref: chapter:adv140481
-Node: Hidden Object Removal140765
-Ref: section:hidden140932
-Node: Extensions142805
-Ref: section:extensions142953
-Node: Programmer's Guide149302
-Ref: section:programmers149436
-Ref: section:interface152502
-Node: Software Freedom158743
-Node: Acknowledgments164009
-Node: Function Index165447
-Node: Concept Index200200
-
-End Tag Table
diff --git a/graphics/epix/doc/graphpaper.eepic b/graphics/epix/doc/graphpaper.eepic
deleted file mode 100644
index 94a18e8085..0000000000
--- a/graphics/epix/doc/graphpaper.eepic
+++ /dev/null
@@ -1,101 +0,0 @@
-%% Generated from graphpaper.xp on Tue Jan 4 15:32:14 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [-2,2] x [-1,1]
-%% Actual size: 2in x 1in
-%% Figure offset: right by 0in, up by 0in
-%%
-\setlength{\unitlength}{0.01in}
-\begin{picture}(200,100)(-0,-0)
-%% ---
-\allinethickness{0.25pt}%
-\path(0,0)(0,100)
-\path(5,0)(5,100)
-\path(10,0)(10,100)
-\path(15,0)(15,100)
-\path(20,0)(20,100)
-\path(25,0)(25,100)
-\path(30,0)(30,100)
-\path(35,0)(35,100)
-\path(40,0)(40,100)
-\path(45,0)(45,100)
-\path(50,0)(50,100)
-\path(55,0)(55,100)
-\path(60,0)(60,100)
-\path(65,0)(65,100)
-\path(70,0)(70,100)
-\path(75,0)(75,100)
-\path(80,0)(80,100)
-\path(85,0)(85,100)
-\path(90,0)(90,100)
-\path(95,0)(95,100)
-\path(100,0)(100,100)
-\path(105,0)(105,100)
-\path(110,0)(110,100)
-\path(115,0)(115,100)
-\path(120,0)(120,100)
-\path(125,0)(125,100)
-\path(130,0)(130,100)
-\path(135,0)(135,100)
-\path(140,0)(140,100)
-\path(145,0)(145,100)
-\path(150,0)(150,100)
-\path(155,0)(155,100)
-\path(160,0)(160,100)
-\path(165,0)(165,100)
-\path(170,0)(170,100)
-\path(175,0)(175,100)
-\path(180,0)(180,100)
-\path(185,0)(185,100)
-\path(190,0)(190,100)
-\path(195,0)(195,100)
-\path(200,0)(200,100)
-\path(0,0)(200,0)
-\path(0,5)(200,5)
-\path(0,10)(200,10)
-\path(0,15)(200,15)
-\path(0,20)(200,20)
-\path(0,25)(200,25)
-\path(0,30)(200,30)
-\path(0,35)(200,35)
-\path(0,40)(200,40)
-\path(0,45)(200,45)
-\path(0,50)(200,50)
-\path(0,55)(200,55)
-\path(0,60)(200,60)
-\path(0,65)(200,65)
-\path(0,70)(200,70)
-\path(0,75)(200,75)
-\path(0,80)(200,80)
-\path(0,85)(200,85)
-\path(0,90)(200,90)
-\path(0,95)(200,95)
-\path(0,100)(200,100)
-%% ---
-\allinethickness{0.5pt}%
-\path(0,0)(0,100)
-\path(25,0)(25,100)
-\path(50,0)(50,100)
-\path(75,0)(75,100)
-\path(100,0)(100,100)
-\path(125,0)(125,100)
-\path(150,0)(150,100)
-\path(175,0)(175,100)
-\path(200,0)(200,100)
-\path(0,0)(200,0)
-\path(0,25)(200,25)
-\path(0,50)(200,50)
-\path(0,75)(200,75)
-\path(0,100)(200,100)
-%% ---
-\allinethickness{1pt}%
-\path(0,0)(0,100)
-\path(50,0)(50,100)
-\path(100,0)(100,100)
-\path(150,0)(150,100)
-\path(200,0)(200,100)
-\path(0,0)(200,0)
-\path(0,50)(200,50)
-\path(0,100)(200,100)
-%% ---
-\end{picture}
diff --git a/graphics/epix/doc/graphpaper.xp b/graphics/epix/doc/graphpaper.xp
deleted file mode 100644
index 795c499d4d..0000000000
--- a/graphics/epix/doc/graphpaper.xp
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*-ePiX-*- */
-/* graphpaper.c -- July 6, 2002 */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- bounding_box(P(-2,-1), P(2,1));
- picture(P(200,100));
- unitlength("0.01in");
-
- begin();
-
- pen(0.25);
- grid(10*x_size, 10*y_size);
-
- pen(0.5);
- grid(2*x_size, 2*y_size);
-
- pen(1);
- grid(x_size, y_size);
-
- end();
-}
diff --git a/graphics/epix/doc/hello.eepic b/graphics/epix/doc/hello.eepic
deleted file mode 100644
index 9b58fefc81..0000000000
--- a/graphics/epix/doc/hello.eepic
+++ /dev/null
@@ -1,15 +0,0 @@
-%% Generated from hello.xp on Thu Jun 28 11:33:40 EDT 2007 by
-%% ePiX-1.1.6
-%%
-%% Cartesian bounding box: [-1,1] x [-1,1]
-%% Actual size: 2 x 1in
-%% Figure offset: left by 0in, down by 0in
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}
-\setlength{\unitlength}{1in}
-\begin{picture}(2,1)(-0,-0)
-\put(1,0.5){\makebox(0,0)[c]{{\Huge Hello, world!}}}
-\allinethickness{1pt}%
-\path(2,0)(2,1)(0,1)(0,0)(2,0)
-%%
-\end{picture}
diff --git a/graphics/epix/doc/hello.xp b/graphics/epix/doc/hello.xp
deleted file mode 100644
index c8bd3739b9..0000000000
--- a/graphics/epix/doc/hello.xp
+++ /dev/null
@@ -1,20 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(-1,-1),P(1,1), "2x1in");
-
- begin();
-
- // uncomment and permute these lines
- // crop_ellipse();
- // backing(Yellow());
- border(Black(), "1pt");
-
- font_size("Huge");
- label(P(0,0), "Hello, world!");
-
- end();
-}
diff --git a/graphics/epix/doc/koch.eepic b/graphics/epix/doc/koch.eepic
deleted file mode 100644
index 1f949958c0..0000000000
--- a/graphics/epix/doc/koch.eepic
+++ /dev/null
@@ -1,160 +0,0 @@
-%% Generated from koch.xp on Tue Jan 4 15:32:16 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [0,3] x [0,0.5]
-%% Actual size: 3in x 0.5in
-%% Figure offset: right by 0in, up by 0.25in
-%%
-\setlength{\unitlength}{1in}
-\begin{picture}(3,0.5)(-0,-0.25)
-%% ---
-\path(0,0)(0.25,0)(0.25,0.25)(0.5,0.25)(0.5,0)(0.5,-0.25)(0.75,-0.25)
- (0.75,0)(1,0)
-%% ---
-\path(1,0)(1.0625,0)(1.0625,0.0625)(1.125,0.0625)(1.125,0)(1.125,-0.0625)
- (1.1875,-0.0625)(1.1875,0)(1.25,0)(1.25,0.0625)(1.1875,0.0625)
- (1.1875,0.125)(1.25,0.125)(1.3125,0.125)(1.3125,0.1875)(1.25,0.1875)
- (1.25,0.25)(1.3125,0.25)(1.3125,0.3125)(1.375,0.3125)(1.375,0.25)
- (1.375,0.1875)(1.4375,0.1875)(1.4375,0.25)(1.5,0.25)(1.5,0.1875)
- (1.5625,0.1875)(1.5625,0.125)(1.5,0.125)(1.4375,0.125)(1.4375,0.0625)
- (1.5,0.0625)(1.5,0)(1.5,-0.0625)(1.5625,-0.0625)(1.5625,-0.125)
- (1.5,-0.125)(1.4375,-0.125)(1.4375,-0.1875)(1.5,-0.1875)(1.5,-0.25)
- (1.5625,-0.25)(1.5625,-0.1875)(1.625,-0.1875)(1.625,-0.25)(1.625,-0.3125)
- (1.6875,-0.3125)(1.6875,-0.25)(1.75,-0.25)(1.75,-0.1875)(1.6875,-0.1875)
- (1.6875,-0.125)(1.75,-0.125)(1.8125,-0.125)(1.8125,-0.0625)(1.75,-0.0625)
- (1.75,0)(1.8125,0)(1.8125,0.0625)(1.875,0.0625)(1.875,0)
-\path(1.875,0)(1.875,-0.0625)(1.9375,-0.0625)(1.9375,0)(2,0)
-%% ---
-\path(2,0)(2.01562,0)(2.01562,0.015625)(2.03125,0.015625)(2.03125,0)
- (2.03125,-0.015625)(2.04688,-0.015625)(2.04688,0)(2.0625,0)
- (2.0625,0.015625)(2.04688,0.015625)(2.04688,0.03125)(2.0625,0.03125)
- (2.07812,0.03125)(2.07812,0.046875)(2.0625,0.046875)(2.0625,0.0625)
- (2.07812,0.0625)(2.07812,0.078125)(2.09375,0.078125)(2.09375,0.0625)
- (2.09375,0.046875)(2.10938,0.046875)(2.10938,0.0625)(2.125,0.0625)
- (2.125,0.046875)(2.14062,0.046875)(2.14062,0.03125)(2.125,0.03125)
- (2.10938,0.03125)(2.10938,0.015625)(2.125,0.015625)(2.125,0)
- (2.125,-0.015625)(2.14062,-0.015625)(2.14062,-0.03125)(2.125,-0.03125)
- (2.10938,-0.03125)(2.10938,-0.046875)(2.125,-0.046875)(2.125,-0.0625)
- (2.14062,-0.0625)(2.14062,-0.046875)(2.15625,-0.046875)(2.15625,-0.0625)
- (2.15625,-0.078125)(2.17188,-0.078125)(2.17188,-0.0625)(2.1875,-0.0625)
- (2.1875,-0.046875)(2.17188,-0.046875)(2.17188,-0.03125)(2.1875,-0.03125)
- (2.20312,-0.03125)(2.20312,-0.015625)(2.1875,-0.015625)(2.1875,0)
- (2.20312,0)(2.20312,0.015625)(2.21875,0.015625)(2.21875,0)
-\path(2.21875,0)(2.21875,-0.015625)(2.23438,-0.015625)(2.23438,0)(2.25,0)
- (2.25,0.015625)(2.23438,0.015625)(2.23438,0.03125)(2.25,0.03125)
- (2.26562,0.03125)(2.26562,0.046875)(2.25,0.046875)(2.25,0.0625)
- (2.23438,0.0625)(2.23438,0.046875)(2.21875,0.046875)(2.21875,0.0625)
- (2.21875,0.078125)(2.20312,0.078125)(2.20312,0.0625)(2.1875,0.0625)
- (2.1875,0.078125)(2.17188,0.078125)(2.17188,0.09375)(2.1875,0.09375)
- (2.20312,0.09375)(2.20312,0.109375)(2.1875,0.109375)(2.1875,0.125)
- (2.20312,0.125)(2.20312,0.140625)(2.21875,0.140625)(2.21875,0.125)
- (2.21875,0.109375)(2.23438,0.109375)(2.23438,0.125)(2.25,0.125)
- (2.26562,0.125)(2.26562,0.140625)(2.28125,0.140625)(2.28125,0.125)
- (2.28125,0.109375)(2.29688,0.109375)(2.29688,0.125)(2.3125,0.125)
- (2.3125,0.140625)(2.29688,0.140625)(2.29688,0.15625)(2.3125,0.15625)
- (2.32812,0.15625)(2.32812,0.171875)(2.3125,0.171875)(2.3125,0.1875)
- (2.29688,0.1875)(2.29688,0.171875)(2.28125,0.171875)(2.28125,0.1875)
- (2.28125,0.203125)(2.26562,0.203125)(2.26562,0.1875)
-\path(2.26562,0.1875)(2.25,0.1875)(2.25,0.203125)(2.23438,0.203125)
- (2.23438,0.21875)(2.25,0.21875)(2.26562,0.21875)(2.26562,0.234375)
- (2.25,0.234375)(2.25,0.25)(2.26562,0.25)(2.26562,0.265625)
- (2.28125,0.265625)(2.28125,0.25)(2.28125,0.234375)(2.29688,0.234375)
- (2.29688,0.25)(2.3125,0.25)(2.3125,0.265625)(2.29688,0.265625)
- (2.29688,0.28125)(2.3125,0.28125)(2.32812,0.28125)(2.32812,0.296875)
- (2.3125,0.296875)(2.3125,0.3125)(2.32812,0.3125)(2.32812,0.328125)
- (2.34375,0.328125)(2.34375,0.3125)(2.34375,0.296875)(2.35938,0.296875)
- (2.35938,0.3125)(2.375,0.3125)(2.375,0.296875)(2.39062,0.296875)
- (2.39062,0.28125)(2.375,0.28125)(2.35938,0.28125)(2.35938,0.265625)
- (2.375,0.265625)(2.375,0.25)(2.375,0.234375)(2.39062,0.234375)
- (2.39062,0.21875)(2.375,0.21875)(2.35938,0.21875)(2.35938,0.203125)
- (2.375,0.203125)(2.375,0.1875)(2.39062,0.1875)(2.39062,0.203125)
- (2.40625,0.203125)(2.40625,0.1875)(2.40625,0.171875)(2.42188,0.171875)
- (2.42188,0.1875)(2.4375,0.1875)(2.4375,0.203125)(2.42188,0.203125)
-\path(2.42188,0.203125)(2.42188,0.21875)(2.4375,0.21875)(2.45312,0.21875)
- (2.45312,0.234375)(2.4375,0.234375)(2.4375,0.25)(2.45312,0.25)
- (2.45312,0.265625)(2.46875,0.265625)(2.46875,0.25)(2.46875,0.234375)
- (2.48438,0.234375)(2.48438,0.25)(2.5,0.25)(2.5,0.234375)
- (2.51562,0.234375)(2.51562,0.21875)(2.5,0.21875)(2.48438,0.21875)
- (2.48438,0.203125)(2.5,0.203125)(2.5,0.1875)(2.51562,0.1875)
- (2.51562,0.203125)(2.53125,0.203125)(2.53125,0.1875)(2.53125,0.171875)
- (2.54688,0.171875)(2.54688,0.1875)(2.5625,0.1875)(2.5625,0.171875)
- (2.57812,0.171875)(2.57812,0.15625)(2.5625,0.15625)(2.54688,0.15625)
- (2.54688,0.140625)(2.5625,0.140625)(2.5625,0.125)(2.54688,0.125)
- (2.54688,0.109375)(2.53125,0.109375)(2.53125,0.125)(2.53125,0.140625)
- (2.51562,0.140625)(2.51562,0.125)(2.5,0.125)(2.48438,0.125)
- (2.48438,0.109375)(2.46875,0.109375)(2.46875,0.125)(2.46875,0.140625)
- (2.45312,0.140625)(2.45312,0.125)(2.4375,0.125)(2.4375,0.109375)
- (2.45312,0.109375)(2.45312,0.09375)(2.4375,0.09375)(2.42188,0.09375)
-\path(2.42188,0.09375)(2.42188,0.078125)(2.4375,0.078125)(2.4375,0.0625)
- (2.45312,0.0625)(2.45312,0.078125)(2.46875,0.078125)(2.46875,0.0625)
- (2.46875,0.046875)(2.48438,0.046875)(2.48438,0.0625)(2.5,0.0625)
- (2.5,0.046875)(2.51562,0.046875)(2.51562,0.03125)(2.5,0.03125)
- (2.48438,0.03125)(2.48438,0.015625)(2.5,0.015625)(2.5,0)(2.5,-0.015625)
- (2.51562,-0.015625)(2.51562,-0.03125)(2.5,-0.03125)(2.48438,-0.03125)
- (2.48438,-0.046875)(2.5,-0.046875)(2.5,-0.0625)(2.51562,-0.0625)
- (2.51562,-0.046875)(2.53125,-0.046875)(2.53125,-0.0625)
- (2.53125,-0.078125)(2.54688,-0.078125)(2.54688,-0.0625)(2.5625,-0.0625)
- (2.5625,-0.078125)(2.57812,-0.078125)(2.57812,-0.09375)(2.5625,-0.09375)
- (2.54688,-0.09375)(2.54688,-0.109375)(2.5625,-0.109375)(2.5625,-0.125)
- (2.54688,-0.125)(2.54688,-0.140625)(2.53125,-0.140625)(2.53125,-0.125)
- (2.53125,-0.109375)(2.51562,-0.109375)(2.51562,-0.125)(2.5,-0.125)
- (2.48438,-0.125)(2.48438,-0.140625)(2.46875,-0.140625)(2.46875,-0.125)
- (2.46875,-0.109375)(2.45312,-0.109375)(2.45312,-0.125)(2.4375,-0.125)
-\path(2.4375,-0.125)(2.4375,-0.140625)(2.45312,-0.140625)(2.45312,-0.15625)
- (2.4375,-0.15625)(2.42188,-0.15625)(2.42188,-0.171875)(2.4375,-0.171875)
- (2.4375,-0.1875)(2.45312,-0.1875)(2.45312,-0.171875)(2.46875,-0.171875)
- (2.46875,-0.1875)(2.46875,-0.203125)(2.48438,-0.203125)(2.48438,-0.1875)
- (2.5,-0.1875)(2.5,-0.203125)(2.51562,-0.203125)(2.51562,-0.21875)
- (2.5,-0.21875)(2.48438,-0.21875)(2.48438,-0.234375)(2.5,-0.234375)
- (2.5,-0.25)(2.51562,-0.25)(2.51562,-0.234375)(2.53125,-0.234375)
- (2.53125,-0.25)(2.53125,-0.265625)(2.54688,-0.265625)(2.54688,-0.25)
- (2.5625,-0.25)(2.5625,-0.234375)(2.54688,-0.234375)(2.54688,-0.21875)
- (2.5625,-0.21875)(2.57812,-0.21875)(2.57812,-0.203125)(2.5625,-0.203125)
- (2.5625,-0.1875)(2.57812,-0.1875)(2.57812,-0.171875)(2.59375,-0.171875)
- (2.59375,-0.1875)(2.59375,-0.203125)(2.60938,-0.203125)(2.60938,-0.1875)
- (2.625,-0.1875)(2.625,-0.203125)(2.64062,-0.203125)(2.64062,-0.21875)
- (2.625,-0.21875)(2.60938,-0.21875)(2.60938,-0.234375)(2.625,-0.234375)
- (2.625,-0.25)(2.625,-0.265625)(2.64062,-0.265625)(2.64062,-0.28125)
-\path(2.64062,-0.28125)(2.625,-0.28125)(2.60938,-0.28125)
- (2.60938,-0.296875)(2.625,-0.296875)(2.625,-0.3125)(2.64062,-0.3125)
- (2.64062,-0.296875)(2.65625,-0.296875)(2.65625,-0.3125)
- (2.65625,-0.328125)(2.67188,-0.328125)(2.67188,-0.3125)(2.6875,-0.3125)
- (2.6875,-0.296875)(2.67188,-0.296875)(2.67188,-0.28125)(2.6875,-0.28125)
- (2.70312,-0.28125)(2.70312,-0.265625)(2.6875,-0.265625)(2.6875,-0.25)
- (2.70312,-0.25)(2.70312,-0.234375)(2.71875,-0.234375)(2.71875,-0.25)
- (2.71875,-0.265625)(2.73438,-0.265625)(2.73438,-0.25)(2.75,-0.25)
- (2.75,-0.234375)(2.73438,-0.234375)(2.73438,-0.21875)(2.75,-0.21875)
- (2.76562,-0.21875)(2.76562,-0.203125)(2.75,-0.203125)(2.75,-0.1875)
- (2.73438,-0.1875)(2.73438,-0.203125)(2.71875,-0.203125)(2.71875,-0.1875)
- (2.71875,-0.171875)(2.70312,-0.171875)(2.70312,-0.1875)(2.6875,-0.1875)
- (2.6875,-0.171875)(2.67188,-0.171875)(2.67188,-0.15625)(2.6875,-0.15625)
- (2.70312,-0.15625)(2.70312,-0.140625)(2.6875,-0.140625)(2.6875,-0.125)
- (2.70312,-0.125)(2.70312,-0.109375)(2.71875,-0.109375)(2.71875,-0.125)
- (2.71875,-0.140625)(2.73438,-0.140625)
-\path(2.73438,-0.140625)(2.73438,-0.125)(2.75,-0.125)(2.76562,-0.125)
- (2.76562,-0.109375)(2.78125,-0.109375)(2.78125,-0.125)(2.78125,-0.140625)
- (2.79688,-0.140625)(2.79688,-0.125)(2.8125,-0.125)(2.8125,-0.109375)
- (2.79688,-0.109375)(2.79688,-0.09375)(2.8125,-0.09375)(2.82812,-0.09375)
- (2.82812,-0.078125)(2.8125,-0.078125)(2.8125,-0.0625)(2.79688,-0.0625)
- (2.79688,-0.078125)(2.78125,-0.078125)(2.78125,-0.0625)
- (2.78125,-0.046875)(2.76562,-0.046875)(2.76562,-0.0625)(2.75,-0.0625)
- (2.75,-0.046875)(2.73438,-0.046875)(2.73438,-0.03125)(2.75,-0.03125)
- (2.76562,-0.03125)(2.76562,-0.015625)(2.75,-0.015625)(2.75,0)(2.76562,0)
- (2.76562,0.015625)(2.78125,0.015625)(2.78125,0)(2.78125,-0.015625)
- (2.79688,-0.015625)(2.79688,0)(2.8125,0)(2.8125,0.015625)
- (2.79688,0.015625)(2.79688,0.03125)(2.8125,0.03125)(2.82812,0.03125)
- (2.82812,0.046875)(2.8125,0.046875)(2.8125,0.0625)(2.82812,0.0625)
- (2.82812,0.078125)(2.84375,0.078125)(2.84375,0.0625)(2.84375,0.046875)
- (2.85938,0.046875)(2.85938,0.0625)(2.875,0.0625)(2.875,0.046875)
-\path(2.875,0.046875)(2.89062,0.046875)(2.89062,0.03125)(2.875,0.03125)
- (2.85938,0.03125)(2.85938,0.015625)(2.875,0.015625)(2.875,0)
- (2.875,-0.015625)(2.89062,-0.015625)(2.89062,-0.03125)(2.875,-0.03125)
- (2.85938,-0.03125)(2.85938,-0.046875)(2.875,-0.046875)(2.875,-0.0625)
- (2.89062,-0.0625)(2.89062,-0.046875)(2.90625,-0.046875)(2.90625,-0.0625)
- (2.90625,-0.078125)(2.92188,-0.078125)(2.92188,-0.0625)(2.9375,-0.0625)
- (2.9375,-0.046875)(2.92188,-0.046875)(2.92188,-0.03125)(2.9375,-0.03125)
- (2.95312,-0.03125)(2.95312,-0.015625)(2.9375,-0.015625)(2.9375,0)
- (2.95312,0)(2.95312,0.015625)(2.96875,0.015625)(2.96875,0)
- (2.96875,-0.015625)(2.98438,-0.015625)(2.98438,0)(3,0)
-%% ---
-\end{picture}
diff --git a/graphics/epix/doc/koch.xp b/graphics/epix/doc/koch.xp
deleted file mode 100644
index d1a04e1c0f..0000000000
--- a/graphics/epix/doc/koch.xp
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*-ePiX-*- */
-/* koch.c -- Simple fractal "curve" generation. -- June 6, 2002 */
-
-#include "epix.h"
-using namespace ePiX;
-
-// const int koch_seed[] = {6, 4, 0, 1, -1, 0};
-const int seed[] = {4, 8, 0, 1, 0, 3, 3, 0, 1, 0};
-
-int main()
-{
- bounding_box(P(0,0), P(3, 0.5));
- picture(P(3, 0.5));
- unitlength("1in");
- offset(P(0,0.25));
-
- begin();
-
- for (int i=1; i <= 3; ++i)
- fractal(P(i-1,0), P(i,0), i, seed);
-
- end();
-}
-
diff --git a/graphics/epix/doc/layout.eepic b/graphics/epix/doc/layout.eepic
deleted file mode 100644
index 07eec3fcb6..0000000000
--- a/graphics/epix/doc/layout.eepic
+++ /dev/null
@@ -1,1511 +0,0 @@
-%% Generated from layout.xp on Sat Jun 30 12:16:41 EDT 2007 by
-%% ePiX-1.1.6
-%%
-%% Cartesian bounding box: [0,2] x [0,3]
-%% Actual size: 5 x 7.5in
-%% Figure offset: left by 0in, down by 0in
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}
-\xdefinecolor{rgb_980000}{rgb}{0.596078,0,0}
-\setlength{\unitlength}{1in}
-\begin{picture}(5,7.5)(-0,-0)
-\path(1.95438,5.77398)(1.9095,5.84756)(1.86459,5.91634)
- (1.81949,5.98073)(1.77406,6.04108)(1.72817,6.09772)
- (1.68169,6.15093)(1.63449,6.20095)(1.58643,6.24802)
- (1.53738,6.29233)(1.4872,6.33406)(1.43575,6.37337)(1.38287,6.41039)
- (1.32843,6.44527)(1.27224,6.4781)(1.21415,6.50899)(1.15394,6.53802)
- (1.09144,6.56528)(1.02641,6.59083)(0.958625,6.61472)
- (0.887817,6.63701)(0.813702,6.65773)(0.735966,6.67692)
- (0.654259,6.69459)(0.568192,6.71076)
-%%
-\path(1.7999,5.73751)(1.76689,5.81018)(1.7333,5.87809)
- (1.69903,5.94164)(1.66399,6.00118)(1.6281,6.05703)(1.59125,6.10945)
- (1.55336,6.15868)(1.51431,6.20496)(1.47401,6.24846)
- (1.43234,6.28936)(1.38918,6.32782)(1.34441,6.36396)
- (1.29789,6.39792)(1.24946,6.4298)(1.19898,6.45968)(1.14626,6.48766)
- (1.09112,6.5138)(1.03334,6.53816)(0.972699,6.5608)
- (0.908939,6.58175)(0.841779,6.60103)(0.770903,6.61868)
- (0.69596,6.6347)(0.616556,6.64908)
-%%
-\path(1.64758,5.71257)(1.62656,5.78375)(1.60445,5.85027)
- (1.5812,5.91251)(1.55677,5.97079)(1.53112,6.02543)(1.50418,6.07667)
- (1.4759,6.12475)(1.4462,6.16989)(1.41501,6.21226)(1.38225,6.25204)
- (1.34781,6.28935)(1.31159,6.32435)(1.27348,6.35712)
- (1.23334,6.38779)(1.19104,6.41643)(1.14642,6.44311)(1.09929,6.4679)
- (1.04947,6.49085)(0.996736,6.512)(0.940842,6.53138)(0.881517,6.549)
- (0.818452,6.56488)(0.7513,6.579)(0.679669,6.59135)
-%%
-\path(1.49959,5.69983)(1.49052,5.76899)(1.47988,5.83363)
- (1.46769,5.89408)(1.45395,5.95068)(1.43865,6.00371)(1.42178,6.0534)
- (1.4033,6.09999)(1.38319,6.14367)(1.36138,6.18461)(1.33782,6.22297)
- (1.31245,6.25888)(1.28517,6.29246)(1.2559,6.32381)(1.22453,6.35304)
- (1.19093,6.3802)(1.15497,6.40538)(1.11648,6.42861)(1.0753,6.44994)
- (1.03121,6.4694)(0.983998,6.48701)(0.933394,6.50277)
- (0.879107,6.51667)(0.820805,6.52869)(0.758105,6.53879)
-%%
-\path(1.35808,5.69964)(1.36071,5.7663)(1.36137,5.82859)
- (1.36012,5.88685)(1.35701,5.94137)(1.35206,5.99243)
- (1.34528,6.04024)(1.33669,6.08502)(1.32628,6.12695)
- (1.31402,6.16618)(1.29989,6.20287)(1.28384,6.23713)(1.2658,6.26908)
- (1.24573,6.2988)(1.22352,6.32638)(1.19908,6.35188)(1.17229,6.37536)
- (1.14301,6.39686)(1.1111,6.41641)(1.07637,6.43402)(1.03861,6.4497)
- (0.997597,6.46343)(0.953048,6.47519)(0.904656,6.48495)(0.852063,6.49264)
-%%
-\path(1.22499,5.71201)(1.23894,5.77574)(1.25058,5.83529)
- (1.26001,5.89099)(1.26732,5.94311)(1.27257,5.99188)
- (1.27581,6.03753)(1.27707,6.08023)(1.27637,6.12016)
- (1.27372,6.15746)(1.26912,6.19226)(1.26255,6.22468)(1.25398,6.2548)
- (1.24336,6.28272)(1.23063,6.30849)(1.21572,6.33218)
- (1.19853,6.35383)(1.17897,6.37346)(1.1569,6.3911)(1.13216,6.40674)
- (1.10459,6.42038)(1.07398,6.43198)(1.04008,6.44151)
- (1.00263,6.44891)(0.961291,6.45409)
-%%
-\path(1.10205,5.73661)(1.12678,5.79705)(1.14894,5.85356)
- (1.16867,5.90641)(1.18608,5.95585)(1.20126,6.00209)(1.2143,6.04534)
- (1.22526,6.08575)(1.23418,6.12348)(1.2411,6.15867)(1.24604,6.19142)
- (1.24901,6.22184)(1.25,6.25)(1.249,6.27598)(1.24597,6.29984)
- (1.24087,6.32162)(1.23364,6.34134)(1.22419,6.35903)
- (1.21243,6.37468)(1.19825,6.3883)(1.1815,6.39984)(1.16202,6.40927)
- (1.13961,6.41653)(1.11404,6.42153)(1.08505,6.42418)
-%%
-\path(0.990653,5.77275)(1.02551,5.82968)(1.05762,5.88291)
- (1.08714,5.93269)(1.11422,5.97925)(1.13897,6.02279)(1.1615,6.06346)
- (1.18189,6.10143)(1.20023,6.13683)(1.21656,6.16978)
- (1.23095,6.20036)(1.24341,6.22868)(1.25398,6.2548)(1.26266,6.27878)
- (1.26945,6.30066)(1.27433,6.32047)(1.27727,6.33823)
- (1.27824,6.35395)(1.27716,6.36761)(1.27397,6.37919)
- (1.26857,6.38865)(1.26084,6.39593)(1.25063,6.40095)
- (1.23778,6.40361)(1.22209,6.40378)
-%%
-\path(0.891818,5.81952)(0.936069,5.87276)(0.977467,5.92257)
- (1.01619,5.96916)(1.05241,6.01272)(1.08626,6.05343)
- (1.11788,6.09143)(1.14736,6.12687)(1.17482,6.15986)
- (1.20032,6.19049)(1.22395,6.21886)(1.24576,6.24504)(1.2658,6.26908)
- (1.28412,6.29103)(1.30073,6.31092)(1.31565,6.32877)
- (1.32889,6.34458)(1.34044,6.35836)(1.35028,6.37006)
- (1.35839,6.37967)(1.36472,6.38712)(1.3692,6.39234)(1.37176,6.39522)
- (1.3723,6.39566)(1.37069,6.39349)
-%%
-\path(0.806183,5.87573)(0.85904,5.92524)(0.909007,5.97156)
- (0.956284,6.01489)(1.00105,6.0554)(1.04347,6.09324)
- (1.08369,6.12855)(1.12183,6.16142)(1.15802,6.19198)
- (1.19236,6.22029)(1.22494,6.24644)(1.25585,6.27048)
- (1.28517,6.29246)(1.31296,6.31241)(1.33928,6.33035)
- (1.36418,6.34629)(1.3877,6.36022)(1.40988,6.37214)(1.43074,6.38199)
- (1.4503,6.38973)(1.46858,6.3953)(1.48558,6.3986)(1.50128,6.39953)
- (1.51567,6.39793)(1.52872,6.39365)
-%%
-\path(0.734,5.94009)(0.794644,5.98587)(0.852427,6.02873)
- (0.907559,6.06882)(0.960235,6.1063)(1.01063,6.14129)
- (1.05891,6.17391)(1.10521,6.20425)(1.14968,6.2324)(1.19244,6.25843)
- (1.23361,6.28241)(1.27329,6.30437)(1.31159,6.32435)(1.3486,6.34237)
- (1.38441,6.35845)(1.41911,6.37258)(1.45277,6.38474)
- (1.48548,6.39492)(1.5173,6.40305)(1.54832,6.40909)(1.57859,6.41296)
- (1.6082,6.41454)(1.63721,6.41373)(1.6657,6.41035)(1.69373,6.40423)
-%%
-\path(0.675166,6.01119)(0.742777,6.05334)(0.807609,6.09281)
- (0.869881,6.12974)(0.929796,6.16426)(0.987543,6.19647)
- (1.0433,6.22648)(1.09722,6.25436)(1.14946,6.28019)(1.20016,6.30402)
- (1.24947,6.32591)(1.29751,6.34588)(1.34441,6.36396)
- (1.39029,6.38017)(1.43528,6.39451)(1.47948,6.40696)(1.52302,6.4175)
- (1.56602,6.42609)(1.60861,6.43269)(1.65091,6.43722)(1.69305,6.4396)
- (1.73517,6.4397)(1.77744,6.43741)(1.82002,6.43255)(1.86308,6.42493)
-%%
-\path(0.62927,6.08763)(0.703045,6.12629)(0.774167,6.1625)
- (0.842861,6.1964)(0.909337,6.22808)(0.973792,6.25763)
- (1.03641,6.28514)(1.09737,6.31068)(1.15683,6.3343)(1.21496,6.35605)
- (1.27191,6.37597)(1.32783,6.39408)(1.38287,6.41039)
- (1.43719,6.42493)(1.49093,6.43766)(1.54425,6.44859)
- (1.59729,6.45768)(1.65023,6.46488)(1.70324,6.47014)
- (1.75649,6.47337)(1.81019,6.4745)(1.86455,6.47339)(1.9198,6.46991)
- (1.97622,6.46388)(2.03409,6.4551)
-%%
-\path(1.95438,5.77398)(1.877,5.75436)(1.7999,5.73751)
- (1.72333,5.72355)(1.64758,5.71257)(1.57291,5.70464)
- (1.49959,5.69983)(1.4279,5.69816)(1.35808,5.69964)(1.29037,5.70427)
- (1.22499,5.71201)(1.16216,5.72282)(1.10205,5.73661)
- (1.04484,5.75329)(0.990653,5.77275)(0.939616,5.79488)
- (0.891818,5.81952)(0.847326,5.84652)(0.806183,5.87573)
- (0.768408,5.90698)(0.734,5.94009)(0.702933,5.97489)
- (0.675166,6.01119)(0.650637,6.04883)(0.62927,6.08763)
-%%
-\path(1.86459,5.91634)(1.79875,5.89596)(1.7333,5.87809)
- (1.66845,5.86282)(1.60445,5.85027)(1.54151,5.84052)
- (1.47988,5.83363)(1.41976,5.82964)(1.36137,5.82859)
- (1.30491,5.83047)(1.25058,5.83529)(1.19853,5.843)(1.14894,5.85356)
- (1.10193,5.86689)(1.05762,5.88291)(1.01611,5.90151)
- (0.977467,5.92257)(0.941756,5.94597)(0.909007,5.97156)
- (0.879232,5.9992)(0.852427,6.02873)(0.828566,6.05999)
- (0.807609,6.09281)(0.789499,6.12704)(0.774167,6.1625)
-%%
-\path(1.77406,6.04108)(1.71877,6.02)(1.66399,6.00118)
- (1.60993,5.98475)(1.55677,5.97079)(1.50471,5.95942)
- (1.45395,5.95068)(1.40465,5.94465)(1.35701,5.94137)
- (1.31118,5.94086)(1.26732,5.94311)(1.22558,5.94812)
- (1.18608,5.95585)(1.14892,5.96625)(1.11422,5.97925)
- (1.08203,5.99478)(1.05241,6.01272)(1.02541,6.03297)(1.00105,6.0554)
- (0.97933,6.07989)(0.960235,6.1063)(0.943738,6.13447)
- (0.929796,6.16426)(0.918352,6.19551)(0.909337,6.22808)
-%%
-\path(1.68169,6.15093)(1.63613,6.12916)(1.59125,6.10945)
- (1.54721,6.09191)(1.50418,6.07667)(1.46232,6.0638)(1.42178,6.0534)
- (1.38272,6.04553)(1.34528,6.04024)(1.3096,6.03757)(1.27581,6.03753)
- (1.24401,6.04012)(1.2143,6.04534)(1.18677,6.05313)(1.1615,6.06346)
- (1.13852,6.07626)(1.11788,6.09143)(1.0996,6.1089)(1.08369,6.12855)
- (1.07013,6.15026)(1.05891,6.17391)(1.04998,6.19936)(1.0433,6.22648)
- (1.0388,6.25512)(1.03641,6.28514)
-%%
-\path(1.58643,6.24802)(1.54994,6.22555)(1.51431,6.20496)
- (1.47969,6.18637)(1.4462,6.16989)(1.41399,6.15563)(1.38319,6.14367)
- (1.35391,6.13409)(1.32628,6.12695)(1.3004,6.12229)(1.27637,6.12016)
- (1.25427,6.12056)(1.23418,6.12348)(1.21615,6.12892)
- (1.20023,6.13683)(1.18644,6.14717)(1.17482,6.15986)
- (1.16535,6.17483)(1.15802,6.19198)(1.15281,6.21121)(1.14968,6.2324)
- (1.14858,6.25544)(1.14946,6.28019)(1.15223,6.30652)(1.15683,6.3343)
-%%
-\path(1.4872,6.33406)(1.45923,6.31085)(1.43234,6.28936)
- (1.40664,6.26972)(1.38225,6.25204)(1.35927,6.23642)
- (1.33782,6.22297)(1.318,6.21176)(1.29989,6.20287)(1.28357,6.19636)
- (1.26912,6.19226)(1.2566,6.19061)(1.24604,6.19142)(1.23748,6.19468)
- (1.23095,6.20036)(1.22644,6.20844)(1.22395,6.21886)
- (1.22346,6.23156)(1.22494,6.24644)(1.22834,6.26342)
- (1.23361,6.28241)(1.24068,6.30328)(1.24947,6.32591)
- (1.25991,6.35018)(1.27191,6.37597)
-%%
-\path(1.38287,6.41039)(1.36299,6.38639)(1.34441,6.36396)
- (1.32725,6.34324)(1.31159,6.32435)(1.29754,6.30738)
- (1.28517,6.29246)(1.27457,6.27966)(1.2658,6.26908)(1.25892,6.26077)
- (1.25398,6.2548)(1.251,6.2512)(1.25,6.25)(1.251,6.2512)
- (1.25398,6.2548)(1.25892,6.26077)(1.2658,6.26908)(1.27457,6.27966)
- (1.28517,6.29246)(1.29754,6.30738)(1.31159,6.32435)
- (1.32725,6.34324)(1.34441,6.36396)(1.36299,6.38639)(1.38287,6.41039)
-%%
-\path(1.27224,6.4781)(1.26007,6.45322)(1.24946,6.4298)
- (1.24053,6.40794)(1.23334,6.38779)(1.22799,6.36945)
- (1.22453,6.35304)(1.22302,6.33865)(1.22352,6.32638)
- (1.22604,6.31631)(1.23063,6.30849)(1.23727,6.30299)
- (1.24597,6.29984)(1.25671,6.29906)(1.26945,6.30066)
- (1.28414,6.30462)(1.30073,6.31092)(1.31913,6.31951)
- (1.33928,6.33035)(1.36108,6.34335)(1.38441,6.35845)
- (1.40918,6.37553)(1.43528,6.39451)(1.46257,6.41526)(1.49093,6.43766)
-%%
-\path(1.15394,6.53802)(1.14916,6.51218)(1.14626,6.48766)
- (1.14532,6.46459)(1.14642,6.44311)(1.14962,6.42333)
- (1.15497,6.40538)(1.16252,6.38935)(1.17229,6.37536)(1.18429,6.3635)
- (1.19853,6.35383)(1.21499,6.34643)(1.23364,6.34134)(1.25442,6.3386)
- (1.27727,6.33823)(1.30213,6.34023)(1.32889,6.34458)
- (1.35745,6.35126)(1.3877,6.36022)(1.41952,6.37141)(1.45277,6.38474)
- (1.48732,6.40014)(1.52302,6.4175)(1.55973,6.43672)(1.59729,6.45768)
-%%
-\path(1.02641,6.59083)(1.02876,6.56389)(1.03334,6.53816)
- (1.04022,6.51377)(1.04947,6.49085)(1.06115,6.46953)(1.0753,6.44994)
- (1.09195,6.4322)(1.1111,6.41641)(1.13276,6.40268)(1.1569,6.3911)
- (1.18348,6.38175)(1.21243,6.37468)(1.24369,6.36996)
- (1.27716,6.36761)(1.31274,6.36764)(1.35028,6.37006)
- (1.38967,6.37486)(1.43074,6.38199)(1.47334,6.39141)(1.5173,6.40305)
- (1.56245,6.41685)(1.60861,6.43269)(1.6556,6.45049)(1.70324,6.47014)
-%%
-\path(0.887817,6.63701)(0.897069,6.60884)(0.908939,6.58175)
- (0.923508,6.55588)(0.940842,6.53138)(0.960994,6.50838)
- (0.983998,6.48701)(1.00987,6.46741)(1.03861,6.4497)(1.0702,6.43398)
- (1.10459,6.42038)(1.14172,6.40897)(1.1815,6.39984)(1.22383,6.39305)
- (1.26857,6.38865)(1.31559,6.38667)(1.36472,6.38712)
- (1.41578,6.39001)(1.46858,6.3953)(1.52292,6.40297)(1.57859,6.41296)
- (1.63537,6.42519)(1.69305,6.4396)(1.75139,6.45607)(1.81019,6.4745)
-%%
-\path(0.735966,6.67692)(0.7519,6.64732)(0.770903,6.61868)
- (0.793063,6.59115)(0.818452,6.56488)(0.847122,6.54)
- (0.879107,6.51667)(0.91442,6.49502)(0.953048,6.47519)
- (0.994955,6.45732)(1.04008,6.44151)(1.08834,6.42788)
- (1.13961,6.41653)(1.19376,6.40753)(1.25063,6.40095)
- (1.31003,6.39684)(1.37176,6.39522)(1.43559,6.39612)
- (1.50128,6.39953)(1.56857,6.40541)(1.63721,6.41373)
- (1.70692,6.42442)(1.77744,6.43741)(1.84849,6.45261)(1.9198,6.46991)
-%%
-\path(0.568192,6.71076)(0.590579,6.67951)(0.616556,6.64908)
- (0.646225,6.61965)(0.679669,6.59135)(0.716949,6.56435)
- (0.758105,6.53879)(0.803148,6.51484)(0.852063,6.49264)
- (0.904803,6.47235)(0.961291,6.45409)(1.02142,6.43799)
- (1.08505,6.42418)(1.15201,6.41274)(1.22209,6.40378)
- (1.29507,6.39734)(1.37069,6.39349)(1.44868,6.39226)
- (1.52872,6.39365)(1.61052,6.39765)(1.69373,6.40423)
- (1.77803,6.41335)(1.86308,6.42493)(1.94854,6.43888)(2.03409,6.4551)
-%%
-\path(1.25,6.25)(0.90831,5.83754)
-%%
-\path(0.929086,5.88702)(0.940008,5.90021)
-\path(0.922161,5.87053)(0.944004,5.8969)
-\path(0.915235,5.85404)(0.947999,5.89359)
-\path(0.90831,5.83754)(0.951995,5.89028)
-\path(0.923227,5.84742)(0.955991,5.88697)
-\path(0.938144,5.85729)(0.959987,5.88366)
-\path(0.953061,5.86716)(0.963983,5.88035)
-\path(0.951995,5.89028)(0.936012,5.90352)(0.90831,5.83754)
- (0.967979,5.87704)(0.951995,5.89028)
-%%
-\path(1.25,6.25)(1.9921,6.09631)
-%%
-\path(1.90984,6.09745)(1.88348,6.10291)
-\path(1.93726,6.09707)(1.88453,6.10799)
-\path(1.96468,6.09669)(1.88558,6.11307)
-\path(1.9921,6.09631)(1.88663,6.11815)
-\path(1.96678,6.10685)(1.88768,6.12323)
-\path(1.94147,6.11739)(1.88874,6.12831)
-\path(1.91616,6.12793)(1.88979,6.13339)
-\path(1.88663,6.11815)(1.88242,6.09782)(1.9921,6.09631)
- (1.89084,6.13847)(1.88663,6.11815)
-%%
-\allinethickness{1pt}%
-\color{rgb_980000}%
-\path(2.375,5.125)
- (2.375,7.375)(0.125,7.375)(0.125,5.125)(2.375,5.125)
-%%
-\allinethickness{0.4pt}%
-\color{rgb_000000}%
-\path(1.57249,2.99581)
- (1.60208,3.08238)(1.62568,3.16486)(1.6436,3.24353)(1.65613,3.31869)
- (1.66348,3.39059)(1.66589,3.45945)(1.66353,3.52548)
- (1.65656,3.58888)(1.64515,3.64982)(1.6294,3.70847)(1.60943,3.76497)
- (1.58534,3.81945)(1.5572,3.87205)(1.52509,3.92289)(1.48905,3.97206)
- (1.44912,4.01968)(1.40534,4.06584)(1.35773,4.11062)(1.3063,4.15411)
- (1.25104,4.19638)(1.19195,4.23751)(1.129,4.27756)(1.06218,4.3166)(0.991435,4.35469)
-%%
-\path(1.39706,3.04908)(1.43364,3.12654)(1.46419,3.20061)
- (1.48899,3.27155)(1.50828,3.33955)(1.52226,3.40482)
- (1.53114,3.46754)(1.53508,3.52788)(1.53423,3.58598)(1.5287,3.64199)
- (1.51863,3.69603)(1.50409,3.74824)(1.48518,3.79871)
- (1.46195,3.84755)(1.43447,3.89487)(1.40276,3.94074)
- (1.36687,3.98526)(1.3268,4.02851)(1.28256,4.07055)(1.23414,4.11145)
- (1.18153,4.1513)(1.12471,4.19013)(1.06363,4.22802)
- (0.998248,4.26502)(0.928503,4.30119)
-%%
-\path(1.24877,3.10605)(1.29092,3.17474)(1.32712,3.24068)
- (1.3576,3.30403)(1.38257,3.36496)(1.40221,3.42363)(1.41669,3.48018)
- (1.42614,3.53473)(1.43068,3.5874)(1.43043,3.6383)(1.42548,3.68755)
- (1.4159,3.73523)(1.40174,3.78143)(1.38307,3.82624)(1.35991,3.86973)
- (1.33228,3.91199)(1.3002,3.95308)(1.26366,3.99306)(1.22265,4.03201)
- (1.17713,4.06997)(1.12708,4.107)(1.07245,4.14315)(1.01316,4.17848)
- (0.94915,4.21303)(0.88033,4.24685)
-%%
-\path(1.12691,3.16617)(1.17344,3.22652)(1.21419,3.28463)
- (1.24934,3.34063)(1.27907,3.39466)(1.30353,3.44682)
- (1.32285,3.49721)(1.33713,3.54595)(1.34648,3.59312)
- (1.35097,3.63881)(1.35067,3.68311)(1.34564,3.72607)(1.3359,3.76779)
- (1.32149,3.80832)(1.30242,3.84773)(1.27869,3.88608)
- (1.25028,3.92343)(1.21716,3.95982)(1.17931,3.99531)
- (1.13666,4.02995)(1.08914,4.06378)(1.0367,4.09685)(0.979215,4.1292)
- (0.916597,4.16087)(0.848721,4.19189)
-%%
-\path(1.03051,3.22888)(1.08046,3.28136)(1.12486,3.33203)
- (1.16386,3.38098)(1.1976,3.42832)(1.22618,3.47411)(1.24971,3.51846)
- (1.26827,3.56143)(1.28193,3.60309)(1.29073,3.64351)
- (1.29472,3.68275)(1.29392,3.72088)(1.28835,3.75794)(1.27801,3.794)
- (1.26288,3.82909)(1.24294,3.86327)(1.21815,3.89658)
- (1.18844,3.92907)(1.15376,3.96077)(1.11403,3.99173)
- (1.06914,4.02198)(1.01898,4.05155)(0.963433,4.08048)
- (0.902342,4.10881)(0.835544,4.13656)
-%%
-\path(0.958412,3.29368)(1.01103,3.3388)(1.05838,3.38244)
- (1.10059,3.42468)(1.13773,3.4656)(1.1699,3.50525)(1.19715,3.54369)
- (1.21956,3.58099)(1.23714,3.61719)(1.24993,3.65234)(1.25794,3.6865)
- (1.26117,3.7197)(1.25961,3.75199)(1.25324,3.78341)(1.242,3.814)
- (1.22584,3.84379)(1.20471,3.87282)(1.1785,3.90111)(1.14713,3.92871)
- (1.11049,3.95563)(1.06842,3.98191)(1.02079,4.00758)
- (0.967431,4.03266)(0.90814,4.05717)(0.842708,4.08114)
-%%
-\path(0.909289,3.36006)(0.964025,3.39834)(1.01381,3.43541)
- (1.05873,3.47132)(1.09883,3.50614)(1.13418,3.5399)(1.16481,3.57265)
- (1.19075,3.60442)(1.212,3.63526)(1.22857,3.66521)(1.24045,3.69429)
- (1.2476,3.72255)(1.25,3.75)(1.24758,3.77668)(1.24029,3.80262)
- (1.22803,3.82784)(1.21071,3.85236)(1.18821,3.87622)(1.1604,3.89941)
- (1.12714,3.92198)(1.08825,3.94394)(1.04353,3.9653)
- (0.992768,3.98607)(0.935726,4.00629)(0.872128,4.02595)
-%%
-\path(0.881704,3.42756)(0.938175,3.45953)(0.990033,3.4905)
- (1.03733,3.5205)(1.08009,3.54957)(1.11835,3.57774)(1.15212,3.60504)
- (1.1814,3.63149)(1.20618,3.65713)(1.22644,3.68198)(1.24213,3.70606)
- (1.25321,3.72939)(1.25961,3.75199)(1.26127,3.77388)
- (1.25808,3.79508)(1.24993,3.8156)(1.2367,3.83545)(1.21824,3.85464)
- (1.19439,3.87319)(1.16495,3.89111)(1.12973,3.9084)(1.08847,3.92506)
- (1.04091,3.94111)(0.986766,3.95654)(0.92569,3.97136)
-%%
-\path(0.874138,3.49573)(0.93211,3.52194)(0.985819,3.54729)
- (1.03529,3.5718)(1.08054,3.5955)(1.12156,3.61841)(1.15836,3.64055)
- (1.19091,3.66193)(1.21917,3.68256)(1.24311,3.70247)
- (1.26267,3.72167)(1.27778,3.74015)(1.28835,3.75794)
- (1.29429,3.77504)(1.29547,3.79146)(1.29177,3.80719)
- (1.28303,3.82225)(1.26907,3.83662)(1.2497,3.85032)(1.22469,3.86333)
- (1.1938,3.87564)(1.15674,3.88726)(1.1132,3.89816)(1.06282,3.90834)(1.0052,3.91777)
-%%
-\path(0.885031,3.56419)(0.944391,3.58516)(0.999849,3.60537)
- (1.05141,3.62484)(1.09907,3.64357)(1.14282,3.66157)
- (1.18263,3.67886)(1.21846,3.69544)(1.25027,3.71131)(1.278,3.72648)
- (1.30157,3.74095)(1.32091,3.75472)(1.3359,3.76779)(1.34643,3.78015)
- (1.35237,3.7918)(1.35356,3.80272)(1.34982,3.81291)(1.34096,3.82236)
- (1.32674,3.83103)(1.30692,3.83893)(1.28121,3.84601)
- (1.24929,3.85226)(1.21078,3.85763)(1.16529,3.8621)(1.11235,3.86562)
-%%
-\path(0.912807,3.63258)(0.973544,3.64883)(1.03075,3.66437)
- (1.0844,3.67923)(1.1345,3.69339)(1.18102,3.70686)(1.22391,3.71963)
- (1.26313,3.73171)(1.29863,3.74309)(1.33033,3.75376)
- (1.35815,3.76372)(1.38199,3.77294)(1.40174,3.78143)
- (1.41728,3.78915)(1.42844,3.7961)(1.43507,3.80224)(1.43696,3.80755)
- (1.43391,3.812)(1.42567,3.81556)(1.41195,3.81818)(1.39244,3.81982)
- (1.36679,3.82042)(1.33458,3.81993)(1.29537,3.81827)(1.24863,3.81537)
-%%
-\path(0.955906,3.70059)(1.01809,3.7126)(1.0771,3.72394)
- (1.13294,3.73461)(1.18557,3.74461)(1.23497,3.75392)
- (1.28108,3.76253)(1.32387,3.77044)(1.36326,3.77762)
- (1.39918,3.78406)(1.43155,3.78974)(1.46025,3.79463)
- (1.48518,3.79871)(1.5062,3.80194)(1.52314,3.8043)(1.53585,3.80574)
- (1.54411,3.80622)(1.54771,3.80568)(1.54637,3.80407)
- (1.53982,3.80133)(1.52771,3.79737)(1.50967,3.79211)
- (1.48526,3.78546)(1.45399,3.7773)(1.4153,3.76751)
-%%
-\path(1.0128,3.76793)(1.07655,3.77617)(1.13751,3.78375)
- (1.19566,3.79067)(1.25098,3.7969)(1.30343,3.80242)(1.35296,3.80723)
- (1.39954,3.81129)(1.44308,3.81459)(1.48353,3.81709)
- (1.52079,3.81875)(1.55477,3.81956)(1.58534,3.81945)
- (1.61238,3.81839)(1.63574,3.81633)(1.65524,3.8132)(1.67069,3.80894)
- (1.68186,3.80347)(1.68849,3.79671)(1.6903,3.78856)(1.68695,3.77892)
- (1.67805,3.76764)(1.66317,3.7546)(1.64178,3.73963)(1.61332,3.72254)
-%%
-\path(1.57249,2.99581)(1.48135,3.02195)(1.39706,3.04908)
- (1.31956,3.07714)(1.24877,3.10605)(1.1846,3.13575)(1.12691,3.16617)
- (1.0756,3.19723)(1.03051,3.22888)(0.991504,3.26105)
- (0.958412,3.29368)(0.931066,3.3267)(0.909289,3.36006)
- (0.892898,3.3937)(0.881704,3.42756)(0.875516,3.46158)
- (0.874138,3.49573)(0.877376,3.52995)(0.885031,3.56419)
- (0.896906,3.59842)(0.912807,3.63258)(0.932537,3.66665)
- (0.955906,3.70059)(0.982723,3.73436)(1.0128,3.76793)
-%%
-\path(1.62568,3.16486)(1.54188,3.18217)(1.46419,3.20061)
- (1.39261,3.22013)(1.32712,3.24068)(1.26766,3.26219)
- (1.21419,3.28463)(1.16661,3.30793)(1.12486,3.33203)
- (1.08882,3.35689)(1.05838,3.38244)(1.03343,3.40863)
- (1.01381,3.43541)(0.999398,3.46271)(0.990033,3.4905)
- (0.985561,3.51871)(0.985819,3.54729)(0.990638,3.57619)
- (0.999849,3.60537)(1.01328,3.63478)(1.03075,3.66437)
- (1.05208,3.69411)(1.0771,3.72394)(1.10564,3.75384)(1.13751,3.78375)
-%%
-\path(1.65613,3.31869)(1.57945,3.32854)(1.50828,3.33955)
- (1.44265,3.3517)(1.38257,3.36496)(1.32805,3.37929)(1.27907,3.39466)
- (1.2356,3.41101)(1.1976,3.42832)(1.165,3.44653)(1.13773,3.4656)
- (1.11571,3.48548)(1.09883,3.50614)(1.087,3.52752)(1.08009,3.54957)
- (1.07798,3.57225)(1.08054,3.5955)(1.08762,3.61929)(1.09907,3.64357)
- (1.11475,3.66828)(1.1345,3.69339)(1.15816,3.71885)(1.18557,3.74461)
- (1.21656,3.77064)(1.25098,3.7969)
-%%
-\path(1.66589,3.45945)(1.59601,3.46292)(1.53114,3.46754)
- (1.47135,3.4733)(1.41669,3.48018)(1.36718,3.48816)(1.32285,3.49721)
- (1.2837,3.50732)(1.24971,3.51846)(1.22088,3.53059)(1.19715,3.54369)
- (1.17849,3.55772)(1.16481,3.57265)(1.15605,3.58843)
- (1.15212,3.60504)(1.15293,3.62242)(1.15836,3.64055)(1.1683,3.65937)
- (1.18263,3.67886)(1.20121,3.69896)(1.22391,3.71963)
- (1.25058,3.74084)(1.28108,3.76253)(1.31526,3.78468)(1.35296,3.80723)
-%%
-\path(1.65656,3.58888)(1.59309,3.58689)(1.53423,3.58598)
- (1.48007,3.58615)(1.43068,3.5874)(1.38614,3.58973)(1.34648,3.59312)
- (1.31173,3.59758)(1.28193,3.60309)(1.25706,3.60963)
- (1.23714,3.61719)(1.22213,3.62574)(1.212,3.63526)(1.2067,3.64574)
- (1.20618,3.65713)(1.21037,3.66942)(1.21917,3.68256)
- (1.23251,3.69654)(1.25027,3.71131)(1.27235,3.72684)
- (1.29863,3.74309)(1.32898,3.76003)(1.36326,3.77762)
- (1.40135,3.79582)(1.44308,3.81459)
-%%
-\path(1.6294,3.70847)(1.57186,3.70176)(1.51863,3.69603)
- (1.4698,3.69129)(1.42548,3.68755)(1.38575,3.68482)(1.35067,3.68311)
- (1.32031,3.68242)(1.29472,3.68275)(1.27392,3.68411)(1.25794,3.6865)
- (1.24679,3.68989)(1.24045,3.69429)(1.23891,3.69969)
- (1.24213,3.70606)(1.25007,3.71339)(1.26267,3.72167)
- (1.27987,3.73086)(1.30157,3.74095)(1.3277,3.75191)(1.35815,3.76372)
- (1.3928,3.77634)(1.43155,3.78974)(1.47426,3.80389)(1.52079,3.81875)
-%%
-\path(1.58534,3.81945)(1.53323,3.80866)(1.48518,3.79871)
- (1.44131,3.78962)(1.40174,3.78143)(1.36658,3.77414)(1.3359,3.76779)
- (1.3098,3.76239)(1.28835,3.75794)(1.27161,3.75448)(1.25961,3.75199)
- (1.25241,3.7505)(1.25,3.75)(1.25241,3.7505)(1.25961,3.75199)
- (1.27161,3.75448)(1.28835,3.75794)(1.3098,3.76239)(1.3359,3.76779)
- (1.36658,3.77414)(1.40174,3.78143)(1.44131,3.78962)
- (1.48518,3.79871)(1.53323,3.80866)(1.58534,3.81945)
-%%
-\path(1.52509,3.92289)(1.47784,3.90853)(1.43447,3.89487)
- (1.39512,3.88192)(1.35991,3.86973)(1.32897,3.85833)
- (1.30242,3.84773)(1.28036,3.83798)(1.26288,3.82909)
- (1.25007,3.82109)(1.242,3.814)(1.23872,3.80784)(1.24029,3.80262)
- (1.24673,3.79836)(1.25808,3.79508)(1.27433,3.79277)
- (1.29547,3.79146)(1.3215,3.79113)(1.35237,3.7918)(1.38804,3.79345)
- (1.42844,3.7961)(1.47351,3.79972)(1.52314,3.8043)(1.57726,3.80985)(1.63574,3.81633)
-%%
-\path(1.44912,4.01968)(1.40612,4.00221)(1.36687,3.98526)
- (1.33151,3.96887)(1.3002,3.95308)(1.27308,3.93792)(1.25028,3.92343)
- (1.23193,3.90964)(1.21815,3.89658)(1.20904,3.8843)(1.20471,3.87282)
- (1.20524,3.86216)(1.21071,3.85236)(1.22118,3.84345)(1.2367,3.83545)
- (1.25731,3.82837)(1.28303,3.82225)(1.31387,3.81709)
- (1.34982,3.81291)(1.39086,3.80973)(1.43696,3.80755)
- (1.48807,3.80638)(1.54411,3.80622)(1.60502,3.80707)(1.67069,3.80894)
-%%
-\path(1.35773,4.11062)(1.31832,4.09041)(1.28256,4.07055)
- (1.25061,4.05107)(1.22265,4.03201)(1.19883,4.01341)
- (1.17931,3.99531)(1.16424,3.97775)(1.15376,3.96077)
- (1.14802,3.94441)(1.14713,3.92871)(1.15123,3.91369)(1.1604,3.89941)
- (1.17476,3.8859)(1.19439,3.87319)(1.21935,3.86132)(1.2497,3.85032)
- (1.28549,3.84021)(1.32674,3.83103)(1.37347,3.82281)
- (1.42567,3.81556)(1.48331,3.80931)(1.54637,3.80407)
- (1.61479,3.79987)(1.68849,3.79671)
-%%
-\path(1.25104,4.19638)(1.2145,4.17376)(1.18153,4.1513)
- (1.15234,4.12903)(1.12708,4.107)(1.10596,4.08523)(1.08914,4.06378)
- (1.07681,4.04268)(1.06914,4.02198)(1.06629,4.00171)
- (1.06842,3.98191)(1.07569,3.96264)(1.08825,3.94394)
- (1.10622,3.92584)(1.12973,3.9084)(1.15889,3.89165)(1.1938,3.87564)
- (1.23455,3.86042)(1.28121,3.84601)(1.33383,3.83246)
- (1.39244,3.81982)(1.45707,3.80811)(1.52771,3.79737)
- (1.60435,3.78763)(1.68695,3.77892)
-%%
-\path(1.129,4.27756)(1.09455,4.25281)(1.06363,4.22802)
- (1.03643,4.20324)(1.01316,4.17848)(0.994019,4.15379)
- (0.979215,4.1292)(0.968952,4.10475)(0.963433,4.08048)
- (0.96286,4.05644)(0.967431,4.03266)(0.977337,4.00919)
- (0.992768,3.98607)(1.0139,3.96337)(1.04091,3.94111)
- (1.07396,3.91936)(1.1132,3.89816)(1.15877,3.87757)(1.21078,3.85763)
- (1.26936,3.8384)(1.33458,3.81993)(1.40653,3.80226)(1.48526,3.78546)
- (1.5708,3.76955)(1.66317,3.7546)
-%%
-\path(0.991435,4.35469)(0.958234,4.32805)(0.928503,4.30119)
- (0.902461,4.27411)(0.88033,4.24685)(0.862339,4.21944)
- (0.848721,4.19189)(0.83971,4.16426)(0.835544,4.13656)
- (0.836464,4.10884)(0.842708,4.08114)(0.854517,4.05349)
- (0.872128,4.02595)(0.895776,3.99856)(0.92569,3.97136)
- (0.962093,3.94442)(1.0052,3.91777)(1.05522,3.89149)
- (1.11235,3.86562)(1.17676,3.84023)(1.24863,3.81537)(1.3281,3.79111)
- (1.4153,3.76751)(1.51034,3.74463)(1.61332,3.72254)
-%%
-\path(1.25,3.75)(0.507902,3.59631)
-%%
-\path(0.583844,3.62793)(0.610211,3.63339)
-\path(0.55853,3.61739)(0.611263,3.62831)
-\path(0.533216,3.60685)(0.612315,3.62323)
-\path(0.507902,3.59631)(0.613368,3.61815)
-\path(0.535321,3.59669)(0.61442,3.61307)
-\path(0.56274,3.59707)(0.615472,3.60799)
-\path(0.590158,3.59745)(0.616525,3.60291)
-\path(0.613368,3.61815)(0.609159,3.63847)(0.507902,3.59631)
- (0.617577,3.59782)(0.613368,3.61815)
-%%
-\path(1.25,3.75)(1.59169,3.33754)
-%%
-\path(1.54694,3.36716)(1.53602,3.38035)
-\path(1.56186,3.35729)(1.54001,3.38366)
-\path(1.57677,3.34742)(1.54401,3.38697)
-\path(1.59169,3.33754)(1.548,3.39028)
-\path(1.58476,3.35404)(1.552,3.39359)
-\path(1.57784,3.37053)(1.556,3.3969)
-\path(1.57091,3.38702)(1.55999,3.40021)
-\path(1.548,3.39028)(1.53202,3.37704)(1.59169,3.33754)
- (1.56399,3.40352)(1.548,3.39028)
-%%
-\allinethickness{1pt}%
-\color{rgb_980000}%
-\path(2.375,2.625)
- (2.375,4.875)(0.125,4.875)(0.125,2.625)(2.375,2.625)
-%%
-\allinethickness{0.4pt}%
-\color{rgb_000000}%
-\path
- (0.927506,0.495809)(1.01757,0.548834)(1.10157,0.602843)
- (1.17947,0.657739)(1.25125,0.713425)(1.3169,0.769804)
- (1.37643,0.826777)(1.42989,0.884247)(1.47732,0.94212)
- (1.51879,1.0003)(1.55438,1.0587)(1.58419,1.11722)(1.60833,1.17579)
- (1.62692,1.23431)(1.64008,1.2927)(1.64797,1.35089)(1.65074,1.40881)
- (1.64854,1.46638)(1.64154,1.52354)(1.62991,1.58023)
- (1.61383,1.63639)(1.59347,1.69196)(1.56902,1.7469)(1.54066,1.80115)(1.50857,1.85469)
-%%
-\path(0.8777,0.611715)(0.959433,0.655571)(1.03581,0.700614)
- (1.10675,0.74677)(1.17219,0.793961)(1.2321,0.842109)
- (1.28645,0.891132)(1.33522,0.940947)(1.37842,0.991473)
- (1.41609,1.04262)(1.44824,1.09432)(1.47494,1.14647)(1.49626,1.199)
- (1.51227,1.25182)(1.52307,1.30486)(1.52876,1.35804)
- (1.52946,1.41127)(1.52529,1.46449)(1.51639,1.51763)(1.5029,1.57062)
- (1.48496,1.62339)(1.46273,1.67588)(1.43637,1.72802)
- (1.40604,1.77978)(1.37192,1.83108)
-%%
-\path(0.850911,0.713606)(0.924836,0.749547)(0.993963,0.786789)
- (1.05819,0.825281)(1.11743,0.864964)(1.17161,0.905781)
- (1.22068,0.947667)(1.26458,0.990557)(1.3033,1.03438)
- (1.33682,1.07908)(1.36514,1.12456)(1.38829,1.17077)
- (1.40628,1.21763)(1.41917,1.26507)(1.42702,1.313)(1.42989,1.36136)
- (1.42787,1.41007)(1.42105,1.45906)(1.40954,1.50826)
- (1.39346,1.55759)(1.37292,1.607)(1.34805,1.6564)(1.31901,1.70574)
- (1.28592,1.75496)(1.24895,1.80399)
-%%
-\path(0.844563,0.803527)(0.911256,0.832549)(0.97359,0.862922)
- (1.03145,0.894614)(1.08472,0.927588)(1.13332,0.961802)
- (1.17715,0.997213)(1.21616,1.03377)(1.25029,1.07143)
- (1.27949,1.11013)(1.30374,1.14982)(1.32302,1.19043)
- (1.33734,1.23191)(1.3467,1.27419)(1.35115,1.31721)(1.35071,1.3609)
- (1.34544,1.40519)(1.33541,1.45002)(1.32069,1.49531)
- (1.30138,1.54101)(1.27758,1.58703)(1.24938,1.63332)(1.21692,1.6798)
- (1.18032,1.72642)(1.13972,1.7731)
-%%
-\path(0.856643,0.883119)(0.916712,0.906022)(0.972764,0.930277)
- (1.02467,0.955868)(1.0723,0.982778)(1.11556,1.01098)
- (1.15433,1.04046)(1.18853,1.07117)(1.21807,1.10309)
- (1.24291,1.13617)(1.26297,1.17038)(1.27822,1.20567)(1.28864,1.242)
- (1.2942,1.27931)(1.29492,1.31754)(1.29079,1.35666)(1.28185,1.39658)
- (1.26815,1.43727)(1.24972,1.47865)(1.22664,1.52067)
- (1.19897,1.56326)(1.16682,1.60635)(1.13027,1.64988)
- (1.08945,1.69379)(1.04445,1.73802)
-%%
-\path(0.885577,0.953717)(0.93965,0.971145)(0.989968,0.989888)
- (1.03639,1.00995)(1.07878,1.03132)(1.11702,1.05399)
- (1.15098,1.07797)(1.18055,1.10322)(1.20565,1.12975)
- (1.22618,1.15751)(1.24206,1.1865)(1.25323,1.21667)(1.25963,1.24801)
- (1.26123,1.28046)(1.258,1.314)(1.24993,1.34858)(1.23701,1.38415)
- (1.21926,1.42067)(1.1967,1.45809)(1.16937,1.49635)(1.13734,1.5354)
- (1.10065,1.57517)(1.0594,1.61562)(1.01366,1.65667)(0.963551,1.69828)
-%%
-\path(0.930139,1.01641)(0.97886,1.02889)(1.02402,1.04261)
- (1.06548,1.05759)(1.10308,1.07385)(1.13669,1.09139)
- (1.16618,1.11021)(1.19141,1.13032)(1.21227,1.15172)(1.22866,1.1744)
- (1.24046,1.19834)(1.2476,1.22355)(1.25,1.25)(1.24758,1.27767)
- (1.2403,1.30654)(1.22812,1.33658)(1.211,1.36775)(1.18893,1.40004)
- (1.16191,1.43338)(1.12996,1.46775)(1.0931,1.50311)(1.05137,1.53939)
- (1.00483,1.57655)(0.95355,1.61455)(0.897604,1.65331)
-%%
-\path(0.989383,1.07211)(1.03341,1.08005)(1.07402,1.08915)
- (1.11107,1.09943)(1.14439,1.11092)(1.17383,1.12362)
- (1.19925,1.13757)(1.22049,1.15278)(1.23743,1.16926)
- (1.24993,1.18702)(1.25787,1.20606)(1.26114,1.22639)
- (1.25963,1.24801)(1.25325,1.2709)(1.24192,1.29508)(1.22557,1.32052)
- (1.20414,1.3472)(1.17758,1.37511)(1.14587,1.40423)(1.10898,1.43452)
- (1.06692,1.46596)(1.0197,1.49852)(0.967353,1.53214)
- (0.909912,1.5668)(0.84744,1.60244)
-%%
-\path(1.0626,1.12156)(1.1026,1.12531)(1.1393,1.1301)
- (1.17253,1.13598)(1.20212,1.14296)(1.22791,1.15108)
- (1.24973,1.16037)(1.26742,1.17086)(1.28083,1.18256)(1.2898,1.19551)
- (1.29418,1.20972)(1.29384,1.22521)(1.28864,1.242)(1.27846,1.26009)
- (1.26319,1.27949)(1.24272,1.30021)(1.21697,1.32225)(1.18585,1.3456)
- (1.14931,1.37026)(1.10728,1.39622)(1.05973,1.42347)
- (1.00664,1.45198)(0.948007,1.48173)(0.883841,1.51269)(0.81417,1.54484)
-%%
-\path(1.14927,1.16539)(1.18593,1.16521)(1.21938,1.16596)
- (1.24942,1.16766)(1.27589,1.17035)(1.2986,1.17407)(1.31737,1.17886)
- (1.33202,1.18475)(1.34238,1.19178)(1.34825,1.19998)
- (1.34948,1.20938)(1.3459,1.22002)(1.33734,1.23191)(1.32364,1.2451)
- (1.30466,1.25959)(1.28026,1.27541)(1.2503,1.29259)(1.21467,1.31112)
- (1.17326,1.33103)(1.12598,1.35233)(1.07274,1.375)(1.01349,1.39906)
- (0.948177,1.4245)(0.876769,1.45131)(0.799255,1.47948)
-%%
-\path(1.24904,1.20411)(1.28307,1.20023)(1.31396,1.19712)
- (1.3415,1.19483)(1.3655,1.19339)(1.38577,1.19284)(1.4021,1.19323)
- (1.41431,1.19461)(1.42218,1.197)(1.42551,1.20046)(1.4241,1.20502)
- (1.41776,1.21074)(1.40628,1.21763)(1.38947,1.22576)
- (1.36714,1.23514)(1.33911,1.24583)(1.3052,1.25784)(1.26524,1.27122)
- (1.21907,1.28599)(1.16656,1.30219)(1.10756,1.31982)
- (1.04196,1.33891)(0.969654,1.35948)(0.890556,1.38154)(0.804598,1.4051)
-%%
-\path(1.3617,1.23817)(1.39385,1.23075)(1.4229,1.22394)
- (1.44865,1.21779)(1.47089,1.21232)(1.48943,1.2076)(1.50402,1.20365)
- (1.51446,1.20053)(1.52052,1.19829)(1.52196,1.19696)
- (1.51856,1.19661)(1.51007,1.19727)(1.49626,1.199)(1.47689,1.20184)
- (1.45173,1.20585)(1.42053,1.21107)(1.38308,1.21755)
- (1.33914,1.22534)(1.28849,1.23448)(1.23092,1.24502)
- (1.16623,1.25701)(1.09423,1.27047)(1.01474,1.28546)
- (0.927602,1.30199)(0.83267,1.32012)
-%%
-\path(1.4872,1.26793)(1.51821,1.2571)(1.5462,1.2467)
- (1.57093,1.23677)(1.5922,1.22735)(1.60978,1.21849)(1.62342,1.21022)
- (1.63288,1.20259)(1.6379,1.19565)(1.63823,1.18945)(1.6336,1.18404)
- (1.62373,1.17947)(1.60833,1.17579)(1.58713,1.17306)
- (1.55982,1.17134)(1.52613,1.17068)(1.48574,1.17114)
- (1.43836,1.17279)(1.3837,1.17569)(1.32146,1.17988)(1.25135,1.18545)
- (1.17308,1.19243)(1.08639,1.20091)(0.99101,1.21092)(0.886683,1.22254)
-%%
-\path(0.927506,0.495809)(0.899539,0.55566)(0.8777,0.611715)
- (0.861604,0.664274)(0.850911,0.713606)(0.845319,0.759952)
- (0.844563,0.803527)(0.848407,0.844524)(0.856643,0.883119)
- (0.869088,0.919469)(0.885577,0.953717)(0.90597,0.985993)
- (0.930139,1.01641)(0.957975,1.04509)(0.989383,1.07211)
- (1.02428,1.09758)(1.0626,1.12156)(1.10428,1.14414)(1.14927,1.16539)
- (1.19753,1.18536)(1.24904,1.20411)(1.30377,1.2217)(1.3617,1.23817)
- (1.42285,1.25356)(1.4872,1.26793)
-%%
-\path(1.10157,0.602843)(1.06552,0.653288)(1.03581,0.700614)
- (1.01206,0.745046)(0.993963,0.786789)(0.981224,0.826026)
- (0.97359,0.862922)(0.970837,0.897627)(0.972764,0.930277)
- (0.979193,0.960993)(0.989968,0.989888)(1.00495,1.01706)
- (1.02402,1.04261)(1.04708,1.06661)(1.07402,1.08915)
- (1.10479,1.11029)(1.1393,1.1301)(1.17751,1.14864)(1.21938,1.16596)
- (1.26487,1.1821)(1.31396,1.19712)(1.36664,1.21106)(1.4229,1.22394)
- (1.48275,1.23581)(1.5462,1.2467)
-%%
-\path(1.25125,0.713425)(1.20852,0.754966)(1.17219,0.793961)
- (1.14193,0.830577)(1.11743,0.864964)(1.09844,0.89726)
- (1.08472,0.927588)(1.07607,0.95606)(1.0723,0.982778)
- (1.07325,1.00784)(1.07878,1.03132)(1.08876,1.0533)(1.10308,1.07385)
- (1.12165,1.09304)(1.14439,1.11092)(1.17123,1.12754)
- (1.20212,1.14296)(1.23702,1.15721)(1.27589,1.17035)
- (1.31872,1.18239)(1.3655,1.19339)(1.41622,1.20335)(1.47089,1.21232)
- (1.52955,1.22032)(1.5922,1.22735)
-%%
-\path(1.37643,0.826777)(1.32827,0.85999)(1.28645,0.891132)
- (1.25067,0.920321)(1.22068,0.947667)(1.19624,0.973268)
- (1.17715,0.997213)(1.16324,1.01959)(1.15433,1.04046)
- (1.15028,1.0599)(1.15098,1.07797)(1.15631,1.09472)(1.16618,1.11021)
- (1.18051,1.12448)(1.19925,1.13757)(1.22233,1.14953)
- (1.24973,1.16037)(1.28142,1.17014)(1.31737,1.17886)(1.3576,1.18655)
- (1.4021,1.19323)(1.4509,1.19893)(1.50402,1.20365)(1.56151,1.20741)(1.62342,1.21022)
-%%
-\path(1.47732,0.94212)(1.42478,0.967642)(1.37842,0.991473)
- (1.338,1.01369)(1.3033,1.03438)(1.27412,1.05361)(1.25029,1.07143)
- (1.23165,1.08791)(1.21807,1.10309)(1.20944,1.11702)
- (1.20565,1.12975)(1.20662,1.1413)(1.21227,1.15172)(1.22256,1.16103)
- (1.23743,1.16926)(1.25686,1.17643)(1.28083,1.18256)
- (1.30933,1.18768)(1.34238,1.19178)(1.37998,1.19488)(1.42218,1.197)
- (1.469,1.19814)(1.52052,1.19829)(1.57679,1.19746)(1.6379,1.19565)
-%%
-\path(1.55438,1.0587)(1.49833,1.07721)(1.44824,1.09432)
- (1.4039,1.11009)(1.36514,1.12456)(1.3318,1.13779)(1.30374,1.14982)
- (1.28083,1.16067)(1.26297,1.17038)(1.25007,1.17898)(1.24206,1.1865)
- (1.23887,1.19294)(1.24046,1.19834)(1.2468,1.20271)(1.25787,1.20606)
- (1.27366,1.20839)(1.29418,1.20972)(1.31944,1.21005)
- (1.34948,1.20938)(1.38435,1.20771)(1.4241,1.20502)(1.46881,1.20133)
- (1.51856,1.19661)(1.57345,1.19085)(1.6336,1.18404)
-%%
-\path(1.60833,1.17579)(1.54946,1.18798)(1.49626,1.199)
- (1.44858,1.20887)(1.40628,1.21763)(1.36924,1.22531)
- (1.33734,1.23191)(1.3105,1.23747)(1.28864,1.242)(1.2717,1.24551)
- (1.25963,1.24801)(1.25241,1.2495)(1.25,1.25)(1.25241,1.2495)
- (1.25963,1.24801)(1.2717,1.24551)(1.28864,1.242)(1.3105,1.23747)
- (1.33734,1.23191)(1.36924,1.22531)(1.40628,1.21763)
- (1.44858,1.20887)(1.49626,1.199)(1.54946,1.18798)(1.60833,1.17579)
-%%
-\path(1.64008,1.2927)(1.5789,1.29929)(1.52307,1.30486)
- (1.47248,1.30943)(1.42702,1.313)(1.3866,1.31559)(1.35115,1.31721)
- (1.3206,1.31786)(1.29492,1.31754)(1.27406,1.31626)(1.258,1.314)
- (1.24675,1.31076)(1.2403,1.30654)(1.23868,1.30132)(1.24192,1.29508)
- (1.25007,1.28781)(1.26319,1.27949)(1.28135,1.27009)
- (1.30466,1.25959)(1.33321,1.24795)(1.36714,1.23514)
- (1.40659,1.22112)(1.45173,1.20585)(1.50274,1.18927)(1.55982,1.17134)
-%%
-\path(1.65074,1.40881)(1.5876,1.4105)(1.52946,1.41127)
- (1.47624,1.41113)(1.42787,1.41007)(1.38428,1.40809)
- (1.34544,1.40519)(1.3113,1.40136)(1.28185,1.39658)(1.25709,1.39085)
- (1.23701,1.38415)(1.22163,1.37646)(1.211,1.36775)(1.20515,1.35801)
- (1.20414,1.3472)(1.20805,1.33529)(1.21697,1.32225)(1.23101,1.30803)
- (1.2503,1.29259)(1.27497,1.27588)(1.3052,1.25784)(1.34116,1.23842)
- (1.38308,1.21755)(1.43118,1.19515)(1.48574,1.17114)
-%%
-\path(1.64154,1.52354)(1.57665,1.52102)(1.51639,1.51763)
- (1.4607,1.51338)(1.40954,1.50826)(1.36288,1.50224)(1.32069,1.49531)
- (1.28297,1.48746)(1.24972,1.47865)(1.22095,1.46887)(1.1967,1.45809)
- (1.177,1.44627)(1.16191,1.43338)(1.15151,1.41938)(1.14587,1.40423)
- (1.14509,1.38787)(1.14931,1.37026)(1.15864,1.35134)
- (1.17326,1.33103)(1.19333,1.30928)(1.21907,1.28599)(1.2507,1.26109)
- (1.28849,1.23448)(1.33271,1.20605)(1.3837,1.17569)
-%%
-\path(1.61383,1.63639)(1.54727,1.6303)(1.48496,1.62339)
- (1.42684,1.61563)(1.37292,1.607)(1.32316,1.59747)(1.27758,1.58703)
- (1.23617,1.57563)(1.19897,1.56326)(1.16601,1.54986)(1.13734,1.5354)
- (1.11301,1.51983)(1.0931,1.50311)(1.0777,1.48517)(1.06692,1.46596)
- (1.06088,1.44542)(1.05973,1.42347)(1.06362,1.40002)(1.07274,1.375)
- (1.08731,1.3483)(1.10756,1.31982)(1.13377,1.28943)(1.16623,1.25701)
- (1.20529,1.2224)(1.25135,1.18545)
-%%
-\path(1.56902,1.7469)(1.50078,1.73787)(1.43637,1.72802)
- (1.37578,1.71732)(1.31901,1.70574)(1.26605,1.69325)(1.21692,1.6798)
- (1.17165,1.66536)(1.13027,1.64988)(1.09284,1.63332)(1.0594,1.61562)
- (1.03003,1.59672)(1.00483,1.57655)(0.983899,1.55505)
- (0.967353,1.53214)(0.955336,1.50773)(0.948007,1.48173)
- (0.945551,1.45402)(0.948177,1.4245)(0.956122,1.39304)
- (0.969654,1.35948)(0.989078,1.32368)(1.01474,1.28546)
- (1.04703,1.24461)(1.08639,1.20091)
-%%
-\path(1.50857,1.85469)(1.43853,1.8433)(1.37192,1.83108)
- (1.30872,1.81799)(1.24895,1.80399)(1.1926,1.78904)(1.13972,1.7731)
- (1.09032,1.75611)(1.04445,1.73802)(1.00217,1.71876)
- (0.963551,1.69828)(0.928663,1.67649)(0.897604,1.65331)
- (0.870487,1.62866)(0.84744,1.60244)(0.828611,1.57454)
- (0.81417,1.54484)(0.80431,1.5132)(0.799255,1.47948)
- (0.799255,1.44351)(0.804598,1.4051)(0.815612,1.36405)
- (0.83267,1.32012)(0.856198,1.27305)(0.886683,1.22254)
-%%
-\path(1.25,1.25)(0.600163,1.38459)
-%%
-\path(0.68242,1.38345)(0.708786,1.37799)
-\path(0.655001,1.38383)(0.707734,1.37291)
-\path(0.627582,1.38421)(0.706681,1.36782)
-\path(0.600163,1.38459)(0.705629,1.36274)
-\path(0.625477,1.37404)(0.704577,1.35766)
-\path(0.650792,1.3635)(0.703524,1.35258)
-\path(0.676106,1.35296)(0.702472,1.3475)
-\path(0.705629,1.36274)(0.709838,1.38307)(0.600163,1.38459)
- (0.70142,1.34242)(0.705629,1.36274)
-%%
-\path(1.25,1.25)(0.90831,0.837544)
-%%
-\path(0.929086,0.887024)(0.940008,0.900207)
-\path(0.922161,0.870531)(0.944004,0.896897)
-\path(0.915235,0.854037)(0.947999,0.893587)
-\path(0.90831,0.837544)(0.951995,0.890277)
-\path(0.923227,0.847417)(0.955991,0.886966)
-\path(0.938144,0.85729)(0.959987,0.883656)
-\path(0.953061,0.867163)(0.963983,0.880346)
-\path(0.951995,0.890277)(0.936012,0.903518)(0.90831,0.837544)
- (0.967979,0.877035)(0.951995,0.890277)
-%%
-\allinethickness{1pt}%
-\color{rgb_980000}%
-\path(2.375,0.125)
- (2.375,2.375)(0.125,2.375)(0.125,0.125)(2.375,0.125)
-%%
-\allinethickness{0.4pt}%
-\color{rgb_000000}%
-\path(4.32177,5.61398)
- (4.31023,5.69921)(4.29571,5.77929)(4.27832,5.85466)
- (4.25813,5.92574)(4.23521,5.99286)(4.20959,6.05635)(4.1813,6.11649)
- (4.15036,6.17352)(4.11676,6.22769)(4.0805,6.27919)(4.04155,6.32822)
- (3.99986,6.37493)(3.9554,6.41949)(3.90809,6.46204)(3.85786,6.50269)
- (3.80463,6.54158)(3.7483,6.5788)(3.68874,6.61445)(3.62584,6.64863)
- (3.55945,6.68142)(3.48941,6.71289)(3.41554,6.74311)
- (3.33764,6.77214)(3.25551,6.80006)
-%%
-\path(4.13841,5.61911)(4.13845,5.69921)(4.13499,5.7746)
- (4.12815,5.84568)(4.11806,5.91278)(4.10479,5.97624)
- (4.08842,6.03631)(4.06899,6.09326)(4.04655,6.14732)
- (4.02109,6.19867)(3.99263,6.24751)(3.96116,6.29401)
- (3.92663,6.33832)(3.88902,6.38056)(3.84826,6.42088)
- (3.80428,6.45939)(3.75699,6.49618)(3.70631,6.53136)
- (3.65209,6.56502)(3.59422,6.59722)(3.53254,6.62806)
- (3.46687,6.65758)(3.39703,6.68587)(3.32279,6.71296)(3.24391,6.73891)
-%%
-\path(3.97074,5.63438)(3.98145,5.70897)(3.98827,5.77929)
- (3.99133,5.84568)(3.99078,5.90844)(3.98672,5.96784)
- (3.97923,6.02413)(3.96839,6.07752)(3.95423,6.12822)
- (3.93678,6.17639)(3.91605,6.22222)(3.89204,6.26583)
- (3.86473,6.30736)(3.83407,6.34695)(3.80002,6.38469)(3.7625,6.42068)
- (3.72142,6.45502)(3.67668,6.4878)(3.62816,6.51909)(3.57571,6.54895)
- (3.51917,6.57745)(3.45835,6.60465)(3.39303,6.63059)
- (3.32299,6.65533)(3.24794,6.6789)
-%%
-\path(3.82031,5.65946)(3.84076,5.72828)(3.85704,5.79325)
- (3.8693,5.85466)(3.87769,5.91278)(3.88234,5.96784)(3.88333,6.02004)
- (3.88074,6.06957)(3.87462,6.1166)(3.86501,6.16129)(3.85192,6.20378)
- (3.83536,6.24419)(3.81529,6.28265)(3.79169,6.31924)
- (3.76451,6.35408)(3.73366,6.38723)(3.69906,6.41879)
- (3.66061,6.44883)(3.61816,6.47739)(3.57157,6.50455)
- (3.52065,6.53035)(3.46521,6.55484)(3.40502,6.57805)
- (3.33981,6.60002)(3.26928,6.62077)
-%%
-\path(3.68828,5.69383)(3.71752,5.75673)(3.74242,5.81619)
- (3.76316,5.87245)(3.77989,5.92574)(3.79272,5.97624)
- (3.80176,6.02413)(3.80708,6.06957)(3.80875,6.1127)(3.80678,6.15367)
- (3.80122,6.19257)(3.79205,6.22953)(3.77926,6.26463)
- (3.76282,6.29797)(3.74266,6.32962)(3.71872,6.35966)
- (3.69089,6.38814)(3.65907,6.41512)(3.62312,6.44066)
- (3.58287,6.46478)(3.53814,6.48754)(3.4887,6.50895)(3.43432,6.52905)
- (3.37469,6.54785)(3.3095,6.56536)
-%%
-\path(3.57536,5.73678)(3.61246,5.79374)(3.64519,5.84764)
- (3.6737,5.89868)(3.69814,5.94703)(3.71864,5.99286)(3.73529,6.03631)
- (3.74816,6.07752)(3.75733,6.1166)(3.76282,6.15367)(3.76466,6.18881)
- (3.76284,6.22212)(3.75735,6.25368)(3.74816,6.28355)(3.7352,6.3118)
- (3.71839,6.33848)(3.69766,6.36364)(3.67286,6.38731)
- (3.64387,6.40955)(3.6105,6.43036)(3.57256,6.44976)(3.52982,6.46778)
- (3.48202,6.48442)(3.42884,6.49968)(3.36994,6.51354)
-%%
-\path(3.48182,5.78746)(3.52593,5.83858)(3.5657,5.88698)
- (3.6013,5.93282)(3.63287,5.97624)(3.66052,6.01738)(3.68434,6.05635)
- (3.70443,6.09326)(3.72082,6.12822)(3.73357,6.16129)
- (3.74268,6.19257)(3.74817,6.22212)(3.75,6.25)(3.74815,6.27626)
- (3.74256,6.30096)(3.73315,6.32411)(3.71983,6.34577)
- (3.70247,6.36595)(3.68092,6.38466)(3.65502,6.40193)
- (3.62455,6.41774)(3.58928,6.43209)(3.54893,6.44498)
- (3.50317,6.45637)(3.45165,6.46623)
-%%
-\path(3.40754,5.84494)(3.45785,5.89041)(3.50396,5.93346)
- (3.54601,5.97421)(3.58414,6.0128)(3.61846,6.04931)(3.64906,6.08384)
- (3.67601,6.11649)(3.69937,6.14732)(3.71917,6.17639)
- (3.73544,6.20378)(3.74817,6.22953)(3.75735,6.25368)
- (3.76295,6.27626)(3.76491,6.29732)(3.76315,6.31686)(3.75758,6.3349)
- (3.74809,6.35145)(3.73451,6.36651)(3.71669,6.38006)(3.69441,6.3921)
- (3.66744,6.40258)(3.63549,6.41148)(3.59823,6.41875)(3.55529,6.42432)
-%%
-\path(3.352,5.90822)(3.40781,5.9483)(3.45961,5.98623)
- (3.50754,6.0221)(3.55172,6.05601)(3.59226,6.08804)(3.62924,6.11826)
- (3.66274,6.14674)(3.69281,6.17352)(3.71948,6.19867)
- (3.74278,6.22222)(3.76271,6.24419)(3.77926,6.26463)(3.7924,6.28355)
- (3.80208,6.30096)(3.80823,6.31686)(3.81077,6.33125)
- (3.80957,6.34412)(3.8045,6.35546)(3.79539,6.36522)(3.78206,6.37338)
- (3.76426,6.37987)(3.74171,6.38464)(3.7141,6.3876)(3.68106,6.38866)
-%%
-\path(3.31441,5.97626)(3.37509,6.01129)(3.432,6.04439)
- (3.48528,6.07564)(3.53504,6.10512)(3.58139,6.13288)(3.6244,6.15897)
- (3.66415,6.18345)(3.70069,6.20635)(3.73405,6.22769)
- (3.76427,6.24751)(3.79135,6.26583)(3.81529,6.28265)
- (3.83606,6.29797)(3.85363,6.3118)(3.86794,6.32411)(3.8789,6.3349)
- (3.88643,6.34412)(3.89039,6.35175)(3.89064,6.35772)
- (3.88701,6.36198)(3.87927,6.36444)(3.86717,6.36501)
- (3.85042,6.36359)(3.82865,6.36003)
-%%
-\path(3.29368,6.04807)(3.35869,6.07842)(3.42021,6.10703)
- (3.47839,6.13398)(3.53332,6.1593)(3.5851,6.18306)(3.63381,6.20527)
- (3.67954,6.22597)(3.72232,6.24518)(3.7622,6.26292)(3.79922,6.27919)
- (3.8334,6.29401)(3.86473,6.30736)(3.89321,6.31924)(3.91881,6.32962)
- (3.94149,6.33848)(3.9612,6.34577)(3.97785,6.35145)(3.99135,6.35546)
- (4.00158,6.35772)(4.00838,6.35815)(4.01158,6.35663)
- (4.01096,6.35306)(4.00627,6.34727)(3.99719,6.33908)
-%%
-\path(3.28857,6.12268)(3.35743,6.14874)(3.42314,6.17324)
- (3.4858,6.19622)(3.54552,6.21772)(3.60241,6.23776)(3.65653,6.25637)
- (3.70797,6.27356)(3.75678,6.28934)(3.80302,6.30372)
- (3.84672,6.31668)(3.88792,6.32822)(3.92663,6.33832)
- (3.96287,6.34695)(3.99662,6.35408)(4.02787,6.35966)
- (4.05658,6.36364)(4.08272,6.36595)(4.10621,6.36651)
- (4.12697,6.36522)(4.14491,6.36198)(4.15988,6.35663)
- (4.17173,6.34904)(4.18026,6.33901)(4.18525,6.32631)
-%%
-\path(3.29768,6.19917)(3.37001,6.22136)(3.43952,6.24213)
- (3.50631,6.26151)(3.57051,6.27953)(3.63219,6.29619)
- (3.69145,6.31151)(3.74836,6.32549)(3.80299,6.33812)(3.85541,6.3494)
- (3.90567,6.35932)(3.95381,6.36784)(3.99986,6.37493)
- (4.04387,6.38056)(4.08585,6.38469)(4.1258,6.38723)(4.16374,6.38814)
- (4.19966,6.38731)(4.23353,6.38466)(4.26532,6.38006)
- (4.29499,6.37338)(4.32247,6.36444)(4.34769,6.35306)
- (4.37053,6.33901)(4.39086,6.32202)
-%%
-\path(4.32177,5.61398)(4.22824,5.61526)(4.13841,5.61911)
- (4.0525,5.62549)(3.97074,5.63438)(3.89329,5.64572)(3.82031,5.65946)
- (3.75194,5.67553)(3.68828,5.69383)(3.6294,5.71428)(3.57536,5.73678)
- (3.52617,5.76121)(3.48182,5.78746)(3.4423,5.81541)(3.40754,5.84494)
- (3.37747,5.87592)(3.352,5.90822)(3.33103,5.94171)(3.31441,5.97626)
- (3.30201,6.01176)(3.29368,6.04807)(3.28926,6.08509)
- (3.28857,6.12268)(3.29144,6.16074)(3.29768,6.19917)
-%%
-\path(4.29571,5.77929)(4.2137,5.77577)(4.13499,5.7746)
- (4.05978,5.77577)(3.98827,5.77929)(3.92064,5.78512)
- (3.85704,5.79325)(3.79759,5.80362)(3.74242,5.81619)(3.6916,5.83089)
- (3.64519,5.84764)(3.60322,5.86637)(3.5657,5.88698)(3.53263,5.90938)
- (3.50396,5.93346)(3.47965,5.95911)(3.45961,5.98623)
- (3.44377,6.01469)(3.432,6.04439)(3.42419,6.07521)(3.42021,6.10703)
- (3.41991,6.13974)(3.42314,6.17324)(3.42973,6.2074)(3.43952,6.24213)
-%%
-\path(4.25813,5.92574)(4.18659,5.9182)(4.11806,5.91278)
- (4.05273,5.90952)(3.99078,5.90844)(3.93239,5.90952)
- (3.87769,5.91278)(3.82683,5.9182)(3.77989,5.92574)(3.73697,5.93537)
- (3.69814,5.94703)(3.66343,5.96068)(3.63287,5.97624)
- (3.60644,5.99364)(3.58414,6.0128)(3.56592,6.03362)(3.55172,6.05601)
- (3.54146,6.07988)(3.53504,6.10512)(3.53237,6.13163)(3.53332,6.1593)
- (3.53775,6.18804)(3.54552,6.21772)(3.55649,6.24825)(3.57051,6.27953)
-%%
-\path(4.20959,6.05635)(4.1476,6.04537)(4.08842,6.03631)
- (4.03224,6.02922)(3.97923,6.02413)(3.92955,6.02106)
- (3.88333,6.02004)(3.8407,6.02106)(3.80176,6.02413)(3.7666,6.02922)
- (3.73529,6.03631)(3.70786,6.04537)(3.68434,6.05635)(3.66475,6.0692)
- (3.64906,6.08384)(3.63724,6.10022)(3.62924,6.11826)
- (3.62499,6.13787)(3.6244,6.15897)(3.62738,6.18147)(3.63381,6.20527)
- (3.64358,6.23027)(3.65653,6.25637)(3.67254,6.28349)(3.69145,6.31151)
-%%
-\path(4.15036,6.17352)(4.0971,6.15956)(4.04655,6.14732)
- (3.99887,6.13685)(3.95423,6.12822)(3.91277,6.12146)(3.87462,6.1166)
- (3.83992,6.11368)(3.80875,6.1127)(3.7812,6.11368)(3.75733,6.1166)
- (3.7372,6.12146)(3.72082,6.12822)(3.70822,6.13685)(3.69937,6.14732)
- (3.69425,6.15956)(3.69281,6.17352)(3.69498,6.18914)
- (3.70069,6.20635)(3.70984,6.22505)(3.72232,6.24518)
- (3.73801,6.26664)(3.75678,6.28934)(3.77849,6.3132)(3.80299,6.33812)
-%%
-\path(4.0805,6.27919)(4.03524,6.26259)(3.99263,6.24751)
- (3.95285,6.23403)(3.91605,6.22222)(3.88236,6.21212)
- (3.85192,6.20378)(3.82484,6.19726)(3.80122,6.19257)
- (3.78114,6.18975)(3.76466,6.18881)(3.75183,6.18975)
- (3.74268,6.19257)(3.73722,6.19726)(3.73544,6.20378)
- (3.73731,6.21212)(3.74278,6.22222)(3.7518,6.23403)(3.76427,6.24751)
- (3.78012,6.26259)(3.79922,6.27919)(3.82147,6.29725)
- (3.84672,6.31668)(3.87484,6.3374)(3.90567,6.35932)
-%%
-\path(3.99986,6.37493)(3.96191,6.35595)(3.92663,6.33832)
- (3.89419,6.32209)(3.86473,6.30736)(3.83839,6.29419)
- (3.81529,6.28265)(3.79555,6.27278)(3.77926,6.26463)
- (3.76651,6.25825)(3.75735,6.25368)(3.75184,6.25092)(3.75,6.25)
- (3.75184,6.25092)(3.75735,6.25368)(3.76651,6.25825)
- (3.77926,6.26463)(3.79555,6.27278)(3.81529,6.28265)
- (3.83839,6.29419)(3.86473,6.30736)(3.89419,6.32209)
- (3.92663,6.33832)(3.96191,6.35595)(3.99986,6.37493)
-%%
-\path(3.90809,6.46204)(3.8768,6.44088)(3.84826,6.42088)
- (3.82261,6.40212)(3.80002,6.38469)(3.78061,6.36864)
- (3.76451,6.35408)(3.75182,6.34105)(3.74266,6.32962)(3.7371,6.31986)
- (3.7352,6.3118)(3.73701,6.30549)(3.74256,6.30096)(3.75186,6.29823)
- (3.76491,6.29732)(3.78166,6.29823)(3.80208,6.30096)(3.8261,6.30549)
- (3.85363,6.3118)(3.88457,6.31986)(3.91881,6.32962)(3.9562,6.34105)
- (3.99662,6.35408)(4.03989,6.36864)(4.08585,6.38469)
-%%
-\path(3.80463,6.54158)(3.77938,6.5184)(3.75699,6.49618)
- (3.73762,6.47503)(3.72142,6.45502)(3.70853,6.43625)
- (3.69906,6.41879)(3.69315,6.40273)(3.69089,6.38814)
- (3.69237,6.37509)(3.69766,6.36364)(3.7068,6.35385)(3.71983,6.34577)
- (3.73676,6.33944)(3.75758,6.3349)(3.78227,6.33216)(3.81077,6.33125)
- (3.84301,6.33216)(3.8789,6.3349)(3.91834,6.33944)(3.9612,6.34577)
- (4.00733,6.35385)(4.05658,6.36364)(4.10878,6.37509)(4.16374,6.38814)
-%%
-\path(3.68874,6.61445)(3.66891,6.58934)(3.65209,6.56502)
- (3.63846,6.54157)(3.62816,6.51909)(3.62135,6.49766)
- (3.61816,6.47739)(3.61871,6.45836)(3.62312,6.44066)
- (3.63148,6.42436)(3.64387,6.40955)(3.66033,6.39629)
- (3.68092,6.38466)(3.70565,6.37472)(3.73451,6.36651)
- (3.76748,6.36008)(3.8045,6.35546)(3.8455,6.35268)(3.89039,6.35175)
- (3.93905,6.35268)(3.99135,6.35546)(4.04713,6.36008)
- (4.10621,6.36651)(4.16841,6.37472)(4.23353,6.38466)
-%%
-\path(3.55945,6.68142)(3.54439,6.65444)(3.53254,6.62806)
- (3.52408,6.60236)(3.51917,6.57745)(3.51798,6.55341)
- (3.52065,6.53035)(3.52733,6.50836)(3.53814,6.48754)
- (3.55319,6.46798)(3.57256,6.44976)(3.59633,6.43299)
- (3.62455,6.41774)(3.65725,6.40408)(3.69441,6.3921)(3.73603,6.38184)
- (3.78206,6.37338)(3.83242,6.36674)(3.88701,6.36198)
- (3.94571,6.35911)(4.00838,6.35815)(4.07484,6.35911)
- (4.14491,6.36198)(4.21837,6.36674)(4.29499,6.37338)
-%%
-\path(3.41554,6.74311)(3.40457,6.71429)(3.39703,6.68587)
- (3.39312,6.65793)(3.39303,6.63059)(3.39694,6.60393)
- (3.40502,6.57805)(3.41743,6.55306)(3.43432,6.52905)
- (3.45581,6.50614)(3.48202,6.48442)(3.51304,6.464)(3.54893,6.44498)
- (3.58974,6.42744)(3.63549,6.41148)(3.68616,6.39719)
- (3.74171,6.38464)(3.80208,6.37389)(3.86717,6.36501)
- (3.93685,6.35806)(4.01096,6.35306)(4.08932,6.35005)
- (4.17173,6.34904)(4.25793,6.35005)(4.34769,6.35306)
-%%
-\path(3.25551,6.80006)(3.24787,6.76939)(3.24391,6.73891)
- (3.24387,6.70872)(3.24794,6.6789)(3.25635,6.64955)(3.26928,6.62077)
- (3.28694,6.59267)(3.3095,6.56536)(3.33712,6.53894)(3.36994,6.51354)
- (3.40808,6.48927)(3.45165,6.46623)(3.5007,6.44454)(3.55529,6.42432)
- (3.61541,6.40566)(3.68106,6.38866)(3.75217,6.37343)
- (3.82865,6.36003)(3.91038,6.34856)(3.99719,6.33908)
- (4.08889,6.33165)(4.18525,6.32631)(4.286,6.32309)(4.39086,6.32202)
-%%
-\path(3.75,6.25)(3.14565,5.94783)
-%%
-\path(3.19923,5.99202)(3.21941,6.00211)
-\path(3.18137,5.97729)(3.22173,5.99747)
-\path(3.16351,5.96256)(3.22405,5.99283)
-\path(3.14565,5.94783)(3.22637,5.98819)
-\path(3.16815,5.95328)(3.22869,5.98355)
-\path(3.19065,5.95872)(3.23101,5.9789)
-\path(3.21315,5.96417)(3.23333,5.97426)
-\path(3.22637,5.98819)(3.21709,6.00675)(3.14565,5.94783)
- (3.23565,5.96962)(3.22637,5.98819)
-%%
-\path(3.75,6.25)(4.35435,5.94783)
-%%
-\path(4.28685,5.96417)(4.26667,5.97426)
-\path(4.30935,5.95872)(4.26899,5.9789)
-\path(4.33185,5.95328)(4.27131,5.98355)
-\path(4.35435,5.94783)(4.27363,5.98819)
-\path(4.33649,5.96256)(4.27595,5.99283)
-\path(4.31863,5.97729)(4.27827,5.99747)
-\path(4.30077,5.99202)(4.28059,6.00211)
-\path(4.27363,5.98819)(4.26435,5.96962)(4.35435,5.94783)
- (4.28291,6.00675)(4.27363,5.98819)
-%%
-\allinethickness{1pt}%
-\color{rgb_980000}%
-\path(4.875,5.125)
- (4.875,7.375)(2.625,7.375)(2.625,5.125)(4.875,5.125)
-%%
-\allinethickness{0.4pt}%
-\color{rgb_000000}%
-\path(3.75,2.95191)
- (3.81752,3.02689)(3.87769,3.10015)(3.93077,3.17175)
- (3.97698,3.24175)(4.01655,3.3102)(4.04971,3.37715)(4.07667,3.44266)
- (4.09761,3.50676)(4.11274,3.5695)(4.12223,3.63093)(4.12626,3.69108)
- (4.125,3.75)(4.11861,3.80772)(4.10725,3.86428)(4.09106,3.91971)
- (4.07018,3.97405)(4.04476,4.02733)(4.01493,4.07958)
- (3.98081,4.13082)(3.94252,4.1811)(3.90018,4.23043)(3.85391,4.27884)
- (3.80382,4.32635)(3.75,4.373)
-%%
-\path(3.62348,3.04636)(3.69014,3.11055)(3.75,3.17364)
- (3.80325,3.23566)(3.85004,3.29665)(3.89055,3.35662)(3.92492,3.4156)
- (3.9533,3.47361)(3.97585,3.53068)(3.9927,3.58684)(4.00399,3.64209)
- (4.00986,3.69647)(4.01042,3.75)(4.0058,3.80269)(3.99613,3.85457)
- (3.98152,3.90564)(3.96208,3.95594)(3.93793,4.00548)
- (3.90916,4.05428)(3.87589,4.10235)(3.8382,4.1497)(3.79621,4.19636)
- (3.75,4.24234)(3.69967,4.28766)(3.64529,4.33232)
-%%
-\path(3.52707,3.13497)(3.59209,3.1895)(3.65084,3.24339)
- (3.70344,3.29667)(3.75,3.34934)(3.79061,3.40141)(3.82538,3.45289)
- (3.85441,3.5038)(3.87779,3.55414)(3.89561,3.60392)(3.90797,3.65315)
- (3.91496,3.70184)(3.91667,3.75)(3.91317,3.79764)(3.90456,3.84476)
- (3.89092,3.89138)(3.87233,3.93749)(3.84887,3.98312)
- (3.82061,4.02827)(3.78763,4.07294)(3.75,4.11715)(3.7078,4.16089)
- (3.6611,4.20419)(3.60997,4.24703)(3.55447,4.28944)
-%%
-\path(3.45806,3.21828)(3.52096,3.26413)(3.57809,3.30969)
- (3.6295,3.35496)(3.67526,3.39995)(3.71541,3.44466)(3.75,3.4891)
- (3.77909,3.53325)(3.80273,3.57714)(3.82096,3.62075)(3.83384,3.6641)
- (3.84142,3.70718)(3.84375,3.75)(3.84087,3.79256)(3.83283,3.83486)
- (3.81967,3.8769)(3.80146,3.91869)(3.77822,3.96024)(3.75,4.00153)
- (3.71685,4.04257)(3.67882,4.08337)(3.63594,4.12393)
- (3.58827,4.16425)(3.53583,4.20433)(3.47868,4.24417)
-%%
-\path(3.41407,3.29673)(3.47461,3.33478)(3.52983,3.37277)
- (3.57974,3.41071)(3.62435,3.44861)(3.66367,3.48645)
- (3.69771,3.52425)(3.72649,3.56199)(3.75,3.59969)(3.76826,3.63734)
- (3.78129,3.67494)(3.78909,3.7125)(3.79167,3.75)(3.78904,3.78746)
- (3.78121,3.82486)(3.76819,3.86222)(3.75,3.89953)(3.72664,3.9368)
- (3.69812,3.97401)(3.66445,4.01118)(3.62564,4.0483)(3.58171,4.08537)
- (3.53265,4.1224)(3.47849,4.15938)(3.41923,4.19631)
-%%
-\path(3.39296,3.37075)(3.4511,3.40176)(3.50433,3.43287)
- (3.55261,3.46409)(3.59592,3.49541)(3.63424,3.52685)
- (3.66754,3.55839)(3.69579,3.59005)(3.71897,3.62182)
- (3.73705,3.65369)(3.75,3.68568)(3.7578,3.71779)(3.76042,3.75)
- (3.75783,3.78233)(3.75,3.81477)(3.73691,3.84733)(3.71853,3.88)
- (3.69483,3.91279)(3.66578,3.9457)(3.63135,3.97872)(3.59152,4.01186)
- (3.54625,4.04512)(3.49552,4.0785)(3.43929,4.112)(3.37755,4.14562)
-%%
-\path(3.39286,3.44071)(3.44871,3.46535)(3.5,3.49019)
- (3.54669,3.51523)(3.58871,3.54048)(3.62601,3.56593)
- (3.65854,3.59158)(3.68622,3.61745)(3.70902,3.64352)
- (3.72685,3.66981)(3.73967,3.69632)(3.74741,3.72305)(3.75,3.75)
- (3.74738,3.77718)(3.7395,3.80458)(3.72627,3.83222)(3.70763,3.86009)
- (3.68351,3.8882)(3.65385,3.91654)(3.61856,3.94513)(3.57759,3.97397)
- (3.53084,4.00306)(3.47826,4.0324)(3.41976,4.062)(3.35526,4.09185)
-%%
-\path(3.41207,3.50691)(3.46585,3.5258)(3.51542,3.54493)
- (3.56068,3.56429)(3.60155,3.58389)(3.63797,3.60374)
- (3.66983,3.62385)(3.69705,3.6442)(3.71955,3.66482)(3.73723,3.6857)
- (3.75,3.70686)(3.75776,3.72829)(3.76042,3.75)(3.75786,3.772)
- (3.75,3.79429)(3.73672,3.81688)(3.71791,3.83978)(3.69345,3.86299)
- (3.66325,3.88651)(3.62716,3.91036)(3.58508,3.93454)
- (3.53687,3.95906)(3.48241,3.98392)(3.42157,4.00914)(3.3542,4.03471)
-%%
-\path(3.44909,3.56967)(3.50114,3.58335)(3.54927,3.59725)
- (3.59338,3.61138)(3.63338,3.62575)(3.66914,3.64036)
- (3.70058,3.65523)(3.72757,3.67034)(3.75,3.68572)(3.76775,3.70137)
- (3.7807,3.71729)(3.78871,3.7335)(3.79167,3.75)(3.78942,3.7668)
- (3.78182,3.7839)(3.76873,3.80132)(3.75,3.81907)(3.72546,3.83715)
- (3.69495,3.85557)(3.6583,3.87434)(3.61533,3.89348)(3.56585,3.91299)
- (3.50967,3.93289)(3.4466,3.95318)(3.37642,3.97388)
-%%
-\path(3.50255,3.62924)(3.55328,3.63818)(3.60037,3.64731)
- (3.6437,3.65662)(3.68317,3.66613)(3.71864,3.67584)(3.75,3.68576)
- (3.7771,3.69589)(3.79982,3.70624)(3.81799,3.71682)(3.83148,3.72763)
- (3.84012,3.73869)(3.84375,3.75)(3.8422,3.76157)(3.83527,3.77341)
- (3.8228,3.78553)(3.80457,3.79794)(3.78037,3.81064)(3.75,3.82366)
- (3.71321,3.837)(3.66978,3.85067)(3.61944,3.8647)(3.56192,3.87908)
- (3.49696,3.89383)(3.42425,3.90898)
-%%
-\path(3.57125,3.68585)(3.62111,3.6905)(3.66761,3.69525)
- (3.71062,3.70012)(3.75,3.70511)(3.78562,3.71023)(3.81734,3.71548)
- (3.84501,3.72086)(3.86847,3.72638)(3.88754,3.73205)
- (3.90206,3.73787)(3.91183,3.74385)(3.91667,3.75)(3.91636,3.75632)
- (3.91068,3.76281)(3.89941,3.7695)(3.8823,3.77637)(3.85908,3.78346)
- (3.82949,3.79075)(3.79324,3.79827)(3.75,3.80602)(3.69946,3.81401)
- (3.64125,3.82226)(3.57502,3.83078)(3.50036,3.83958)
-%%
-\path(3.65406,3.73974)(3.70358,3.74046)(3.75,3.74121)
- (3.79318,3.74198)(3.833,3.74276)(3.86929,3.74358)(3.90191,3.74441)
- (3.93068,3.74527)(3.95544,3.74616)(3.976,3.74708)(3.99216,3.74802)
- (4.0037,3.74899)(4.01042,3.75)(4.01206,3.75104)(4.00837,3.75211)
- (3.99908,3.75322)(3.9839,3.75437)(3.96252,3.75556)(3.9346,3.75679)
- (3.89979,3.75807)(3.8577,3.75939)(3.80792,3.76076)(3.75,3.76219)
- (3.68346,3.76367)(3.60778,3.76522)
-%%
-\path(3.75,3.79107)(3.79972,3.78823)(3.84661,3.7853)
- (3.89054,3.78228)(3.93135,3.77916)(3.9689,3.77593)(4.00301,3.7726)
- (4.03353,3.76915)(4.06025,3.76559)(4.08298,3.7619)(4.10151,3.75807)
- (4.1156,3.75411)(4.125,3.75)(4.12945,3.74573)(4.12867,3.7413)
- (4.12234,3.7367)(4.11013,3.73191)(4.09167,3.72692)(4.06658,3.72172)
- (4.03443,3.71631)(3.99475,3.71065)(3.94705,3.70474)
- (3.89077,3.69857)(3.8253,3.6921)(3.75,3.68532)
-%%
-\path(3.75,2.95191)(3.68279,2.9999)(3.62348,3.04636)
- (3.57169,3.09136)(3.52707,3.13497)(3.4893,3.17726)(3.45806,3.21828)
- (3.43308,3.25809)(3.41407,3.29673)(3.40078,3.33428)
- (3.39296,3.37075)(3.39039,3.40622)(3.39286,3.44071)
- (3.40015,3.47426)(3.41207,3.50691)(3.42844,3.5387)(3.44909,3.56967)
- (3.47384,3.59984)(3.50255,3.62924)(3.53507,3.6579)(3.57125,3.68585)
- (3.61095,3.71312)(3.65406,3.73974)(3.70045,3.76571)(3.75,3.79107)
-%%
-\path(3.87769,3.10015)(3.81014,3.13738)(3.75,3.17364)
- (3.69699,3.20897)(3.65084,3.24339)(3.61129,3.27696)
- (3.57809,3.30969)(3.55101,3.34161)(3.52983,3.37277)
- (3.51434,3.40318)(3.50433,3.43287)(3.49961,3.46187)(3.5,3.49019)
- (3.50533,3.51787)(3.51542,3.54493)(3.53012,3.57138)
- (3.54927,3.59725)(3.57273,3.62255)(3.60037,3.64731)
- (3.63203,3.67153)(3.66761,3.69525)(3.70697,3.71847)(3.75,3.74121)
- (3.79658,3.76348)(3.84661,3.7853)
-%%
-\path(3.97698,3.24175)(3.91004,3.26948)(3.85004,3.29665)
- (3.79676,3.32326)(3.75,3.34934)(3.70956,3.3749)(3.67526,3.39995)
- (3.64691,3.42452)(3.62435,3.44861)(3.60741,3.47223)
- (3.59592,3.49541)(3.58974,3.51816)(3.58871,3.54048)
- (3.59269,3.56239)(3.60155,3.58389)(3.61516,3.60501)
- (3.63338,3.62575)(3.65609,3.64612)(3.68317,3.66613)
- (3.71451,3.68579)(3.75,3.70511)(3.78953,3.7241)(3.833,3.74276)
- (3.8803,3.76111)(3.93135,3.77916)
-%%
-\path(4.04971,3.37715)(3.98409,3.39652)(3.92492,3.4156)
- (3.87206,3.43439)(3.82538,3.45289)(3.78474,3.47113)(3.75,3.4891)
- (3.72103,3.5068)(3.69771,3.52425)(3.67992,3.54144)(3.66754,3.55839)
- (3.66045,3.57511)(3.65854,3.59158)(3.6617,3.60783)(3.66983,3.62385)
- (3.68282,3.63964)(3.70058,3.65523)(3.723,3.6706)(3.75,3.68576)
- (3.78148,3.70072)(3.81734,3.71548)(3.85752,3.73004)
- (3.90191,3.74441)(3.95043,3.7586)(4.00301,3.7726)
-%%
-\path(4.09761,3.50676)(4.03372,3.51878)(3.97585,3.53068)
- (3.9239,3.54247)(3.87779,3.55414)(3.83742,3.56569)(3.80273,3.57714)
- (3.77361,3.58847)(3.75,3.59969)(3.73181,3.61081)(3.71897,3.62182)
- (3.7114,3.63272)(3.70902,3.64352)(3.71176,3.65422)(3.71955,3.66482)
- (3.73232,3.67532)(3.75,3.68572)(3.77252,3.69603)(3.79982,3.70624)
- (3.83182,3.71636)(3.86847,3.72638)(3.90969,3.73632)
- (3.95544,3.74616)(4.00565,3.75592)(4.06025,3.76559)
-%%
-\path(4.12223,3.63093)(4.06031,3.63652)(4.00399,3.64209)
- (3.95323,3.64764)(3.90797,3.65315)(3.86819,3.65864)(3.83384,3.6641)
- (3.80489,3.66953)(3.78129,3.67494)(3.76301,3.68033)(3.75,3.68568)
- (3.74223,3.69101)(3.73967,3.69632)(3.74227,3.7016)(3.75,3.70686)
- (3.76282,3.71209)(3.7807,3.71729)(3.8036,3.72248)(3.83148,3.72763)
- (3.86431,3.73277)(3.90206,3.73787)(3.94468,3.74296)
- (3.99216,3.74802)(4.04444,3.75306)(4.10151,3.75807)
-%%
-\path(4.125,3.75)(4.0651,3.75)(4.01042,3.75)(3.96094,3.75)
- (3.91667,3.75)(3.8776,3.75)(3.84375,3.75)(3.8151,3.75)
- (3.79167,3.75)(3.77344,3.75)(3.76042,3.75)(3.7526,3.75)(3.75,3.75)
- (3.7526,3.75)(3.76042,3.75)(3.77344,3.75)(3.79167,3.75)
- (3.8151,3.75)(3.84375,3.75)(3.8776,3.75)(3.91667,3.75)
- (3.96094,3.75)(4.01042,3.75)(4.0651,3.75)(4.125,3.75)
-%%
-\path(4.10725,3.86428)(4.04926,3.85943)(3.99613,3.85457)
- (3.94789,3.84967)(3.90456,3.84476)(3.8662,3.83982)(3.83283,3.83486)
- (3.80449,3.82987)(3.78121,3.82486)(3.76304,3.81983)(3.75,3.81477)
- (3.74214,3.80969)(3.7395,3.80458)(3.7421,3.79945)(3.75,3.79429)
- (3.76323,3.78911)(3.78182,3.7839)(3.80582,3.77867)(3.83527,3.77341)
- (3.87021,3.76812)(3.91068,3.76281)(3.95672,3.75748)
- (4.00837,3.75211)(4.06567,3.74672)(4.12867,3.7413)
-%%
-\path(4.07018,3.97405)(4.01387,3.96504)(3.96208,3.95594)
- (3.91488,3.94676)(3.87233,3.93749)(3.8345,3.92814)(3.80146,3.91869)
- (3.77327,3.90916)(3.75,3.89953)(3.73173,3.88982)(3.71853,3.88)
- (3.71047,3.87009)(3.70763,3.86009)(3.71008,3.84998)
- (3.71791,3.83978)(3.73119,3.82947)(3.75,3.81907)(3.77443,3.80855)
- (3.80457,3.79794)(3.84049,3.78721)(3.8823,3.77637)(3.93007,3.76543)
- (3.9839,3.75437)(4.04389,3.7432)(4.11013,3.73191)
-%%
-\path(4.01493,4.07958)(3.95994,4.06701)(3.90916,4.05428)
- (3.86269,4.04136)(3.82061,4.02827)(3.78301,4.01499)(3.75,4.00153)
- (3.72167,3.98787)(3.69812,3.97401)(3.67945,3.95996)(3.66578,3.9457)
- (3.6572,3.93123)(3.65385,3.91654)(3.65582,3.90164)(3.66325,3.88651)
- (3.67625,3.87116)(3.69495,3.85557)(3.71949,3.83974)(3.75,3.82366)
- (3.78662,3.80733)(3.82949,3.79075)(3.87877,3.77391)(3.9346,3.75679)
- (3.99715,3.7394)(4.06658,3.72172)
-%%
-\path(3.94252,4.1811)(3.8884,4.16554)(3.8382,4.1497)
- (3.79203,4.13357)(3.75,4.11715)(3.71222,4.10042)(3.67882,4.08337)
- (3.64992,4.066)(3.62564,4.0483)(3.60613,4.03026)(3.59152,4.01186)
- (3.58195,3.9931)(3.57759,3.97397)(3.57857,3.95446)(3.58508,3.93454)
- (3.59727,3.91422)(3.61533,3.89348)(3.63943,3.8723)(3.66978,3.85067)
- (3.70656,3.82859)(3.75,3.80602)(3.8003,3.78296)(3.8577,3.75939)
- (3.92244,3.73529)(3.99475,3.71065)
-%%
-\path(3.85391,4.27884)(3.80014,4.26079)(3.75,4.24234)
- (3.70361,4.22348)(3.6611,4.20419)(3.62261,4.18445)(3.58827,4.16425)
- (3.55823,4.14357)(3.53265,4.1224)(3.51169,4.10072)(3.49552,4.0785)
- (3.48431,4.05574)(3.47826,4.0324)(3.47756,4.00847)(3.48241,3.98392)
- (3.49304,3.95874)(3.50967,3.93289)(3.53255,3.90634)
- (3.56192,3.87908)(3.59806,3.85106)(3.64125,3.82226)
- (3.69179,3.79265)(3.75,3.76219)(3.81621,3.73084)(3.89077,3.69857)
-%%
-\path(3.75,4.373)(3.69598,4.35293)(3.64529,4.33232)
- (3.59808,4.31117)(3.55447,4.28944)(3.51462,4.26712)
- (3.47868,4.24417)(3.44683,4.22058)(3.41923,4.19631)
- (3.39607,4.17133)(3.37755,4.14562)(3.36387,4.11914)
- (3.35526,4.09185)(3.35196,4.06372)(3.3542,4.03471)(3.36226,4.00478)
- (3.37642,3.97388)(3.39698,3.94196)(3.42425,3.90898)
- (3.45859,3.87487)(3.50036,3.83958)(3.54995,3.80305)
- (3.60778,3.76522)(3.6743,3.726)(3.75,3.68532)
-%%
-\path(3.75,3.75)(3,3.75)
-%%
-\path(3.08562,3.76557)(3.11416,3.76557)
-\path(3.05708,3.76038)(3.11416,3.76038)
-\path(3.02854,3.75519)(3.11416,3.75519)
-\path(3,3.75)(3.11416,3.75)
-\path(3.02854,3.74481)(3.11416,3.74481)
-\path(3.05708,3.73962)(3.11416,3.73962)
-\path(3.08562,3.73443)(3.11416,3.73443)
-\path(3.11416,3.75)(3.11416,3.77076)(3,3.75)(3.11416,3.72924)(3.11416,3.75)
-%%
-\path(3.75,3.75)(3.75,3.29644)
-%%
-\path(3.73443,3.33925)(3.73443,3.35352)
-\path(3.73962,3.32498)(3.73962,3.35352)
-\path(3.74481,3.31071)(3.74481,3.35352)
-\path(3.75,3.29644)(3.75,3.35352)
-\path(3.75519,3.31071)(3.75519,3.35352)
-\path(3.76038,3.32498)(3.76038,3.35352)
-\path(3.76557,3.33925)(3.76557,3.35352)
-\path(3.75,3.35352)(3.72924,3.35352)(3.75,3.29644)(3.77076,3.35352)(3.75,3.35352)
-%%
-\allinethickness{1pt}%
-\color{rgb_980000}%
-\path(4.875,2.625)
- (4.875,4.875)(2.625,4.875)(2.625,2.625)(4.875,2.625)
-%%
-\allinethickness{0.4pt}%
-\color{rgb_000000}%
-\path(3.17823,0.61398)
- (3.2696,0.641697)(3.35808,0.672175)(3.44338,0.705355)
- (3.52526,0.741164)(3.60346,0.779511)(3.67777,0.820294)
- (3.748,0.863394)(3.81395,0.908683)(3.87549,0.956019)
- (3.93248,1.00525)(3.98483,1.05622)(4.03246,1.10877)
- (4.07534,1.16272)(4.11344,1.2179)(4.14676,1.27413)(4.17536,1.33125)
- (4.19927,1.38908)(4.21858,1.44744)(4.23339,1.50617)
- (4.24381,1.56512)(4.24998,1.62413)(4.25204,1.68304)
- (4.25015,1.74173)(4.24449,1.80006)
-%%
-\path(3.20899,0.72735)(3.28831,0.749673)(3.36501,0.774599)
- (3.43887,0.802101)(3.50964,0.832134)(3.57711,0.86464)
- (3.64108,0.899549)(3.70136,0.936774)(3.75778,0.976219)
- (3.8102,1.01777)(3.85849,1.06132)(3.90256,1.10672)(3.94232,1.15384)
- (3.97773,1.20253)(4.00875,1.25265)(4.03538,1.30404)
- (4.05764,1.35653)(4.07557,1.40997)(4.08922,1.46419)
- (4.09868,1.51905)(4.10405,1.57438)(4.10544,1.63004)
- (4.10297,1.68587)(4.0968,1.74173)(4.08706,1.79749)
-%%
-\path(3.25032,0.823133)(3.31889,0.840786)(3.38504,0.860893)
- (3.44855,0.883449)(3.50922,0.908436)(3.56683,0.935822)
- (3.62121,0.965564)(3.67218,0.997604)(3.7196,1.03187)
- (3.76331,1.06829)(3.8032,1.10676)(3.83917,1.14717)(3.87115,1.18943)
- (3.89907,1.23339)(3.92291,1.27893)(3.94265,1.32592)
- (3.95829,1.37421)(3.96988,1.42366)(3.97745,1.47411)
- (3.98107,1.52542)(3.98083,1.57745)(3.97684,1.63004)(3.9692,1.68304)
- (3.95805,1.73632)(3.94353,1.78975)
-%%
-\path(3.30152,0.904095)(3.36048,0.917621)(3.41712,0.933458)
- (3.47125,0.951621)(3.52267,0.972112)(3.5712,0.994925)
- (3.61667,1.02004)(3.65892,1.04742)(3.6978,1.07702)(3.73319,1.10879)
- (3.76496,1.14265)(3.79303,1.17853)(3.81732,1.21634)
- (3.83777,1.25597)(3.85434,1.29732)(3.86702,1.34026)
- (3.87582,1.38467)(3.88074,1.43043)(3.88184,1.47739)
- (3.87918,1.52542)(3.87283,1.57438)(3.8629,1.62413)(3.84948,1.67451)
- (3.83271,1.72541)(3.81271,1.77667)
-%%
-\path(3.36219,0.972363)(3.41251,0.982168)(3.46056,0.994146)
- (3.50614,1.00833)(3.54909,1.02474)(3.58923,1.04339)(3.6264,1.06427)
- (3.66046,1.08739)(3.69125,1.1127)(3.71867,1.14019)(3.74261,1.16981)
- (3.76296,1.20149)(3.77966,1.23517)(3.79266,1.27077)(3.8019,1.3082)
- (3.80739,1.34736)(3.80911,1.38814)(3.80708,1.43043)
- (3.80136,1.47411)(3.79199,1.51905)(3.77905,1.56512)
- (3.76263,1.61219)(3.74284,1.66012)(3.71979,1.70877)(3.69363,1.75801)
-%%
-\path(3.43214,1.02959)(3.4747,1.03597)(3.51496,1.04439)
- (3.55275,1.0549)(3.58792,1.06753)(3.6203,1.08231)(3.64973,1.09927)
- (3.67607,1.1184)(3.6992,1.13971)(3.71899,1.16319)(3.73534,1.18881)
- (3.74816,1.21653)(3.75738,1.24631)(3.76294,1.27809)(3.7648,1.3118)
- (3.76296,1.34736)(3.7574,1.38467)(3.74815,1.42366)(3.73525,1.46419)
- (3.71875,1.50617)(3.69874,1.54948)(3.67529,1.59398)
- (3.64852,1.63955)(3.61855,1.68606)(3.58552,1.73338)
-%%
-\path(3.51138,1.07706)(3.54694,1.08023)(3.58016,1.0853)
- (3.61086,1.09235)(3.63888,1.10142)(3.66407,1.11255)
- (3.68628,1.12577)(3.70537,1.14113)(3.72121,1.15862)
- (3.73369,1.17827)(3.74271,1.20006)(3.74817,1.22398)(3.75,1.25)
- (3.74815,1.27809)(3.74259,1.3082)(3.73328,1.34026)(3.72024,1.37421)
- (3.70349,1.40997)(3.68306,1.44744)(3.65901,1.48653)
- (3.63142,1.52713)(3.60039,1.56912)(3.56602,1.61239)
- (3.52843,1.65681)(3.48778,1.70226)
-%%
-\path(3.60007,1.11578)(3.62936,1.11587)(3.65621,1.11774)
- (3.68045,1.12147)(3.70192,1.1271)(3.72047,1.13471)(3.73595,1.14434)
- (3.74823,1.15603)(3.75716,1.16982)(3.76264,1.18573)
- (3.76456,1.20378)(3.76283,1.22398)(3.75738,1.24631)
- (3.74815,1.27077)(3.73509,1.29732)(3.7182,1.32592)(3.69748,1.35653)
- (3.67293,1.38908)(3.6446,1.42349)(3.61256,1.4597)(3.57688,1.49759)
- (3.53766,1.53708)(3.49501,1.57805)(3.44908,1.62039)(3.40001,1.66397)
-%%
-\path(3.69855,1.14651)(3.72225,1.14361)(3.74337,1.14236)
- (3.76176,1.14283)(3.77726,1.14511)(3.78969,1.14925)
- (3.79892,1.15533)(3.8048,1.16341)(3.80719,1.17352)(3.80598,1.18573)
- (3.80105,1.20006)(3.7923,1.21653)(3.77966,1.23517)(3.76307,1.25597)
- (3.74248,1.27893)(3.71787,1.30404)(3.68923,1.33125)
- (3.65659,1.36053)(3.61998,1.39183)(3.57947,1.42509)
- (3.53514,1.46021)(3.48708,1.49713)(3.43543,1.53574)
- (3.38033,1.57593)(3.32194,1.6176)
-%%
-\path(3.80729,1.16986)(3.82604,1.16398)(3.84208,1.15962)
- (3.85522,1.15685)(3.86529,1.15577)(3.87214,1.15645)(3.8756,1.15897)
- (3.87551,1.16341)(3.87174,1.16982)(3.86415,1.17827)
- (3.85261,1.18881)(3.83704,1.20149)(3.81732,1.21634)(3.7934,1.23339)
- (3.76522,1.25265)(3.73275,1.27413)(3.69598,1.29782)
- (3.65492,1.32371)(3.60961,1.35175)(3.56011,1.3819)(3.50651,1.41411)
- (3.4489,1.44831)(3.38744,1.48442)(3.32226,1.52235)(3.25354,1.56199)
-%%
-\path(3.92693,1.18624)(3.94139,1.17736)(3.95296,1.16985)
- (3.96145,1.1638)(3.96668,1.1593)(3.96848,1.15645)(3.96666,1.15533)
- (3.96105,1.15603)(3.95151,1.15862)(3.93788,1.16319)
- (3.92002,1.16981)(3.89781,1.17853)(3.87115,1.18943)
- (3.83994,1.20253)(3.80413,1.2179)(3.76366,1.23554)(3.71851,1.25549)
- (3.66869,1.27773)(3.61423,1.30227)(3.55518,1.32909)
- (3.49162,1.35815)(3.42367,1.38939)(3.35146,1.42277)
- (3.27515,1.45821)(3.19494,1.49562)
-%%
-\path(4.05827,1.19595)(4.06911,1.18399)(4.07686,1.17324)
- (4.08133,1.1638)(4.08232,1.15577)(4.07962,1.14925)(4.07305,1.14434)
- (4.06242,1.14113)(4.04754,1.13971)(4.02825,1.14019)
- (4.00437,1.14265)(3.97577,1.14717)(3.94232,1.15384)(3.9039,1.16272)
- (3.86043,1.17387)(3.81183,1.18736)(3.75806,1.20321)
- (3.69912,1.22147)(3.63501,1.24216)(3.56578,1.26527)(3.4915,1.29081)
- (3.41229,1.31874)(3.32827,1.34904)(3.23963,1.38165)(3.14657,1.4165)
-%%
-\path(4.20232,1.19917)(4.21023,1.18399)(4.21485,1.16985)
- (4.21597,1.15685)(4.21335,1.14511)(4.20679,1.13471)
- (4.19606,1.12577)(4.18094,1.1184)(4.16122,1.1127)(4.1367,1.10879)
- (4.10719,1.10676)(4.07249,1.10672)(4.03246,1.10877)(3.98694,1.113)
- (3.93582,1.11951)(3.87898,1.12838)(3.81635,1.13966)(3.7479,1.15344)
- (3.67361,1.16975)(3.59351,1.18864)(3.50765,1.21013)
- (3.41613,1.23423)(3.31908,1.26093)(3.21668,1.2902)(3.10914,1.32202)
-%%
-\path(3.17823,0.61398)(3.19224,0.673067)(3.20899,0.72735)
- (3.22838,0.77725)(3.25032,0.823133)(3.27472,0.865321)
- (3.30152,0.904095)(3.33069,0.939703)(3.36219,0.972363)
- (3.39601,1.00227)(3.43214,1.02959)(3.47059,1.05448)
- (3.51138,1.07706)(3.55453,1.09746)(3.60007,1.11578)(3.64806,1.1321)
- (3.69855,1.14651)(3.7516,1.15908)(3.80729,1.16986)(3.8657,1.1789)
- (3.92693,1.18624)(3.99108,1.19191)(4.05827,1.19595)
- (4.12864,1.19837)(4.20232,1.19917)
-%%
-\path(3.35808,0.672175)(3.35983,0.72558)(3.36501,0.774599)
- (3.37347,0.819598)(3.38504,0.860893)(3.39963,0.898765)
- (3.41712,0.933458)(3.43745,0.965188)(3.46056,0.994146)
- (3.4864,1.0205)(3.51496,1.04439)(3.54621,1.06595)(3.58016,1.0853)
- (3.61682,1.10254)(3.65621,1.11774)(3.69838,1.13099)
- (3.74337,1.14236)(3.79125,1.15188)(3.84208,1.15962)(3.89595,1.1656)
- (3.95296,1.16985)(4.01323,1.17239)(4.07686,1.17324)
- (4.14402,1.17239)(4.21485,1.16985)
-%%
-\path(3.52526,0.741164)(3.51545,0.788632)(3.50964,0.832134)
- (3.50762,0.871978)(3.50922,0.908436)(3.51427,0.941744)
- (3.52267,0.972112)(3.5343,0.999723)(3.54909,1.02474)
- (3.56698,1.0473)(3.58792,1.06753)(3.61189,1.08554)(3.63888,1.10142)
- (3.66888,1.11525)(3.70192,1.1271)(3.73803,1.13704)(3.77726,1.14511)
- (3.81965,1.15134)(3.86529,1.15577)(3.91427,1.15842)(3.96668,1.1593)
- (4.02266,1.15842)(4.08232,1.15577)(4.14583,1.15134)(4.21335,1.14511)
-%%
-\path(3.67777,0.820294)(3.65721,0.861701)(3.64108,0.899549)
- (3.62915,0.934095)(3.62121,0.965564)(3.6171,0.994154)
- (3.61667,1.02004)(3.6198,1.04337)(3.6264,1.06427)(3.6364,1.08287)
- (3.64973,1.09927)(3.66636,1.11354)(3.68628,1.12577)
- (3.70947,1.13602)(3.73595,1.14434)(3.76576,1.15076)
- (3.79892,1.15533)(3.83551,1.15806)(3.8756,1.15897)(3.91928,1.15806)
- (3.96666,1.15533)(4.01786,1.15076)(4.07305,1.14434)
- (4.13239,1.13602)(4.19606,1.12577)
-%%
-\path(3.81395,0.908683)(3.7835,0.944037)(3.75778,0.976219)
- (3.73655,1.00544)(3.7196,1.03187)(3.70673,1.05569)(3.6978,1.07702)
- (3.69268,1.09599)(3.69125,1.1127)(3.69345,1.12725)(3.6992,1.13971)
- (3.70846,1.15015)(3.72121,1.15862)(3.73744,1.16517)
- (3.75716,1.16982)(3.7804,1.1726)(3.80719,1.17352)(3.83761,1.1726)
- (3.87174,1.16982)(3.90966,1.16517)(3.95151,1.15862)
- (3.99741,1.15015)(4.04754,1.13971)(4.10207,1.12725)(4.16122,1.1127)
-%%
-\path(3.93248,1.00525)(3.89302,1.03469)(3.85849,1.06132)
- (3.82862,1.08529)(3.8032,1.10676)(3.78203,1.12584)(3.76496,1.14265)
- (3.75186,1.15728)(3.74261,1.16981)(3.73712,1.1803)(3.73534,1.18881)
- (3.73721,1.19538)(3.74271,1.20006)(3.75182,1.20285)
- (3.76456,1.20378)(3.78095,1.20285)(3.80105,1.20006)
- (3.82491,1.19538)(3.85261,1.18881)(3.88428,1.1803)(3.92002,1.16981)
- (3.95999,1.15728)(4.00437,1.14265)(4.05336,1.12584)(4.10719,1.10676)
-%%
-\path(4.03246,1.10877)(3.9849,1.13255)(3.94232,1.15384)
- (3.90448,1.17276)(3.87115,1.18943)(3.84215,1.20393)
- (3.81732,1.21634)(3.79653,1.22673)(3.77966,1.23517)
- (3.76664,1.24168)(3.75738,1.24631)(3.75184,1.24908)(3.75,1.25)
- (3.75184,1.24908)(3.75738,1.24631)(3.76664,1.24168)
- (3.77966,1.23517)(3.79653,1.22673)(3.81732,1.21634)
- (3.84215,1.20393)(3.87115,1.18943)(3.90448,1.17276)
- (3.94232,1.15384)(3.9849,1.13255)(4.03246,1.10877)
-%%
-\path(4.11344,1.2179)(4.05862,1.23638)(4.00875,1.25265)
- (3.96358,1.26681)(3.92291,1.27893)(3.88655,1.28908)
- (3.85434,1.29732)(3.82617,1.30368)(3.8019,1.3082)(3.78147,1.3109)
- (3.7648,1.3118)(3.75185,1.3109)(3.74259,1.3082)(3.737,1.30368)
- (3.73509,1.29732)(3.73691,1.28908)(3.74248,1.27893)
- (3.75189,1.26681)(3.76522,1.25265)(3.78259,1.23638)(3.80413,1.2179)
- (3.83001,1.1971)(3.86043,1.17387)(3.89561,1.14806)(3.93582,1.11951)
-%%
-\path(4.17536,1.33125)(4.1141,1.34487)(4.05764,1.35653)
- (4.00578,1.36629)(3.95829,1.37421)(3.91502,1.38033)
- (3.87582,1.38467)(3.84055,1.38727)(3.80911,1.38814)
- (3.78141,1.38727)(3.7574,1.38467)(3.73702,1.38033)(3.72024,1.37421)
- (3.70706,1.36629)(3.69748,1.35653)(3.69152,1.34487)
- (3.68923,1.33125)(3.69069,1.3156)(3.69598,1.29782)(3.70521,1.27783)
- (3.71851,1.25549)(3.73607,1.23067)(3.75806,1.20321)
- (3.78473,1.17295)(3.81635,1.13966)
-%%
-\path(4.21858,1.44744)(4.1516,1.45669)(4.08922,1.46419)
- (4.03123,1.46999)(3.97745,1.47411)(3.9277,1.47657)(3.88184,1.47739)
- (3.83976,1.47657)(3.80136,1.47411)(3.76654,1.46999)
- (3.73525,1.46419)(3.70743,1.45669)(3.68306,1.44744)
- (3.66212,1.43639)(3.6446,1.42349)(3.63055,1.40867)(3.61998,1.39183)
- (3.61298,1.3729)(3.60961,1.35175)(3.60998,1.32826)(3.61423,1.30227)
- (3.62251,1.27364)(3.63501,1.24216)(3.65195,1.20761)(3.67361,1.16975)
-%%
-\path(4.24381,1.56512)(4.17177,1.57053)(4.10405,1.57438)
- (4.04046,1.57668)(3.98083,1.57745)(3.925,1.57668)(3.87283,1.57438)
- (3.82422,1.57053)(3.77905,1.56512)(3.73724,1.55811)
- (3.69874,1.54948)(3.66348,1.53917)(3.63142,1.52713)
- (3.60256,1.51329)(3.57688,1.49759)(3.5544,1.47993)(3.53514,1.46021)
- (3.51915,1.43832)(3.50651,1.41411)(3.49729,1.38745)
- (3.49162,1.35815)(3.48963,1.32601)(3.4915,1.29081)(3.49742,1.25228)(3.50765,1.21013)
-%%
-\path(4.25204,1.68304)(4.1755,1.68516)(4.10297,1.68587)
- (4.03426,1.68516)(3.9692,1.68304)(3.90765,1.6795)(3.84948,1.67451)
- (3.79458,1.66806)(3.74284,1.66012)(3.69417,1.65063)
- (3.64852,1.63955)(3.60582,1.62683)(3.56602,1.61239)
- (3.52909,1.59616)(3.49501,1.57805)(3.46379,1.55795)
- (3.43543,1.53574)(3.40997,1.51128)(3.38744,1.48442)
- (3.36791,1.45499)(3.35146,1.42277)(3.3382,1.38755)(3.32827,1.34904)
- (3.32183,1.30695)(3.31908,1.26093)
-%%
-\path(4.24449,1.80006)(4.16396,1.79942)(4.08706,1.79749)
- (4.01364,1.79428)(3.94353,1.78975)(3.87659,1.78389)
- (3.81271,1.77667)(3.75175,1.76806)(3.69363,1.75801)
- (3.63824,1.74647)(3.58552,1.73338)(3.53538,1.71867)
- (3.48778,1.70226)(3.44267,1.68406)(3.40001,1.66397)
- (3.35977,1.64186)(3.32194,1.6176)(3.28653,1.59104)(3.25354,1.56199)
- (3.22299,1.53026)(3.19494,1.49562)(3.16944,1.4578)(3.14657,1.4165)
- (3.12642,1.37138)(3.10914,1.32202)
-%%
-\path(3.75,1.25)(3.27753,1.48623)
-%%
-\path(3.34504,1.46989)(3.36522,1.4598)
-\path(3.32254,1.47533)(3.3629,1.45515)
-\path(3.30004,1.48078)(3.36058,1.45051)
-\path(3.27753,1.48623)(3.35825,1.44587)
-\path(3.29539,1.4715)(3.35593,1.44123)
-\path(3.31325,1.45677)(3.35361,1.43659)
-\path(3.33111,1.44204)(3.35129,1.43195)
-\path(3.35825,1.44587)(3.36754,1.46444)(3.27753,1.48623)
- (3.34897,1.42731)(3.35825,1.44587)
-%%
-\path(3.75,1.25)(3.14565,0.947826)
-%%
-\path(3.19923,0.99202)(3.21941,1.00211)
-\path(3.18137,0.977289)(3.22173,0.997469)
-\path(3.16351,0.962557)(3.22405,0.992827)
-\path(3.14565,0.947826)(3.22637,0.988186)
-\path(3.16815,0.953275)(3.22869,0.983545)
-\path(3.19065,0.958724)(3.23101,0.978904)
-\path(3.21315,0.964173)(3.23333,0.974263)
-\path(3.22637,0.988186)(3.21709,1.00675)(3.14565,0.947826)
- (3.23565,0.969622)(3.22637,0.988186)
-%%
-\allinethickness{1pt}%
-\color{rgb_980000}%
-\path(4.875,0.125)
- (4.875,2.375)(2.625,2.375)(2.625,0.125)(4.875,0.125)
-%%
-\end{picture}
diff --git a/graphics/epix/doc/layout.xp b/graphics/epix/doc/layout.xp
deleted file mode 100644
index cd3e201011..0000000000
--- a/graphics/epix/doc/layout.xp
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*-ePiX-*- */
-/* layout.xp -- June 27, 2007 */
-#include "epix.h"
-using namespace ePiX;
-
-const double a(sqrt(3));
-P f(double u, double v)
-{
- return P((u-v)*(u+v), 2*u*v, u); //u*(u-a*v)*(u+a*v));
-}
-
-int main()
-{
- picture(P(0,0), P(2,3), "5x7.5in");
-
- begin();
-
- domain R(P(-1,-1), P(1,1), mesh(12,12), mesh(24,24));
-
- for (int i=0; i<2; ++i)
- for (int j=0; j<3; ++j)
- {
- screen my(P(-3,-3), P(3,3));
- activate(my);
- border(Red(0.6), "1pt");
- camera.at(sph(10, (2*j+i+1)*M_PI/8, M_PI/6));
-
- plot(f, R);
- arrow(P(0,0,0), 2*E_1);
- arrow(P(0,0,0), 2*E_2);
- inset(P(i+0.05,2.05-j), P(i+0.95,2.95-j));
- }
-
- end();
-}
-
diff --git a/graphics/epix/doc/manual.pdf b/graphics/epix/doc/manual.pdf
deleted file mode 100644
index bd8fc76619..0000000000
--- a/graphics/epix/doc/manual.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/epix/doc/manual.tex b/graphics/epix/doc/manual.tex
deleted file mode 100644
index 71aa59aa97..0000000000
--- a/graphics/epix/doc/manual.tex
+++ /dev/null
@@ -1,5030 +0,0 @@
-%% Version 1.2.0
-\documentclass[12pt]{book}
-\usepackage{amsmath,latexsym,epic,eepic,pstricks,xcolor,comment}
-\usepackage[dvips,hyperref]{hyperref}
-
-\usepackage{makeidx}
-\makeindex
-
-\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}}
-
-\newcommand{\code}[1]{\texttt{#1}}
-\newcommand{\filename}[1]{\texttt{#1}}
-\newcommand{\Key}[1]{\texttt{#1}}
-\newcommand{\URL}[1]{\texttt{#1}}
-
-%% \setlength{\topmargin}{0.5in}
-\newcommand{\ePiX}{\code{ePiX}}
-\newcommand{\ext}{\code{ePiX\_ext}}
-\newcommand{\epix}{\code{epix}}
-\newcommand{\eepic}{\code{eepic}}
-\newcommand{\C}{\code{C}}
-\newcommand{\CXX}{\code{C++}}
-\newcommand{\pyepix}{\code{Pyepix}}
-
-\DeclareMathOperator{\clip}{clip}
-
-\newcommand{\Header}[1]{\smallskip\noindent\texttt{#1}%
- \index{Header file!{#1}@\texttt{#1}}\quad}
-
-%% Substitution commands easily removable by sed for texinfo:
-%% Remove recalcitrant chunks,
-\newcommand{\texicomment}{}
-\newcommand{\texicommentend}{}
-
-%% mark simple math,
-\newcommand{\teximath}[1]{$#1$}
-%% make function index entries,
-\newcommand{\findex}[1]{}
-
-%% top-level division (first argument for texinfo node name)
-\newcommand{\texinfochapter}[2]{\chapter{#2}}
-\newcommand{\texinfoappendix}[2]{\chapter{#2}}
-
-%%\renewcommand{\subsection*}[1]{\subsection{#1}}
-
-\title{ \ePiX\ Tutorial and \\ Reference Manual}
-\author{Andrew D. Hwang \\
- Department\ of Math and CS \\
- College of the Holy Cross}
-\date{Version 1.2, September, 2007}
-
-\begin{document}
-
-\maketitle
-
-\tableofcontents
-
-\texinfochapter{1}{Introduction}
-
-\ePiX, a collection of batch utilities, creates mathematically
-accurate figures, plots, and animations containing \LaTeX\ typography.
-The input syntax is easy to learn, and the user interface resembles
-that of \LaTeX\ itself: You prepare a scene description in a text
-editor, then ``compile'' the input file into a picture. \LaTeX- and
-web-compatible output types include a \LaTeX\ picture-like environment
-written with \code{PSTricks}, \code{tikz}, or \code{eepic} macros;
-vector images (\code{eps}, \code{ps}, and~\code{pdf}); and bitmapped
-images and movies (\code{png}, \code{mng}, and~\code{gif}).
-
-\ePiX's strengths include:
-
-\begin{itemize}
-\item Quality of output: \ePiX\ creates accurate, publication-quality
- figures whose appearance matches that of \LaTeX. Typography may be
- put in a figure as easily as in an ordinary \LaTeX\ document.
-
-\item Ease of use: Figure objects and their attributes are specified
- by simple, descriptive commands.
-
-\item Flexibility: Objects are described by attributes and Cartesian
- location; as in \LaTeX, printed appearance is determined when the
- figure is compiled. A well-designed figure can be altered
- dramatically, yet precisely, with command-line switches or minor
- changes to the input file.
-
-\item Power and extendibility: \ePiX\ inherits the power of \CXX\ as a
- programming language; variables, data structures, loops, and
- recursion can be used to draw complicated plots and figures with
- just a few lines of input. External code can be incorporated in a
- figure with a command line option or by using a Makefile.
-
-\item Economy of storage and transmission: For a document containing
- many figures, a compressed tar file of the \LaTeX\ sources and
- \ePiX\ files is typically a few percent the size of the compressed
- PostScript file.
-
-\item License: \ePiX\ is \emph{free software}.\index{Free software}
- You are granted the right to use the program for whatever purpose,
- and to inspect, modify, and re-distribute the source code, so long
- as you do not restrict the rights of others to do the same. In
- short, the license is similar to the terms under which theorems are
- published.
-
-\end{itemize}
-
-
-\ePiX\ facilitates logical, as opposed to visual, structuring of
-mathematical figures, analogous to the relationship between \LaTeX\
-and a word processor. A few stylistic defaults streamline the creation
-of simple figures, but there are few internal restrictions on the
-contents or appearance of a figure; aesthetic and practical decisions
-are left to you.
-
-If you are a:
-
-\begin{itemize}
-
-\item Potential user, you may wish to skip immediately to ``Software
- Dependencies'' before investing additional time.
-
-\item New user, proceed from here until you have enough understanding
- to run the software, then experiment with the samples files while
- reading Chapter~\ref{chapter:started}, or return to the manual as
- needed.
-
-\item More advanced user, browse at will, probably starting with
- Chapter~\ref{chapter:ref-man}.
-
-\end{itemize}
-
-This manual is relatively conversational, and occasionally redundant,
-especially between portions meant for readers at different levels of
-familiarity. Throughout, you are assumed to be familiar with \LaTeX\
-and basic linear algebra: the description of points, vectors, lines,
-and planes in three-dimensional space. Other material, such as \CXX\
-syntax, is introduced as needed.
-
-
-\section{Changes in Version~1.2}
-
-\ePiX~1.2.x has been written almost entirely from scratch. The
-conceptual model is unchanged, but there are a few changes of
-syntax. If you're new to~\ePiX, please skip straight to
-Section~\ref{section:software_deps}.
-
-
-\subsection{Syntax Changes}
-
-Except as noted below, \ePiX~1.0 files will compile under
-Version~1.2. Generally, global variables have been deprecated or
-removed, and should be replaced by function calls in new files. The
-following changes are either required, or else strongly recommended
-(and may become mandatory).
-
-\begin{itemize}
-
-\item (Mandatory) The global variable \verb+tix+ in a \filename{flix}
- file must be manipulated through the function \verb+tix()+.
-
-\item (Mandatory) The command \code{use\_pstricks()} is obsolete.
- PSTricks output is obtained systematically as an output format.
-
-\item (Mandatory) Deprecated ``aliases'' no longer exist:
- \code{triple} (for the \code{P} class), \code{D}~(for \code{Deriv}),
- and \code{I}~(for \code{Integral}). Lowercase trig function names
- conflicted with the standard namespace and have been removed.
-
-\item (Mandatory) Geometric object commands (\code{circle},
- \code{plane}, \code{segment}, and~\code{sphere}), which formerly
- created class objects, now perform drawing just as \code{ellipse},
- \code{line}, \code{rect}, etc., do. The classes are available with
- capitalized names (\code{Circle}, etc.).
-
-\item (Mandatory) Camera orientation is controlled with functions
- named \code{tilt}, \code{pan}, and~\code{roll}; each rotates
- the camera about an axis through the viewpoint, not through the
- target.
-
-\item (Recommended) The global size variables \verb+x_min+,
- \verb+x_max+, \verb+y_min+, \verb+y_max+, \verb+x_size+, and
- \verb+y_size+ should be replaced by the function calls
- \verb+xmin()+, etc. (No underscores.)
-
-\item (Suggested) The camera may be accessed through the function
- \code{cam()}.
-
-\item (Suggested) The size and bounding box are given in one command,
- such as \code{picture(P(-1,0), P(1,1), "4x3in")}. The old syntax
- will be retained indefinitely.
-
-\end{itemize}
-
-
-\subsection{New Features}
-
-\begin{itemize}
-
-\item Output is cleanly separated from the internal representation.
- Figures may be written with a choice of macros---\code{PSTricks},
- \code{tikz}, and \code{eepic} at present---and new output types
- are easily coded so long as the format supports arbitrary line
- segments, color, and the ability to place a \LaTeX\ box at a
- specified location.
-
-\item Colors are a manipulable data type, available in RGB, CMY, CMYK,
- and Gray models. \filename{xcolor}-style operations, such as color
- model conversion, blending, superposition, and inversion are
- provided.
-
- The camera has a filter which affects the colors of all scene
- elements. Filters performing CMYK separation are provided.
-
-\item Color filling is controlled with declarations, similarly to line
- colors in \ePiX~1.0. Arrows and markers of type spot, dot, ddot,
- and~circ are now colored like other markers. Parametric surfaces
- may be color-shaded.
-
- If a figure contains many shaded elements, a color-capable output
- format (e.g.\ \code{PSTricks}~or \code{tikz}) should be used for
- efficiency. Filled regions are implemented as fine hatching in
- \filename{eepic}.
-
-\item An \code{axis} class provides coordinate axes with labels in a
- variety of styles: decimals or scientific notation of specified
- precision, fractions, trig fractions, logarithmic labels in
- arbitrary (integer) base, and user-supplied styles.
-
-\item \ePiX~1.2.x performs page layout. Sub-figures may be manipulated
- flexibly. The sample files give several applications.
-
-\item Non-member intersection operators for circles, planes, spheres,
- and segments are provided. A ``non-generic'' intersection does not
- throw an exception, but instead returns an undrawable ``malformed''
- object.
-
-\end{itemize}
-
-
-\section{Software Dependencies}
-\label{section:software_deps}
-
-\index{Installation|(}
-\index{Mac OS X}
-
-If you run GNU/Linux, a BSD, or Solaris, you probably have (and can
-surely install) all the external software needed to use \ePiX. On
-Mac~OS~X, you will need the Apple developer tools and an X~server
-(XCode and XDarwin on the Tiger disks), and the free~\code{fink}
-package manager to build a GNU environment. For Windows, you'll need
-to install Cygwin and several packages. Detailed instructions are
-given below.
-
-``Under the hood'', an input file is successively converted to a
-\LaTeX\ picture; \code{dvi}; PostScript, \code{pdf}~or \code{eps}; and
-if desired, to a bitmapped image or movie. Four shell
-scripts---\epix, \code{laps}, \code{elaps}, and~\code{flix}---automate
-the various file format conversions.
-
-\ePiX\ consists of a \CXX\ library, header, and shell scripts, and
-requires GNU \code{bash} and a compiler \emph{for normal use}. For
-complete functionality, you need \code{g++} (Version~3.2 or later),
-\code{bash}, a text editor (\ePiX\ works particularly well with
-\code{emacs}), a \LaTeX\ distribution, \code{Ghostscript}, \code{gv}
-(or your favorite PS/PDF previewer), and \code{ImageMagick}. GNU
-\code{grep} and \code{sed} are good to have. You may need additional
-``developer packages'' (\code{binutils}, \code{make}) in order to
-build \ePiX. The more up to date your software is, the better your
-experience is likely to be, but bleeding edge versions are not
-necessary, or even always desirable.
-
-Aside from their reliance on specific programs, \ePiX's shell scripts
-are written using Unix-style pathnames. Thus, the most straightforward
-way to use \ePiX\ is to install a GNU environment.
-
-Jay Belanger's \code{emacs} mode allows you to write, compile, and
-view \ePiX\ figures without leaving \code{emacs}. If you use another
-editor, you'll want to create template source files so you don't have
-to type boilerplate code each time you write a new figure.
-\index{Emacs@\code{emacs}}
-
-
-\subsection{Setting up an Environment Under Windows}
-
-\index{Windows operating system|(}
-\begin{comment}
-Version~1.0.4 of \ePiX\ has been implemented in Python~2.2 by Andrew
-Sterian, making \ePiX\ available on any platform that supports Python,
-and without requiring a \CXX~compiler or~\code{bash}. Python is a
-GPL-ed scripting language, and is available with a Windows installer
-and detailed instructions. The easiest alternative for Windows users
-is probably to install Python~2.2 or later (if necessary) and
-\code{Pyepix}. The \code{pyepix} project home page is:
-\URL{claymore.engineer.gvsu.edu/~steriana/Python/index.html}
-\end{comment}
-
-Cygwin can be used to run \ePiX\ under Windows. Download
-\filename{setup.exe} from \URL{www.cygwin.com}, then install the
-packages you need. The following are recommended, and sufficient for
-the actions described in this manual.
-\begin{verbatim}
-(Archive) bzip2, tar
-(Devel) binutils, coreutils, gcc, gcc-g++, make, sed
-(Editors) emacs, emacs-X11, vim
-(Graphics) ImageMagick, ghostscript-base, ghostscript-x11, gv
-(Publishing) tetex (all)
-(Shells) bash, bash-completion
-(X11) X-start-menu-icons, X-startup-scripts,
- XFree86-lib-compat, xorg-x11-fscl, xorg-x11-fsrv
-\end{verbatim}
-\index{Windows operating system|)}
-
-
-\section{Installation}
-
-\ePiX\ is distributed over the World-Wide Web as source code. Packages
-may be found at \URL{mathcs.holycross.edu/\~{}ahwang/epix/ePiX.html}
-The latest stable release is also on the CTAN mirrors, in the
-\code{graphics} directory. (Some users of Red Hat have reported file
-permission problems when unpacking the CTAN tarballs. If you encounter
-this difficulty, please try downloading the sources from the project
-main page.) Unpack the compressed tar file with the appropriate
-command:
-\begin{verbatim}
- tar -zxvf epix-x.y.z.tar.gz
- tar -jxvf epix-x.y.z.tar.bz2
-\end{verbatim}
-(\code{x.y.z}~is the version number) or, if your \code{tar}
-doesn't do decompression,
-\begin{verbatim}
- gunzip -c epix-x.y.z.tar.gz | tar -xvf -
- bzcat epix-x.y.z.tar.bz2 | tar -xvf -
-\end{verbatim}
-\code{cd} to the source directory, \filename{epix-x.y.z}. The
-\filename{INSTALL} file contains detailed installation instructions.
-If you're impatient, the short of it is \code{./configure [--options];
- make; make install}. Run \code{./configure --help} for a list of
-options.
-
-By default, \ePiX\ installs in subdirectories of
-\filename{/usr/local}; if you want to install elsewhere, supply
-\code{./configure} with the appropriate \code{--prefix}. You may also
-want to consult \filename{POST-INSTALL} for information on setting
-your \code{PATH} variable so your shell can find \ePiX. The manual
-and sample files are in \filename{/usr/local/share/doc/epix}.
-\index{Installation|)}
-
-
-\subsection{Development}
-
-There are two mailing lists, one for user questions, one for
-development discussion. Please visit
-\URL{savannah.nongnu.org/mail/?group=epix} to subscribe.
-
-
-\texinfochapter{2}{Getting Started}
-\label{chapter:started}
-
-This chapter describes the basics of creating figures in \ePiX\ for
-readers familiar with \LaTeX\ but completely new to~\CXX. No detailed
-knowledge of~\CXX\ is needed to use \ePiX, only a bit of grammar that
-is easily absorbed by example.
-
-Section~\ref{section:running} describes the commands (shell scripts)
-comprising \ePiX, and explains how to set up a graphical environment
-using standard *nix programs. Section~\ref{section:overview} briefly
-describes figure creation. Section~\ref{section:tutorial} presents a
-few files side-by-side with their output, and should be read at a
-computer so you can run the exercises.
-
-
-\section{Running \ePiX}
-\label{section:running}
-
-An ``input file'' is a human-written figure specification containing
-\ePiX\ commands. An ``output file'' is machine-created, and is
-included directly into a \LaTeX\ document with the appropriate
-packages.
-
-Conversion (``compiling'' a figure) is accomplished with four shell
-scripts, \code{laps}, \code{epix}, \code{elaps}, and \code{flix}.
-Each script has a preferred extension for its input files, and is
-invoked with a command of the form
-\begin{verbatim}
- <script> [options] <input file(s)>
-\end{verbatim}
-Often, no options are necessary. \code{<script> --help}
-describes \code{<script>}'s options.
-\texicomment
-Figure~\ref{fig:programs} (page~\pageref{fig:programs}) diagrams the
-shell scripts and the file types they process.
-\texicommentend
-
-By default, output file names are constructed by replacing the input
-extension with the (preferred) output extension. For brevity,
-extensions may be omitted. If the script has doubts about your intent,
-it proceeds with default behavior and prints a warning message.
-
-The author is a great fan of \Key{TAB} completion, under which a
-shell, based on what has been typed so far, automatically fills in a
-command when the \Key{TAB} key is pressed. \ePiX\ comes with code
-snippets that complete intelligently when the first part of a command
-is one of the shell scripts. For example, if command completion is
-active, typing \code{epix} \Key{TAB} prints only names of \code{epix}
-input files. To use this feature, you must install Ian MacDonald's
-\code{bash completion} package. The \filename{INSTALL} and
-\filename{POST\_INSTALL} files contain details.
-
-
-\subsubsection*{\code{laps}}
-
-\code{laps} performs \LaTeX\ to PostScript/PDF conversion, and is
-independent of the rest of \ePiX. By default, \code{laps} invokes
-\LaTeX~and \code{dvips}. The option \code{--pdf} creates a PDF~file by
-post-processing the PostScript with~\code{ps2pdf}. Other \TeX-family
-processors (\code{pslatex}, \code{pdftex}, etc.) may be used instead
-of~\LaTeX\ by invoking \code{laps} with an appropriate option.
-
-
-\subsubsection*{\code{epix}}
-
-\code{epix} compiles an input file into a \LaTeX\ picture. The input
-file should have extension \filename{xp} (for eXtended Picture). Jay
-Belanger's \code{emacs} mode is Highly Recommended; the installation
-procedure can be found in the \filename{POST\_INSTALL} file. When this
-mode is active, \code{emacs} automatically inserts a preamble template
-when a new \filename{xp} file is created. In addition, you can peruse
-\ePiX's info file, or format, compile, and preview files, all from
-within \code{emacs}.
-\index{Emacs@\code{emacs}}
-
-Output files from the script \code{epix} have extension
-\filename{eepic}, after Conrad Kwok's enhancements to the \LaTeX\
-picture environment. In Version~1.2, however, an output file need not
-contain \code{eepic} macros at all.
-
-An output file is \code{input} directly into a \LaTeX\ document whose
-preamble contains appropriate \code{usepackage} lines.
-\texicomment
-\begin{center}
- \begin{tabular}{cc}
- Format & Required Package(s) \\
- \hline
- \code{eepic} & \code{epic,eepic,xcolor} \\
- \code{pst} & \code{pstricks} \\
- \code{tikz} & \code{tikz}
- \end{tabular}
-\end{center}
-\texicommentend
-Rotated text requires the \code{rotating} package.
-
-
-\subsubsection*{\code{elaps}}
-
-\code{elaps} creates stand-alone vector images (\filename{eps}~or
-\filename{pdf}) from \code{epix} input files or \filename{eepic}
-figures, even those not produced with \code{epix}. \code{elaps}
-automatically loads the \LaTeX\ packages needed for features described
-in this manual. Additional \LaTeX\ packages and \code{dvips} options
-may be specified on the command line.
-
-
-\subsubsection*{\code{flix}}
-
-\code{flix} creates bitmapped images and movies,
-Section~\ref{section:animation}. Input files should have extension
-\filename{flx}, and must contain a valid \code{epix} header as well as
-additional code. Jay Belanger's \code{emacs} mode facilitates creation
-of \code{flix} files.
-
-
-\section{The Drawing Model}
-\label{section:overview}
-
-To draw a figure manually, you select a sheet of paper of appropriate
-size and add paths, markers, and labels. These scene elements have
-attributes (line color, line width, fill color, font size, etc.)
-affecting their appearance.
-
-\index{canvas}
-\ePiX's drawing model behaves similarly. A \code{picture} command
-sets the \emph{canvas} (or logical drawing area, a Cartesian
-rectangle) and the true size of the final figure. A \code{begin}
-command initializes the ``virtual paper'' for drawing. Subsequent
-\emph{drawing commands} add objects to the scene: lines, curves,
-function plots, labels, and the like. The printed appearance of scene
-elements is determined by the current ``attribute state'' and
-controlled by \emph{style declaration} which remain in effect until
-superseded. Finally, an \code{end} command closes the figure and
-prints it to the output file.
-
-In this manual, command descriptions follow a few
-conventions. Optional arguments are enclosed in square brackets. A
-\code{len} argument is either a number (representing a length in
-\code{pt}) or a double-quoted string containing a number and a
-two-letter \LaTeX\ length unit, such as \code{"1.5pt"} or
-\code{"6cm"}. A \code{color} argument is a named primary
-(\code{Red()}, \code{Cyan()}, \code{White()}, etc.), or a \code{Color}
-specified by densities (\code{RGB(r,g,b)}, \code{CMY(c,m,y)}, etc.)
-
-\begin{itemize}
-
-\item Fill color: \code{fill(color)}, \code{nofill()}.
-
-\item Line color and width: \code{plain([color])},
- \code{bold([color])}.
-
-\item Text size: \code{font\_size([size])}, returns to
- \code{normalsize} if no argument is given.
-
-\end{itemize}
-
-\noindent A complete list of style commands is found in
-Section~\ref{section:quickref}, starting on
-page~\pageref{section:quickref}.
-
-To handle three-dimensional scenes, a \code{camera} performs point
-projection from a selected spatial location to the canvas. As a user,
-you'll need to control relatively few of the \code{camera}'s
-parameters. Keep in mind, however, that elements are added to a scene
-in the same order their commands appear in the output file, and that
-later elements generally cover earlier ones. Some three-dimensional
-scenes require manual ordering of the input file; such ordering is
-dependent on the \code{camera}'s location.
-
-By default, \ePiX\ draws thin, solid, black lines, performs no filling
-of regions, prints text in a 12~pt Roman font, and looks down the
-\teximath{z}~axis from a large distance, giving orthogonal projection
-on the \teximath{(x,y)}~plane. When the \code{camera} is moved, the
-\teximath{z}~axis points vertically up on the page.
-
-
-\section{Tutorial}
-\label{section:tutorial}
-
-This section presents sample input files side-by-side with their
-output so you can compare what you write with what you'll see on the
-screen or page. \ePiX\ provides standard drawing capabilities, but
-like all software has its own idioms and personality. The basic
-syntax, which comes from \code{C}/\CXX, should be mostly
-self-explanatory. One-line comments begin with the
-string~``\verb+//+''.
-
-
-%%\index{Emacs@\code{emacs}}
-\index{Graphical interface}
-To use the sample files interactively, you'll need working software:
-\filename{bash}, \filename{emacs}, \ePiX, \filename{g++},
-\filename{gv}, and a running X~server. To complete your ``GUI'',
-start~\filename{gv} and select ``Watch file'' from the ``State''
-menu. The loaded file will update automatically when it changes.
-
-Create a ``scratch'' directory, \code{cd} into it, and run the command
-\begin{verbatim}
- tar -zxf /usr/local/share/doc/epix/sample_src.tar.gz
-\end{verbatim}
-(Change the path as appropriate for your installation.) This unpacks
-copies of the sample files into your scratch directory, including all
-the files mentioned in this manual. The \filename{README} file serves
-as a table of contents.
-
-Open a sample file in \filename{emacs}, compile it from the drop-down
-menu (or with the keyboard command), then open the \filename{EPS} file
-in~\filename{gv}. Now you're ready to follow the tutorial
-interactively. A few suggested exercises are included with each
-file. Naturally, as you study more files, you'll be able to make more
-interesting changes on your own.
-
-
-\subsubsection*{Basic Drawing}
-
-The first sample, \filename{hello.xp}, contains code needed to specify
-the figure's size, followed by the classic greeting. The \code{border}
-command draws a box around the figure in the specified color and
-width, and serves here merely to delimit the output from the
-surrounding page.
-\begin{verbatim}
-/* -*-ePiX-*- */
-#include "epix.h" // These lines are analogous
-using namespace ePiX; // to a usepackage command.
-
-int main()
-{
- picture(P(-1,-1), P(1,1), "2 x 1in"); // corners, true size
-
- begin(); // ---- Figure body starts here ----
-
- border(Black(), "1pt"); // color, line width
-
- font_size("Huge"); // May be any font size, e.g. "scriptsize"
- label(P(0,0), "Hello, world!");
-
- end(); // ---- End figure; write output file ----
-}
-\end{verbatim}
-
-\begin{center}
- \input{hello.eepic}
-\end{center}
-
-\begin{itemize}
-
-\item Change the color and width of the
- border. (\code{RGB(r,g,b);} creates an RGB color, CMY colors are
- analogous. Named primaries are available. The densities should be
- between \teximath{0}~and \teximath{1} for ``expected'' behavior.)
-
-\item Add \code{backing(Cyan());} after the \code{border} command.
-
-\item Put the command \code{crop\_ellipse();} before the \code{border}
- command. Permute the \code{crop\_ellipse} command with the
- \code{border} and \code{backing} lines, and note how the attribute
- (\code{crop}) affects objects (\code{border}, \code{backing}).
-
-\end{itemize}
-
-
-\subsubsection*{Geometric Objects}
-
-Our next file uses simple objects to draw a 2-D house-and-sun scene.
-
-\begin{verbatim}
-int main()
-{
- picture(P(0,0), P(5,2), "3.75 x 1.5in");
-
- begin();
-
- triangle(P(0.9, 1), P(3.1, 1), P(2, 1.5)); // vertices
- circle(P(4,1.5), 0.25); // center and radius
-
- rect(P(1,0), P(3,1)); // opposite corners
-
- fill(Black(0.1)); // light gray
- rect(P(2.3,0), P(2.7,0.8)); // the door
- nofill();
-
- bold(); // draw thicker lines
- grid(P(1.4, 0.2), P(2, 0.6), 2, 2); // corners, number of squares
-
- line(P(xmin(), 0), P(xmax(), 0)); // endpoints
-
- end();
-}
-\end{verbatim}
-
-\begin{center}
- \input{objects.eepic}
-\end{center}
-
-\begin{itemize}
-
-\item Add declarations such as \code{bold(RGB(1,0.9,0.5))} or
- \code{fill(Yellow())} to color the scene. (Color and filling are
- orthogonal attributes.)
-\end{itemize}
-
-\noindent The sample file \filename{house.flx} uses loops to draw
-gradient fills of the lawn, sky, and sun, and animates a sunset.
-
-
-\subsubsection*{Function Plotting}
-
-Plotted functions must be defined in the ``preamble'', before
-\code{main}. ``High-level'' elements---coordinate axes and grids, axis
-labels, and graphs---are drawn with mnemonically-named commands.
-\begin{verbatim}
-// double = double-precision floating point
-double f(double x) { return 0.75*Sin(x) - 0.25*Sin(2*x); }
-
-int main()
-{
- picture(P(-2,-1), P(2,1), "5 x 1in"); // [-2,2] x [-1,1]
-
- begin();
- revolutions(); // set angle units, [0,1] = one turn
-
- h_axis(16); // axes w/default endpts
- v_axis(4);
- h_axis_labels(4, P(0,-4), b); // shift down 4pt, align below
-
- plain(Red());
- plot(f, xmin(), xmax(), 120); // use 120 intervals
-
- end();
-}
-\end{verbatim}
-
-\begin{center}
- \input{plotting.eepic}
-\end{center}
-
-\begin{itemize}
-
-\item Define and plot some different functions; adjust the bounding
- box as necessary. (Use repeated multiplication for polynomials.
- The \code{polarplot} command graphs \teximath{r=f(\theta)}.)
-
-\item Change the arguments to \code{h\_axis\_labels}. The first
- specifies the number of intervals to label; the second gives the
- label offset in~\code{pt}. The last puts each label below~(\code{b})
- its Cartesian location.
-
-\end{itemize}
-
-
-\subsubsection*{Multivariable Plotting}
-
-Functions of two or three variables are defined just like functions of
-one variable, but for plotting the return type must be a
-point~(\code{P}), not a real number~(\code{double}). The \code{domain}
-class specifies the set of inputs to plot.
-
-\begin{verbatim}
-P f(double r, double th)
-{
- return P(r*Cos(th), r*Sin(th), pow(r, 3)*Cos(3*th));
-}
-
-int main()
-{
- picture(P(-1,-1), P(1, 1), "2 x 1in");
- begin();
- pst_format(); // use PSTricks macros for output
-
- // corners ([0,1] x [0,2\pi]) and fineness
- // (8x40 rectangles, plotted at 16x120 resolution)
- domain R(P(0,0), P(1, 2*M_PI), mesh(8,40), mesh(16,120));
-
- camera.at(P(3,1,2)); // set the viewpoint
- arrow(P(0,0,0), P(1.25,0,0)); // coordinate axes
- arrow(P(0,0,0), P(0,1.25,0));
-
- plain(Blue(1.2)); // line color and width
- fill(Yellow()); // shading color
- surface(f, R);
-
- end();
-}
-\end{verbatim}
-
-\begin{center}
- \input{plotting2.eepic}
-\end{center}
-
-
-\subsubsection*{Loops and Control Structures}
-\label{taylor_poly}
-
-A function can be defined by an arbitrary algorithm, and a
-\code{domain} may be used to plot a family of functions for several
-values of one variable.
-
-\begin{footnotesize}
-\begin{verbatim}
-P sin_n(double x, double n) // Taylor polynomial of sin x
-{
- const int N((int) floor(n)); // convert n to an index bound
- const double sqx(-pow(x, 2)); // -x^2
- double val(x), summand(x);
-
- for (int i=1; i <= 2*N+1; i += 2)
- {
- summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)!
- val += summand;
- }
-
- return P(x, val); // return (x, y)
-}
-
-int main()
-{
- picture(P(0, -1), P(6*M_PI, 1), "5 x 1in");
-
- begin();
-
- set_crop();
- bold(Green());
- plot(Sin, 0, xmax(), 120);
-
- domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(120, 40));
- for (int i=3; 0 <= i; --i) // print in descending degree
- {
- bold(RGB(0.25*i, 0, 1-0.25*i)); // degree-dependent color
- plot(sin_n, R.slice2(5*i+1)); // plot for n = 5i+1
- }
- end();
-}
-\end{verbatim}
-\end{footnotesize}
-
-\begin{center}
- \input{plotting3.eepic}
-\end{center}
-
-
-\subsubsection*{Page Layout}
-
-Page layout can be composed from sub-pages with \code{screen} objects.
-In the loop body below, objects are added to the ``active''
-\code{screen}, then \code{inset} into the ``canvas'', the screen
-representing the entire figure.
-
-\begin{verbatim}
-P f(double u, double v)
-{
- return P((u-v)*(u+v), 2*u*v, u);
-}
-
-int main()
-{
- picture(P(0,0), P(2,3), "5x7.5in"); // overall size
-
- begin();
-
- domain R(P(-1,-1), P(1,1), mesh(12,12), mesh(24,24));
-
- for (int i=0; i<2; ++i)
- for (int j=0; j<3; ++j)
- {
- screen my(P(-3,-3), P(3,3));
- activate(my);
- border(Red(0.6), "1pt");
- // frame-dependent viewpoint
- camera.at(sph(10, (2*j+i+1)*M_PI/8, M_PI/6));
-
- plot(f, R);
- arrow(P(0,0,0), 2*E_1);
- arrow(P(0,0,0), 2*E_2);
- // SW corner at (i, 2-j), padded by 0.05 on all sides
- inset(P(i+0.05,2.05-j), P(i+0.95,2.95-j));
- }
-
- end();
-}
-\end{verbatim}
-
-\begin{center}
- \input{layout.eepic}
-\end{center}
-
-
-\section{\CXX\ Basics}
-
-\index{Cplusplus@\CXX|(}
-An \ePiX\ source file is a \CXX~program. If you've successfully
-modified and compiled the sample files, you know enough~\CXX\ to use
-\ePiX. In the author's experience, \code{C}~grammar suffices for most
-applications. An excellent introduction to definitions of functions
-and variables, control statements, and overall program structure is
-Kernighan~and Ritchie's \emph{The \code{C} Programming Language},
-second edition~\cite{KnR}.
-
-
-\subsection{File Format}
-
-\index{Emacs@\code{emacs}}
-Jay Belanger's \code{emacs} mode for \code{ePiX} inserts a file
-template when an empty buffer is opened with the extension~\code{xp}.
-This section explains the purposes served by the template. A few
-additional remarks may help you avoid basic syntax pitfalls.
-
-A \CXX\ file consists of ``statements'', analogous to ordinary
-sentences. Common types include \emph{declarations} (which
-``register'' a function, variable, or type name with the compiler),
-\emph{definitions} (which assign meaning to declared names), and
-\emph{function calls} (which cause a named function to execute). Most
-statements in an \ePiX\ input file are function calls (``commands'').
-Plain declarations are relatively rare in user files, since a
-definition serves to declare any new names that it contains.
-
-Every statement ends with a semicolon, and conventionally a file
-contains at most one statement per line. The compiler ignores
-nearly all whitespace (spaces, tabs, and newlines), which should be
-used freely to make files easy to read. Other punctuation
-(periods, commas, (semi)colons, parentheses, braces, and quotes)
-dictates file parsing, and must adhere stringently to grammar.
-
-An \ePiX\ file always begins with the lines
-\findex{include}
-\begin{verbatim}
-#include "epix.h" // N.B. pre-processor directive, no semicolon
-using namespace ePiX;
-\end{verbatim}
-The first line is analogous to a \LaTeX\ \code{usepackage} command: It
-loads the contents of the ``header'' file \filename{epix.h}, importing
-the names of commands provided by~\ePiX. To avoid name conflicts,
-\ePiX's commands are enclosed in a ``namespace''. For example, the
-\code{label} command is actually known to the compiler as
-\code{ePiX::label}. The second line above tells the compiler to apply
-the prefix tacitly.
-
-
-\subsection{Variables and Functions}
-%% \index{Variable}\index{Variable!names}
-%% \index{Function}\index{Function!names}
-
-Definitions of variables and functions play the same role in a figure
-that macro definitions play in a \LaTeX\ document: gathering and
-organizing information on which the figure depends. A variable is
-defined by supplying its type, name, and initial value. By far the
-most common data types in~\ePiX\ are \code{double} (double-precision
-floating point number), \code{P}, and \code{int}. The name of a
-variable may consist (only) of letters (including the underscore
-character) and digits, and must begin with a letter:
-\begin{verbatim}
-my_var, var2, MY_var, aLongVariableName; // valid
-my-var, 2var, \v@riable, $x, ${MY_VARIABLE}; // not valid
-\end{verbatim}
-Variable names are case-sensitive, and numerous (non-universal)
-conventions govern the significance of capitalization. Generally, make
-names descriptive but not unwieldy, and avoid language keywords (such
-as \code{const}, \code{true}, \code{double}, \code{class}, or
-\code{public}) and names that begin with an underscore.
-
-A function accepts ``arguments'' and ``returns a value''. To define a
-function in~\CXX, you must specify the return type, the name of the
-function, the types of the arguments, and the algorithm by which the
-value is computed from the inputs. The code block
-\begin{verbatim}
-double f(double x)
-{
- return sqrt(1-x*x);
-}
-\end{verbatim}
-specifies the \code{double}-valued function~\teximath{f} of one \code{double}
-variable defined by the formula \teximath{f(x)=\sqrt{1-x^2}}.
-
-
-\subsection{Comments}
-
-\CXX\ has two types of comments. \code{C}-style comments, which may
-span several lines, are delimited by the strings \code{/*}~and
-\code{*/}. One-line comments, analogous to the \LaTeX~\code{\%}, are
-begun with \code{//}. A one-line comment may appear within a multi-line
-comment, but a \code{C}-style comment may not; the compiler will
-mistake the first~\code{*/} it encounters as the end of the current
-multi-line comment.
-
-
-\subsection{Program Execution}
-
-All the ``action'' in a \CXX\ program occurs inside the special
-function~\code{main}. Running a compiled \CXX~program is viewed by the
-operating system as calling the program's \code{main} function. The
-return value (an \code{int}) is the program's exit status. The
-contents of the output file start with \code{begin()} and terminate
-with \code{end()}. Intervening statements constitute the \emph{body}
-of the file.
-
-In \CXX, a function may not be defined inside another function. Thus,
-variables may be defined inside \code{main}, but functions cannot be.
-
-
-\subsection{Strings and Raw Output}
-
-In \CXX, a \code{string} is a sequence of characters. Most
-\code{string}s in \ePiX\ input files are \emph{literals},
-double-quoted \code{string}s whose value is read from the input. In a
-string literal, backslash is an escape character; a single backslash
-is produced by a double backslash in the input file. Certain letters
-have special meanings when backslash-escaped, including ``\verb+\n+''
-(newline) and ``\verb+\t+'' (\Key{TAB}). Unlike~\LaTeX, \CXX~does not
-require a space to separate an escape sequence from following text;
-the string ``\verb+\\textwidth+'' literally represents a \LaTeX\
-command, while ``\verb+\textwidth+'' is read ``\code{TABextwidth}'' by
-the compiler.
-
-Though not commonly needed, raw text can be printed to the output
-file. The functions \code{write}, \code{pre\_write}, and
-\code{post\_write} accept \code{string} arguments. \code{write} prints
-its argument where the call appears in the input file. The other
-functions print their arguments before or after the completed picture,
-respectively. These commands must be in the file body. As an
-application, a complete \LaTeX\ \code{figure} environment (with
-caption and label) can be produced by an \ePiX\ file,
-Figure~\ref{fig:captioned}.
-
-\index{pre\_write}
-\index{post\_write}
-\index{write}
-\findex{pre\_write}
-\findex{post\_write}
-\findex{write}
-\begin{figure}
-\begin{footnotesize}
-\begin{verbatim}
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(-1,-1), P(1,1), "10cm x 3in);
- begin();
- pre_write("\\begin{figure}[hbt]"); // comes before the picture
-
- post_write("\\caption{A \\LaTeX\\ figure.}"); // and after
- post_write("\\end{figure}");
-
- < ... other ePiX commands ... >
- write("%% A comment near the end, but inside the picture.");
- end();
-} // End of main()
-\end{verbatim}
-\end{footnotesize}
-\caption{Generating a self-contained figure in \ePiX.}
-\label{fig:captioned}
-\end{figure}
-
-
-\subsection{Conditionals and Loops}
-
-An algorithm's behavior usually depends on internal state. A
-\emph{conditional statement} causes blocks of code to be executed
-according to criteria. A \emph{loop} repeatedly executes a code
-block, usually changing the values of variables in a predictable way,
-so that the loop exits after finitely many traversals.
-
-\texicomment
-Figure~\ref{fig:gcd} illustrates conditionals and loops with
-Euclid's algorithm for the greatest common divisor. Three pieces of
-notation require explanation: \code{j\%i} means~``\teximath{j\pmod i}'',
-\code{||} is logical~``or'', and \code{==} is ``test for equality''.
-(A single~``\code{=}'' is the assignment operator.)
-
-\index{Function!Euclidean algorithm}
-\begin{figure}[hbt]
-\begin{footnotesize}
-\begin{verbatim}
-int gcd (int i, int j)
-{
- int temp(i); // initialization syntax
- if (i==0 || j==0)
- return i+j; // define gcd(k,0) = k
-
- else {
- if (j < i) // swap them
- {
- temp = j;
- j = i;
- i = temp;
- }
- // the work is done here...
- while (0 != (temp = j%i)) // assign temp, test for zero
- {
- j = i;
- i = temp;
- }
- return i;
- }
-}
-\end{verbatim}
-\end{footnotesize}
-\caption{Euclid's division algorithm in~\CXX.}
-\label{fig:gcd}
-\end{figure}
-\texicommentend
-
-%% \noindent For details on conditionals, or for more advanced techniques
-%% of \CXX\ programming, please consult a textbook or online tutorial.
-\index{Cplusplus@\CXX|)}
-
-%% Force previous two figures onto the same page
-%%\clearpage
-
-\section{Animation}
-\label{section:animation}
-
-\index{Animation|(}
-\ePiX\ is well-suited to the creation of mathematically accurate
-animations: If a figure depends suitably upon a ``time'' parameter,
-then a loop can be used to draw the entire figure for multiple time
-values, yielding successive ``snapshots'' of the figure as time
-progresses. The shell script~\code{flix} automates the process of
-compiling a suitable input file into a collection of \filename{png}s
-and assembling these frames into a \filename{mng}~or \filename{gif}
-animation. ImageMagick is the image-handling engine.
-
-A \code{flix} file is an \code{epix} file with two restrictions:
-\begin{itemize}
- \item The \code{double} variable \code{tix()} is used as
- ``clock''.
-
- \item \code{main} accepts two command line arguments and sets
- \code{tix()} accordingly.
-\end{itemize}
-\index{Emacs@\code{emacs}}
-Jay Belanger's \code{emacs} mode recognizes the file
-extension~\filename{.flx} and inserts template code if an empty buffer
-is opened. Creation of \code{flix} files is as easy as creation of
-\code{epix} files. The \filename{samples} directory contains a
-handful of \code{flix} files that may be consulted for ideas.
-
-By default, \code{flix} creates movies with 24~frames, in which
-\code{tix()} runs from~0 to~1, and animates at
-\teximath{0.08}~sec/frame. These and other parameters can be changed
-with command-line options.
-
-A ``typical'' \code{.flx} file may take 30~seconds to a few minutes to
-compile, depending on the number of frames and the complexity of each
-frame. To facilitate debugging, \code{elaps} can be run on a
-\code{flix} file. \code{elaps} runs in a fraction of the time, and if
-\code{elaps} can't produce a viewable image, \code{flix} will surely
-fail. While running, \code{flix} prints a progress bar counting the
-number of \filename{eps} files that have been created. There will be
-a delay of a few seconds (or more) after the last frame is produced,
-during which ImageMagick's \code{convert} utility assembles the movie.
-\index{Animation|)}
-
-
-\section{Layout Tricks}
-\label{section:layout}
-\index{Layout}
-
-\subsection{Stereograms}
-\index{Stereograms}
-Stereograms are created by drawing a single scene twice from slightly
-different points of view. To create a stereogram with \ePiX, write a
-``scene'' function containing the necessary drawing commands, then set
-the camera appropriately and call the scene function twice, once for
-each frame.
-
-\subsubsection*{Crossed-Eyes Stereograms}
-
-The sample files \filename{lorenz.xp}~and \filename{twisted\_cubic.xp}
-use page layout to draw crossed-eyes stereograms. For each frame,
-create and activate a \code{screen}, set the camera, and call the
-scene function. The frames are inset side by side in the final
-picture. For a crossed-eyes stereogram, the frame from the
-``rightmost'' camera position is placed on the left.
-
-\subsubsection*{Bi-Color Stereograms}
-
-The sample files \filename{cube.flx}~and \filename{mirrorball.flx}
-contain animated red-cyan stereograms, suitable for viewing with 3-D
-glasses. The technique works best with black-and-white line drawings,
-but the basic approach is the same as for crossed-eyes stereograms:
-Create a scene function and call it twice, setting the camera
-appropriately. Layout is unnecessary since the frames are superposed.
-Pen colors should be close to red and cyan, but ``optimal'' choices
-depend on one's eyes and 3-D glasses.
-
-\subsubsection*{Stereographic Movies}
-
-Either form of stereogram can be animated in a \code{.flx} file, but
-keeping one's eyes properly crossed requires practice while most
-people can instantly see depth with 3-D glasses. As always when using
-\code{flix}, debug the scene with \code{elaps} before compiling a
-movie. If a stereoscopic effect is difficult to see in a still image,
-it will be even harder to perceive in a movie.
-
-
-\subsection{Inset Images}
-
-\ePiX\ can place external images into a figure, similarly to
-Rolf Niepraschk's \code{overpic} package. You provide the Cartesian
-center point, the file name, and optionally the true height and/or
-width of the image:
-\findex{label}
-\begin{verbatim}
- label(P(a,b), "\\includegraphics[width=w,height=h]{file}");
-\end{verbatim}
-This effect requires the \filename{graphicx} package. When compiling a
-stand-alone graphic containing an external image, you must specify the
-\filename{graphicx} package on the command line: \code{elaps -p
-graphicx <file>}
-
-\texicomment
-\begin{figure}[hbt]
- \begin{center}
- \input{ePiX.eepic}
- \end{center}
- \caption{Visual guide to \ePiX's shell scripts}
- \label{fig:programs}
-\end{figure}
-\texicommentend
-
-
-\texinfochapter{3}{Reference Manual}
-\label{chapter:ref-man}
-
-This chapter details \ePiX's capabilities, discussing attributes and
-data types, and listing available commands in the form
-\begin{verbatim}
- label(P posn, [P offset], string text, [align]);
- circle(P ctr, double rad=1, normal=P(0,0,1));
-\end{verbatim}
-As in Chapter~\ref{chapter:started}, function arguments are given by
-type (\code{P}, \code{double}, \code{string}, etc.)\ and name, or by
-name alone if the type is clear. Optional arguments are enclosed in
-square brackets. A few argument types, such as \code{[align]} above,
-admit only a small number of values; these cases are explained when
-the corresponding command is first introduced.
-
-A name followed by an equals sign and a value indicates a default
-argument; if omitted in an input file, the compiler substitutes the
-default value. Only trailing arguments may be specified this way. For
-example, if the \code{rad} argument of the \code{circle} command is
-omitted, the \code{normal} argument \emph{must} be omitted as well.
-
-In an input file, only an argument's value is given, not the type:
-\begin{verbatim}
- label(P(0,0), P(0,-4), "Hello world", b);
- circle(P(0,-0.25), sqrt(2)); // use default normal
-\end{verbatim}
-
-Generally, \code{len} signifies either a number (representing a length
-in \code{pt}) or a double-quoted string containing a number and a
-two-letter \LaTeX\ length unit, such as \code{"1.5pt"} or
-\code{"6cm"}. \code{color} represents a \code{Color} object
-constructed from a named primary (\code{Blue()}, \code{Magenta(0.7)},
-etc.), a color specification (\code{RGB(r,g,b)}, \code{CMY(c,m,y)},
-etc.), or an operator applied to an existing \code{Color}.
-
-
-\section{File Structure}
-
-An \ePiX\ input file constitutes a short \CXX\ program. When this
-program is compiled and run by one of the shell scripts, it creates a
-figure file suitable for inclusion in \LaTeX.
-
-\index{Preamble}
-Like a \LaTeX\ document, an \ePiX\ file contains a \emph{preamble},
-which sets up a drawing environment, and a \emph{body}, which contains
-actual figure-generating commands. The minimal file has the form
-\findex{picture}
-\findex{begin}
-\findex{end}
-\begin{verbatim}
-#include "epix.h" // N.B. no semicolon
-using namespace ePiX;
-
-int main() {
- picture(P(a1,b1), P(a2,b2), "n1 [unit1] x n2 unit2");
- begin(); // end of preamble, start of body
- end(); // end of body
-}
-\end{verbatim}
-\ePiX\ commands are of four general types: drawing, attribute setting,
-definitions (of data and functions), and operations on existing
-objects. Except as noted below, drawing and attribute commands must
-appear in the body, between \code{begin()}~and \code{end()}. Function
-definitions must come in the preamble, before \code{main()}. Data
-definitions may appear in the preamble or body.
-
-
-\subsubsection*{Output Format}
-\index{Output format}
-
-The \code{end()} command writes the output file to \code{stdout},
-using \code{eepic} macros by default. The shell scripts redirect
-\code{stdout} to an appropriate disk file.
-
-The attribute-setting command \code{pst\_format()} causes the output
-file to be written using \code{PSTricks} macros when \code{end} is
-called. Similarly, \code{tikz\_format()} causes the file to be written
-using \code{tikz} macros, and \code{eepic\_format()} causes the file
-to be written using \code{eepic} macros. These commands may appear
-anywhere in the figure body. There is no reason for a file to contain
-more than one such command.
-
-The output format may be selected on the command line, overriding any
-explicit request in the input file. Supplying \code{epix},
-\code{elaps}, or \code{flix} with one of the options \code{--pst},
-\code{--tikz}, or \code{--eepic} is tantamount to issuing a
-\code{pst\_format()} (etc.)\ command just before the end of the
-file. These options are listed in decreasing precedence. If more than
-one is given, the ``strongest'' applies, regardless of the command
-line order.
-
-A figure may be written directly to a specified disk file, in a format
-unaffected by the command line flags above. The command
-\begin{verbatim}
- print_eepic("file.tex");
-\end{verbatim}
-writes the figure to the named file using \code{eepic}
-macros. Analogous commands exist for the formats \code{pst}~and
-\code{tikz}. These commands perform an immediate action. Consequently,
-the command's location in the input file is significant, and multiple
-commands may appear in a single file, so long as distinct file name
-arguments are provided. Applications include writing the same figure
-in multiple formats, or creating successive ``snapshots'' of a lengthy
-computation.
-
-
-\section{Picture Size and Aspect Ratio}
-
-\index{Picture!size}
-\index{Picture!offset}
-The \code{picture} command specifies a figure's logical and true
-sizes. In the ``minimal file'' snippet above, the \emph{canvas} is the
-Cartesian rectangle \teximath{[a_1,a_2]\times[b_1,b_2]} whose corners
-are given. Either pair of opposite corners is acceptable, but
-confusion is less likely when the SW~and NE corners are given, in this
-order.
-
-The true (printed) width and height are read from \code{picture}'s
-third argument, a ``size \code{string}'' such as \verb+"4cm x 1in"+,
-containing a number and optional \LaTeX\ length unit, an~\code{x},
-another number, and a mandatory length unit. Spaces may be used for
-legibility. The mandatory length unit becomes the \LaTeX\
-\code{unitlength}. The argument \verb+"4cm x 1in"+ creates a picture
-4~cm wide and 1~in high, but internally converts 4~cm to inches.
-Recognized length units are \code{pt} (points, the default), \code{cm}
-(centimeters), \code{in} (inches), \code{mm} (millimeters), \code{pc}
-(picas), and \code{bp} (big points).
-(\code{1in = 2.54cm = 72bp = 72.27pt}, \code{1pc = 12pt}.)
-
-The logical and true sizes may be defined separately with the commands
-\findex{bounding\_box}
-\findex{picture}
-\findex{unitlength}
-\begin{verbatim}
- bounding_box(P(a1,b1), P(a2,b2));
- picture(n1, n2);
- unitlength(len); // len a length string, not a double
-\end{verbatim}
-One way or another, the logical and true dimensions \emph{must} have
-positive values when the \code{begin()} command is issued.
-
-\LaTeX\ treats the contents of a picture environment as a single box,
-aligned by default on its lower left corner. An \code{offset} command
-accepts two \code{double} arguments or a size \code{string} and shifts
-the page location accordingly. The command
-\code{offset("0.25 x -0.5cm")} shifts the picture right
-\teximath{0.25}~cm and down \teximath{0.5}~cm. If the
-\code{unitlength} is 1~cm, the command \code{offset(0.25, -0.5)} has
-the same effect.
-
-A non-zero \code{offset} causes a picture's contents to appear in a
-location where \LaTeX\ does not expect them. This can be useful in a
-\LaTeX\ document, but should be avoided when compiling a stand-alone
-image, since \code{dvips} may crop according to rules of its own.
-
-
-\index{Picture!aspect ratio}
-\index{Picture!bounding box}
-The canvas's corners are \code{(xmin(),ymin())} and
-\code{(xmax(),ymax())}, while its width and height are
-\code{xsize()}~and \code{ysize()}. The canvas is a virtual, advisory
-data structure; its dimensions are not directly related to the
-figure's printed size, and picture elements may lie outside the
-canvas. Affine scaling maps the canvas to the page when the output
-file is written.
-\begin{center}
-\input{scaling.eepic}
-\end{center}
-\label{page:scaling}
-The figure's aspect ratio is controlled by sizing the canvas. The
-aspect ratio is ``true'' if the canvas and page rectangles are
-geometrically similar, e.g., if both boxes are 1.5~times as wide as
-they are tall.
-
-
-\section{Color}
-\label{section:color}
-
-\index{Color|(}
-\ePiX\ provides a \code{Color} data type. Four models are implemented:
-\code{RGB}, \code{CMY}, \code{CMYK}, and \code{Gray}. A \code{Color}
-holds primary color ``channels'', each carrying an intensity between
-0~(no color) and~1 (full saturation). ``No color'' means black in
-\code{RGB} and \code{Gray}, white in \code{CMY(K)}. \code{RGB},
-\code{CMY}, and~\code{CMYK} colors are written to the output file as
-commands in the corresponding model. \code{Gray} shades are written
-in~\code{RGB}.
-
-Operations on red-green-blue colors are described below. Functionally,
-colors are converted to~\code{RGB}, operated upon, then converted back
-to the original model. Conversions are as described in Uwe Kern's
-\filename{xcolor} manual~\cite{xcolor}.
-
-
-\subsection{Constructors}
-
-Each color model has a ``constructor'' creating a color of specified
-densities. The \code{RGB}~and \code{CMY} models have named ``primary''
-constructors; the density argument is optional and defaults to~1.
-\findex{RGB}
-\findex{Red}
-\findex{Green}
-\findex{Blue}
-\findex{White}
-\findex{Black}
-\begin{verbatim}
- // red-green-blue colors
- RGB(double r=0, double g=0, double b=0);
- Red(d=1); Green(d=1); Blue(d=1);
- White(d=1); Black(d=1);
-\end{verbatim}
-\findex{CMY}
-\findex{Cyan}
-\findex{Magenta}
-\findex{Yellow}
-\findex{CMY\_White}
-\findex{CMY\_Black}
-\findex{CMYK}
-\findex{Gray}
-\begin{verbatim}
- // cyan-magenta-yellow colors
- CMY(double c=0, double m=0, double y=0);
- Cyan(d=1); Magenta(d=1); Yellow(d=1);
- CMY_White(d=1); CMY_Black(d=1);
-
- // gray
- Gray(double d=0); // equivalent to RGB(d, d, d)
-\end{verbatim}
-Each \code{CMY} constructor has a corresponding \code{CMYK} function,
-e.g.\ \code{CyanK()}~or \code{CMYK\_White()}.
-
-Though color densities lie between 0~and 1, \ePiX's primary color
-constructors take arguments mod~4, viewed as elements
-of~\teximath{[-2,2]}. Consider \code{Red(d)}, ``red with
-density~\teximath{d}''. For integer values of~\teximath{d}, the
-constructor has the following meanings: \code{Red(0)}~is black,
-\code{Red(1)}~is red, \code{Red(2)}=\code{Red(-2)}~is white, and
-\code{Red(-1)}~is anti-red, or cyan. For non-integer~\teximath{d}, the
-constructor interpolates between the bracketing integer values,
-Figure~\ref{fig:densities}. Other primary constructors work
-analogously.
-
-\begin{figure}[hbt]
- \begin{center}
- \input{color_density.eepic}
- \end{center}
- \caption{The red primary constructor.}
-\label{fig:densities}
-\end{figure}
-
-Let \teximath{\delta:[-2,2]\to[0,1]} be the piecewise-linear function
-that converts real numbers to primary color densities,
-\teximath{\clip:\mathbf{R}\to[0,1]} the clipping function. The
-non-primary constructor \code{RGB(r, g, b)} computes the density of
-the red channel as
-\teximath{\clip\bigl(\delta(r)+\delta(-g)+\delta(-b)\bigr)}; the green
-and blue channel densities are computed similarly. Every color can be
-created with arguments between 0~and 1, but the constructor accepts
-arbitrary real arguments and returns colors varying ``continuously and
-periodically''.
-
-\index{Color!transparency}
-Colors possess an ``alpha-channel'' for transparency. Except as
-supported by the output format, this feature is a stub.
-
-
-\subsection{Color Operations}
-
-Colors can be scaled, inverted, blended, superposed, and filtered. In
-the code below, \code{tint}~is a \code{Color}. The effect of each
-operation is described in the \code{rgb} model; the visual result is
-the same in all models.
-\findex{Color.invert}
-\findex{Color.blend}
-\findex{Color.superpose}
-\findex{Color.alpha}
-\findex{Color.filter}
-\begin{verbatim}
- tint *= double c; // multiply channels by c, rebuild
- tint.invert(); // (r, g, b) -> (1-r, 1-g, 1-b)
- tint.blend(Color col, double t); // (1-t)*tint + t*col
- tint.superpose(col); // add channels, then clip to [0,1]
- tint.alpha(double d); // set alpha channel to clip(d)
-
- tint.filter(col); // return min density in each channel
-\end{verbatim}
-Except for \code{filter}, these operators modify their object.
-\code{filter} simulates the effect of viewing \code{col}
-through a transparent sheet of \code{tint}, and returns a new
-\code{Color} object having the same model as \code{tint} without
-modifying \code{tint} itself.
-
-
-\section{Scene Attributes}
-
-Objects in a scene sit in 3-dimensional space. A \emph{camera}
-maps objects to the \emph{active screen}. The active \code{screen}
-may, in turn crop its contents. Each drawing command creates an
-object, ``photographs'' it, and adds the image to the active
-\code{screen}. This section describes the \code{Camera} and
-\code{screen} classes and a few associated concepts.
-
-
-\subsection{Angular Mode}
-\index{Angle units}
-
-By default, angles are measured in \code{radian}s. Two other angular
-modes are available: \code{degrees}~and \code{revolutions}. The
-angular mode is set with a named command, \code{radians()},
-\code{degrees()}, or \code{revolutions()}. The current angular mode
-affects all trigonometric functions and operations.
-
-
-\subsection{The Camera}
-\index{Camera|(emph}
-\index{Screen|(}
-
-Three-dimensional scenes are drawn on flat paper by applying a
-mathematical transformation. By default, \ePiX\ uses \emph{point
-projection}, the technique used by art students when they trace on a
-window with grease pencil, Figure~\ref{fig:camera}.
-
-\begin{figure}[hbt]
- \begin{center}
- \input{camera.eepic}
- \end{center}
- \vspace*{-0.25in}
- \caption{Point projection.}
- \label{fig:camera}
-\end{figure}
-
-\index{Camera!viewpoint}
-\index{Viewpoint}
-\ePiX\ depicts a Cartesian world by projecting mathematically to a
-screen plane, then affinely scaling to a printed page. The camera,
-which maps the world to the screen, consists of a \emph{body} (data
-that determines the position and orientation of the camera), a
-\emph{lens} (the actual mapping to the screen plane), and a
-\emph{filter} (a color through which the scene is viewed).
-
-
-\subsubsection*{Body}
-
-The camera's spatial orientation is described by a triple of mutually
-perpendicular unit vectors. In memory of happy days at the beach,
-these vectors are called \emph{sea}, \emph{sky}, and~\emph{eye}. The
-screen plane is parallel to the sea-sky plane; the sea vector points
-horizontally to the right, sky points vertically upward. The eye is
-their cross product, which points directly at the viewer.
-
-The sea-sky-eye basis is located at the \emph{viewpoint}, the camera's
-spatial location. The \emph{target}, the origin of the screen plane,
-lies on the line through the viewpoint in the direction opposite the
-eye vector. The distance from the viewpoint to the target is the
-\emph{range}. The \emph{camera sphere} is centered at the viewpoint
-and passes through the target. The orientation, viewpoint, target,
-and range completely (and redundantly) determine the camera's
-geometric situation in the world.
-
-
-\subsubsection*{The Lens}
-\index{Camera!lens}
-
-A \emph{lens} maps the world to the screen. \ePiX\ comes with four
-lenses: \emph{shadow} (the default), \emph{orthogonal},
-\emph{fisheye}, and \emph{bubble}. Each lens simulates the appearance
-of world objects as seen by an observer at the viewpoint. The shadow
-lens is point projection from the viewpoint to the screen plane. The
-orthogonal lens projects from infinite distance. Each of the other
-lenses performs radial projection to the camera sphere, then maps the
-sphere to the screen plane; the fisheye lens does orthogonal
-projection (so the entire image lies inside the disk centered at the
-target whose radius is the range) while the bubble lens does
-stereographic projection from the target's antipode.
-\index{Screen|)}
-
-
-\index{Camera!manipulation|(}
-An input file normally uses a single camera, so a global object named
-\code{camera} is defined automatically. At the start of a figure, the
-\code{camera} looks down on the \teximath{(x_1,x_2)}-plane from a
-distant point on the \teximath{x_3}-axis. The resulting view,
-essentially projection along the axis, is suitable for 2-dimensional
-figures.
-
-The \code{camera} is manipulated similarly to a real camera:
-\findex{Camera.at}
-\findex{Camera.look\_at}
-\findex{Camera.range}
-\findex{Camera.focus}
-\findex{Camera.tilt}
-\findex{Camera.pan}
-\findex{Camera.roll}
-\findex{Camera.clip\_range}
-\begin{verbatim}
- camera.at(P posn); // set viewpoint to posn
- camera.look_at(P targ); // set target to targ
- camera.range(double dist); // fix target, move viewpoint
- camera.focus(double dist); // fix viewpoint, move target
- camera.tilt(double angle); // rotate about the sea axis
- camera.pan(double angle); // rotate about the sky axis
- camera.roll(double angle); // rotate about the eye axis
- camera.clip_range(dist); // cull scenery closer than dist
-\end{verbatim}
-Explicitly setting the viewpoint or target makes the sky vector
-parallel to the projection of the \teximath{x_3}~axis when possible;
-otherwise the \teximath{x_2}-axis is used. Setting the range or focus
-moves the \code{camera} parallel along the eye line. Each command
-re-sizes the image; note that increasing the focus \emph{enlarges} the
-image. The three rotation operations fix the viewpoint, but only roll
-fixes the target.
-
-
-\subsubsection*{Filtering and Color Separation}
-\index{Color!separation}
-\index{Camera!color separation}
-
-The \code{camera} has a \emph{filter} through which all scene
-\code{Color}s pass. For uniformity, the filter should only be set at
-the start of the file body, before any visible elements have been
-placed in the scene. The filter has two primary uses---model
-conversion and color separation---but can also be used for special
-effects.
-
-There is a \code{Neutral} color, for which filtering has no effect at
-all. The \code{camera}'s default filter is \code{Neutral}. In
-addition, each color model has a \emph{neutral} representative,
-\code{RGB\_Neutral}, etc. Passing \code{Color}s through a neutral
-filter preserves their appearance but converts them to the neutral
-\code{Color}'s model.
-
-Filtering can be used to ``split'' a \code{Color} into primary
-constituents. For \code{RGB} channels, the primaries themselves are
-suitable filters. For \code{CMYK} channels, there are special
-\emph{process} filters, named \verb+C_Process+, etc.
-\begin{verbatim}
- camera.filter(CMY_Neutral()); // convert all colors to CMY
- camera.filter(Gray_Neutral()); // black and white photography
- camera.filter(Green()); // the green channel
- camera.filter(M_Process()); // the magenta channel
- camera.filter(Red(1.4)); // la vie en rose?
-\end{verbatim}
-\index{Camera!manipulation of|)}
-\index{Camera|)}
-
-
-\subsection{Clipping}
-
-\index{Clipping|(}
-
-Two operations handle elements lying far from the target.
-\emph{Cropping} culls elements based on their screen location, and is
-described later. \emph{Clipping} removes objects whose spatial
-location lies outside the ``clip region''.
-
-Initially, the clip region is a very large box centered at the
-origin. Commands are provided to resize this box, keeping the faces
-parallel to coordinate planes.
-\findex{clip\_box}
-\findex{clip\_to}
-\begin{verbatim}
- clip_box(P pt1, P pt2); // opposite corners
- clip_box(P pt); // opposite corners pt and -pt
- clip_to (P pt); // pt and P(0,0,0)
- clip_box(); // very large box
-\end{verbatim}
-Additional ``clippers'' may be added manually. Individual clipping
-planes are specified by a point and inward-pointing normal vector.
-Parallel planes cutting a ``slice'' or ``slab'' are described by a
-location, direction, and a distance. The location lies halfway between
-the clipping planes, and the planes' normals point toward the location.
-\findex{clip\_face}
-\findex{clip\_slice}
-\findex{clip\_restore}
-\begin{verbatim}
- clip_face(P loc, P perp); // perp points inward
- clip_slice(loc, perp); // very close parallel planes
- clip_slice(loc, perp, dist); // planes separated by dist
- clip_restore(); // remove manually-added clip planes
-\end{verbatim}
-Like \code{clip\_restore}, the \code{clip\_box} and \code{clip\_to}
-commands remove all user-specified half spaces.
-\index{Clipping|)}
-
-
-\subsection{Screens and Page Layout}
-\index{Screen|(}
-\index{Screen!active}
-\index{Layout}
-
-By default, drawing occurs in the Cartesian coordinate system of the
-\code{canvas}. However, insets and subfigures are most naturally
-composed in ``local'' coordinates, then placed into their final
-location as a unit, a process called \emph{layout}. \ePiX\ implements
-layout with the \code{screen} class.
-
-
-\subsubsection*{Screens}
-\index{Bounding box}
-
-A \code{screen} is a Cartesian plane containing a distinguished
-coordinate rectangle, its \emph{bounding box}. The \code{canvas} of a
-figure is a \code{screen}, as is the internal representation of the
-printed page. At any point of a file body, some \code{screen} is
-\emph{active}, or ``open for drawing''. A new \code{screen} is created
-from a pair of opposite corners, but is not used until explicitly
-activated.
-\findex{activate}
-\findex{deactivate}
-\begin{verbatim}
- screen subfig(P(a1,b1), P(a2,b2)); // [a1, a2] x [b1, b2]
- activate(subfig); // open subfig for drawing
- // commands to draw in subfig
- deactivate(subfig); // re-activate the previous screen
-\end{verbatim}
-
-The \code{canvas} is automatically drawn at the \code{end} of the
-input file. The contents of other \code{screen}s must be incorporated
-into the \code{canvas} explicitly with an \code{import}~or
-\code{inset} command. \code{import} affinely scales the bounding box
-of the ``child'' \code{screen} to the \code{canvas}. \code{inset}
-specifies corners in the ``parent'' where the child is
-placed.
-\findex{import}
-\findex{inset}
-\begin{verbatim}
- import(); // active screen to canvas
- import(subfig); // subfig to canvas
- inset(P sw, P ne); // active screen to specified rectangle
- inset(subfig, sw, ne); // subfig to specified rectangle
- inset(subfig); // inset to subfig's corners
-\end{verbatim}
-
-
-\subsubsection*{Extracting}
-
-The portion of a \code{screen} enclosed by a specified rectangle can
-be \emph{extracted}. Each of the commands
-\findex{extract}
-\findex{canvas}
-\begin{verbatim}
- subfig.extract(P sw, P ne);
- canvas().extract(P sw, P ne);
-\end{verbatim}
-returns the \code{screen} having stated corners and containing part of
-\code{subfig} or the \code{canvas}, respectively. Elliptical and
-diamond-shaped portions of a \code{screen} may be extracted. The
-contents occupy the ellipse or diamond inscribed in the given
-rectangle.
-\findex{extract\_diamond}
-\findex{extract\_ellipse}
-\begin{verbatim}
- subfig.extract_ellipse(sw, ne);
- canvas().extract_diamond(sw, ne);
-\end{verbatim}
-The \code{screen} returned by \code{extract} (or its variants) may be
-used just like a manually-constructed \code{screen}, for example to
-construct a magnified inset.
-
-
-\subsubsection*{True-Size Drawing}
-\label{truesize}
-
-On occasion, it is necessary to draw at known page size, independently
-of the unit length. For 2-dimensional drawing in the
-\teximath{(x_1,x_2)}-plane with the \code{camera} in its default
-location, the coordinates (horizontal, vertical, or both) of a
-\code{screen} may be interpreted as true~pt offsets relative to a
-specified point rather than as Cartesian coordinates.
-\findex{inlay}
-\findex{inlay\_horizontal}
-\findex{inlay\_vertical}
-\begin{verbatim}
- inlay(subfig, P loc);
- inlay_horizontal(subfig, loc);
- inlay_vertical(subfig, loc);
-\end{verbatim}
-Each command maps the origin of \code{subfig} to the specified
-location in the active \code{screen}. The first performs affine
-scaling so that one Cartesian unit in \code{subfig} maps to one
-true~pt on the page. The second and third commands perform this
-scaling only in the named direction.
-
-\findex{pt\_to\_screen}
-The \code{inlay} functions are suitable only for 2-dimensional
-effects. For 3-dimensional true-size drawing, the function
-\code{pt\_to\_screen} converts a true length of 1~pt into Cartesian
-coordinates in the active \code{screen}. For example, the command
-\code{line(P(0,0), P(pt\_to\_screen(12),0))} draws a line segment
-12~pt long with its left endpoint at the Cartesian origin. True size
-drawing is unusual in an input file, but has definite uses in library
-code; \ePiX's right angle marker is a typical application.
-
-Either type of true-size drawing works as described when drawing in
-the \code{canvas}, and \emph{only} when drawing in a \code{screen}
-imported to the \code{canvas} at ``true Cartesian'' size (one
-\code{screen} unit maps to one Cartesian unit in the \code{canvas}).
-In other situations, the true size coordinate(s) will be scaled by
-additional affine transformation(s).
-
-
-\subsubsection*{Cropping and Decorations}
-
-\index{Cropping}
-A \code{screen} has a \emph{crop mask}: rectangular (default),
-elliptical, or diamond-shaped. If cropping is switched on in the
-active \code{screen}, added elements are cropped to the crop mask.
-For example, cropping by the default crop mask in the \code{canvas}
-ensures the figure lies inside the printed region allocated by
-\LaTeX.
-
-The \code{crop} commands below affect the active \code{screen}
-only. Cropping is not a ``global'' attribute, but must be set or unset
-explicitly for each \code{screen}. By default, cropping is switched
-off.
-\findex{crop}
-\findex{crop\_ellipse}
-\findex{crop\_diamond}
-\findex{set\_crop}
-\begin{verbatim}
- set_crop(); // activate cropping
- set_crop(false); // deactivate cropping
- crop_diamond(); // <>-shaped mask, set crop state
- crop_ellipse(); // etc...
- crop(); // crop active screen's contents
-\end{verbatim}
-Normally the crop mask is inscribed in the \code{screen}'s bounding
-box. The commands \code{crop\_diamond} and \code{crop\_ellipse} also
-accept a pair of \code{P}~arguments, which are treated as corners of
-the crop box.
-
-The active \code{screen} may be decorated with a \code{border}
-(outline of specified color and line width) and \code{backing} (solid
-fill color). The crop mask determines the shape of the \code{border}
-and \code{backing}.
-\findex{border}
-\findex{backing}
-\begin{verbatim}
- border(color, len);
- backing(color);
-\end{verbatim}
-Identically-named member functions can be applied to an arbitrary
-\code{screen} whether or not it is active:
-\begin{verbatim}
- scr.crop_rectangle().backing(Blue(1.8));
- canvas().crop();
-\end{verbatim}
-
-
-\subsubsection*{Affine Maps}
-\index{Affine map}
-
-A \emph{plane affine map} has the form \teximath{T(x) = Ax+b} for some
-invertible \teximath{2\times2} matrix~\teximath{A} and a constant
-vector~\teximath{b}. \ePiX's \code{affine} class allows affine maps to
-be built and applied to \code{screen}s' contents.
-
-An affine map is uniquely determined by the images of three
-non-collinear points. The constructor returns the affine map sending
-the points \teximath{(1,0)}, \teximath{(0,1)}, and~\teximath{(0,0)} to
-\code{pt1}, \code{pt2}, and~\code{pt0}, respectively.
-\findex{affine}
-\begin{verbatim}
- affine af(P pt1, P pt2, P pt0=P(0,0));
-\end{verbatim}
-To emphasize, the arguments are locations, not displacements, and the
-image of the origin comes last. There is also a \code{void}
-constructor (taking no arguments) which returns the identity map.
-
-To facilitate construction of affine maps, an existing \code{affine}
-may be post-composed with a variety of ``elementary'' affine
-transformations. In the commands below, \code{th} is an angle (in
-current units), \code{sc} is a non-zero \code{double}, and \code{ctr}
-is a point fixed by the composing transformation. In each command,
-\code{ctr} defaults to \teximath{(0,0)}.
-\findex{shift}
-\findex{rotate}
-\findex{reflect}
-\findex{h\_scale}
-\findex{v\_scale}
-\findex{scale}
-\findex{h\_shear}
-\findex{v\_shear}
-\findex{postcomp}
-\begin{verbatim}
- affine af; // the identity map
- af.shift(P arg); // translate by arg
- af.rotate(th, [ctr]); // counterclockwise rotation about ctr
- af.reflect(th, [ctr]); // reflect across line through ctr
-
- af.h_scale(sc, [ctr]); // horizontal scaling
- af.v_scale(sc, [ctr]); // vertical scaling
- af.scale(sc, [ctr]); // dilatation
-
- af.h_shear(sc, [ctr]); // shear preserving horizontals
- af.v_shear(sc, [ctr]); // shear preserving verticals
-
- af.invert(); // the inverse
- af.postcomp(affine f); // post-compose with f
- af(f); // pre-compose, af not modified
-\end{verbatim}
-A non-invertible \code{affine} can be created \emph{only} by shearing
-or scaling with an extremely large or extremely small argument, or by
-supplying three collinear points to the constructor. Calling
-\code{invert} on a non-invertible map merely issues a warning and
-performs no action.
-
-An \code{affine} may be applied to a \code{screen}'s current contents.
-The \code{screen} class has eight member functions (\code{shift}
-through \code{shear}) with syntax identical to the affine map
-functions. In addition, an arbitrary \code{affine} may be applied to a
-\code{screen}:
-\findex{apply}
-\begin{verbatim}
- scr.shift(arg); // shift scr's contents by arg; etc.
- scr.apply(f); // apply f to scr's contents
-\end{verbatim}
-To apply a composition of several maps to a \code{screen}, it's best
-to build an \code{affine} map by composition, then \code{apply} the
-map. Composing \code{affine}s is cheap; \code{apply}ing an
-\code{affine} is costly in proportion to the number of elements in the
-\code{screen}.
-
-Applying an \code{affine} to a \code{screen} has no effect on the
-bounding box, \code{border}, or \code{backing}, and may move elements
-outside the bounding box even if cropping is active. To ensure a
-\code{screen}'s contents lie inside the bounding box, \code{crop} the
-\code{screen} \emph{after} \code{apply}ing the \code{affine}(s).
-
-The sample file \filename{inverse.xp} uses \code{affine} maps to
-depict branches of inverse functions in one variable,
-\filename{symmetry.xp} depicts the permutation group~\teximath{S_3}
-by its action on a regular hexagon.
-\index{Screen|)}
-
-
-\section{Drawing Attributes}
-
-\ePiX\ maintains drawing states for filled regions, paths, and text
-objects.
-
-
-\subsection{Filled Regions}
-
-\index{Filling}
-\index{Path|(}
-\index{Path!filled}
-Filling is either on or off. When filling is active, closed paths are
-filled with the current \emph{fill color}.
-\findex{fill}
-\findex{nofill}
-\begin{verbatim}
- fill(); // turn filling on
- fill(color); // turn filling on, specify color
- nofill(); // turn filling off, same as fill(false);
-\end{verbatim}
-
-
-\subsection{Paths}
-
-Paths and borders of filled regions are drawn with two \emph{pen}s,
-each described by color and line width. The \emph{line pen} draws
-all path-like objects. The \emph{base pen} does nothing unless it is
-wider then the line pen, in which case it draws an ``underlayer'' or
-``border'' on the line pen.
-\findex{pen}
-\begin{verbatim}
- pen(len); // set line pen width
- pen(color); // set line color, keep width
- pen(color, len); // set color and width
-\end{verbatim}
-As usual, \code{len} may be either a length string or a \code{double},
-interpreted as a width in~\code{pt}. There are \code{base} functions
-with the same signatures and analogous meanings for the base pen.
-
-The line width can be set with named declarations; the optional
-argument sets the line color:
-\findex{plain}
-\findex{bold}
-\findex{bbold}
-\begin{verbatim}
- plain([color]); // 0.4pt
- bold([color]); // 0.8pt
- bbold([color]); // 1.6pt
-\end{verbatim}
-
-
-\subsubsection*{Path Style}
-
-\index{Path!style}
-By default, path-like objects are drawn with solid lines. Dashed,
-dotted, and free-form path style patterns are also available. (The
-\code{base} underlayer is always solid.) The page length of a pattern
-defaults to 12~pt, but can be set.
-\findex{line\_style}
-\findex{dash\_size}
-\begin{verbatim}
- line_style(string);
- dash_size(len=12);
-\end{verbatim}
-The path style is set with a WYSIWYG string of dashes, spaces, and
-periods, representing a pattern of dashes, gaps, and dots. In the
-sample styles below, the repeating units have the same page size,
-12~pt.
-\begin{center}
- \input{pathstyle.eepic}
-\end{center}
-For brevity and uniformity, named commands are provided.
-\findex{solid}
-\findex{dashed}
-\findex{dotted}
-\begin{verbatim}
- solid(); "-" dashed(); "- -" dotted(); " . "
-\end{verbatim}
-A sequence of \teximath{n}~dashes, spaces, and dots corresponds to a
-dash/dot pattern in an interval divided into \teximath{n}~subintervals
-of equal length. If the \teximath{i}th character is a dash or space,
-the \teximath{i}th~subinterval is drawn solid or empty,
-respectively. If the \teximath{i}th~character is a period, a dot is
-placed at the midpoint of the \teximath{i}th~subinterval.
-
-This pattern is applied to a path-like object as follows. The page
-length of each edge is divided by the current \code{dash\_size} and
-the ceiling (next largest integer) taken. This many copies of the
-current path style are scaled onto the edge. The first and last
-characters are adjacent in repeated units.
-
-There are three inequivalent ways to adjust the dash length/dot
-spacing in a non-line path: Change the \code{dash\_length}, create a
-path with a different number of points, or use a longer, repetitive
-pattern. For best results, the style string should not be longer than
-about a dozen characters.
-
-If you need several dashed/dotted line styles in multiple figures,
-it's best to define a custom header instead of hard-coding line
-styles. See Section~\ref{section:extensions} for guidance.
-\index{Path|)}
-
-
-\subsection{Text Objects}
-
-\index{Labels|(emph}
-\index{Labels!alignment}
-
-Two types of textual element may appear in a file: \emph{labels} (text
-boxes) and \emph{markers} (\LaTeX\ symbols). A marker occupies a box
-of zero size, and is placed at a specified Cartesian location. A label
-has typographical size, and is usually offset from its Cartesian
-location. For placement, an \emph{alignment point} is attached to each
-label, and Cartesian coordinates position the alignment point.
-
-\subsubsection*{Labels}
-
-A label is printed as a \LaTeX\ box. By default, the alignment point
-is its reference point, the intersection of the left edge and the
-baseline, which is used by \LaTeX\ to position the box on the
-page:\input{basepoint.eepic}
-
-\index{Labels!alignment|(}
-The alignment point may be \emph{offset} manually by a specified
-number of \code{pt}. Additionally, a label's location with respect to
-the alignment point can be chosen with an optional \LaTeX-style
-alignment option. This scheme allows labels to be placed easily where
-they will not overlap other parts of the figure, and ensures labels
-stay properly positioned when the size or aspect ratio of a figure
-changes.
-\findex{label}
-\begin{verbatim}
- label(P posn, P offset, string msg, [align]);
- label(posn, msg);
-\end{verbatim}
-The first two components of the \code{offset} argument are numbers
-of~\code{pt} to shift the alignment point right and up. The optional
-\code{align} argument may be one---or an appropriate pair---of
-\code{t}, \code{b}, \code{r}, or~\code{l} (top, bottom, right, left),
-or~\code{c} (center). These alignment options specify the position of
-the label \emph{relative to the Cartesian location}~\code{posn},
-namely they work \emph{opposite} to the way they work in \LaTeX.
-\begin{center}
- \input{alignment_lr.eepic}\qquad
- \input{alignment.eepic}
-\end{center}
-\index{Labels!alignment|)}
-
-The \code{msg} argument is usually a snippet of \LaTeX\ code enclosed
-in double quotes. \CXX~treats ``\verb+\+'' as an escape character, so
-a double backslash is needed in the source to get a single backslash
-in the output. For example,
-\begin{verbatim}
- label(P(0,0), P(2,-1), "$\\rho = \\sin\\theta$", br);
-\end{verbatim}
-positions an alignment point \code{2pt}~right and \code{1pt}~below the
-(Cartesian) origin, and typesets the equation
-\teximath{\rho=\sin\theta} below and to the right.
-
-\index{Labels!rotated}
-\index{Angle units}
-Labels can be rotated; the (counterclockwise) angle is set in current
-angle units with the command \code{label\_angle(theta)}. For example,
-a rotation angle of~90 degrees prints labels along a vertical
-axis. Though label rotation has legitimate uses, it can make labels
-more difficult to read, defeating their purpose. Do not use rotated
-labels merely because they are available. As a practical matter, if an
-output file contains rotated labels, the enclosing document must use
-the \code{rotating} package. \code{elaps} automatically loads this
-package.
-
-\index{Affine map!action on labels}
-An \code{affine} behaves moderately intelligently when acting on a
-marker or label. The mapping is applied to the label's location, and
-the ``linear part'' is used to adjust the offset and label angle. No
-attempt is made to treat alignment. For best results, if a
-\code{screen} will have an \code{affine} applied to it, label
-positions should be fine-tuned only with offsets, not alignment
-arguments. In all situations, the font itself is unchanged; no
-attempt is made to print sheared, scaled, or reflected text. The
-sample file \filename{inverse.xp} illustrates the effect of affine
-maps on labels.
-
-
-\subsubsection*{Fonts and Type Size}
-
-\index{Fonts}
-\index{Labels!fonts in}
-By default, the font in an \ePiX\ figure is that of the enclosing
-document. The font size and face are changed with
-``declaration-style'' commands such as
-\findex{font\_size}
-\findex{font\_face}
-\begin{verbatim}
-font_size("Large");
-font_face("sc");
-\end{verbatim}
-The argument of \verb+font_size+ is a valid \LaTeX\ size. If no
-argument is given, \code{normalsize} is understood. \verb+font_face+
-accepts a two-letter string, appended to the string ``\code{text}'' to
-give a \LaTeX\ font declaration command (``\code{textsc}'' above).
-Finer-grained control is accomplished by placing \LaTeX\ commands
-into the label text.
-
-
-\subsubsection*{Label Attributes and Masked Labels}
-
-Each label command has a corresponding ``mask'' version
-(\code{masklabel}) that draws an opaque rectangle under the label
-text. The mask size exceeds the label's size by an amount of
-\emph{padding}, and the mask is itself surrounded by a rectangular
-\emph{border}, of specified color and width.
-\findex{label\_color}
-\findex{label\_mask}
-\findex{label\_pad}
-\findex{label\_border}
-\findex{no\_label\_border}
-\begin{verbatim}
- label_color(color); // set label text color
- label_mask(color=White()); // set mask color
- label_pad(string len);
-
- label_border(color, [len]); // set color (and line width)
- label_border(len); // set line width only
- no_label_border(); // turn off label borders
-\end{verbatim}
-
-
-\subsubsection*{Markers}
-
-\index{Marker types|(}
-\ePiX's marker types, listed in Table~\ref{table:marker}, are obtained
-with the command \verb+marker(P pt, <MARKER TYPE>);+ Several
-``dot-like'' marker types are available by name: \input{dots.eepic}
-\findex{spot}
-\findex{dot}
-\findex{ddot}
-\findex{box}
-\findex{bbox}
-\findex{ring}
-\findex{circ}
-\begin{verbatim}
- spot(P pt); dot(P pt); ddot(P pt);
- --- box(P pt); bbox(P pt);
- ring(P pt); circ(P pt); ---
-\end{verbatim}
-A \code{circ} is filled with the current \code{mask\_color}, and a
-\code{ring} is ``hollow''. Each dot-like marker can also be called
-with label syntax, generating a labeled marker with one command.
-\begin{verbatim}
- dot(P posn, offset=P(0,0), msg="", align=none); // etc.
-\end{verbatim}
-
-\findex{dot\_size}
-By default, \code{spot}~and \code{ring} are 4~pt in diameter;
-\code{dot}, \code{box}, and~\code{circ} are 3~pt in diameter;
-\code{ddot}~and \code{bbox} are 2~pt in diameter. At arbitrary
-diameter, a \code{spot} is \teximath{4/3}~the diameter of a~\code{dot}
-and a~\code{ddot} is \teximath{2/3}~the diameter. The command
-\code{dot\_size(diam=3)} sets the diameter of a \code{dot}, and hence
-the size of all dot-like markers.
-
-\begin{table}[tb]
- \begin{center}
- \input{marker.eepic}
- \end{center}
- \caption{\ePiX's \code{marker} types.}
- \label{table:marker}
-\end{table}
-\index{Marker types|)}
-
-
-
-\subsubsection*{Reminders}
-
-When constructing and placing a label,
-\begin{itemize}
-\item Offsets are specified in \code{pt} (true length), not Cartesian
- units: A label's location relative to its alignment point should not
- depend on the logical or printed size of the figure.
-
-\item The label text is enclosed in double quotes (the single
- character~\code{"}), and contains the \LaTeX\ code to generate the
- label. Backslashes are doubled.
- \index{Labels!backslash in}
- \index{Labels!in double quotes}
-\end{itemize}
-\index{Labels|)}
-
-
-\subsection{Color Declarations}
-
-Old-style color declarations set the fill color, line color, and
-text color.
-\findex{rgb}
-\findex{cmyk}
-\begin{verbatim}
- rgb(r, g, b); cmyk(c, m, y, k);
- rgb(P); cmyk(P); // for function-controlled colors
- red(d); // similarly for other primaries
-\end{verbatim}
-\index{Color|)}
-
-
-\section{Creating and Drawing Objects}
-
-Scene elements include geometric objects, coordinate grids, axis
-labels, and function plots. A few commands create an object (a point,
-line segment, circle, sphere, or plane) that can be used in subsequent
-computations, but most drawing commands automatically create, draw,
-and discard objects.
-
-
-\subsection{Geometric Data Structures}
-
-\index{Point|(}
-The simplest object in the world, and by far the most common named
-data structure, is~\code{P}, an ordered triple of real numbers
-(double-precision floats). The function~\code{P(x1,x2,x3)} creates the
-point~\teximath{(x_1,x_2,x_3)}. If only two arguments are provided,
-\teximath{x_3=0} by default. This convention allows \ePiX\ to treat
-2-~and 3-dimensional figures uniformly. The standard basis is
-available: \code{E\_1=P(1,0,0)}, etc.
-
-Depending on context, a \code{P} may represent either a
-\emph{location} (point) or a \emph{displacement} (vector). Almost all
-\ePiX\ functions treat a~\code{P} as a point. However, algebraic
-operators and commands that plot vector fields treat \code{P}
-arguments as displacements.
-
-Polar, cylindrical, and spherical coordinate \code{P}~constructors are
-sensitive to the current angular mode.
-\index{Angular mode}
-\findex{P}
-\findex{polar}
-\findex{cis}
-\findex{cyl}
-\findex{sph}
-\begin{verbatim}
- P pt=polar(r,t); // (r*Cos(t), r*Sin(t), 0)
- P pt=cis(t); // (Cos(t), Sin(t), 0) = polar(1, t)
- P pt=cyl(r,t,z); // (r*Cos(t), r*Sin(t), z)
- P pt=sph(r,t,phi); // polar(r,t)*Cos(phi) + (0,0,r*Sin(phi))
-\end{verbatim}
-
-Algebraic operations---addition/subtraction, scalar multiplication;
-scalar, cross, and componentwise products; orthogonalization---can
-be performed on~\code{P}s. In compound expressions, the binary
-operators below should be enclosed in parentheses, and scalars must be
-collected at left, \code{P}s at right.
-\findex{P.x1}
-\findex{P.x2}
-\findex{P.x3}
-\findex{J}
-\begin{verbatim}
- double u=pt.x1(); // first coordinate of pt, etc.
- P(a,b,c)|P(x,y,z); // scalar product, ax+by+cz
- P(a,b,c)&P(x,y,z); // componentwise product (ax, by, cz)
- P(a,b,c)*P(x,y,z); // cross product (bz-cy, cx-az, ay-bx)
- J(p); // quarter turn about the x3-axis
- p%q; // orthogonalization, p (mod q)
-\end{verbatim}
-Explicitly, \code{p\%q}~is the unique vector \code{p+k*q}
-perpendicular to~\code{q}.
-
-\code{P}~operations express mathematical relationships, and therefore
-imbue a figure with logical structure, making the input file easier to
-read, modify, and maintain. Commonly, a file preamble will define a
-few named points with hard-coded coordinates, then define additional
-points of interest using \code{P}~operators.
-\index{Point|)}
-
-
-\subsubsection*{Other Geometric Classes}
-
-In addition to~\code{P}, objects of type \code{Circle}, \code{Plane},
-\code{Segment}, and \code{Sphere} can be used for Euclidean geometry
-constructions. Simple affine operations are supplied for each type, as
-is a \code{draw()} function, which represents the object as a path in
-the screen.
-\findex{shift}
-\findex{move\_to}
-\findex{scale}
-\findex{draw}
-\begin{verbatim}
- obj.shift(P arg); // translate by arg
- obj.move_to(P arg); // move center to arg
- obj.scale(double c); // scale about center by c
- obj.draw();
-\end{verbatim}
-A \code{Segment}'s ``center'' is its midpoint. A \code{Plane} has no
-center; \code{move\_to} translates the \code{Plane} to pass through
-\code{arg}, and \code{scale} has no effect.
-
-\index{Circle}
-A \code{Circle} data structure consists of a center, radius, and a
-perpendicular unit vector. Three constructors are provided:
-\findex{Circle}
-\begin{verbatim}
- Circle(center=P(0,0,0), double rad=1, normal=E_3);
- Circle(P center, P point);
- Circle(P p1, P p2, P p3);
-\end{verbatim}
-The second constructor creates the \code{Circle} parallel to the
-\teximath{(x_1,x_2)}~plane, with given center, and radius equal to the distance
-between the arguments. (A warning is printed if the second argument
-does not lie on the circle, namely, if the arguments do not lie in a
-plane parallel to the \teximath{(x_1,x_2)}~plane.) The third returns the
-\code{Circle} passing through the given points; the points must not be
-collinear.
-
-The data defining a \code{Circle} are recovered with member functions
-named \code{center()}, \code{radius()}, and \code{perp()}.
-
-\index{Plane}
-\findex{Plane}
-A \code{Plane} is specified by a point and normal vector, or by three
-non-collinear points. The \code{draw()} function clips the plane and
-draws the resulting polygon. Unless the clip box has been set
-manually, the clipped polygon's vertices will have large coordinates.
-
-\index{Segment}
-\findex{Segment}
-A \code{Segment} is constructed from its endpoints. The member
-function \code{midpoint()} returns the center.
-
-\index{Sphere}
-\findex{Sphere}
-A \code{Sphere} is specified by a point and a radius---by default the
-origin and unity, or by the center and a point on the sphere. Member
-functions \code{center()}~and \code{radius()} return the defining
-data. Capabilities specific to geography and spherical geometry are
-described below, pp.~\pageref{non-eucl}ff.
-
-The \code{draw()} function of a \code{Sphere} draws the horizon
-visible from the current viewpoint. While this horizon is a circle in
-object space, its image in the screen is generally an ellipse.
-Antipodal points are not generally mapped to points symmetrically
-placed with respect to the center of this ellipse. These effects are
-most pronounced when the viewpoint is close to the \code{Sphere} and
-the center is not close to the \code{target}.
-
-
-\subsubsection*{Intersection}
-
-\index{Intersection}
-
-To facilitate geometric computation, \ePiX's \code{Circle},
-\code{Plane}, \code{Segment}, and \code{Sphere} classes can be
-intersected with the \code{*}~operator.
-\texicomment
-Table~\ref{table:intersect}
-lists the return types for each pair of arguments. Intersection is
-commutative, so only the top half of the table is shown. For purposes
-of intersection, a \code{Segment} is extended into a line.
-The sample file \filename{pascal.xp} gives typical applications of
-objects and intersection.
-\findex{intersection}
-\begin{table}[hbt]
-\begin{center}
- \begin{tabular}{c|cccc}
- \code{*} &
- \code{Segment} & \code{Circle} & \code{Plane} & \code{Sphere} \\
- \hline
- \code{Segment} & \code{P} & \code{Segment} & \code{P} & \code{Segment} \\
- \code{Circle} & & \code{Segment} & \code{Segment} & \code{Segment} \\
- \code{Plane} & & & \code{Segment} & \code{Circle} \\
- \code{Sphere} & & & & \code{Circle}
- \end{tabular}
- \caption{Object intersection types.}
- \label{table:intersect}
-\end{center}
-\end{table}
-\texicommentend
-
-A \code{Circle} has a center, radius, and unit normal; a \code{Plane}
-has a distinguished point and unit normal; a \code{Segment} has two
-endpoints; a \code{Sphere} has a center and radius. An object is
-\emph{malformed} if these conditions are not met. The constructors
-return well-formed objects with two exceptions: \code{Circle} and
-\code{Plane} create malformed objects if called with three collinear
-points. The operator~\code{*} returns a malformed object if either
-argument is malformed, or if the operands are disjoint, tangent, or
-coincident. Malformedness is benign: Calling \code{draw()} on a
-malformed object does nothing.
-
-
-\subsubsection*{Orthonormal Frames}
-
-A \code{frame} comprises three mutually perpendicular unit
-vectors. The constructor takes three vectors. The \code{frame}'s third
-vector~\teximath{e_3} is positively proportional to~\code{v3}, the
-second vector~\teximath{e_2} is positively proportional to
-\code{v2\%v3}, and the first is the cross product,
-\teximath{e_1=e_2\times e_3}. Thus, a \code{frame} is right-handed,
-and does not depend on~\code{v1}.
-
-The elements of a \code{frame} are named \code{sea}, \code{sky}, and
-\code{eye}, just as for the \code{camera}. A \code{frame} can be
-rotated through an arbitrary angle about any of its elements.
-\findex{frame}
-\begin{verbatim}
- frame(); // the standard basis {E_1, E_2, E_3}
- frame fr(v1, v2, v3); // orthonormalize {v1, v2, v3}
- fr.sea(); // the first element of fr, etc.
- fr.rot1(theta); // rotate fr through theta about sea, etc.
-\end{verbatim}
-
-
-\subsection{Path-Like Elements}
-
-Basic path-like objects are drawn with named commands. Arguments of
-polygon commands are endpoints/vertices. Except for \code{line}~and
-\code{Line}, the following are subject to filling.
-\findex{line}
-\findex{Line}
-\findex{triangle}
-\findex{rect}
-\findex{quad}
-\findex{circle}
-\begin{verbatim}
- line(P p1, P p2, [double expand]);
- Line(p1, p2); // draw line through p1, p2 (crop required)
- triangle(P p1, P p2, P p3);
- rect(P p1, P p2);
- quad(P p1, P p2, P p3, P p4); // quadrilateral
- circle(ctr=P(0,0,0), rad=1, normal=E_3);
- circle(ctr, pt);
- circle(pt1, pt2, pt3);
-\end{verbatim}
-The optional \code{line} argument is an expansion parameter:
-\code{line(p1,p2,t);} draws a segment centered at the midpoint of
-\code{p1}~and \code{p2}, with length scaled
-by~\teximath{2^{t/100}}. (Setting \teximath{t=100} doubles the length,
-while \teximath{t=-100} halves the length.) The arguments of
-\code{rect()} must lie in a plane parallel to a coordinate plane. The
-arguments to \code{circle} commands are the same as for \code{Circle}
-constructors.
-
-Quadratic and cubic splines are described by their control points. A
-list of~\code{P} is drawn as a ``natural'' spline (the \teximath{C^2}
-piecewise cubic curve with vanishing second derivatives at the
-endpoints); the number of points per cubic segment must be specified.
-Circular and elliptical arcs are given by center, a basis, angular
-range, and an optional number of intervals.
-\findex{spline}
-\findex{arc}
-\findex{ellipse}
-\begin{verbatim}
- spline(P p1, P p2, P p3, [int n]); // quadratic
- spline(P p1, P p2, P p3, P p4, [int n]); // cubic
- spline(vector<P>, int n); // natural spline
-
- arc(P ctr, rad, t_min, t_max); // parallel to (x1,x2)-plane
- ellipse(P ctr, P v1, P v2); // in plane spanned by v1, v2
- ellipse(P ctr, P v1, P v2, t_min, t_max, [int n]);
-\end{verbatim}
-\texicomment
-Mathematically, these commands draw parametric paths
-\begin{align*}
- \text{Spline:}\quad&(1-t)^2 p_1 + 2(1-t)t p_2 + t^2 p_3,
- && t\in[0,1] \\
- \text{Spline:}\quad&(1-t)^3 p_1 + 3(1-t)^2t p_2 + 3(1-t)t^2 p_3 + t^3p_4,
- && t\in[0,1] \\
- \text{Arc:}\quad&\mathrm{ctr} + (\cos t)(\mathrm{rad},0,0)
- + (\sin t)(0,\mathrm{rad},0),
- && t\in[t_\mathrm{min}, t_\mathrm{max}] \\
- \text{Ellipse:}\quad&\mathrm{ctr} + (\cos t)v_1 + (\sin t)v_2,
- && t\in[t_\mathrm{min}, t_\mathrm{max}].
-\end{align*}
-\texicommentend
-If parameter bounds are omitted in an \code{ellipse} command, the
-entire ellipse is drawn. When the angular range subtends one or more
-full turns in an \code{arc}~or \code{ellipse} the curve is subject to
-filling.
-
-Commands for planar (half-)ellipses remain from \ePiX's early days:
-\findex{ellipse}
-\findex{ellipse\_left}
-\findex{ellipse\_right}
-\findex{ellipse\_top}
-\findex{ellipse\_bottom}
-\begin{verbatim}
- ellipse(P ctr, P radius);
- ellipse_left(P ctr, P radius);
- ellipse_right(P ctr, P radius);
- ellipse_top(P ctr, P radius);
- ellipse_bottom(P ctr, P radius);
-\end{verbatim}
-If \code{radius} is \code{P(a,b)}, these commands draw all or half of
-the ellipse with given center in the \teximath{(x_1,x_2)} plane, axes
-parallel to the coordinate axes, and axis lengths \teximath{2a}~and
-\teximath{2b}.
-
-Two commands are available to mark off right angles or a subtended
-angle. Each accepts a spatial location and two non-zero directions,
-and draws a scene element in the plane spanned by the vectors.
-\findex{right\_angle}
-\findex{arc\_measure}
-\begin{verbatim}
- right_angle(P loc, P v1, P v2, scale=8);
- arc_measure(P loc, P v1, P v2, scale=8);
- arc_measure(P loc, P v1, P v2, offset, text, align, scale=8);
-\end{verbatim}
-The \code{right\_angle} command does not check its arguments for
-perpendicularity. The \code{arc\_measure} commands mark the
-\emph{small} angle subtended by the directions; the label form places
-a label at the midpoint of the arc. The (optional) \code{scale}
-argument is the true size in~\code{pt} of the marker.
-
-
-\subsubsection*{Recursive Fractal Curves}
-
-\index{Path!fractal}
-Consider a path made up of equal-length segments that can point at any
-angle of the form~\teximath{2\pi k/n} radians, for \teximath{0\leq
-k<n}, like spokes on a wheel. A path is specified by a finite sequence
-of integers, taken modulo~\teximath{n}. For example, if
-\teximath{n=6}, then the sequence \teximath{0, 1, -1, 0} corresponds
-to the ASCII path \verb+_/\_+. \ePiX's fractal approximation starts
-with such a ``seed'' then recursively (up to a specified depth)
-replaces each segment with a scaled and rotated copy of the seed,
-Figure~\ref{fig:fractal}. The seed above generates the standard
-von~Koch snowflake fractal. In code:
-\findex{fractal}
-\begin{verbatim}
- const int seed[] = {6, 4, 0, 1, -1, 0};
- fractal(P(a,b), P(c,d), depth, seed);
-\end{verbatim}
-The first entry of \code{seed[]} (here~6) is the number of
-``spokes''~\teximath{n}, the second~(4) is the number of terms in the
-seed, and the remaining entries are the seed proper. The final path
-joins \teximath{(a,b)}~to \teximath{(c,d)}. The number of segments in
-the final path grows exponentially in the depth, so depths larger than
-5~or 6 are likely to exceed the capabilities of \LaTeX\ and/or
-PostScript.
-\begin{figure}[hbt]
- \begin{center}
- \input{koch.eepic}
- \end{center}
- \caption{Successive iterations of \{\code{4,8,0,1,0,3,3,0,1,0}\}}
- \label{fig:fractal}
-\end{figure}
-
-
-\subsubsection*{Arrows}
-
-\index{Arrow}
-Line segments, splines, and arcs can be drawn with arrowheads at one
-end. In profile, an arrowhead's width is \code{3pt}, and its height
-is 5.5~times the width. The actual printed height depends on the
-head's orientation with respect to the camera. By default, an
-arrowhead is a filled triangle. The shape and size are adjusted with
-declarations:
-\findex{arrow\_width}
-\findex{arrow\_ratio}
-\findex{arrow\_inset}
-\begin{verbatim}
- arrow_width(w=3); // width in pt
- arrow_ratio(r=5.5); // height-to-width
- arrow_inset(c=0); // base indent as frac of ht
-\end{verbatim}
-\input{arrow.eepic} Inset\teximath{=0}\qquad
-\input{arrow25.eepic} Inset\teximath{=0.25}\qquad
-\input{arrow50.eepic} Inset\teximath{=0.5} \\
-The \code{inset} must be between \teximath{-1}~and \teximath{1}. Each
-\code{arrow} command accepts an optional \code{scale} argument, which
-scales the arrowhead.
-\findex{arrow}
-\begin{verbatim}
- arrow(P tail, P tip, [scale]);
- arrow(P p1, P p2, P p3, [scale]); // spline arrows
- arrow(P p1, P p2, P p3, P p4, [scale]);
- arrow(P ctr, P v1, P v2, t_min, t_max, [scale]); // ellipse
-\end{verbatim}
-A few ``special-purpose'' commands are supplied:
-\findex{dart}
-\findex{aarrow}
-\findex{arc\_arrow}
-\begin{verbatim}
- dart (P p1, P p2); // same as arrow(p1, p2, 0.5);
- aarrow(P p1, P p2); // double-headed arrow <--->
- arc_arrow(ctr, rad, t_min, t_max, [scale]);
-\end{verbatim}
-If an \code{arc\_arrow} is too short, nothing is drawn.
-
-
-\subsection{Coordinate Axes and Labels}
-
-\index{Labels!axis|(}
-\index{Axes!labeling}
-\index{Axes|(}
-\ePiX\ provides an \code{axis} class for coordinate axes. Labels are
-generated automatically in a variety of styles: decimal, scientific
-notation, fraction, and trigonometric fraction. Logarithmic axes and
-labels are available. Axis and labeling commands from Version~1.0 have
-been retained.
-
-
-\subsubsection*{The \code{axis} Class}
-
-An \code{axis} consists of a line segment divided into a specified
-number of equal-length subintervals by ``major'' (long) tick marks.
-Each subinterval may be divided further by ``minor'' (short) tick
-marks. Minor ticks may be equally-spaced (``Cartesian'') or
-logarithmically placed. Finally, a label is written at each major tick
-mark with specified offset and alignment. Labels are generated
-automatically from the endpoints, so the line should be parallel to a
-coordinate axis. Label attributes (masking, borders, font size and
-face, rotation angle) are determined by the current label style, not
-by the \code{axis}.
-
-The command
-\findex{axis}
-\begin{verbatim}
- axis(P tail, P head, int n, P offset=P(0,0), [align = none]);
-\end{verbatim}
-creates an axis joining \code{tail} to \code{head}, divided into
-\code{n}~segments of equal length, with a major tick mark and label at
-each division point and endpoint. The \code{offset} and \code{align}
-arguments have the same meaning as for ordinary labels.
-
-The number and length of minor ticks, and the alignment of ticks, are
-controlled with member functions:
-\findex{axis.subdivide}
-\findex{axis.tick\_ratio}
-\findex{axis.align}
-\begin{verbatim}
- axis Ax(P(a,c), P(b,c), n);
- Ax.subdivide(n); // put n-1 minor ticks in each axis segment
- Ax.tick_ratio(r); // minor length = r*major length
- Ax.align(AL=c); // align all ticks; AL = t, b, l, r, or c
-\end{verbatim}
-By default, major ticks are \code{6pt}~long and twice the length of
-minor ticks. The global declaration \code{tick\_size(len)} sets the
-major length, subject to ``reasonable stylistic limits''. For visual
-consistency, tick lengths should not be changed casually.
-
-\index{Axes!labeling}
-Labels on an \code{axis} may be drawn in several styles, selected with
-member functions:
-\findex{axis.dec}
-\findex{axis.frac}
-\findex{axis.trig}
-\findex{axis.sci}
-\findex{axis.unmark}
-\findex{axis.precision}
-\findex{axis.align\_labels}
-\begin{verbatim}
- Ax.dec(); // decimals (default)
- Ax.frac(); // fractions, e.g. 0.5 -> \frac{1}{2}
- Ax.trig(); // fractional multiples of \pi
- Ax.sci(); // scientific notation, k\times base^N
-
- Ax.unmark(double); // remove label at selected location
- Ax.precision(p); // set number of digits for decimal labels
- Ax.align_labels(AL); // re-align labels
-\end{verbatim}
-Arbitrary textual labels depending on one coordinate are obtained by
-writing a \code{string}-valued function of~\code{double} and
-``registering'' it:
-\findex{axis.label\_rep}
-\begin{verbatim}
- // f represents x as a string in given precision and base
- std::string f(double x, unsigned int prec, unsigned int base);
- Ax.label_rep(f);
-\end{verbatim}
-For example, textual tags can be printed instead of numeric labels.
-
-By default, an \code{axis} is Cartesian. The member function
-\code{log(int b=10)} converts an \code{axis} to ``log mode'' with
-specified base; this affects both tick marks and labeling. If \code{b}
-is at least~3, minor tick marks appropriate for a logarithmic axis
-base~\code{b} are drawn. Second, labels are written in decimal or
-scientific notation appropriately for a logarithmic axis; that is,
-``\teximath{k\times b^N}'' (or its decimal value) is written at
-location \teximath{N+\log_b k}.
-
-Minor ticks of a log \code{axis} may be labeled individually; again,
-this is controlled with member functions:
-\findex{axis.tag}
-\findex{axis.tag235}
-\findex{axis.tags}
-\findex{axis.untag}
-\begin{verbatim}
- Ax.tag(d); // labels at N+log_b(d)
- Ax.tag235(); // tag 2, 3, and 5 if b=10
- Ax.tags(); // tag 1, ..., b-1
- Ax.untag(); // remove all tags, including 1
- Ax.untag(double); // remove one tag, e.g. Ax.untag(9);
-\end{verbatim}
-
-For convenience, an \code{axis} object along an edge of the active
-\code{screen} can be created with a named command:
-\findex{top\_axis}
-\findex{bottom\_axis}
-\findex{left\_axis}
-\findex{right\_axis}
-\begin{verbatim}
- top_axis(n, offset, align);
- bottom_axis(n, offset, align);
- left_axis(n, offset, align);
- right_axis(n, offset, align);
-\end{verbatim}
-The ticks automatically point into the bounding box.
-
-The functions above create objects or set \code{axis} attributes, but
-write no output. Tick marks and labels can be printed separately, or
-at once:
-\findex{axis.draw}
-\findex{axis.draw\_ticks}
-\findex{axis.draw\_labels}
-\begin{verbatim}
- Ax.draw(); // axis, tick marks, and labels
- Ax.draw_ticks(); // axis and ticks only
- Ax.draw_labels();
-\end{verbatim}
-
-
-\subsubsection*{Other Axis-Drawing Commands}
-
-\index{Axes!logarithmic}
-\ePiX\ formerly supplied commands for drawing simple axes and their
-labels. These commands have been kept for compatibility. Horizontal
-axes are generated with
-\findex{h\_axis}
-\findex{h\_log\_axis}
-\findex{v\_axis}
-\findex{v\_log\_axis}
-\begin{verbatim}
- h_axis(p1, p2, n, align=c); // n subintervals (n+1 ticks)
- h_log_axis(p1, p2, n, align=c, base=10);
-\end{verbatim}
-For vertical axes, use \code{v\_axis}. The style of tick mark is
-appropriate for an axis of the given type. Horizontal axis tick marks
-may be aligned \code{t}~(above the axis) or~\code{b}
-(below). Similarly, vertical axis ticks may be aligned \code{r}~or
-\code{l}.
-
-The endpoint arguments of a coordinate axis may be omitted, in which
-case they default to \teximath{p_1=(x_\mathrm{min},0)} and
-\teximath{p_2=(x_\mathrm{max},0)} for a horizontal axis, or to
-\teximath{p_1=(0,y_\mathrm{min})} and
-\teximath{p_2=(0,y_\mathrm{max})} for a vertical axis. If the bounding
-box has integer width and/or height, omitting the number of points
-draws tick marks one unit apart.
-
-Labels for a horizontal Cartesian or logarithmic axis are generated
-with the commands
-\findex{h\_axis\_labels}
-\findex{h\_axis\_masklabels}
-\findex{h\_axis\_log\_labels}
-\findex{h\_axis\_log\_masklabels}
-\findex{v\_axis\_labels}
-\findex{v\_axis\_masklabels}
-\findex{v\_axis\_log\_labels}
-\findex{v\_axis\_log\_masklabels}
-\begin{verbatim}
- h_axis_labels(P p1, P p2, int n, P offset, [align]);
- h_axis_masklabels(p1, p2, n, offset, [align]);
- h_axis_log_labels(p1, p2, [n], offset, [align], base=10);
- h_axis_log_masklabels(p1, p2, [n], offset, [align], base=10);
-\end{verbatim}
-Labels for a vertical axis are generated with \code{v\_axis\_labels},
-etc. The labels are automatically generated to match their horizontal
-location. The first puts \teximath{(n+1)}~evenly-spaced labels on the segment
-joining \code{p1}~and \code{p2}. As with ordinary labels, the
-\code{offset} is in~\code{pt}, and the optional \LaTeX-style alignment
-option positions the labels using their corners. The second command
-draws masked labels according to the current label masking
-attributes. The third writes labels in exponential notation, using the
-Cartesian coordinate as exponent.
-
-As for coordinate axes, the initial and final points may be omitted in
-an \code{axis\_[mask]labels} command, with the same defaults. The
-\code{offset} and number of labels must always be specified.
-
-
-\subsubsection*{Broken Axes}
-\index{Axes!broken}
-
-Broken axes are best drawn using page layout, especially if axis
-labels are to be drawn. To accomplish the task, create a screen for
-each piece of axis, using appropriate Cartesian coordinates for the
-corners, then \code{inset} the screens so the axis pieces are nearly
-end to end. A zig-zag glyph signifies the break:
-\findex{axis\_break}
-\begin{verbatim}
- axis_break(P, P, scale=12);
-\end{verbatim}
-The \code{P} arguments are the screen coordinates of the ends to be
-joined; the optional third argument is the true height and width
-in~\code{pt} of the glyph. The sample file \filename{coord\_tricks.xp}
-uses layout and axis breaks.
-
-
-\subsubsection*{Coordinate Grids}
-
-Cartesian grids fill a coordinate rectangle, and have a specified
-number of lines in each direction. A polar grid has specified radius,
-and numbers of rings and sectors.
-\findex{grid}
-\findex{polar\_grid}
-\begin{verbatim}
- grid(n1, n2); // fills the bounding box
- grid(p1, p2, n1, n2); // fills the box with corners p1, p2
- polar_grid(r, n1, n2);
-\end{verbatim}
-
-Log and semi-log grids are drawn with analogous syntax:
-\findex{log\_grid}
-\findex{log1\_grid}
-\findex{log2\_grid}
-\begin{verbatim}
- log_grid (p1, p2, n1, n2, [base1], [base2]); // log-log
- log1_grid(p1, p2, n1, n2, [base]); // log-lin
- log2_grid(p1, p2, n1, n2, [base]); // lin-log
-\end{verbatim}
-The~\teximath{n_i} arguments dictate the number of squares, namely the number
-of orders of magnitude spanned in the logarithmic direction(s). The
-(optional) base arguments default to~10, and control the number of
-lines drawn per order of magnitude. As with Cartesian grids, the
-corners are optional; if omitted, the grid fills the bounding box.
-
-\index{Graph paper}
-Graph paper may be created by superimposing grids:
-\texicomment
-\begin{center}
- \begin{minipage}[b]{2.5in}
- \begin{footnotesize}
-\texicommentend
-\findex{pen}
-\findex{grid}
-\begin{verbatim}
- pen(0.25);
- grid(10*xsize(), 10*ysize());
- pen(0.5);
- grid(2*xsize(), 2*ysize());
- pen(1);
- grid(xsize(), ysize());
-\end{verbatim}
-\texicomment
- \end{footnotesize}
- \end{minipage}
- \qquad
- \input{graphpaper.eepic}
-\end{center}
-\index{Axes|)}
-\texicommentend
-
-\subsection{The Path Class}
-
-\index{Path!class}
-A \code{path} data structure is an ordered list of points that can be
-cropped, clipped, mapped, concatenated, and drawn. The first four
-constructors mirror polygon-drawing commands above. Function graphs
-and parametric paths are built from a real- or \code{P}-valued
-function~\code{f} of one variable.
-\findex{path}
-\begin{verbatim}
- path(p1, p2, expand=0); // line (endpoints)
- path(p1, p2, p3, [n]); // quadratic spline
- path(p1, p2, p3, p4, [n]); // cubic spline
- path(p1, v1, v2, t_min, t_max, [n]); // ellipse
- path(f, t_min, t_max, [n]);
-\end{verbatim}
-
-The member function \code{pt()} accepts a~\code{P} or three (or two)
-doubles and appends the specified point to a \code{path}. This
-snippet creates a regular \teximath{n}-gon:
-\begin{verbatim}
- path ngon; // declare new path
- for (int i=0; i<=n; ++i)
- ngon.pt(cis(i*full_turn()/n)); // works in all angle modes
-\end{verbatim}
-Compound paths may be built by concatenation. If \code{path1}~and
-\code{path2} share an endpoint, the commands
-\begin{verbatim}
- path1 += path2;
- path1 -= path2;
-\end{verbatim}
-replace \code{path1} with the result of traversing \code{path1}
-``forward'', then following \code{path2} in the forward or reverse
-direction (respectively). For expected results, the first
-(or last) point on~\code{path2} should be the last point
-of~\code{path1}. The notation suggests 1-dimensional homology
-chains. The sample file \filename{contour.xp} illustrates path
-creation and manipulation.
-
-A \code{path} is a data structure, and must be drawn explicitly to
-create visible output. By default a \code{path} is not a closed loop
-(even if the first and last points are the same), and is not filled
-when drawn. Member functions perform these tasks. Continuing the
-\teximath{n}-gon snippet above,
-\findex{path.close}
-\findex{path.fill}
-\findex{path.draw}
-\begin{verbatim}
- ngon.close(); // mark path as closed
- ngon.fill(); // draw filled region if filling is active
- ngon.draw(); // print to the screen
-\end{verbatim}
-\code{path::close()} adds a closing edge if necessary. Once a
-\code{path} is closed, no more points can be added. A closed path
-clips and crops differently than an open \code{path} with the same
-data. \code{path::fill()} has no effect on an unclosed \code{path}.
-
-
-\subsection{Function Plotting}
-
-\index{Plotting|(}
-The noun ``map'' refers to a \CXX\ function that accepts one or
-more \code{double} arguments and returns a \code{double}~or
-a~\code{P}. Mathematically, a map can be depicted in two ways: as a
-graph (which retains information about the domain), or as a
-parametrized curve or surface (which discards domain
-information). \ePiX\ assumes that \code{double}-valued maps are
-graphed and \code{P}-valued maps are drawn parametrically. Either sort
-of depiction is called a ``plot''. \ePiX\ plots are either ``wire
-mesh'', produced by a \code{plot} command, or ``shaded'', produced by
-a \code{surface} command.
-
-
-\subsubsection*{Basic Plotting}
-
-For the moment, ``function'' means ``function of one variable''
-(precisely, a \code{double}-valued function of a \code{double}
-variable). A function graph depends on the domain and the number of
-points to use. Each of the commands
-\findex{plot}
-\findex{polarplot}
-\findex{shadeplot}
-\begin{verbatim}
- plot(f, t_min, t_max, n);
- polarplot(f, t_min, t_max, n);
- shadeplot(f, t_min, t_max, n);
-\end{verbatim}
-graphs the function~\code{f} on the interval \code{[t\_min, t\_max]}
-by dividing the interval into \code{n}~subintervals of equal length.
-The first gives a Cartesian plot, the second a polar plot with bounds
-in current angular units, the third shades the region between the
-graph and the horizontal axis. If two functions are given to
-\code{shadeplot}, the region between their graphs is shaded.
-
-
-\subsubsection*{Domains and Wiremesh Plots}
-
-\index{Domain|(}
-An \ePiX\ \code{domain} is a coordinate box of dimension one, two, or
-three, specified by a pair of opposite corners and two \emph{meshes}
-(``coarse'' and ``fine'', respectively) which specify the amount of
-data to be plotted. Plotting is explained in detail below.
-\findex{domain}
-\begin{verbatim}
- // [a1,a2] x [b1,b2]: n1 x n2 rectangles, m1 x m2 intervals
- domain R2(P(a1,b1), P(a2,b2), mesh(n1,n2), [mesh(m1,m2)]);
-
- // [a1,a2] x [b1,b2] x [c1,c2] divided analogously
- domain R3(P(a1,b1,c1), P(a2,b2,c2),
- mesh(n1,n2,n3), [mesh(m1,m2,m3)]);
-\end{verbatim}
-If unspecified, the fine mesh is the same as the coarse mesh. For
-expected behavior, the coarse mesh should ``divide'' the fine mesh, in
-that \teximath{m_i}~should be a (usually small) integer multiple
-of~\teximath{n_i} for each~\teximath{i}.
-
-A \code{domain} may be \emph{resized} in any coordinate for which the
-thickness is positive, and can be \emph{sliced} by setting one
-variable to a constant. The result of slicing is a \code{domain} whose
-dimension is one smaller than the original. Finally,
-``\code{slices}'' operators return the list of \code{domain}s obtained
-by setting one variable to evenly-spaced constants. By default, the
-number of slices is specified by the coarse mesh. An optional argument
-specifies the number of slices. This argument need not be related to
-the coarse mesh.
-\findex{domain.resize}
-\findex{domain.slice}
-\findex{domain.slices}
-\begin{verbatim}
- R2.resize2(a,b); // [a1,b1] x [a,b]
- R2.slice1(t); // set x1 = t
- R3.slices3([n]); // (n+1) domains with x3 = const
-\end{verbatim}
-\begin{center}
- \input{slices.eepic}
-\end{center}
-\smallskip
-When possible, resizing preserves grid square sizes. Generally,
-though, integer truncation occurs: If \code{R=domain(P(0,0), P(1,1),
-mesh(10,6))}, then \code{R.resize1(0,0.25)} is the rectangle
-\teximath{[0,0.25]\times[0,1]} subdivided into \teximath{2\times6}
-subrectangles, since \teximath{10\div4=2} in integer arithmetic. For
-expected behavior, choose mesh sizes to avoid integer truncation.
-
-
-The arguments of a \code{plot} command are a map, followed by either a
-domain or its logical equivalent.
-\findex{plot}
-\begin{verbatim}
- double f(double t) { return t*t; }
- P F(double u, double v) { return P(u, v, exp(u)*Sin(v)); }
- P G(double u, double v, double w) { return P(v*w, u*w, u*v); }
-
- plot(f, a, b, n); // f:[a,b] -> R, using n intervals
- plot(F, R2); // graph of exp(u)*Sin(v)
- plot(G, R3.slice2(0.5); // G: R^3 -> R^3 restricted to y=0.5
-\end{verbatim}
-By (compiler-enforced) convention, \code{plot} commands involving a
-\code{P}-valued map accept a \code{domain} argument, as in the second
-and third commands above. To plot a \code{double}-valued function, by
-contrast, supply the logical equivalent of a \code{domain}, usually
-the endpoints and the number of intervals, as in the first \code{plot}
-command above.
-
-Resizing and slicing allow a map~\code{F} to be plotted selectively
-over parts of its domain. This can be used to emphasize parts of the
-image, layer scene elements, patch surfaces together, and so forth.
-Resize and slice(s) commands may be used directly in a \code{plot}
-command:
-\findex{plot}
-\begin{verbatim}
- plot(F, R2.resize1(0,0.5));
- plot(F, R2.slices1());
-\end{verbatim}
-
-
-\subsubsection*{Meshes and Plotting}
-
-The \code{P}~arguments of a \code{domain} are a pair of opposite
-corners. The first \code{mesh} argument, the \emph{coarse} mesh,
-specifies the number of subdivisions in each coordinate direction.
-The second \code{mesh}, the \emph{fine} mesh, determines the number of
-points used in each direction when plotting.
-
-\begin{comment}
-Suppose the \code{domain}~\code{R2} is, as above, the rectangle
-\teximath{[0,3]\times[-1,2]}. The argument \code{mesh(12,6)} divides the
-rectangle a \teximath{12\times6}~array of subrectangles known as the
-\emph{coarse mesh}. A \code{P}-valued map~\code{F} of two variables is
-plotted over the edges of the coarse mesh. Rather than drawing
-quadrilaterals, however, \ePiX\ draws the image curves at the
-resolution specified by the argument \code{mesh(60,60)}, the
-\emph{fine mesh}. In this example, the curves in each direction are
-drawn using 60~line segments.
-\end{comment}
-
-Separating the roles of coarse and fine meshes allows a plot to
-conform closely to a surface without using a fine grid of curves.
-Both parts of Figure~\ref{fig:plot} are drawn with a
-\teximath{6\times20} coarse mesh. In the first picture, the fine mesh
-is also \teximath{6\times20}, while in the second, the fine mesh is
-\teximath{12\times60}.
-
-\begin{figure}[hbt]
- \begin{center}
- \input{plot_a.eepic}\hspace*{0.5in}
- \input{plot_b.eepic}
- \caption{Coarse and fine meshes.}
- \label{fig:plot}
- \end{center}
-\end{figure}
-
-The coarse mesh is significant only for domains of dimension at
-least~2. The coarse mesh's size determines the number of curves or
-surfaces plotted \emph{perpendicularly} to a coordinate direction,
-while the fine mesh's size determines the number of segments used
-\emph{along} that direction. For predictable results, the fine mesh
-should be a small multiple of the coarse mesh.
-
-Plotting works analogously for 3-dimensional \code{domain}s and maps
-depending on three variables: The ``one-dimensional skeleton'' of the
-\code{domain}'s image is drawn. A \code{P}-valued map of
-three variables can be plotted over a 1-~or 2-dimensional
-\code{domain}. (The effect may be unexpected unless the domain arises
-by slicing, however.) A map depending on one or two variables cannot
-be plotted over a 3-dimensional \code{domain}.
-\index{Domain|)}
-
-
-\subsubsection*{Shaded Surfaces}
-
-\index{Plotting!surface|(}
-
-\ePiX's shaded surface plotting implements a degree of hidden surface
-removal. The algorithm breaks a surface into mesh fragments, sorts
-them in decreasing (approximate) distance to the camera, and prints
-them. If filling is active, a mesh fragment is shaded according to
-the angle between the normal vector and the direction to the camera,
-simulating constant ambient lighting; otherwise, the current fill
-color is used. This technique works fairly well for surfaces without
-intersection, and even acceptably handles intersecting surfaces for
-which mesh elements intersect only along boundaries.
-
-The syntax of a \code{surface} command is identical to a \code{plot}
-command when only a single surface is drawn. For example,
-\findex{surface}
-\begin{verbatim}
- surface(F, R, cull=0);
-\end{verbatim}
-plots the \code{P}-valued function~\code{F} over the domain~\code{R},
-the shaded equivalent of the corresponding \code{plot} command. The
-optional \code{cull} argument removes elements that point toward
-(\code{cull=-1}) or away from (\code{cull=1}) the camera. Naturally,
-orientation of mesh elements depends on the parametrization~\code{F},
-not merely on the surface. Culling reduces the output file size, but
-is useful mostly for closed, convex surfaces.
-
-There are special commands for surfaces of rotation; each accepts a
-final \code{cull} argument.
-\findex{surface\_rev}
-\begin{verbatim}
- surface_rev(f, t_min, t_max, n_lats, n_longs);
- surface_rev(f, g, t_min, t_max, n_lats, n_longs=24);
- surface_rev(f, g, R, frame coords);
-\end{verbatim}
-The first revolves the graph of~\teximath{f} about the
-\teximath{x}-axis, the second uses the parametric curve
-\teximath{t\mapsto\bigl(f(t),g(t)\bigr)} as profile. In each case, the
-parameter interval \verb+[t_min,t_max]+ is divided into \verb+n_lats+
-equal-length subintervals, \verb+n_longs+ copies of the profile curve
-are drawn, and the complete surface (one full turn) is drawn.
-
-The third form uses a \code{domain} to control the range of
-longitudes, and draws a surface of rotation in the Cartesian
-coordinate system defined by the orthonormal basis \code{coords}, by
-default the standard basis. The arguments \code{f}~and \code{g} define
-a parametric curve in the plane spanned by the first two elements
-of~\code{coords}, and the first element is the axis of rotation.
-
-As in wire mesh plotting, the fine mesh is used to draw the boundaries
-of surface patches; this tends to make surfaces look smoother for
-modest-sized coarse meshes. If the coarse mesh is too coarse, however,
-two visually undesirable effects can occur. First, adjacent regions of
-the surface may be shaded very differently, since shading is constant
-over patches defined by the coarse mesh. Second, a patch nearly
-tangent to a line of sight may be drawn badly if the patch bends back
-on itself, since the boundary of the \emph{patch} is drawn, not the
-visible edge of the mathematical surface. See
-\filename{samples/artifacts.xp}.
-
-
-\subsubsection*{Multiple Domains and/or Maps}
-
-A scene containing two or more shaded surfaces cannot generally be
-built up one surface at a time. Instead, multiple surfaces must be
-assembled into a single data structure before they can be drawn.
-Multiple surfaces are built from one or more maps and one or more
-2-dimensional \code{domain}s. In the code snippets below, \code{F}~and
-\code{G} are \code{P}-valued functions of 3~variables, and~\code{R} is
-a 3-dimensional \code{domain}.
-
-To plot the images of several \code{domain}s under a \emph{single
-map}, assemble the \code{domain}s into a list if necessary, then issue
-a \code{surface} command:
-\findex{surface}
-\findex{domain\_list}
-\findex{domain\_list.add}
-\begin{verbatim}
- surface(F, R.slices3(), cull=0);
-
- domain_list DL(R.slice1(0)); // build domain list
- DL.add(R.slice2(0.5)); // add a domain, etc.
- surface(G, DL, cull=0); // draw
-\end{verbatim}
-For multiple maps, \ePiX\ provides the \code{scenery}
-class. Conceptually, \code{scenery} is an agglomeration of shaded
-surfaces, built one surface at a time from maps and 2-dimensional
-\code{domain}s. The \code{add} function accepts two arguments---a map,
-and either a \code{domain} or a list of \code{domain}s---and
-contributes its data to the \code{scenery} rather than plotting
-immediately. Completed \code{scenery} is drawn manually.
-\findex{scenery}
-\findex{scenery.add}
-\findex{scenery.draw}
-\begin{verbatim}
- scenery S(F, R.slice3(0.25)); // S contains one surface
- S.add(F, R.slice2(0)); // S contains two surfaces
- S.add(G, R.slices1(3)); // S contains six surfaces
- S.draw(cull=0);
-\end{verbatim}
-Complete examples are included in the \filename{samples} directory:
-\filename{spherical.xp}~and \filename{minkowski.xp}.
-
-In principle, a scene may contain arbitrarily many surfaces. However,
-figures that contain many objects tend to tax \LaTeX's internal
-stacks. Frequent color changes exacerbate the problem. Even if you
-use \filename{hugelatex} (or increase \LaTeX's memory), a figure
-containing more than a few thousand mesh elements is unlikely to
-compile. At moderate resolution, a surface can easily contain
-1000~patches. Each shell script has a command-line option to invoke
-\filename{hugelatex}; your mileage may vary.
-
-
-\subsubsection*{User-Specified Color Shading}
-
-\index{Color!surface plotting}
-By default, a \code{surface} or \code{scenery} is colored according to
-the current fill color. For finer control, each \code{surface},
-\code{surface\_rev}, and \code{scenery} command accepts an optional
-position-dependent \code{color} specification.
-\findex{surface}
-\findex{surface\_rev}
-\findex{scenery}
-\findex{scenery.add}
-\begin{verbatim}
- surface(F, R, color, cull=0);
- surface_rev(f, [g], t_min, t_max, n_lats, n_longs, color);
- surface_rev(f, g, R, color, [coords]);
-
- scenery S(F, R, color);
- S.add(F, R, color);
-\end{verbatim}
-The \code{color} argument is a \code{P}-valued function of two or
-three \code{double}s whose output is interpreted as a set of
-\code{RGB}~densities. If \code{color} takes two arguments, they are
-\code{domain} coordinates, and the surface is colored according to
-parameter values. If \code{color} takes three arguments, they are
-Cartesian coordinates, and the surface is colored according to spatial
-location. Please see the sample files
-\filename{surface\_shade.xp}~and \filename{S2\_harmonics.xp}.
-\index{Plotting!surface|)}
-
-
-\subsection{Calculus Plotting}
-\index{Plotting!calculus|(}
-
-\ePiX\ provides high-level commands for plotting derivatives and
-definite integrals, Riemann sums, tangent lines, slope- and vector
-fields, and solutions of planar and spatial systems of differential
-equations.
-
-In this section, \code{f}~and \code{g} are \code{double}-valued
-functions of one variable.
-
-\subsubsection*{Utility Functions}
-
-\findex{sup}
-\findex{inf}
-\findex{newton}
-\begin{verbatim}
- sup(f, a, b); // max/min of f on [a,b]
- inf(f, a, b);
- newton(f, g, x0); // find approximate crossing point
-\end{verbatim}
-Newton's method returns the crossing point of the given functions,
-starting from the specified seed, which should be reasonably close to
-the expected solution. If a critical point is hit or 5~iterations
-pass, a warning is issued and the current result (probably incorrect)
-is returned. The second function~\teximath{g} defaults to the zero function if
-omitted.
-
-\subsubsection*{Derivatives and Integrals}
-
-The classes \code{Deriv}~and \code{Integral} are used to calculate
-values of derivatives and integrals, and to plot these functions.
-\findex{Deriv}
-\findex{Deriv.eval}
-\findex{Deriv.left}
-\findex{Deriv.right}
-\findex{Integral}
-\findex{Integral.eval}
-\begin{verbatim}
- Deriv df(f); // function object: df(x) = f'(x)
- df.eval(t); // return f'(t)
- df.left(t); // deriv from left at t: (f(t)-f(t-dt))/dt
- df.right(t); // deriv from right at t: (f(t+dt)-f(t))/dt
-
- Integral prim(f,a); // function object: prim(x) = int_a^x f
- prim.eval(b); // numerical integral of f over [a,b]
- double val(Integral(f).eval(1)); // val = \int_0^1 f
-\end{verbatim}
-The lower limit on an integral is~0 by default. \code{Deriv}s and
-\code{Integral}s can be used directly in a \code{plot} command:
-\findex{plot}
-\findex{riemann\_sum}
-\begin{verbatim}
- plot(Deriv(f), a, b, n); // plot f' over [a,b]
- plot(Integral(f, x0), a, b, n);
- riemann_sum(f, a, b, n, TYPE);
-\end{verbatim}
-The second graphs the definite integral \teximath{x\mapsto\int_{x_0}^x
-f(t)\,dt} over~\teximath{[a,b]}. As above, \teximath{x_0}~defaults
-to~0. The third draws rectangles or trapezoids whose area approximates
-the definite integral of~\teximath{f} over~\teximath{[a,b]}. The
-\code{TYPE} may be \code{UPPER}, \code{LOWER}, \code{LEFT},
-\code{RIGHT}, \code{MIDPT}, or~\code{TRAP}.
-
-Tangent lines and envelopes (families of tangent lines) are drawn with
-\findex{tan\_line}
-\findex{envelope}
-\findex{tan\_field}
-\begin{verbatim}
- tan_line(f, t); // f real- or vector-valued
- envelope(f, t_min, t_max, n); // family of tangent lines
- tan_field(f, g, t_min, t_max, n); // field of tangents
-\end{verbatim}
-The sample files \filename{conic.xp}~and \filename{lissajous.xp}
-illustrate these features.
-
-
-\subsubsection*{Systems of Differential Equations}
-
-Let \code{F}~be a \code{P}-valued function of two or three variables.
-\findex{ode\_plot}
-\findex{flow}
-\begin{verbatim}
- ode_plot(F, p_0, t_min, t_max, n);
- flow(F, p_0, t_max, n);
-\end{verbatim}
-The first plots the solution curve of the initial-value problem
-\teximath{\dot{x}=F(x)}, \teximath{x(0)=p_0}, over the specified time
-interval. If \teximath{t_\mathrm{min}} is omitted, its value is~0, so
-the curve starts at~\teximath{p_0}. With manual calculation to rotate
-a planar field a quarter turn, \code{ode\_plot} can be used to draw
-level curves (isobars) of a function of two variables; see the sample
-file \filename{dipole.xp}. The \code{flow} function returns the
-result of starting at~\teximath{p_0} and flowing by~\teximath{F} for
-time~\teximath{t_\mathrm{max}}, using Euler's method with~\teximath{n}
-time steps. This is useful for placing markers or arrowheads precisely
-along a flow line.
-
-A planar or spatial vector field itself may be plotted over a
-domain~\code{R} in three styles:
-\findex{vector\_field}
-\findex{dart\_field}
-\findex{slope\_field}
-\begin{verbatim}
- vector_field(F, R, [scale]); // true length
- dart_field (F, R, [scale]); // const length
- slope_field (F, R, [scale]); // const length
-\end{verbatim}
-The field is sampled at the grid points of the coarse mesh. If the
-domain is 2-dimensional, the plot is a planar slice of the field, even
-if the field depends on three variables. If the domain is
-3-dimensional, the field is drawn in successive slices
-\teximath{x_3=\mathrm{const}}, starting at the height of the first
-corner of~\code{R} and ending at the height of the second corner.
-
-The optional final argument, which defaults to~\teximath{1}, scales the
-arrowheads in a vector field, and scales the (constant) length of
-field elements for slope and dart fields. The sample files
-\filename{layout2.xp}, \filename{lorenz.xp}, \filename{slopefield.xp},
-and \filename{vfield.xp} illustrate usage.
-
-In each field-plotting command, the domain argument may be replaced by
-two points, representing corners of a coordinate rectangle, and two
-integers, the number of grid intervals in the selected coordinate
-directions. Only planar slices of a vector field can be plotted using
-the alternative syntax.
-\index{Plotting|)}
-
-
-\subsection{Non-Euclidean Geometry}
-\label{non-eucl}
-
-\ePiX\ provides limited features for spherical and hyperbolic
-geometry: the ability to draw lines in the half-plane and Poincar\'e
-disk models of the hyperbolic plane, and to draw latitudes,
-longitudes, great circle arcs, spherical triangles, regular polyhedra,
-and parametrized curves on a sphere.
-
-Hyperbolic line segments are specified by their endpoints in the upper
-half space or ball (Poincar\'e) models. In each case there is no
-output if either endpoint lies outside the model.
-\findex{hyperbolic\_line}
-\findex{disk\_line}
-\begin{verbatim}
- hyperbolic_line(p, q);
- disk_line(p, q);
-\end{verbatim}
-For compatibility with 2-dimensional hyperbolic space, the half-space
-model is the set \teximath{\{(x_1,x_2,x_3)\mid x_2>0\}}.
-
-\index{Plotting!spherical|(}
-A \code{frame} determines geographical coordinates on a \code{Sphere}:
-the first element points toward longitude~0 on the equator, the third
-element points to the north pole. A latitude line depends on a
-\code{Sphere}, a \code{frame}, the numerical latitude, and a range of
-longitudes. A longitude line is described similarly.
-\findex{latitude}
-\findex{longitude}
-\findex{back\_latitude}
-\findex{back\_longitude}
-\begin{verbatim}
- latitude(lat, long_min, long_max, Sphere S, frame coords);
- longitude(lngtd, lat_min, lat_max, Sphere S, frame coords);
-\end{verbatim}
-By default, \code{coords} is the standard \code{frame} and \code{S} is
-the unit sphere. These commands draw only the portion of the curve
-that is visible from the current viewpoint. The function
-\code{back\_latitude} draws the invisible portion of a latitude line.
-
-Spherical arcs and triangles are described by their endpoints. Only
-the direction vector from the center of the sphere to an endpoint is
-significant; if a sphere is scaled or moved, the same function call
-will draw the corresponding object on the new sphere.
-
-The following draw the visible (front) portions of great circle arcs:
-\findex{front\_arc}
-\findex{front\_arc2}
-\findex{front\_line}
-\findex{back\_arc}
-\findex{back\_arc2}
-\findex{back\_line}
-\begin{verbatim}
- front_arc(p1, p2, S); // short arc on S from p1 to p2
- front_arc2(p1, p2, S); // arc from p1 to -p1 through p2
- front_line(p1, p2, S); // great circle through p1 and p2
-\end{verbatim}
-Triangles and regular (Platonic) polyhedra are provided. The sample
-file \filename{sample/polyhedra.xp} illustrates usage.
-\findex{front\_triangle}
-\findex{front\_tetra}
-\findex{front\_cube}
-\findex{front\_octa}
-\findex{front\_dodeca}
-\findex{front\_icosa}
-\findex{back\_triangle}
-\findex{back\_tetra}
-\findex{back\_cube}
-\findex{back\_octa}
-\findex{back\_dodeca}
-\findex{back\_icosa}
-\begin{verbatim}
- front_triangle(p1, p2, p3, S); // spherical triangle
- front_tetra(S, coords); // regular tetrahedron
- front_cube(S, coords); // hexahedron
- front_octa(S, coords); // octahedron
- front_dodeca(S, coords); // dodecahedron
- front_icosa(S, coords); // icosahedron
-\end{verbatim}
-Each function has a \code{back} version, which draws the hidden
-portion. The tetrahedron, cube, and octahedron are (up to scale)
-inscribed in the cube of side length~\teximath{2} centered at the origin whose
-sides are parallel to~\code{frame}. The point \teximath{(1,1,1)} is a vertex of
-the tetrahedron.
-
-Up to scale, the icosahedron's vertices lie on the golden rectangle
-with vertices \teximath{(\pm\gamma,0,\pm1)} and its images under cyclic
-permutation of coordinates. The dodecahedron is dual to the
-icosahedron.
-
-\subsubsection*{Spherical Plotting}
-
-Parametrized paths on a \code{Sphere~S} (by default the unit sphere)
-can be specified either by radial projection of a \code{P}-valued
-curve, or by stereographic projection of a plane curve given as a pair
-of \code{double}-valued functions:
-\findex{frontplot\_R}
-\findex{frontplot\_N}
-\findex{frontplot\_S}
-\findex{backplot\_R}
-\findex{backplot\_N}
-\findex{backplot\_S}
-\begin{verbatim}
- frontplot_R(phi, t_min, t_max, n, [S]); // radial
- frontplot_N(f1, f2, t_min, t_max, n, [S]); // from north pole
- frontplot_S(f1, f2, t_min, t_max, n, [S]); // from south pole
-\end{verbatim}
-Attempts to perform radial projection on a path through the origin
-will generate division-by-zero errors. Stereographic projection maps
-the equatorial plane \teximath{\{x_3=0\}} to the unit sphere by
-projection from the corresponding pole: \teximath{N=(0,0,1)},
-\teximath{S=(0,0,-1)}.
-
-Each spherical plot command has a \code{back} version that prints only
-the portion of the path invisible from the current viewpoint.
-Because of the way \ePiX\ layers output, it is generally best to put
-hidden portions of the input before visible portions, with line width
-and/or style that suggests hidden lines.
-
-
-\subsection{Data Plotting}
-\index{Plotting!data|(}
-\index{Data plotting|(}
-
-Files of numerical data can be created, manipulated, analyzed,
-plotted (paths, scatter plots, and histograms), read, and written.
-The format for a data file is one or more floating-point
-numbers per line, with the same number of entries per line. Anything
-that appears on a line after the \LaTeX\ comment character~\code{\%}
-is a comment.
-
-\ePiX\ provides two \code{plot} commands for file data. The first
-facilitates plotting selected columns; the second simplifies plotting
-the first two columns with one or both scales logarithmic. Either form
-can be used to plot selected columns logarithmically.
-
-The general commands read numbers from two or three columns of a
-specified file, pass them as arguments to a \code{P}-valued
-function~\code{F}, and plot the resulting points:
-\findex{plot}
-\begin{verbatim}
- plot("filename", STYLE, [i_1], [i_2], [i_3], [F]);
- plot("filename", STYLE, F, [i_1], [i_2], [i_3]);
-\end{verbatim}
-The first argument is the name of the data file. The \code{STYLE} may
-be \code{PATH}, which joins the points in the order they appear, or
-any of the marker types in Table~\ref{table:marker}. The
-integers~\teximath{i_k} specify columns from which to extract data; these
-default, respectively, to the first column, second column, and null (a
-column of zeroes). If the ``coordinate system''~\code{F} is omitted in
-the first command, it defaults to the Cartesian point constructor. The
-function~\code{F} is mandatory in the second form; useful choices
-include \code{log\_log}, \code{log\_lin}, and~\code{lin\_log}, which
-plot the corresponding coordinate logarithmically.
-
-
-\subsubsection*{Data Files}
-
-For more elaborate analysis, the \code{data\_file} class presents an
-interface to a file as an ordered list of columns. There are two
-general ways to create a \code{data\_file}: read in an external file,
-or generate data (up to three columns) using specified
-\code{double}-valued functions. In the constructors below, each
-function~\code{fi} is a \code{double}-valued function of one variable.
-\findex{data\_file}
-\findex{data\_file.read}
-\begin{verbatim}
- data_file DF("my_data"); // read data from disk file
- data_file DF(f1, t_min, t_max, num_pts); // values of f1
- data_file DF(f1, f2, t_min, t_max, num_pts);
- data_file DF(f1, f2, f3, t_min, t_max, num_pts);
- data_file DF(3); // create empty data_file with 3 columns
- DF.read("file1"); // read a disk file
-\end{verbatim}
-
-Columns of a \code{data\_file} can be transformed by a user-specified
-function, averaged, correlated, extracted (for use by other code),
-scatter plotted, and written to a disk file at specified
-precision. Below, the function~\code{f} is a \code{double}-valued
-function of one variable and~\code{F} is a \code{P}-valued function of
-two or three variables, whose components are written back to the
-selected columns.
-\findex{data\_file.transform}
-\begin{verbatim}
- DF.transform(f, i); // apply f to selected column(s)
- DF.transform(F, i=1, j=2);
- DF.transform(F, i, j, k);
-\end{verbatim}
-Basic statistical operations on columns are provided.
-\findex{data\_file.dot}
-\findex{data\_file.avg}
-\findex{data\_file.var}
-\findex{data\_file.covar}
-\findex{data\_file.regression}
-\begin{verbatim}
- DF.dot(i,j); // dot product of columns i, j
- DF.avg(i); // mean of column i
- DF.var(i); // population variance
- DF.covar(i,j); // covariance
- DF.regression(i,j); // plot regression line
-\end{verbatim}
-A \code{data\_file} is scatter plotted using syntax as described above.
-% The output is cropped automatically to the bounding box.
-\findex{data\_file.plot}
-\begin{verbatim}
- DF.plot(STYLE, [i1], [i2], [i3], [F]);
- DF.plot(STYLE, F, [i1], [i2], [i3]);
-\end{verbatim}
-Histograms and bar charts are described below.
-
-A \code{data\_file} can be written to a disk file as raw data, or in
-specified format. Below, \code{fmt} denotes a \code{string}-valued
-formatting function of two variables and \filename{myfile} is the
-name of the disk file to be written.
-\findex{data\_file.precision}
-\findex{data\_file.write}
-\begin{verbatim}
- DF.precision(4); // set to 4 significant figures
- DF.write("myfile"); // write as tab-separated columns
- DF.write("myfile", fmt, [i1], [i2]); // apply fmt to cols
-\end{verbatim}
-A column can be extracted as a \code{C++}~\code{vector} for use by
-another function.
-\findex{data\_file.column}
-\begin{verbatim}
- DF.column(i); // i-th column
- DF.column(f, i); // i-th column, transformed by f
-\end{verbatim}
-
-
-\subsubsection*{Data Containers}
-
-\ePiX\ provides a \code{data\_mask} class for culling data from a file
-according to the values in a specified column, and a \code{data\_bins}
-class for sorting data by value.
-
-A \code{data\_mask} consists of an interval of numbers and a
-``filter'' function. The (closed, open, or half-open) interval is
-given as a string in standard mathematical notation, or by its
-endpoints (for a closed interval). The filter is a
-\code{double}-valued function of \code{double}, by default the
-identity, \teximath{f(x)=x}.
-\findex{data\_mask}
-\begin{verbatim}
- data_mask dm("[a, b]", [f]);
- data_mask dm(a, b, [f]);
-\end{verbatim}
-A \code{data\_mask} ``passes'' inputs~\teximath{x} if~\teximath{f(x)}
-lies in the interval. The member function \code{reverse()} inverts
-this logical test.
-
-The \code{data\_file} class has \code{prune} functions to cull
-rows for which a specified column's entry satisfies a
-\code{data\_mask}'s criterion.
-\findex{data\_mask.prune}
-\begin{verbatim}
- DF.prune(dm, i); // remove row if i-th column entry fails
- DF.prune(a, b, i); // remove row if i-th column outside [a,b]
-\end{verbatim}
-
-A \code{data\_bins} object models an interval divided at specified
-locations into ``bins'', not necessarily of equal length. Numerical
-data is read in and the number of points in each bin counted. The
-lifetime of a \code{data\_bins} object has two stages. First, ``cuts''
-(endpoints of subintervals) are added. Then, once data is read, the
-cuts are ``locked'' and cannot subsequently be changed.
-\findex{data\_bins}
-\findex{data\_bins.cut}
-\findex{data\_bins.read}
-\begin{verbatim}
- // [xmin, xmax] divided into n equal intervals, 1 by default
- data_bins db(xmin, xmax, [n]);
- db.cut(x); // add a cut at x (if x is in bounds)
- db.read(vector<double>); // read data, lock bins
-\end{verbatim}
-
-\index{Histograms}
-\index{Bar Charts}
-A \code{data\_bins} object can be plotted as a histogram (rectangles'
-\emph{area} is proportional to the bin population), bar chart
-(rectangles' \emph{height} is proportional to the bin population), or
-spline interpolation of a bar chart.
-\findex{data\_bins.histogram}
-\findex{data\_bins.bar\_chart}
-\findex{data\_bins.plot}
-\begin{verbatim}
- db.histogram(c=1); // c = vertical scale factor
- db.bar_chart(c=1);
- db.plot(c=1);
-\end{verbatim}
-By default (\code{c=1}), the height of a bar chart rectangle is the
-fraction of the total population contained in the bin; thus, the
-height is always between 0~and 1. For a histogram, the height of a
-rectangle is the fraction of the population per horizontal unit in the
-bin; thus, the total area over an interval~\teximath{[a,b]} does not
-depend on how~\teximath{[a,b]} has been subdivided. The sample files
-\filename{dataplot.xp}~and \filename{histogram.xp} illustrate use.
-
-Statistical convention dictates cuts be chosen distinctly from data
-values; that is, values should all fall strictly within a bin, not at
-a boundary point. With large, unknown data sets, this convention may
-be difficult to uphold. \ePiX\ attempts to handle anomalous data
-intelligently, by keeping counts of values ``out-of-range'' or
-``on-cut''.
-
-In detail, if \teximath{x<a} or \teximath{x>b} is a data value, it is
-counted as out-of-range and does not contribute to the histogram
-population. If \teximath{x=a} or \teximath{x=b}, the value counts as
-both out-of-range and on-cut but is added to the population of the
-lowest or highest bin, respectively. Any other cut appearing as a data
-input is flagged as on-cut, and increments the population of each
-adjacent bin by one-half. When a histogram or bar chart is written,
-\ePiX\ prints a warning message summarizing the number of anomalous
-data seen.
-
-
-\subsubsection*{Error Bars}
-\index{Error bars}
-
-Simple horizontal and vertical error bars are provided. The final
-(optional) argument is the true height or width (respectively) in pt.
-\findex{h\_error\_bar}
-\findex{v\_error\_bar}
-\begin{verbatim}
- h_error_bar(P location, double error, <mark type>, ht=6);
- v_error_bar(P location, double error, <mark type>, wd=6);
-\end{verbatim}
-
-To create more complex elements, such as asymmetric bars, whisker
-plots, labeled error bars, and the like, write a custom function using
-true-size drawing, see page~\pageref{truesize}. For example, a
-fillable, labeled, asymmetric, vertical rectangular error bar can be
-implemented (entirely in \ePiX) like this:
-\begin{verbatim}
- void error_bar(P loc, double lo, double hi, P offset,
- std::string text, align, double wd=6)
- {
- const double width(pt_to_screen(0.5*wd)); // converts to 3pt
- rect(loc - P(width, lo), loc + P(width, hi));
- line(loc - P(width, 0), loc + P(width, 0));
- label(loc + P(width, 0), offset, text, align);
- }
-\end{verbatim}
-For stylistic uniformity, functions such as this should be put into a
-library and used systematically. Section~\ref{section:extensions}
-outlines the process of writing, compiling, and using a custom
-library.
-\index{Plotting!data|)}
-\index{Data plotting|)}
-
-
-\subsection{Legends}
-\index{Legends}
-
-A \code{legend} systematically labels different parts of a plot by
-associating visual ``keys'' with explanatory text. This tends to be
-most useful for plots containing several distinct but conceptually
-related graphs requiring contrast.
-
-Visually, a \code{legend} is represented as an aligned list of rows,
-each containing a box (the key), a gap (the label skip), and some
-text. These rows are printed in a (usually large) masked label. By
-default, keys are \code{12pt}~squares bordered in black, the label
-skip is~\code{6pt}, the background is white, and the border is plain
-black. These attributes are controlled (simultaneously for all items)
-with member functions. Parameters of type \code{double} represent
-lengths in~\code{pt}.
-\findex{legend}
-\findex{legend.backing}
-\findex{legend.border}
-\findex{legend.item\_border}
-\findex{legend.label\_skip}
-\findex{legend.key\_size}
-\begin{verbatim}
- legend L;
- L.backing(color); // set background
- L.border(color, [double]); // set border color [and width]
- L.border(double); // border width
-
- L.item_border(color, [double]);
- L.item_border(double); // same, for item borders
-
- L.label_skip(double);
- L.key_size(double);
-\end{verbatim}
-
-
-\subsubsection*{Legend Keys}
-
-There are three types of legend key, representing filled regions,
-paths, and markers. Fill and path keys get their visual attributes
-from the current drawing state. A mark key must be told the marker
-type. Each is created by specifying the item text.
-\findex{legend.fill\_item}
-\findex{legend.path\_item}
-\findex{legend.mark\_item}
-\begin{verbatim}
- L.fill_item(text);
- L.path_item(text);
- L.mark_item(<mark type>, text);
-\end{verbatim}
-Keys in the printed legend appear in the same order they are created
-in the input file.
-
-
-\subsubsection*{Creating a Legend}
-
-Normally, a \code{legend} is defined near the start of a file, and an
-item is added at the point in the file where the corresponding object
-or plot is drawn, so that the item receives the correct attributes. A
-\code{legend} is placed into the figure with the \code{draw}
-function. The arguments have the same meaning as for ordinary
-\code{label}s.
-\findex{legend.draw}
-\begin{verbatim}
- L.draw(P location, P offset, align);
-\end{verbatim}
-All three arguments are mandatory. ``Global'' \code{legend} settings
-(border, backing, etc.) may be changed anywhere between the
-\code{legend}'s creation and \code{draw} function. The sample file
-\filename{legend.xp} revisits the example on
-page~\pageref{taylor_poly}, including a trig-labeled axis and a
-legend. The file \filename{shadeplot.xp} contains filled keys, and
-\filename{dataplot.xp} contains a \code{legend} with items of mixed
-type.
-
-
-\section{More About \CXX}
-\index{Cplusplus@\CXX|(emph}
-
-A textbook or similarly detailed reference is essential for serious
-study of~\code{C} or~\CXX. \emph{The \code{C} Programming Language},
-second edition, by Kernighan~and Ritchie~\cite{KnR}, is an excellent,
-manageable resource for the basics of procedural
-programming. \emph{C++ Primer Plus}, by Stephen Prata~\cite{Prata},
-clearly lays out the extensive details of~\CXX. Marshall Cline's
-\emph{\CXX\ FAQ Lite}~\cite{Cline} engagingly discusses common points
-of confusion and furnishes tips on good design and programming.
-
-\CXX\ is a powerful, complex language whose syntax is similar to that
-of~\C, or to the scripting languages of Maple~and Mathematica. An
-\ePiX\ input file is source code for a \CXX~program that writes a
-\LaTeX\ picture as output. \ePiX\ may be viewed as an extension
-to~\CXX; in the same way that \LaTeX\ furnishes a high-level interface
-to~\TeX, \ePiX\ provides a high-level bridge between the computational
-power of~\CXX\ and the \LaTeX\ \code{picture} environment.
-
-\index{Function}
-\index{Conditional statement}
-Like all high-level programming languages, \CXX\ provides variables,
-functions, and control structures. Variables hold pieces of data such
-as numerical values and geometric locations, while functions operate
-on data. A control structure, such as a loop or conditional statement,
-affects the program's course according to the program's current state.
-A source file is composed primarily of ``statements'', which perform
-actions ranging from defining variables and functions to setting
-figure attributes, performing calculations, and writing objects to the
-output file.
-
-\subsection{Names and Types}
-
-\index{Variable!names|(}
-Names of variables and functions may consist (only) of letters,
-digits, and the underscore character. The first character of a name
-must not be a digit, and the language standard reserves names starting
-with underscore for library authors. Names are case-sensitive, but
-it's usually a bad idea to use a single name capitalized and
-uncapitalized in a single file. Numerous capitalization conventions
-are used informally; this document uses uncapitalized words separated
-by underscores for variables and functions, and occasionally uses all
-capitals for constants. As with names of \LaTeX\ macros, primary
-considerations are clarity (of meaning), readability, and consistency.
-\index{Variable!names|)}
-
-\index{Variable!type of}
-Every variable in \CXX\ has a ``type'',
-such as integer (\code{int}), double-precision floating point
-(\code{double}), or Boolean (\code{bool}, true~or false). \ePiX\
-provides additional types, the most common of which is~\code{P}, for
-point. The construct \code{P(x,y,z)} creates~\teximath{(x,y,z)}, while
-\code{P(x,y)} gives~\teximath{(x,y,0)}, which is effectively the
-pair~\teximath{(x,y)}. A variable is defined by giving its type, its
-name, and an initializing expression.
-
-\index{Variable!pointer}
-\index{Pointer}
-In~\code{C} and~\CXX, a \emph{pointer} variable holds the memory
-address of another variable. Pointers are useful for manipulating
-(possibly large) data structures through ``handles'' of fixed small
-size. \CXX\ also provides \emph{references}, which bind an additional
-name to an existing object and allow the object to be manipulated
-through this alias. The statements
-\begin{verbatim}
- double x=1; // ordinary variable definition
- double& rx=x; // bind a reference, signified by &
-\end{verbatim}
-define a variable~\code{x} having the value~1, and bind a reference
-variable~\code{rx} to it. As long as~\code{rx} exists, it refers
-to~\code{x}. If the value of~\code{x} changes, the value of~\code{rx}
-does as well. Conversely, the value of~\code{x} can be altered by
-assigning to~\code{rx}. However,~\code{rx} is the size of a pointer,
-regardless of the size of~\code{x}, so~\code{rx} can be passed
-efficiently in a function call.
-\texicomment
-Some applications are discussed on page~\pageref{references}.
-\texicommentend
-
-
-\subsection{Functions}
-
-\index{Function|(}
-In a programming language, the term ``function'' refers to a block of
-code that is executable by name. A \CXX\ function takes a list of
-``arguments'', and has a ``return value''. This information, together
-with the function's name, must be provided when a function is defined.
-A function may not be defined inside another function. However, a
-function may call other functions (including itself) as part of its
-execution:
-\begin{verbatim}
- int factorial(unsigned int n)
- {
- if (n == 0) return 1;
- else return n*factorial(n-1);
- }
-\end{verbatim}
-
-\index{Function!returning \code{void}}
-The special type~\code{void} represents a ``null type''. A function
-that performs an action but does not return a value has return type
-\code{void}. A function that takes no arguments may be viewed as
-taking a single \code{void} argument.
-
-Every \CXX\ program has a special function~\code{main()}, which is
-called by the operating system when the program is run. The arguments
-of~\code{main()} are command-line arguments, and the return type is an
-integer that signals success or failure. User-specified functions must
-be defined before the call to \code{main()} or in a
-separately-compiled file.
-
-Functions in~\CXX\ may be as simple as an algebraic formula or as
-complex as an arbitrary algorithm. Greatest common divisors, finite
-sums, numerical derivatives and integrals, solutions of differential
-equations, recursively generated fractal curves, and curves of best
-fit are a few applications in \ePiX. Several sample files contain
-user-level algorithms, which do not require knowledge of \ePiX's
-internal data structures. The source file \filename{functions.cc}
-contains simple functions defined by algorithms, and
-\filename{functions.h} illustrates the use of \CXX\ templates. Other
-source files, such as \filename{plots.cc}, may be consulted for
-Simpson's rule, Euler's method, and the like.
-
-
-\subsection{Mathematical Functions}
-
-\index{Function!mathematical|(}
-\CXX~knows several familiar mathematical functions by name:
-\begin{verbatim}
- sqrt exp log log10 ceil floor fabs
-\end{verbatim}
-(\code{fabs} is the absolute value for a floating-point argument.)
-\ePiX\ provides trig and inverse trig functions sensitive to angular
-mode:
-\index{Angular mode}
-\findex{Cos}
-\findex{Sin}
-\findex{Tan}
-\findex{Sec}
-\findex{Csc}
-\findex{Cot}
-\findex{Acos}
-\findex{Asin}
-\findex{Atan}
-\begin{verbatim}
- Cos Sin Tan
- Sec Csc Cot
- Acos Asin Atan
-\end{verbatim}
-The inverse functions are principle branches.
-
-The function \code{pow(x,y)} returns~\teximath{x^y} when
-\teximath{x>0}, and \code{atan2(y,x)} (N.B. argument order) returns
-\teximath{\mathrm{Arg}(x+iy)\in(-\pi,\pi]}, the principle branch of
-arg. \CXX~knows many constants to 20~decimal places, such as
-\code{M\_PI}, \code{M\_PI\_2}, and \code{M\_E} for~\teximath{\pi},
-\teximath{\pi/2}, and~\teximath{e} respectively. \ePiX\ defines a few
-additional functions:
-\findex{sgn}
-\findex{zero}
-\findex{sinx}
-\findex{cb}
-\begin{verbatim}
- sgn zero sinx cb
-\end{verbatim}
-\texicomment
-\begin{center}
- \input{sgn.eepic}\qquad
- \input{sinx.eepic}\qquad
- \input{cb.eepic}
-\end{center}
-\medskip
-\texicommentend
-\code{sgn} is the signum function; \code{zero} is the constant
-function; \code{sinx} is the function \teximath{x\mapsto \sin(x)/x}
-with the discontinuity removed; \code{cb} (for ``Charlie Brown'') is
-the period-2 extension of the absolute value function
-on~\teximath{[-1,1]}.
-
-The GNU \CXX\ library defines other functions, including inverse
-hyperbolic functions (\code{acosh}, etc.), \code{log}~and \code{exp}
-with base~2, 10, or arbitrary~\teximath{b} (\code{log2}, etc.), the
-error and gamma functions (\code{erf}~and \code{tgamma} [sic],
-respectively), and Bessel functions of first and second kind:
-\code{j0}, \code{j1}, \code{y0}, etc. Use, e.g., \code{jn(5,~)} to get
-higher indices. The GNU \C~library reference manual~\cite{GNUC}
-describes these and other functions in detail.
-
-Functions may be used in subsequent definitions, and functions of two
-(or more) variables are defined in direct analogy to functions of one
-variable:
-\begin{verbatim}
-double f(double t) { return t*t*log(t*t); } // t^2 \ln(t^2)
-double g(double s, double t) { return exp(2*s)*Sin(t); }
-\end{verbatim}
-\index{Function!mathematical|)}
-
-
-\subsection{Basics of Classes}
-
-\index{Classes|(}
-Unlike~\code{C}, \CXX\ supports ``object-oriented programming''. In a
-nutshell, a \emph{class} is an abstraction in computer code of some
-concept, such as a point, a sphere, a mapping that can be plotted, or
-a camera. Classes allow a programmer to separate an object's
-\emph{interface} (the set of meaningful operations) from its
-\emph{implementation} (the data structures and algorithms that realize
-the interface).
-
-\index{Function!class member}
-A class implementation consists of \emph{members} (named data
-elements) and \emph{member functions} (functions that belong to the
-class and have free access to members). \CXX\ classes enforce access
-permissions on their members, protecting data from being manipulated
-except as promised by the interface.
-
-An ideal interface looks like a black box: It hides the implementation
-completely. In order to cooperate, two classes need only know each
-other's interfaces. This separation of form and function modularizes a
-program, and facilitates debugging, code reuse, and overall
-maintainability, particularly in large programs.
-
-In simple programming, classes may be treated like built-in types.
-Each class object has its own member functions, whose call syntax
-differs from standard function calls:
-\begin{verbatim}
- Circle C1(P(1,0), 1.5); // circle of given center and radius
- C1.draw(); // member function Circle::draw();
-\end{verbatim}
-Naturally, this call draws the circle~\code{C1}. Generally, a member
-function call consists of a class object's name, a period, and the
-name of the member function. Arguments, if any, go in the parentheses
-after the member function name, just as in a regular function call.
-
-A few short paragraphs cannot do more than scratch the surface of
-classes and object-oriented programming. For more details, please
-consult a book, such as Prata~\cite{Prata} or Stroustrup~\cite{S}, or
-Cline's on-line FAQ~\cite{Cline}.
-\index{Classes|)}
-
-
-\subsection{References and Function Arguments}
-
-\index{Function!call syntax}
-\index{Variable!reference}
-\label{references}
-\code{C}~and \CXX\ are ``call by value'' languages. Variables are not
-passed to a function; instead a copy of the value is made, and the
-function operates only on the copy. Though this feature causes
-occasional inconvenience, it prevents an object from being altered
-unexpectedly by a function call in a different part of the program.
-Calling by value helps localize the logic of a program, and
-circumvents easy-to-write but extremely hard-to-find bugs.
-
-In \CXX, a function may accept reference arguments. Passing an object
-by reference grants the calling function access to the object itself,
-not to a copy. There are two common applications: The object is a
-large data structure for which copying is ``expensive'', or the
-function \emph{needs} to modify its arguments (e.g., a function
-\code{swap(x,y)} that exchanges the values of \code{x}~and
-\code{y}).
-
-For the first situation, \CXX\ provides the \code{const} keyword,
-which ensures the function does not modify its arguments, but accepts
-a reference merely for efficiency. Any attempt to modify a
-\code{const} argument will be caught by the compiler. Most \ePiX\
-commands accept \code{const} reference arguments.
-
-The ability to pass function arguments by reference is sometimes
-touted as a feature in \CXX\ texts. However, the technique circumvents
-the data encapsulation of calling by value, and should be avoided
-unless absolutely necessary. If a function merely ``updates'' the
-value of a variable, probably the variable should be of class type,
-and the update should be performed by a member function.
-
-A function declaration must indicate that its arguments are
-references. The declarations below have the indicated idiomatic
-meanings.
-\begin{verbatim}
- class matrix;
- double det(matrix); // call by value, perhaps inefficient
- matrix& transpose(matrix&); // probably changes its argument
- double trace(const matrix&); // does not change its argument
-\end{verbatim}
-Unlike pointer arguments, reference arguments impose no syntactic
-burden on the user. If~\code{A} is a~\code{matrix}, then
-\code{transpose(A);} and \code{trace(A);} will compile. You need not
-declare explicit reference variables and pass those to the function.
-
-
-\subsection{Overloading}
-
-\index{Function!overloaded}
-\CXX\ provides ``overloading'': Multiple functions can be given the
-same name, so long as the number and/or type of their arguments
-differ. (It is \emph{not} enough for the return types alone to differ.
-The compiler must be able to select a function from its calling
-syntax.) To the user, the appearance is that a single function
-intelligently handles multiple argument lists. Naturally, overloaded
-names should refer to functions that are conceptually related.
-\index{Function|)}
-
-
-\subsection{Scope}
-
-\index{Variable!local}
-A \CXX\ statement ends with a semicolon. A collection of statements
-enclosed by curly braces is a ``code block'', and may be viewed as a
-single logical statement. Curly braces determine a ``scope'', inside
-which variable names may be re-used without ambiguity. Function
-bodies are code blocks, as are the alternatives associated to control
-statements. A variable defined between curly braces is said to be
-\emph{local} to the scope in which it is defined; its value cannot
-be used out of scope. Variables should be declared in the smallest
-scope possible.
-
-The compiler is not picky about spaces, tabs, and newlines, so an
-input file should be formatted to make local scopes visually
-apparent. \code{emacs} automatically indents code to reflect scope,
-though the default behavior does not please all users. As with
-variable naming, clarity and consistency are paramount.
-
-
-\subsection{Headers and Pre-Processing}
-
-A \CXX\ source file is compiled in multiple stages that occur
-transparently to the user. The first step, pre-processing, involves
-simple text replacement for file inclusion, macro expansion and
-conditional compilation. Next, the source is compiled and assembled:
-Human-readable language instructions are parsed, then represented in
-assembly language. Finally, the object files are linked: Function
-calls are resolved to hard-coded file offsets, possibly involving
-external library files, and the program instructions are packaged into
-an executable binary that the operating system can run.
-
-Pre-processing is used much less in~\CXX\ than in~\code{C}; the
-language itself supports safer and more featureful alternatives to
-macros, such as \code{const} variables and inline functions. File
-inclusion and conditional compilation are the chief uses of the
-pre-processor. Lines of the form
-\begin{verbatim}
- #include <iostream>
- #include "epix.h"
-\end{verbatim}
-cause the contents of a \emph{header file} to be read into the source
-file. A header file contains variable and function
-\emph{declarations}, statements that specify types and names but do
-not define actual data. Declarations tell the compiler just enough
-to resolve expressions and function calls without knowing specific
-values or function definitions.
-
-\index{Input file!conditional compilation}
-Conditional compilation is similar to conditional \LaTeX\ code. For
-example, a file might produce either color or monochrome output as
-follows:
-\begin{verbatim}
-#ifdef COLOR
- ... // code for generating color figure
-#endif /* COLOR */
-#ifndef COLOR
- ... // monochrome code
-#endif /* undef COLOR */
-\end{verbatim}
-The ``compiler symbol'' \code{COLOR} is an ordinary \CXX\ name. To
-control compilation, either put a \code{\#define COLOR} line in the
-file, or (better) supply the flag on the command line: \\
-\verb+ epix -DCOLOR <file.xp>+ \\
-Every \code{\#ifdef} must have a matching \code{\#endif}. Commenting
-the \code{\#endif} is a good habit; in a realistic file, the start and
-end of a conditional block may be separated by more than one screen.
-
-
-\subsection{Comparison with \LaTeX\ Syntax}
-
-As a programming language, \CXX\ provides certain features common to
-all languages (such as \LaTeX, MetaPost, Perl, Lisp\ldots) and adheres
-to rules of grammar. Salient differences between \LaTeX\ and \CXX\
-include:
-
-\begin{enumerate}
-\item Every \CXX\ statement and function call must end with a
- semicolon. An omitted semicolon may result in a cryptic error
- message from the compiler. Pre-processor directives, which start
- with a~\code{\#}, do not end with a semicolon.
-
-\item Backslash is an escape character in \CXX:
- \index{Labels}
-\begin{verbatim}
- // Put label $y=\sin x$ at (2,1)
- // Note single ^ backslash in output
- label(P(2,1), P(0,0), "$y=\\sin x$");
- // Double backslash ^^ in source
-\end{verbatim}
-
-\item Variable and function names may contain letters (including
- underscore) and digits \emph{only}, are case sensitive, and must
- begin with a letter.
-
-\item Variables in \CXX\ must have a declared \emph{type}, such as
- \code{int} (integer) or \code{double} (double-precision floating
- point). If a variable has global scope and its value does not
- change, the definition should probably come in the preamble or at
- the beginning of \code{main}. Local variables should be defined in
- the smallest possible scope. Unlike~\C, \CXX\ allows variables to be
- defined where they first appear.
-
-\item \CXX~requires explicit use of~\code{*} to denote multiplication;
- juxtaposition is not enough. \CXX~does not support the use of
- \verb+^+ for exponentiation, e.g., \verb+t^2+ is invalid. Instead,
- use \code{t*t}~or \code{pow(t,2)}.
-
-\item \CXX\ has single- and multi-line comments. Everything between a
- double slash and the next newline is ignored, while the strings
- \verb+/*+~and \verb+*/+ delimit multi-line comments. A single-line
- comment may appear within a multi-line comment, but the compiler
- does not nest multi-line comments.
- \index{Input file!comment in}
-
-\end{enumerate}
-
-Between them, \C~and \CXX~have about 100~reserved keywords which
-cannot be used as function or variable names.
-\index{Cplusplus@\CXX|)}
-
-
-\section{Attribute Quick Reference}
-\label{section:quickref}
-
-In the body of an input file, the ``drawing state'' determines the
-figure's appearance. Attributes are declarations, set by commands that
-accept arguments of the stated type.
-
-A \code{len} argument is a double-quoted string containing a number
-and a two-letter \LaTeX\ length unit, such as \code{"1.5pt"} or
-\code{"6cm"}. A \code{color} argument is a named primary
-(\code{Red()}, \code{Cyan()}, \code{White()}, etc.), a \code{Color}
-specified by densities (\code{RGB(...)}, \code{CMYK(...)}, etc.), or a
-\code{Color} object. Using \code{Neutral()} as a \code{Color} argument
-generally turns off the corresponding attribute.
-
-\begin{itemize}
-
-\item Angular mode: \code{radians()}, \code{degrees()}, or
- \code{revolutions()}.
-
- The angular mode affects all trigonometric operations, including
- camera rotations, the drawing of arcs and ellipses, polar plotting,
- label angle, and the trig functions themselves. Angle-sensitive trig
- functions are capitalized, e.g., \code{Cos}, \code{Tan}.
-
-\item Fill style: \code{fill(color)}, \code{fill(bool)},
- \code{nofill()}.
-
-\item Path style:
-
- \begin{itemize}
-
- \item Width: \code{plain()}, \code{bold()}, \code{bbold()},
- \code{pen(len)}.
-
- \item Line style: \code{line\_style(string)}. The argument is a
- WYSIWYG sequence of dashes, spaces, and periods.
- \code{dash\_size(double)} and \code{dot\_sep(double)} set the
- (approximate) length in~\code{pt} of the pattern. The commands
- \code{solid()}, \code{dashed()}, \code{dotted()} define
- ``standard'' defaults for brevity.
-
- \item Path color:
- Paths can be drawn using \emph{two} pens, one atop the other. When
- the ``base'' pen is white (or the background color) and wider than
- the ``line'' pen, a path masks parts of the figure it crosses. A
- 3-D effect may be obtained by making the base pen a darker shade
- than the ``line'' pen.
-
- \code{pen(color,[len])}, \code{base(color,[len])}
-
- Standard widths: \code{plain(color)}, \code{bold(color)},
- \code{bbold(color)}
-
- \end{itemize}
-
-\item Text attributes:
-
- \begin{itemize}
-
- \item Color: \code{label\_color(color)}
-
- \item Mask: \code{label\_mask(color)}, \code{label\_pad(len)}
-
- \item Border: \code{label\_border(color, [len])},
- \code{label\_border(len)}. The command \code{no\_label\_border()}
- turns off label borders.
-
- \item Font size: \code{font\_size(LaTeX size)}, no argument means
- \code{normalsize}.
-
- \item Font face: \code{font\_face(LaTeX font)}, two-letter font
- selection string, default is \code{rm}.
-
- \item Rotation: \code{label\_angle(double)}
-
- \end{itemize}
-
-\end{itemize}
-
-Do not confuse \code{Color} constructors with the similarly-named
-(deprecated) lowercase attribute-setting commands, \code{rgb(r,g,b)},
-\code{cmyk(c,m,y,k)}, \code{red(d)}, etc. These commands affect text,
-paths, and filled regions. For example, the single command
-\code{red()} has the same effect as the three commands
-\code{pen(Red())}, \code{fill(Red())}, and \code{label\_color(Red())}.
-
-
-\texinfochapter{4}{Advanced Topics}
-\label{chapter:adv}
-
-This chapter covers \emph{ad hoc} tricks and open-ended techniques
-that require relatively more programming sophistication. You will
-almost surely need an external \CXX\ reference if you do not speak the
-language.
-
-
-\section{Hidden Object Removal}
-\label{section:hidden}
-
-\index{Hidden object removal|(}
-\ePiX\ writes the output file in the same order that objects appear in
-the input. The order is significant because PostScript builds a figure
-in layers: Objects are drawn over objects that come earlier in the
-file. Shaded polygons can be used to obtain surprisingly effective
-hidden object removal in surface meshes. This section describes the
-data structures defined in the source files \code{surface.*}.
-
-\index{Camera}
-The basic idea is to create a shaded polygon class that knows its
-approximate distance to the camera. For computational simplicity, a
-mesh ``facet'' is treated as a quadrilateral, located at the
-arithmetic mean of its vertices. A facet's boundary is created from a
-map and a domain by tracing a fine mesh rectangle counterclockwise.
-
-To draw a parametrized surface, facets are stored in a \CXX\ vector,
-sorted in decreasing order of distance to the camera, and printed to
-the output file. If filling is active, the gray density of a facet
-depends on the cosine of the angle between the normal vector and the
-vector from the camera to the element.
-
-This simple algorithm works surprisingly well when mesh elements
-intersect at most along complete edges. To incorporate line-like
-elements (e.g., coordinate axes, wire-mesh plots) with shaded
-surfaces, the best technique is often to order high-level scene
-elements manually, breaking up shaded surfaces (for example, with
-domain resizing or clipping) as necessary. The sample file
-\filename{saddle.xp} illustrates possible techniques.
-
-Shaded surfaces can be decorated with a bit of hackery. For example,
-the \code{facet::draw} function in \filename{facet.cc} can be
-modified easily to draw line elements, tangents, or normal vectors
-along with the facet itself. The sample file
-\filename{decorate.xp} contains a couple of ideas. (The
-decorations are activated by compiler flags; please consult the file
-itself for information on compiling.)
-\index{Hidden object removal|)}
-
-
-\section{Extensions}
-\label{section:extensions}
-
-Thanks to a suggestion of Andrew Sterian, \ePiX\ is extensible. User
-extensions span a spectrum, from header files that require only basic
-knowledge of~\CXX\ to separately compiled libraries that add
-substantial new features. The structure of the source code is
-outlined in Section~\ref{section:programmers}.
-
-
-\subsection{Header Files}
-
-A \CXX~header file conventionally has suffix~\filename{.h}, as in
-\filename{myheader.h}. To use this custom header, put a line
-\code{\#include "myheader.h"} in your source file.
-
-User definitions can be easily and robustly implemented with ``inline
-functions''. Inline functions are superficially similar to macros, but
-are far more safe and featureful (since they are handled by the
-compiler rather than by the pre-processor). Examples are
-\begin{verbatim}
- inline void Bold() { pen(1.6); }
- inline void purple() { rgb(0.5, 0, 0.7); }
- inline void draw_square(double s) { rect(P(-s,-s),P(s,s)); }
- inline double cube(double x) { return pow(x,3); // x^3 }
-\end{verbatim}
-The keyword \code{void} signifies a function that does not return a
-value, or (when used as an implicit parameter) a function that does
-not accept arguments. Inline function definitions are syntactically
-identical to ordinary function definitions, but \emph{must} occur in a
-header file or in the source file where they are used. The examples
-above might be used in an input file as follows:
-\begin{verbatim}
- Bold();
- draw_square(cube(1.25));
-\end{verbatim}
-
-
-\subsection{Compiling}
-
-The next few sections outline the creation of a ``static library'' on
-GNU/Linux, and explain how to incorporate custom features at runtime.
-The extensively-commented sample files \filename{std\_F.cc}~and
-\filename{std\_F.h} illustrate the techniques described below, and may
-be used for guidance and experimentation.
-
-A small library is usually written as a \emph{header} file, which
-contains class and function declarations (also called ``prototypes''),
-and a \emph{source} file, which contains the actual
-code. Conventionally (under *nix), these files have extension
-\filename{.h}~and \filename{.cc} respectively. Header and source files
-may ``include'' other header files, to incorporate additional
-functionality.
-\begin{verbatim}
-/* my_code.h */
-#ifndef MY_CODE
-#define MY_CODE
-#include <cmath> // standard library math header
-#include "epix.h" // ePiX header
-using ePiX::P;
-
-namespace Mine { // to avoid name conflicts
- // functions for special relativity
- double lorentz_norm(const P&);
- bool spacelike(const P&);
-} // end of namespace
-#endif /* MY_CODE */
-\end{verbatim}
-This file exhibits two ``safety features''. The three \code{MY\_CODE}
-lines prevent the file from being included multiple times. In a file
-of this size, inclusion protection is overkill, but as your code base
-grows and the number of header files increases, this protection is
-essential. Second, the header introduces a ``Mine'' namespace. Inside
-this namespace, two functions are declared as prototypes, giving the
-function's return type, name, and argument type(s). A header file
-should be commented fairly liberally, so that a year or two from now
-you'll be able to decipher the file's contents. For a longer file,
-version and contact information, an overall comment describing the
-file's features, and license information are appropriate.
-
-Next, the corresponding source file; definitions are also placed into
-the namespace, and must match their prototypes from the header file
-exactly.
-\begin{verbatim}
-/* my_code.cc */
-#include "my_code.h"
-using namespace ePiX;
-
-namespace Mine {
- double lorentz_norm(const P& arg)
- {
- double x(arg.x1()), y(arg.x2()), z(arg.x3()); // extract coords
- return (y-x)*(y+x) + z*z; // -x^2 + y^2 + z^2
- }
- bool spacelike(const P& arg)
- {
- return (lorentz_norm(arg) > 0); // true if inequality is
- }
-} // end of namespace
-\end{verbatim}
-Copies of these files are included with the source code so you can
-experiment with them. Next, the source file must be ``compiled'',
-``archived'', and ``indexed''. In the commands below, the percent sign
-is the prompt.
-\begin{verbatim}
-% g++ -c my_code.cc
-% ar -ru libcustom.a my_code.o
-% ranlib libcustom.a
-\end{verbatim}
-Please see your system documentation for details on command options
-and what each step does. For linking (below), the name of the library
-file must begin ``lib'' and have the extension~\filename{.a}. Once these
-steps are successfully completed, put the library \filename{libcustom.a}
-and header file \filename{my\_code.h} in your project directory. You're
-ready to use the code in an \ePiX\ figure.
-
-
-\subsection{Runtime Linking}
-
-The script~\epix\ allows input files to be linked with external
-libraries at run time, when the input file is compiled into a
-temporary executable.
-
-\epix\ recognizes command line options and passes them verbatim to the
-compiler. The most commonly used options are those of the form
-\begin{verbatim}
- -I<include> -L<libdir> -l<lib>
-\end{verbatim}
-For example, to link \filename{figure.xp} against
-\filename{mylibs/libcustom.a}, run the command
-\begin{verbatim}
- epix -Lmylibs -lcustom figure
-\end{verbatim}
-The options \code{-I. -L.} tell the compiler to look in the current
-directory for header and library files. Compiler options may appear
-in any order, but must come before the name of the input file(s).
-
-Compiler options may be placed in the configuration file
-\filename{\$HOME/.epixrc}, with syntax as above. A line in the config
-file that contains a pound sign~(\code{\#}) is a comment, no matter
-where in the line the~\code{\#} appears. If any non-comment line
-fails to start with a dash, the rest of the file is silently
-discarded. Command-line options are read before the config file.
-
-
-\subsection{Using Multiple Versions}
-
-The script \filename{epix}~links by default against the \code{C}~math
-library \code{libm.a}~and the \ePiX\ library \code{libepix.a}. The
-command option \code{--no-defaults} clears the header and include
-paths and removes \code{libepix.a} from the link list. The script may
-therefore be used with multiple versions of \ePiX, a potentially
-useful feature if you regularly need to compile old source files, or
-simply prefer the syntax of an older version.
-
-To install and use (say) Version~1.0.0, build the package according to
-its \filename{INSTALL} instructions, but \emph{do not use the makefile
- to install}. Instead, manually install the header and library only,
-using their version number:
-\begin{verbatim}
-# install -m 644 epix.h /usr/local/include/epix-1.0.h
-# install -m 644 libepix.a /usr/local/lib/libepix-1.0.a
-\end{verbatim}
-A non-system directory may be used instead of \filename{/usr/local}.
-To use the old version, a source file must \code{include} the
-appropriate header file (which is identified by its version number).
-To compile, issue a command such as
-\begin{verbatim}
-epix --no-defaults -I/usr/local -L/usr/local -lepix-1.0 file.xp
-\end{verbatim}
-
-
-\section{Programmer's Guide}
-\label{section:programmers}
-
-This section briefly surveys \ePiX's implementation, and is intended
-for (potential) programmers. The source code is divided into modules
-with small, well-defined responsibilities, but the user interface is
-mostly compatible with the syntax of Version~1.0. These constraints
-demanded a degree of implementation hiding. For example, the
-user-visible classes defined in \filename{Color.h}, \filename{path.h},
-and~\filename{screen.h} contain only a pointer to the implementation
-class, and style data is hidden behind global commands.
-
-Functionally, the code consists of the user interface; implementation
-class\-es comprising drawing attributes, spatial objects, screens and
-representations of their elements, and output; and miscellaneous
-utility functions. The headers in each group, and their contents, are
-described in Section~\ref{section:interface}.
-
-The user interface headers are assembled into a single file,
-\filename{epix.h}, and installed in \filename{/usr/local/include} by
-default. In normal use, the shell scripts read only the user interface
-header. The individual headers, including the components of
-\filename{epix.h}, are installed in
-\filename{/usr/local/include/epix}. These are provided for authors of
-external libraries, who may need access to implementation details.
-
-
-\subsection{External Packages}
-
-\ePiX\ harnesses the computational power of~\CXX\ to the typographical
-capabilities of \LaTeX. Consequently, \ePiX\ should be viewed in part
-as a framework for expressing numerical data visually.
-
-In the course of your work, you may develop specialized code filling a
-gap in \ePiX's functionality. If your code seems likely to be of
-interest to other users, please consider bundling it as an external
-package and notifying the \ePiX\ community so your work can be linked
-from the project pages and distributed to interested users.
-
-There are no formal requirements for external packages, but in the
-interest of uniformity contributed code should follow the GNU Coding
-Standards~\cite{GNUCoding}. At a minimum, an external package should
-build with the standard \code{./configure; make; make install}
-commands, and the \code{configure} script should accept an option
-\code{--with-epix} for the user to specify a non-default \ePiX\
-install directory.
-
-If an external package builds a static library, it should provide a
-single header containing all the package's entry points, and enclose
-its interface in a namespace. Entry points should not collide with
-\ePiX\ functions. Naming the package ``\filename{epix-<...>}'' is a
-good idea, but not essential. For example, a package providing textual
-nodes and diagram layout might be named \filename{epix-nodes}. Input
-files would use the package with the lines
-\begin{verbatim}
- #include "epix-nodes.h"
- using namespace ePiX-nodes;
-\end{verbatim}
-and be compiled with
-\begin{verbatim}
- epix -lepix-nodes <file>
-\end{verbatim}
-
-The user and internal interfaces of \ePiX-1.2 are not likely to
-change. Still, it's prudent to rely only on the user interface in
-contributed code whenever possible. Doing so also simplifies your work
-as an author; your library can simply \code{include} the user header
-file, and deal only with high-level objects and drawing attributes.
-
-
-\subsection{User Interface}
-\label{section:interface}
-
-These files (in order) comprise the global header \filename{epix.h}.
-
-\Header{enums.h} Marker, alignment, Riemann integral, and vector field
-types.
-
-\Header{length.h} Physical lengths, conceptually a number and
-two-letter \LaTeX\ length unit.
-
-\Header{interval.h} Closed, open, and half-open interval ranges for
-data culling.
-
-\Header{triples.h} The \code{P} class.
-
-\Header{functions.h} Angle-sensitive trig functions, miscellaneous
-utility functions, the \code{Deriv}~and \code{Integral} classes.
-
-\Header{pairs.h} Screen locations and displacements, with complex
-arithmetic operations.
-
-\Header{Color.h} The Color class interface, named
-primaries and constructors.
-
-\Header{state.h} Angle mode; clipping and cropping; label styles;
-filling; arrow head style; dot and tick sizes, dash length; line
-style; line and base pen attributes; color-setting commands.
-
-\Header{frame.h} Orthonormal bases.
-
-\Header{domain.h} Coordinate boxes for function plotting.
-
-\Header{camera.h} The camera.
-
-\Header{screen.h} The screen class.
-
-\Header{picture.h} Dimension-setting, offset, layout, decoration,
-verbatim text, and output format commands.
-
-\Header{markers.h} Point markers, axis labels, and coordinate axes.
-
-\Header{axis.h} Coordinate axes and labels in various styles.
-
-\Header{legend.h} Plot legends.
-
-\Header{path.h} The path class.
-
-\Header{curves.h} Polygons, arrows, ellipses, arcs, splines,
-coordinate grids, and recursive fractal curves.
-
-\Header{circle.h} The \code{Circle} shape object class.
-
-\Header{plane.h} The \code{Plane} shape object class.
-
-\Header{segment.h} The \code{Segment} shape object class.
-
-\Header{sphere.h} The \code{Sphere} shape object class.
-
-\Header{intersections.h} Shape object intersection operators.
-
-\Header{plots.h} Plotting commands.
-
-\Header{surface.h} Shaded surface plots.
-
-\Header{data\_mask.h} Helper class for data pruning.
-
-\Header{data\_file.h} Class for storing and representing data.
-
-\Header{data\_bins.h} Class for sorting and counting data.
-
-\Header{geometry.h} Latitudes and longitudes; spherical plotting,
-arcs, polygons, and polyhedra; hyperbolic arcs.
-
-
-\subsection{Implementation Classes}
-
-\Header{Color\_Base.h} The Color implementation interface.
-
-\Header{Color\_CMY.h} The CMY color model.
-
-\Header{Color\_CMYK.h} The CMYK color model.
-
-\Header{Color\_Gray.h} The Gray color model.
-
-\Header{Color\_Neutral.h} Each color class has a ``Neutral'' member
-that converts colors to that model by filtering. This file defines the
-unique ``model-less'' Neutral color for which filtering performs no
-action.
-
-\Header{Color\_RGB.h} The RGB color model.
-
-\Header{Color\_Sep.h} Classes for CMYK separation.
-
-\Header{active\_screen.h} Simple manipulator for the active screen.
-
-\Header{picture\_data.h} Picture implementation: two \code{screen}s
-(representing the \code{canvas}~and the output page), true dimensions
-and offsets, pointer to output format, list of colors, and lists of
-verbatim text to write before and after printing the \code{picture}
-environment in the output file. For simplicity, the \code{screen}s and
-dimensions are public; encapsulation from the user results from
-``hiding'' this header.
-
-
-\subsubsection*{Style Attributes}
-
-Declaration-style attributes are maintained with functions returning
-static references: \code{the\_angle\_style()},
-\code{the\_arrowhead\_style()}, \code{the\_label\_style()},
-\code{the\_mark\_size()}, \code{the\_paint\_style()}, and
-\code{the\_path\_style()}. Each function is declared in the
-analogously-named header.
-
-\Header{angle\_units.h} Angular modes: \code{radians},
-\code{revolutions}, and \code{degrees}.
-
-\Header{arrow\_style.h} Arrow head style data: width, ratio, and
-inset.
-
-\Header{label\_style.h} Text object style: Label and mask colors,
-padding, border color and width, alignment, font size, font face, and
-angle.
-
-\Header{marker\_style.h} Dot and tick sizes.
-
-\Header{paint\_style.h} Line and base pens, fill color.
-
-\Header{path\_style.h} Solid, dashed, dotted lines.
-
-\Header{pen\_data.h} The pen class.
-
-
-\subsubsection*{Objects}
-
-\Header{arrow\_data.h} Arrow representation.
-
-\Header{facet.h} Shaded surface elements.
-
-\Header{label\_data.h} Text (label and marker) objects.
-
-\Header{legend\_item.h} Items for \code{legend}s.
-
-\Header{path\_data.h} Path implementation.
-
-\Header{spline.h} The natural spline class.
-
-\Header{spline\_data.h} Templates for quadratic and cubic splines.
-
-
-\subsubsection*{Screen Representation}
-
-Elements in a \code{screen} are represented polymorphically as
-``\code{tile}s'', of which there are six types: \code{glyph} (textual
-elements), \code{pen\_arrow} (arrows), \code{pen\_fill} (filled
-regions), \code{pen\_line} (path-like elements), \code{verbatim}
-(raw text), and \code{legend\_tile} (legends).
-
-Border and background shape are dictated by the \code{screen\_mask}
-class. The cropping algorithm assumes the contour of a screen mask is
-convex.
-
-\Header{affine.h} Affine maps.
-
-\Header{cropping.h} Screen mask cropping.
-
-\Header{glyph.h} Markers and labels.
-
-\Header{legend\_tile.h} Screen representation of a \code{legend}.
-
-\Header{mask\_diamond.h} Screen diamond mask.
-
-\Header{mask\_ellipse.h} Screen elliptical mask.
-
-\Header{mask\_rectangle.h} Screen rectangular mask.
-
-\Header{pen\_arrow.h} Arrows.
-
-\Header{pen\_fill.h} Filled regions.
-
-\Header{pen\_line.h} Paths.
-
-\Header{screen\_data.h} Screen implementation class.
-
-\Header{screen\_mask.h} Screen mask interface.
-
-\Header{tile.h} Screen element interface.
-
-\Header{verbatim.h} Text in output stream.
-
-
-\subsubsection*{Output}
-
-Output is divided into a couple of high-level operations and several
-``atomic'' low-level operations. To create a new output
-format, one need only implement the \code{format} interface for the
-desired file type. Paths and filled regions may be implemented however
-the output type dictates.
-
-\Header{eepic.h} eepic macros.
-
-\Header{fmt\_template.h} ``skeleton'' header for new output formats.
-
-\Header{format.h} The output interface.
-
-\Header{pst.h} PSTricks macros.
-
-\Header{tikz.h} tikz macros.
-
-
-\subsubsection*{Utilities}
-
-\Header{Color\_Utils.h} Functions for setting color channel densities.
-
-\Header{clipping.h} The clip box.
-
-\Header{constants.h} Global constants: Line widths; dot, tick, and
-dash sizes; arrowhead parameters; miscellaneous numerical constants
-and internal parameters.
-
-\Header{crop\_algorithms.h} Path and loop clipping templates.
-
-\Header{deriv.h} Finite difference template.
-
-\Header{edge\_data.h} Path element representation template.
-
-\Header{errors.h} Warning and error messages.
-
-\Header{frac.h} Rational numbers and operators.
-
-\Header{halfspace.h} Halfspace cutting.
-
-\Header{hatching.h} Filling regions in eepic.
-
-\Header{lens.h} Camera lenses.
-
-\Header{map.h} Wrappers for templated plotting.
-
-\Header{plot\_algorithms.h} Plotting templates.
-
-\Header{screen\_crop.h} Crop paths and loops.
-
-\Header{utils.h} Truncation, date and time, line breaking.
-
-
-\appendix
-\texinfoappendix{A}{Software Freedom}
-\index{Free software|(}
-
-Academics in general, and mathematicians in particular, depend on free
-exchange of information. We prove theorems or establish experimental
-results, write up formal accounts, place preprints on public file
-servers, and submit papers to peer-reviewed journals. If accepted, the
-results---data, techniques, methods of reasoning, citations, and
-conclusions---are published in print and become part of the public
-record, governed by copyright law. Libraries purchase journal
-subscriptions, but researchers and scholars may use ideas from the
-literature merely by giving appropriate citations in their own
-work. ``Theft'' arises from false claims of authorship.
-
-Carried over to software, the academic process would guarantee rights
-similar to those provided by the GNU General Public License (GPL):
-
-\begin{itemize}
-
-\item (GPL~0) To run a program for any purpose.
-
-\item (GPL~1) To study how the program works, and adapt it to your
- needs.
-
-\item (GPL~2) To redistribute copies of the program.
-
-\item (GPL~3) To improve the program, and release improvements to the
- public, so that the whole community benefits.
-
-\end{itemize}
-
-In reality, attitudes toward software differ markedly. Most academics
-work on a proprietary platform, use proprietary software for research
-and teaching, and share information with colleagues and students in
-proprietary, even obfuscated, data formats. Contrary to the academic
-ethic, proprietary software licenses restrict access to information:
-preventing users from learning how a program works internally
-(``reverse engineering''), limiting the number of users who may run a
-piece of software, and forbidding users from running (or sometimes
-even installing) a purchased copy on multiple machines.
-
-Restrictions on use aside, if one cannot examine a program's source
-code, one cannot fully trust the output, any more than one can trust
-(for purposes of scientific publication) results of a commercial
-testing lab.
-
-\texicomment
-\noindent$\phantom{.}$\hfil\vbox{\hrule width 4in}\hfil
-\texicommentend
-
-Consider a hypothetical future world in which scholarly results are
-disseminated like software. Instead of subscriptions, journals
-sell licenses granting readership to a specified number of
-individuals. Photocopying an article for a class or research seminar
-constitutes ``piracy'', though if the institution has purchased a
-sufficiently large site license the teacher or speaker may bring the
-physical volume to class and project the pages onto a screen.
-
-Of course, reading an article is scarcely enlightening. Mathematics
-papers contain only the statements of theorems. Merely opening the
-journal binds the reader to a lengthy legal agreement, stating that
-theorems be used only for specific purposes and threatening serious
-legal consequences for attempting to discover the author's proofs.
-
-The actions of a single student, employee, or faculty member can
-expose an institution to a costly ``journal audit'' from the
-Mathematical Society of America (MSA), with the institution
-responsible for legal costs if the audit reveals license violations
-anywhere in the organization.
-
-Mathematicians who long for the Old Days when papers contained
-proofs and were shared freely are dismissed as idealistic cranks
-or labeled anti-business communists. Common knowledge asserts the
-obvious superiority of proprietary journals, and the necessity of
-licenses for keeping mathematicians gainfully employed.
-
-\texicomment
-\noindent$\phantom{.}$\hfil\vbox{\hrule width 4in}\hfil
-\texicommentend
-
-Back in our world, some vendors have attempted to placate opponents of
-closed source with ``shared source'' licenses, under which one may
-sign a non-disclosure agreement and subsequently examine source
-code. In the future world analogy, a shared source agreement would
-allow journal licensees to sign an NDA, then see the proofs of
-theorems. Readers could thereby correct errors in proofs (benefitting
-the publisher by improving the reliability of the journal), but would
-be legally forbidden from using the ideas elsewhere (denying benefit
-to other mathematicians).
-
-Legally and conceptually codifying software as a commodity ignores a
-fundamental reality: Like an idea or recipe, software can be copied
-without loss of the original. The perception of ``theft'' by copying
-arises from an artificial belief that software has an owner who must
-be monetarily compensated each time a person acquires a copy. The
-nature of software does not enforce the ``sale'' model in the way
-services and physical commodities do. It therefore seems
-philosophically inappropriate to treat software as a commodity, and
-perilous to conform the legal system to the enforcement of such a
-model.
-
-At its best, software enhances our productivity and
-creativity. Sharing software, like sharing ideas, benefits a larger
-number of people without detriment to existing users. I hope this
-modest program is, in conjunction with the much larger efforts of
-others (especially Donald Knuth, Richard Stallman, and the many people
-who have contributed to the authorship of \LaTeX\ and its packages),
-useful to you in your mathematical work.
-
-Please visit the Free Software Foundation, at
-\URL{www.fsf.org}, to learn more about free software and how
-you can contribute to its development and adoption.
-\index{Free software|)}
-
-\texinfoappendix{B}{Acknowledgments}
-
-\ePiX\ is built on the work of many people (unfortunately, most of
-whom I am unaware). The following people have contributed, sometimes
-unknowingly but always generously:
-
-\paragraph{Infrastructure} Donald Knuth, Conrad Kwok, Leslie Lamport,
-Tim Morgan, Piet van~Oostrum, Sunil Podar, Richard Stallman, Till
-Tantau, Herbert Voss, Timothy van~Zandt
-
-\paragraph{Enhancements} Jay Belanger, Robin Blume-Kohout, Julian
-Gilbey, Marcus Hanwell, Yvon Henel, Svend Daug{\aa}rd Pedersen, Andrew
-Sterian
-
-\paragraph{Porting and packaging} Julian Gilbey (Debian); Tsuguru Kato
-(FreeBSD); Markus Dittrich, Danny van Dyk, Christian Faulhammer,
-Olivier Fisette, Chris Gianelloni, Michael Hanselmann, Marcus Hanwell,
-David Holm, Peter Johanson, Patrick Kursawe, Tobias Scherbaum, Markus
-Ullmann (Gentoo); Guido Gonzato (RPM); Rene Rebe (T2)
-
-\paragraph{Debugging, advice, and other assistance} Jay Belanger,
-Felipe Paulo Guazzi Bergo, Karl Berry, Robin Blume-Kohout, Patrick
-Cousot, Stephen Gibson, Julian Gilbey, Dov Grobgeld, Bob Grover, Jim
-Hefferon, Jacques L'helgoual, Yvon Henel, Hartmut Henkel, Herng-Jeng
-Jou, Walter Kehowski, Kevin McCormick, Ross Moore, Thorsten Riess,
-Alan Sill, Neel Smith, Michael Somos, Andrew Sterian, Ryszard Tanas,
-Kai Trukenmueller, Torbjorn Vik, Wenguang Wang, Gabe Weaver, Mariusz
-Wodzicki
-
-\texicomment
-\begin{thebibliography}{9}
-%
-\bibitem{Cline} Marshall Cline, \emph{\CXX\ FAQ Lite}, \\
- \URL{http://www.parashift.com/c++-faq-lite/}
-%
-\bibitem{xcolor} Uwe Kern, \emph{Extending \LaTeX's color facilities:
- the \code{xcolor} package}, white paper, Jan.~21, 2007
-%
-\bibitem{KnR} Brian Kernighan and Dennis Ritchie, \emph{The \code{C}
- Programming Language}, Second Ed., Prentice-Hall Software Series,
- 1988
-%
-\bibitem{GNUC} Sandra Loosemore, Richard M. Stallman, et.\ al.,
- \emph{The GNU \code{C}~Library Reference Manual}, GNU Press,
- 2004
-%
-\bibitem{Prata} Stephen Prata, \emph{\CXX\ Primer Plus}, Sams, 2002
-%
-\bibitem{R} Keith Reckdahl, \emph{Using Imported Graphics in
- \LaTeX2e}, Version~2.0, white paper, Dec.~15, 1997
-%
-\bibitem{GNUCoding} Richard M. Stallman, et.\ al., \emph{The GNU
- Coding Standards}, \\
- \URL{http://www.gnu.org/prep/standards/}
-%
-\bibitem{S} Bjarne Stroustrup, \emph{The \CXX\ Programming Language},
- Special Ed., Addison-Wesley, 1997
-%
-\bibitem{Z} Timothy van~Zandt, \emph{PSTricks: PostScript Macros for
- Generic \TeX}, Version~0.93a, white paper, Mar.~12, 1993
-%
-\end{thebibliography}
-
-\clearpage
-
-\printindex
-
-\end{document}
-
-\texicommentend
diff --git a/graphics/epix/doc/marker.eepic b/graphics/epix/doc/marker.eepic
deleted file mode 100644
index 5ee5923a3b..0000000000
--- a/graphics/epix/doc/marker.eepic
+++ /dev/null
@@ -1,39 +0,0 @@
-%% Generated from marker.xp on Tue Jan 4 15:32:18 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [0,5] x [0,1]
-%% Actual size: 3.75in x 1in
-%% Figure offset: right by 0in, up by 0in
-%%
-\setlength{\unitlength}{0.25in}
-\begin{picture}(15,4)(-0,-0)
-%% ---
-\put(0.664176,3.77861){{\tt{CIRC}}}
-\whiten\put(0,4){\makebox(0,0)[c]{{\circle{0.166044}}}}
-\put(4.41418,3.77861){{\tt{SPOT}}}
-\put(3.75,4){\makebox(0,0)[c]{{\circle*{0.249066}}}}
-\put(8.16418,3.77861){{\tt{RING}}}
-\put(7.5,4){\makebox(0,0)[c]{{\circle{0.249066}}}}
-\put(11.9142,3.77861){{\tt{DOT}}}
-\put(11.25,4){\makebox(0,0)[c]{{\circle*{0.166044}}}}
-\put(15.6642,3.77861){{\tt{DDOT}}}
-\put(15,4){\makebox(0,0)[c]{{\circle*{0.110696}}}}
-\put(0.664176,1.77861){{\tt{PLUS}}}
-\put(0,2){\makebox(0,0)[c]{+}}
-\put(4.41418,1.77861){{\tt{OPLUS}}}
-\put(3.75,2){\makebox(0,0)[c]{$\oplus$}}
-\put(8.16418,1.77861){{\tt{TIMES}}}
-\put(7.5,2){\makebox(0,0)[c]{$\times$}}
-\put(11.9142,1.77861){{\tt{OTIMES}}}
-\put(11.25,2){\makebox(0,0)[c]{$\otimes$}}
-\put(0.664176,-0.221392){{\tt{DIAMOND}}}
-\put(0,0){\makebox(0,0)[c]{$\diamond$}}
-\put(4.41418,-0.221392){{\tt{UP}}}
-\put(3.75,0){\makebox(0,0)[c]{$\bigtriangleup$}}
-\put(8.16418,-0.221392){{\tt{DOWN}}}
-\put(7.5,0){\makebox(0,0)[c]{$\bigtriangledown$}}
-\put(11.9142,-0.221392){{\tt{BOX}}}
-\put(11.25,0){\makebox(0,0)[c]{\rule{3pt}{3pt}}}
-\put(15.6642,-0.221392){{\tt{BBOX}}}
-\put(15,0){\makebox(0,0)[c]{\rule{2pt}{2pt}}}
-\end{picture}
diff --git a/graphics/epix/doc/marker.xp b/graphics/epix/doc/marker.xp
deleted file mode 100644
index f1569c1476..0000000000
--- a/graphics/epix/doc/marker.xp
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*-ePiX-*- */
-/* marker.c -- types of marker */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- unitlength("0.25in");
- picture(P(15,4));
- bounding_box(P(0,0), P(5,1));
- // offset(P(-1,0));
-
- begin();
-
- double x1 = x_min;
- double x2 = x_min + x_size/4;
- double x3 = x_min + 2*x_size/4;
- double x4 = x_min + 3*x_size/4;
- double x5 = x_max;
-
- double y1 = y_min;
- double y2 = y_min + y_size/2;
- double y3 = y_max;
-
- label(P(x1,y3), P(12,-4), "{\\tt{CIRC}}");
- circ(P(x1,y3));
-
- label(P(x2,y3), P(12,-4), "{\\tt{SPOT}}");
- spot(P(x2,y3));
-
- label(P(x3,y3), P(12,-4), "{\\tt{RING}}");
- ring(P(x3,y3));
-
- label(P(x4,y3), P(12,-4), "{\\tt{DOT}}");
- dot(P(x4,y3));
-
- label(P(x5,y3), P(12,-4), "{\\tt{DDOT}}");
- ddot(P(x5,y3));
-
- label(P(x1,y2), P(12,-4), "{\\tt{PLUS}}");
- marker(P(x1,y2), PLUS);
-
- label(P(x2,y2), P(12,-4), "{\\tt{OPLUS}}");
- marker(P(x2,y2), OPLUS);
-
- label(P(x3,y2), P(12,-4), "{\\tt{TIMES}}");
- marker(P(x3,y2), TIMES);
-
- label(P(x4,y2), P(12,-4), "{\\tt{OTIMES}}");
- marker(P(x4,y2), OTIMES);
-
- label(P(x1,y1), P(12,-4), "{\\tt{DIAMOND}}");
- marker(P(x1,y1), DIAMOND);
-
- label(P(x2,y1), P(12,-4), "{\\tt{UP}}");
- marker(P(x2,y1),UP);
-
- label(P(x3,y1), P(12,-4), "{\\tt{DOWN}}");
- marker(P(x3,y1), DOWN);
-
- label(P(x4,y1), P(12,-4), "{\\tt{BOX}}");
- marker(P(x4,y1), BOX);
-
- label(P(x5,y1), P(12,-4), "{\\tt{BBOX}}");
- marker(P(x5,y1), BBOX);
-
- end();
-}
diff --git a/graphics/epix/doc/my_code.cc b/graphics/epix/doc/my_code.cc
deleted file mode 100644
index b7365fa63c..0000000000
--- a/graphics/epix/doc/my_code.cc
+++ /dev/null
@@ -1,15 +0,0 @@
-/* my_code.cc */
-#include "my_code.h"
-using namespace ePiX;
-
-namespace Mine {
- double lorentz_norm(P arg)
- {
- double x=arg.x1(), y=arg.x2(), z=arg.x3(); // extract coords
- return -x*x + y*y + z*z;
- }
- bool spacelike(P arg)
- {
- return (lorentz_norm(arg) > 0);
- }
-} // end of namespace
diff --git a/graphics/epix/doc/my_code.h b/graphics/epix/doc/my_code.h
deleted file mode 100644
index 229e80dbf4..0000000000
--- a/graphics/epix/doc/my_code.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* my_code.h */
-#include <cmath> // standard library math header
-#include "epix.h" // ePiX header
-using ePiX::P;
-
-namespace Mine { // to avoid name conflicts
- // functions for special relativity
- double lorentz_norm(P);
- bool spacelike(P);
-} // end of namespace
diff --git a/graphics/epix/doc/objects.eepic b/graphics/epix/doc/objects.eepic
deleted file mode 100644
index 9b17600895..0000000000
--- a/graphics/epix/doc/objects.eepic
+++ /dev/null
@@ -1,412 +0,0 @@
-%% Generated from objects.xp on Thu Jun 28 14:55:45 EDT 2007 by
-%% ePiX-1.1.6
-%%
-%% Cartesian bounding box: [0,5] x [0,2]
-%% Actual size: 3.75 x 1.5in
-%% Figure offset: left by 0in, down by 0in
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}
-\xdefinecolor{rgb_e5e5e5}{rgb}{0.898039,0.898039,0.898039}
-\xdefinecolor{rgb_ffffff}{rgb}{1,1,1}
-\setlength{\unitlength}{1in}
-\begin{picture}(3.75,1.5)(-0,-0)
-\path(0.675,0.75)(2.325,0.75)(1.5,1.125)(0.675,0.75)
-%%
-\path(3.1875,1.125)(3.18724,1.13481)(3.18647,1.1446)
- (3.18519,1.15433)(3.1834,1.16398)(3.18111,1.17353)(3.17832,1.18294)
- (3.17505,1.19219)(3.17129,1.20126)(3.16706,1.21012)
- (3.16238,1.21875)(3.15725,1.22712)(3.15169,1.23521)(3.14571,1.243)
- (3.13934,1.25046)(3.13258,1.25758)(3.12546,1.26434)(3.118,1.27071)
- (3.11021,1.27669)(3.10212,1.28225)(3.09375,1.28738)
- (3.08512,1.29206)(3.07626,1.29629)(3.06719,1.30005)
- (3.05794,1.30332)(3.04853,1.30611)(3.03898,1.3084)(3.02933,1.31019)
- (3.0196,1.31147)(3.00981,1.31224)(3,1.3125)(2.99019,1.31224)
- (2.9804,1.31147)(2.97067,1.31019)(2.96102,1.3084)(2.95147,1.30611)
- (2.94206,1.30332)(2.93281,1.30005)(2.92374,1.29629)
- (2.91488,1.29206)(2.90625,1.28738)(2.89788,1.28225)
- (2.88979,1.27669)(2.882,1.27071)(2.87454,1.26434)(2.86742,1.25758)
- (2.86066,1.25046)(2.85429,1.243)(2.84831,1.23521)(2.84275,1.22712)
- (2.83762,1.21875)(2.83294,1.21012)(2.82871,1.20126)
- (2.82495,1.19219)(2.82168,1.18294)(2.81889,1.17353)(2.8166,1.16398)
- (2.81481,1.15433)(2.81353,1.1446)(2.81276,1.13481)(2.8125,1.125)
- (2.81276,1.11519)(2.81353,1.1054)(2.81481,1.09567)(2.8166,1.08602)
- (2.81889,1.07647)(2.82168,1.06706)(2.82495,1.05781)
- (2.82871,1.04874)(2.83294,1.03988)(2.83762,1.03125)
- (2.84275,1.02288)(2.84831,1.01479)(2.85429,1.007)(2.86066,0.999538)
- (2.86742,0.992417)(2.87454,0.98566)(2.882,0.979285)
- (2.88979,0.973309)(2.89788,0.967749)(2.90625,0.96262)
- (2.91488,0.957936)(2.92374,0.95371)(2.93281,0.949954)
- (2.94206,0.946677)(2.95147,0.943889)(2.96102,0.941597)
- (2.97067,0.939808)(2.9804,0.938527)(2.99019,0.937757)(3,0.9375)
- (3.00981,0.937757)(3.0196,0.938527)(3.02933,0.939808)
- (3.03898,0.941597)(3.04853,0.943889)(3.05794,0.946677)
- (3.06719,0.949954)(3.07626,0.95371)(3.08512,0.957936)
- (3.09375,0.96262)(3.10212,0.967749)(3.11021,0.973309)
- (3.118,0.979285)(3.12546,0.98566)(3.13258,0.992417)
- (3.13934,0.999538)(3.14571,1.007)(3.15169,1.01479)(3.15725,1.02288)
- (3.16238,1.03125)(3.16706,1.03988)(3.17129,1.04874)
- (3.17505,1.05781)(3.17832,1.06706)(3.18111,1.07647)(3.1834,1.08602)
- (3.18519,1.09567)(3.18647,1.1054)(3.18724,1.11519)(3.1875,1.125)
-%%
-\path(0.75,0)(2.25,0)(2.25,0.75)(0.75,0.75)(0.75,0)
-%%
-\color{rgb_e5e5e5}%
-\path(2.025,0.00550459)(1.725,0.00550459)
-\path(2.025,0.0110092)(1.725,0.0110092)
-\path(2.025,0.0165138)(1.725,0.0165138)
-\path(2.025,0.0220183)(1.725,0.0220183)
-\path(2.025,0.0275229)(1.725,0.0275229)
-\path(2.025,0.0330275)(1.725,0.0330275)
-\path(2.025,0.0385321)(1.725,0.0385321)
-\path(2.025,0.0440367)(1.725,0.0440367)
-\path(2.025,0.0495413)(1.725,0.0495413)
-\path(2.025,0.0550459)(1.725,0.0550459)
-\path(2.025,0.0605505)(1.725,0.0605505)
-\path(2.025,0.066055)(1.725,0.066055)
-\path(2.025,0.0715596)(1.725,0.0715596)
-\path(2.025,0.0770642)(1.725,0.0770642)
-\path(2.025,0.0825688)(1.725,0.0825688)
-\path(2.025,0.0880734)(1.725,0.0880734)
-\path(2.025,0.093578)(1.725,0.093578)
-\path(2.025,0.0990826)(1.725,0.0990826)
-\path(2.025,0.104587)(1.725,0.104587)
-\path(2.025,0.110092)(1.725,0.110092)
-\path(2.025,0.115596)(1.725,0.115596)
-\path(2.025,0.121101)(1.725,0.121101)
-\path(2.025,0.126606)(1.725,0.126606)
-\path(2.025,0.13211)(1.725,0.13211)
-\path(2.025,0.137615)(1.725,0.137615)
-\path(2.025,0.143119)(1.725,0.143119)
-\path(2.025,0.148624)(1.725,0.148624)
-\path(2.025,0.154128)(1.725,0.154128)
-\path(2.025,0.159633)(1.725,0.159633)
-\path(2.025,0.165138)(1.725,0.165138)
-\path(2.025,0.170642)(1.725,0.170642)
-\path(2.025,0.176147)(1.725,0.176147)
-\path(2.025,0.181651)(1.725,0.181651)
-\path(2.025,0.187156)(1.725,0.187156)
-\path(2.025,0.192661)(1.725,0.192661)
-\path(2.025,0.198165)(1.725,0.198165)
-\path(2.025,0.20367)(1.725,0.20367)
-\path(2.025,0.209174)(1.725,0.209174)
-\path(2.025,0.214679)(1.725,0.214679)
-\path(2.025,0.220183)(1.725,0.220183)
-\path(2.025,0.225688)(1.725,0.225688)
-\path(2.025,0.231193)(1.725,0.231193)
-\path(2.025,0.236697)(1.725,0.236697)
-\path(2.025,0.242202)(1.725,0.242202)
-\path(2.025,0.247706)(1.725,0.247706)
-\path(2.025,0.253211)(1.725,0.253211)
-\path(2.025,0.258716)(1.725,0.258716)
-\path(2.025,0.26422)(1.725,0.26422)
-\path(2.025,0.269725)(1.725,0.269725)
-\path(2.025,0.275229)(1.725,0.275229)
-\path(2.025,0.280734)(1.725,0.280734)
-\path(2.025,0.286239)(1.725,0.286239)
-\path(2.025,0.291743)(1.725,0.291743)
-\path(2.025,0.297248)(1.725,0.297248)
-\path(2.025,0.302752)(1.725,0.302752)
-\path(2.025,0.308257)(1.725,0.308257)
-\path(2.025,0.313761)(1.725,0.313761)
-\path(2.025,0.319266)(1.725,0.319266)
-\path(2.025,0.324771)(1.725,0.324771)
-\path(2.025,0.330275)(1.725,0.330275)
-\path(2.025,0.33578)(1.725,0.33578)
-\path(2.025,0.341284)(1.725,0.341284)
-\path(2.025,0.346789)(1.725,0.346789)
-\path(2.025,0.352294)(1.725,0.352294)
-\path(2.025,0.357798)(1.725,0.357798)
-\path(2.025,0.363303)(1.725,0.363303)
-\path(2.025,0.368807)(1.725,0.368807)
-\path(2.025,0.374312)(1.725,0.374312)
-\path(2.025,0.379817)(1.725,0.379817)
-\path(2.025,0.385321)(1.725,0.385321)
-\path(2.025,0.390826)(1.725,0.390826)
-\path(2.025,0.39633)(1.725,0.39633)
-\path(2.025,0.401835)(1.725,0.401835)
-\path(2.025,0.407339)(1.725,0.407339)
-\path(2.025,0.412844)(1.725,0.412844)
-\path(2.025,0.418349)(1.725,0.418349)
-\path(2.025,0.423853)(1.725,0.423853)
-\path(2.025,0.429358)(1.725,0.429358)
-\path(2.025,0.434862)(1.725,0.434862)
-\path(2.025,0.440367)(1.725,0.440367)
-\path(2.025,0.445872)(1.725,0.445872)
-\path(2.025,0.451376)(1.725,0.451376)
-\path(2.025,0.456881)(1.725,0.456881)
-\path(2.025,0.462385)(1.725,0.462385)
-\path(2.025,0.46789)(1.725,0.46789)
-\path(2.025,0.473394)(1.725,0.473394)
-\path(2.025,0.478899)(1.725,0.478899)
-\path(2.025,0.484404)(1.725,0.484404)
-\path(2.025,0.489908)(1.725,0.489908)
-\path(2.025,0.495413)(1.725,0.495413)
-\path(2.025,0.500917)(1.725,0.500917)
-\path(2.025,0.506422)(1.725,0.506422)
-\path(2.025,0.511927)(1.725,0.511927)
-\path(2.025,0.517431)(1.725,0.517431)
-\path(2.025,0.522936)(1.725,0.522936)
-\path(2.025,0.52844)(1.725,0.52844)
-\path(2.025,0.533945)(1.725,0.533945)
-\path(2.025,0.53945)(1.725,0.53945)
-\path(2.025,0.544954)(1.725,0.544954)
-\path(2.025,0.550459)(1.725,0.550459)
-\path(2.025,0.555963)(1.725,0.555963)
-\path(2.025,0.561468)(1.725,0.561468)
-\path(2.025,0.566972)(1.725,0.566972)
-\path(2.025,0.572477)(1.725,0.572477)
-\path(2.025,0.577982)(1.725,0.577982)
-\path(2.025,0.583486)(1.725,0.583486)
-\path(2.025,0.588991)(1.725,0.588991)
-\path(2.025,0.594495)(1.725,0.594495)
-\path(2.01955,0.6)(2.01955,0)
-\path(2.01409,0.6)(2.01409,0)
-\path(2.00864,0.6)(2.00864,0)
-\path(2.00318,0.6)(2.00318,0)
-\path(1.99773,0.6)(1.99773,0)
-\path(1.99227,0.6)(1.99227,0)
-\path(1.98682,0.6)(1.98682,0)
-\path(1.98136,0.6)(1.98136,0)
-\path(1.97591,0.6)(1.97591,0)
-\path(1.97045,0.6)(1.97045,0)
-\path(1.965,0.6)(1.965,0)
-\path(1.95955,0.6)(1.95955,0)
-\path(1.95409,0.6)(1.95409,0)
-\path(1.94864,0.6)(1.94864,0)
-\path(1.94318,0.6)(1.94318,0)
-\path(1.93773,0.6)(1.93773,0)
-\path(1.93227,0.6)(1.93227,0)
-\path(1.92682,0.6)(1.92682,0)
-\path(1.92136,0.6)(1.92136,0)
-\path(1.91591,0.6)(1.91591,0)
-\path(1.91045,0.6)(1.91045,0)
-\path(1.905,0.6)(1.905,0)
-\path(1.89955,0.6)(1.89955,0)
-\path(1.89409,0.6)(1.89409,0)
-\path(1.88864,0.6)(1.88864,0)
-\path(1.88318,0.6)(1.88318,0)
-\path(1.87773,0.6)(1.87773,0)
-\path(1.87227,0.6)(1.87227,0)
-\path(1.86682,0.6)(1.86682,0)
-\path(1.86136,0.6)(1.86136,0)
-\path(1.85591,0.6)(1.85591,0)
-\path(1.85045,0.6)(1.85045,0)
-\path(1.845,0.6)(1.845,0)
-\path(1.83955,0.6)(1.83955,0)
-\path(1.83409,0.6)(1.83409,0)
-\path(1.82864,0.6)(1.82864,0)
-\path(1.82318,0.6)(1.82318,0)
-\path(1.81773,0.6)(1.81773,0)
-\path(1.81227,0.6)(1.81227,0)
-\path(1.80682,0.6)(1.80682,0)
-\path(1.80136,0.6)(1.80136,0)
-\path(1.79591,0.6)(1.79591,0)
-\path(1.79045,0.6)(1.79045,0)
-\path(1.785,0.6)(1.785,0)
-\path(1.77955,0.6)(1.77955,0)
-\path(1.77409,0.6)(1.77409,0)
-\path(1.76864,0.6)(1.76864,0)
-\path(1.76318,0.6)(1.76318,0)
-\path(1.75773,0.6)(1.75773,0)
-\path(1.75227,0.6)(1.75227,0)
-\path(1.74682,0.6)(1.74682,0)
-\path(1.74136,0.6)(1.74136,0)
-\path(1.73591,0.6)(1.73591,0)
-\path(1.73045,0.6)(1.73045,0)
-\color{rgb_000000}%
-\path(1.725,0)(2.025,0)(2.025,0.6)(1.725,0.6)(1.725,0)
-%%
-\color{rgb_ffffff}%
-\path(1.4941,0.45)(1.5,0.434819)
-\path(1.48819,0.45)(1.5,0.419637)
-\path(1.48229,0.45)(1.5,0.404456)
-\path(1.47639,0.45)(1.5,0.389275)
-\path(1.47049,0.45)(1.5,0.374093)
-\path(1.46458,0.45)(1.5,0.358912)
-\path(1.45868,0.45)(1.5,0.343731)
-\path(1.45278,0.45)(1.5,0.32855)
-\path(1.44688,0.45)(1.5,0.313368)
-\path(1.44097,0.45)(1.5,0.298187)
-\path(1.43507,0.45)(1.5,0.283006)
-\path(1.42917,0.45)(1.5,0.267824)
-\path(1.42327,0.45)(1.5,0.252643)
-\path(1.41736,0.45)(1.5,0.237462)
-\path(1.41146,0.45)(1.5,0.22228)
-\path(1.40556,0.45)(1.5,0.207099)
-\path(1.39966,0.45)(1.5,0.191918)
-\path(1.39375,0.45)(1.5,0.176737)
-\path(1.38785,0.45)(1.5,0.161555)
-\path(1.38195,0.45)(1.49859,0.15)
-\path(1.37605,0.45)(1.49269,0.15)
-\path(1.37014,0.45)(1.48679,0.15)
-\path(1.36424,0.45)(1.48088,0.15)
-\path(1.35834,0.45)(1.47498,0.15)
-\path(1.35244,0.45)(1.46908,0.15)
-\path(1.34653,0.45)(1.46318,0.15)
-\path(1.34063,0.45)(1.45727,0.15)
-\path(1.33473,0.45)(1.45137,0.15)
-\path(1.32883,0.45)(1.44547,0.15)
-\path(1.32292,0.45)(1.43957,0.15)
-\path(1.31702,0.45)(1.43366,0.15)
-\path(1.31112,0.45)(1.42776,0.15)
-\path(1.30522,0.45)(1.42186,0.15)
-\path(1.29931,0.45)(1.41596,0.15)
-\path(1.29341,0.45)(1.41005,0.15)
-\path(1.28751,0.45)(1.40415,0.15)
-\path(1.28161,0.45)(1.39825,0.15)
-\path(1.2757,0.45)(1.39235,0.15)
-\path(1.2698,0.45)(1.38644,0.15)
-\path(1.2639,0.45)(1.38054,0.15)
-\path(1.258,0.45)(1.37464,0.15)
-\path(1.25209,0.45)(1.36874,0.15)
-\path(1.24619,0.45)(1.36283,0.15)
-\path(1.24029,0.45)(1.35693,0.15)
-\path(1.23439,0.45)(1.35103,0.15)
-\path(1.22848,0.45)(1.34513,0.15)
-\path(1.22258,0.45)(1.33922,0.15)
-\path(1.21668,0.45)(1.33332,0.15)
-\path(1.21078,0.45)(1.32742,0.15)
-\path(1.20487,0.45)(1.32152,0.15)
-\path(1.19897,0.45)(1.31561,0.15)
-\path(1.19307,0.45)(1.30971,0.15)
-\path(1.18717,0.45)(1.30381,0.15)
-\path(1.18126,0.45)(1.29791,0.15)
-\path(1.17536,0.45)(1.292,0.15)
-\path(1.16946,0.45)(1.2861,0.15)
-\path(1.16356,0.45)(1.2802,0.15)
-\path(1.15765,0.45)(1.2743,0.15)
-\path(1.15175,0.45)(1.26839,0.15)
-\path(1.14585,0.45)(1.26249,0.15)
-\path(1.13995,0.45)(1.25659,0.15)
-\path(1.13404,0.45)(1.25069,0.15)
-\path(1.12814,0.45)(1.24478,0.15)
-\path(1.12224,0.45)(1.23888,0.15)
-\path(1.11634,0.45)(1.23298,0.15)
-\path(1.11043,0.45)(1.22708,0.15)
-\path(1.10453,0.45)(1.22117,0.15)
-\path(1.09863,0.45)(1.21527,0.15)
-\path(1.09273,0.45)(1.20937,0.15)
-\path(1.08682,0.45)(1.20347,0.15)
-\path(1.08092,0.45)(1.19756,0.15)
-\path(1.07502,0.45)(1.19166,0.15)
-\path(1.06912,0.45)(1.18576,0.15)
-\path(1.06321,0.45)(1.17986,0.15)
-\path(1.05731,0.45)(1.17395,0.15)
-\path(1.05141,0.45)(1.16805,0.15)
-\path(1.05,0.438445)(1.16215,0.15)
-\path(1.05,0.423263)(1.15625,0.15)
-\path(1.05,0.408082)(1.15034,0.15)
-\path(1.05,0.392901)(1.14444,0.15)
-\path(1.05,0.37772)(1.13854,0.15)
-\path(1.05,0.362538)(1.13264,0.15)
-\path(1.05,0.347357)(1.12673,0.15)
-\path(1.05,0.332176)(1.12083,0.15)
-\path(1.05,0.316994)(1.11493,0.15)
-\path(1.05,0.301813)(1.10903,0.15)
-\path(1.05,0.286632)(1.10312,0.15)
-\path(1.05,0.27145)(1.09722,0.15)
-\path(1.05,0.256269)(1.09132,0.15)
-\path(1.05,0.241088)(1.08542,0.15)
-\path(1.05,0.225907)(1.07951,0.15)
-\path(1.05,0.210725)(1.07361,0.15)
-\path(1.05,0.195544)(1.06771,0.15)
-\path(1.05,0.180363)(1.06181,0.15)
-\path(1.05,0.165181)(1.0559,0.15)
-\path(1.05,0.444063)(1.06527,0.45)
-\path(1.05,0.438126)(1.08054,0.45)
-\path(1.05,0.432189)(1.09581,0.45)
-\path(1.05,0.426252)(1.11108,0.45)
-\path(1.05,0.420315)(1.12635,0.45)
-\path(1.05,0.414378)(1.14162,0.45)
-\path(1.05,0.408441)(1.15689,0.45)
-\path(1.05,0.402504)(1.17216,0.45)
-\path(1.05,0.396567)(1.18743,0.45)
-\path(1.05,0.39063)(1.2027,0.45)
-\path(1.05,0.384693)(1.21797,0.45)
-\path(1.05,0.378756)(1.23324,0.45)
-\path(1.05,0.372819)(1.24851,0.45)
-\path(1.05,0.366882)(1.26378,0.45)
-\path(1.05,0.360945)(1.27905,0.45)
-\path(1.05,0.355008)(1.29432,0.45)
-\path(1.05,0.349071)(1.30959,0.45)
-\path(1.05,0.343134)(1.32486,0.45)
-\path(1.05,0.337197)(1.34013,0.45)
-\path(1.05,0.33126)(1.3554,0.45)
-\path(1.05,0.325323)(1.37067,0.45)
-\path(1.05,0.319386)(1.38594,0.45)
-\path(1.05,0.313449)(1.40121,0.45)
-\path(1.05,0.307512)(1.41648,0.45)
-\path(1.05,0.301575)(1.43175,0.45)
-\path(1.05,0.295638)(1.44702,0.45)
-\path(1.05,0.289701)(1.46229,0.45)
-\path(1.05,0.283764)(1.47756,0.45)
-\path(1.05,0.277827)(1.49283,0.45)
-\path(1.05,0.27189)(1.5,0.44685)
-\path(1.05,0.265953)(1.5,0.440913)
-\path(1.05,0.260016)(1.5,0.434976)
-\path(1.05,0.254079)(1.5,0.429039)
-\path(1.05,0.248142)(1.5,0.423102)
-\path(1.05,0.242205)(1.5,0.417165)
-\path(1.05,0.236268)(1.5,0.411228)
-\path(1.05,0.230331)(1.5,0.405291)
-\path(1.05,0.224394)(1.5,0.399354)
-\path(1.05,0.218457)(1.5,0.393417)
-\path(1.05,0.21252)(1.5,0.38748)
-\path(1.05,0.206583)(1.5,0.381543)
-\path(1.05,0.200646)(1.5,0.375606)
-\path(1.05,0.194709)(1.5,0.369669)
-\path(1.05,0.188772)(1.5,0.363732)
-\path(1.05,0.182835)(1.5,0.357795)
-\path(1.05,0.176898)(1.5,0.351858)
-\path(1.05,0.170961)(1.5,0.345921)
-\path(1.05,0.165024)(1.5,0.339984)
-\path(1.05,0.159087)(1.5,0.334047)
-\path(1.05,0.15315)(1.5,0.32811)
-\path(1.05717,0.15)(1.5,0.322173)
-\path(1.07244,0.15)(1.5,0.316236)
-\path(1.08771,0.15)(1.5,0.310299)
-\path(1.10298,0.15)(1.5,0.304362)
-\path(1.11825,0.15)(1.5,0.298425)
-\path(1.13352,0.15)(1.5,0.292488)
-\path(1.14879,0.15)(1.5,0.286551)
-\path(1.16406,0.15)(1.5,0.280614)
-\path(1.17933,0.15)(1.5,0.274677)
-\path(1.1946,0.15)(1.5,0.26874)
-\path(1.20987,0.15)(1.5,0.262803)
-\path(1.22514,0.15)(1.5,0.256866)
-\path(1.24041,0.15)(1.5,0.250929)
-\path(1.25568,0.15)(1.5,0.244992)
-\path(1.27095,0.15)(1.5,0.239055)
-\path(1.28622,0.15)(1.5,0.233118)
-\path(1.30149,0.15)(1.5,0.227181)
-\path(1.31676,0.15)(1.5,0.221244)
-\path(1.33203,0.15)(1.5,0.215307)
-\path(1.3473,0.15)(1.5,0.20937)
-\path(1.36257,0.15)(1.5,0.203433)
-\path(1.37784,0.15)(1.5,0.197496)
-\path(1.39311,0.15)(1.5,0.191559)
-\path(1.40838,0.15)(1.5,0.185622)
-\path(1.42365,0.15)(1.5,0.179685)
-\path(1.43892,0.15)(1.5,0.173748)
-\path(1.45419,0.15)(1.5,0.167811)
-\path(1.46946,0.15)(1.5,0.161874)
-\path(1.48473,0.15)(1.5,0.155937)
-\color{rgb_000000}%
-\path(1.05,0.15)(1.5,0.15)(1.5,0.45)(1.05,0.45)(1.05,0.15)
-%%
-\allinethickness{0.8pt}%
-\path(1.05,0.15)(1.05,0.45)
-%%
-\path(1.275,0.15)(1.275,0.45)
-%%
-\path(1.5,0.15)(1.5,0.45)
-%%
-\path(1.05,0.15)(1.5,0.15)
-%%
-\path(1.05,0.3)(1.5,0.3)
-%%
-\path(1.05,0.45)(1.5,0.45)
-%%
-\path(0,0)(3.75,0)
-%%
-\end{picture}
diff --git a/graphics/epix/doc/objects.xp b/graphics/epix/doc/objects.xp
deleted file mode 100644
index d0828f0b94..0000000000
--- a/graphics/epix/doc/objects.xp
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(0,0), P(5,2), "3.75 x 1.5in");
-
- begin();
-
- // roof
- triangle(P(0.9, 1), P(3.1, 1), P(2, 1.5)); // vertices
-
- // sun
- circle(P(4,1.5), 0.25); // center and radius
-
- // house
- rect(P(1,0), P(3,1)); // opposite corners
- // grid(P(1,0), P(3,1), 1, 10); // corners, numbers of subdivisions
-
- // door
- fill(Black(0.1));
- rect(P(2.3,0), P(2.7,0.8)); // corners
-
- fill(White());
- // window
- rect(P(1.4,0.2), P(2, 0.6));
- bold();
- grid(P(1.4,0.2), P(2, 0.6), 2, 2);
-
- line(P(xmin(),0), P(xmax(),0));
- end();
-}
diff --git a/graphics/epix/doc/pathstyle.eepic b/graphics/epix/doc/pathstyle.eepic
deleted file mode 100644
index 531523bf45..0000000000
--- a/graphics/epix/doc/pathstyle.eepic
+++ /dev/null
@@ -1,225 +0,0 @@
-%% Generated from pathstyle.xp on Tue Jul 17 15:01:22 EDT 2007 by
-%% ePiX-1.1.8
-%%
-%% Cartesian bounding box: [0,4] x [0,4]
-%% Actual size: 4 x 1in
-%% Figure offset: left by 0in, down by 0in
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}
-\setlength{\unitlength}{1in}
-\begin{picture}(4,1)(-0,-0)
-\path(0,1)(0.0394737,1)
-\path(0.118421,1)(0.157895,1)
-\path(0.157895,1)(0.197368,1)
-\path(0.276316,1)(0.315789,1)
-\path(0.315789,1)(0.355263,1)
-\path(0.434211,1)(0.473684,1)
-\path(0.473684,1)(0.513158,1)
-\path(0.592105,1)(0.631579,1)
-\path(0.631579,1)(0.671053,1)
-\path(0.75,1)(0.789474,1)
-\path(0.789474,1)(0.828947,1)
-\path(0.907895,1)(0.947368,1)
-\path(0.947368,1)(0.986842,1)
-\path(1.06579,1)(1.10526,1)
-\path(1.10526,1)(1.14474,1)
-\path(1.22368,1)(1.26316,1)
-\path(1.26316,1)(1.30263,1)
-\path(1.38158,1)(1.42105,1)
-\path(1.42105,1)(1.46053,1)
-\path(1.53947,1)(1.57895,1)
-\path(1.57895,1)(1.61842,1)
-\path(1.69737,1)(1.73684,1)
-\path(1.73684,1)(1.77632,1)
-\path(1.85526,1)(1.89474,1)
-\path(1.89474,1)(1.93421,1)
-\path(2.01316,1)(2.05263,1)
-\path(2.05263,1)(2.09211,1)
-\path(2.17105,1)(2.21053,1)
-\path(2.21053,1)(2.25,1)
-\path(2.32895,1)(2.36842,1)
-\path(2.36842,1)(2.40789,1)
-\path(2.48684,1)(2.52632,1)
-\path(2.52632,1)(2.56579,1)
-\path(2.64474,1)(2.68421,1)
-\path(2.68421,1)(2.72368,1)
-\path(2.80263,1)(2.84211,1)
-\path(2.84211,1)(2.88158,1)
-\path(2.96053,1)(3,1)
-\put(3.05535,1){\makebox(0,0)[l]{\code{line\_style("-\ \ -")}}}
-\path(0,0.75)(0.0263158,0.75)
-\path(0.131579,0.75)(0.157895,0.75)
-\path(0.157895,0.75)(0.184211,0.75)
-\path(0.289474,0.75)(0.315789,0.75)
-\path(0.315789,0.75)(0.342105,0.75)
-\path(0.447368,0.75)(0.473684,0.75)
-\path(0.473684,0.75)(0.5,0.75)
-\path(0.605263,0.75)(0.631579,0.75)
-\path(0.631579,0.75)(0.657895,0.75)
-\path(0.763158,0.75)(0.789474,0.75)
-\path(0.789474,0.75)(0.815789,0.75)
-\path(0.921053,0.75)(0.947368,0.75)
-\path(0.947368,0.75)(0.973684,0.75)
-\path(1.07895,0.75)(1.10526,0.75)
-\path(1.10526,0.75)(1.13158,0.75)
-\path(1.23684,0.75)(1.26316,0.75)
-\path(1.26316,0.75)(1.28947,0.75)
-\path(1.39474,0.75)(1.42105,0.75)
-\path(1.42105,0.75)(1.44737,0.75)
-\path(1.55263,0.75)(1.57895,0.75)
-\path(1.57895,0.75)(1.60526,0.75)
-\path(1.71053,0.75)(1.73684,0.75)
-\path(1.73684,0.75)(1.76316,0.75)
-\path(1.86842,0.75)(1.89474,0.75)
-\path(1.89474,0.75)(1.92105,0.75)
-\path(2.02632,0.75)(2.05263,0.75)
-\path(2.05263,0.75)(2.07895,0.75)
-\path(2.18421,0.75)(2.21053,0.75)
-\path(2.21053,0.75)(2.23684,0.75)
-\path(2.34211,0.75)(2.36842,0.75)
-\path(2.36842,0.75)(2.39474,0.75)
-\path(2.5,0.75)(2.52632,0.75)
-\path(2.52632,0.75)(2.55263,0.75)
-\path(2.65789,0.75)(2.68421,0.75)
-\path(2.68421,0.75)(2.71053,0.75)
-\path(2.81579,0.75)(2.84211,0.75)
-\path(2.84211,0.75)(2.86842,0.75)
-\path(2.97368,0.75)(3,0.75)
-\put(3.05535,0.75){\makebox(0,0)[l]{\code{line\_style("-\ \ \ \ -")}}}
-\put(0.0789474,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(0.236842,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(0.394737,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(0.552632,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(0.710526,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(0.868421,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(1.02632,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(1.18421,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(1.34211,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(1.5,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(1.65789,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(1.81579,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(1.97368,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(2.13158,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(2.28947,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(2.44737,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(2.60526,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(2.76316,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(2.92105,0.5){\makebox(0,0){\circle{0.0055348}}}
-\put(3.05535,0.5){\makebox(0,0)[l]{\code{line\_style(" .\ ")}}}
-\path(0,0.25)(0.0315789,0.25)
-\put(0.0789474,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(0.126316,0.25)(0.157895,0.25)
-\path(0.157895,0.25)(0.189474,0.25)
-\put(0.236842,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(0.284211,0.25)(0.315789,0.25)
-\path(0.315789,0.25)(0.347368,0.25)
-\put(0.394737,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(0.442105,0.25)(0.473684,0.25)
-\path(0.473684,0.25)(0.505263,0.25)
-\put(0.552632,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(0.6,0.25)(0.631579,0.25)
-\path(0.631579,0.25)(0.663158,0.25)
-\put(0.710526,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(0.757895,0.25)(0.789474,0.25)
-\path(0.789474,0.25)(0.821053,0.25)
-\put(0.868421,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(0.915789,0.25)(0.947368,0.25)
-\path(0.947368,0.25)(0.978947,0.25)
-\put(1.02632,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(1.07368,0.25)(1.10526,0.25)
-\path(1.10526,0.25)(1.13684,0.25)
-\put(1.18421,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(1.23158,0.25)(1.26316,0.25)
-\path(1.26316,0.25)(1.29474,0.25)
-\put(1.34211,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(1.38947,0.25)(1.42105,0.25)
-\path(1.42105,0.25)(1.45263,0.25)
-\put(1.5,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(1.54737,0.25)(1.57895,0.25)
-\path(1.57895,0.25)(1.61053,0.25)
-\put(1.65789,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(1.70526,0.25)(1.73684,0.25)
-\path(1.73684,0.25)(1.76842,0.25)
-\put(1.81579,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(1.86316,0.25)(1.89474,0.25)
-\path(1.89474,0.25)(1.92632,0.25)
-\put(1.97368,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(2.02105,0.25)(2.05263,0.25)
-\path(2.05263,0.25)(2.08421,0.25)
-\put(2.13158,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(2.17895,0.25)(2.21053,0.25)
-\path(2.21053,0.25)(2.24211,0.25)
-\put(2.28947,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(2.33684,0.25)(2.36842,0.25)
-\path(2.36842,0.25)(2.4,0.25)
-\put(2.44737,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(2.49474,0.25)(2.52632,0.25)
-\path(2.52632,0.25)(2.55789,0.25)
-\put(2.60526,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(2.65263,0.25)(2.68421,0.25)
-\path(2.68421,0.25)(2.71579,0.25)
-\put(2.76316,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(2.81053,0.25)(2.84211,0.25)
-\path(2.84211,0.25)(2.87368,0.25)
-\put(2.92105,0.25){\makebox(0,0){\circle{0.0055348}}}
-\path(2.96842,0.25)(3,0.25)
-\put(3.05535,0.25){\makebox(0,0)[l]{\code{line\_style("-\ .\ -")}}}
-\put(0.0157895,0){\makebox(0,0){\circle{0.0055348}}}
-\path(0.0631579,0)(0.0947368,0)
-\put(0.142105,0){\makebox(0,0){\circle{0.0055348}}}
-\put(0.173684,0){\makebox(0,0){\circle{0.0055348}}}
-\path(0.221053,0)(0.252632,0)
-\put(0.3,0){\makebox(0,0){\circle{0.0055348}}}
-\put(0.331579,0){\makebox(0,0){\circle{0.0055348}}}
-\path(0.378947,0)(0.410526,0)
-\put(0.457895,0){\makebox(0,0){\circle{0.0055348}}}
-\put(0.489474,0){\makebox(0,0){\circle{0.0055348}}}
-\path(0.536842,0)(0.568421,0)
-\put(0.615789,0){\makebox(0,0){\circle{0.0055348}}}
-\put(0.647368,0){\makebox(0,0){\circle{0.0055348}}}
-\path(0.694737,0)(0.726316,0)
-\put(0.773684,0){\makebox(0,0){\circle{0.0055348}}}
-\put(0.805263,0){\makebox(0,0){\circle{0.0055348}}}
-\path(0.852632,0)(0.884211,0)
-\put(0.931579,0){\makebox(0,0){\circle{0.0055348}}}
-\put(0.963158,0){\makebox(0,0){\circle{0.0055348}}}
-\path(1.01053,0)(1.04211,0)
-\put(1.08947,0){\makebox(0,0){\circle{0.0055348}}}
-\put(1.12105,0){\makebox(0,0){\circle{0.0055348}}}
-\path(1.16842,0)(1.2,0)
-\put(1.24737,0){\makebox(0,0){\circle{0.0055348}}}
-\put(1.27895,0){\makebox(0,0){\circle{0.0055348}}}
-\path(1.32632,0)(1.35789,0)
-\put(1.40526,0){\makebox(0,0){\circle{0.0055348}}}
-\put(1.43684,0){\makebox(0,0){\circle{0.0055348}}}
-\path(1.48421,0)(1.51579,0)
-\put(1.56316,0){\makebox(0,0){\circle{0.0055348}}}
-\put(1.59474,0){\makebox(0,0){\circle{0.0055348}}}
-\path(1.64211,0)(1.67368,0)
-\put(1.72105,0){\makebox(0,0){\circle{0.0055348}}}
-\put(1.75263,0){\makebox(0,0){\circle{0.0055348}}}
-\path(1.8,0)(1.83158,0)
-\put(1.87895,0){\makebox(0,0){\circle{0.0055348}}}
-\put(1.91053,0){\makebox(0,0){\circle{0.0055348}}}
-\path(1.95789,0)(1.98947,0)
-\put(2.03684,0){\makebox(0,0){\circle{0.0055348}}}
-\put(2.06842,0){\makebox(0,0){\circle{0.0055348}}}
-\path(2.11579,0)(2.14737,0)
-\put(2.19474,0){\makebox(0,0){\circle{0.0055348}}}
-\put(2.22632,0){\makebox(0,0){\circle{0.0055348}}}
-\path(2.27368,0)(2.30526,0)
-\put(2.35263,0){\makebox(0,0){\circle{0.0055348}}}
-\put(2.38421,0){\makebox(0,0){\circle{0.0055348}}}
-\path(2.43158,0)(2.46316,0)
-\put(2.51053,0){\makebox(0,0){\circle{0.0055348}}}
-\put(2.54211,0){\makebox(0,0){\circle{0.0055348}}}
-\path(2.58947,0)(2.62105,0)
-\put(2.66842,0){\makebox(0,0){\circle{0.0055348}}}
-\put(2.7,0){\makebox(0,0){\circle{0.0055348}}}
-\path(2.74737,0)(2.77895,0)
-\put(2.82632,0){\makebox(0,0){\circle{0.0055348}}}
-\put(2.85789,0){\makebox(0,0){\circle{0.0055348}}}
-\path(2.90526,0)(2.93684,0)
-\put(2.98421,0){\makebox(0,0){\circle{0.0055348}}}
-\put(3.05535,0){\makebox(0,0)[l]{\code{line\_style(".\ - .")}}}
-\end{picture}
diff --git a/graphics/epix/doc/pathstyle.xp b/graphics/epix/doc/pathstyle.xp
deleted file mode 100644
index 47fe65e5e1..0000000000
--- a/graphics/epix/doc/pathstyle.xp
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-void dash_sample(double ht, std::string pattern)
-{
- line_style(pattern);
- line(P(0,ht), P(3,ht));
- label(P(3, ht), P(4,0), "\\code{line\\_style(\""+pattern+"\")}", r);
-}
-
-int main() {
- picture(P(0,0), P(4,4), "4x1in");
-
- begin();
-
- dash_sample(4, "-\\ \\ -");
- dash_sample(3, "-\\ \\ \\ \\ -");
- dash_sample(2, " .\\ ");
- dash_sample(1, "-\\ .\\ -");
- dash_sample(0, ".\\ - .");
-
- end();
-}
diff --git a/graphics/epix/doc/plot_a.eepic b/graphics/epix/doc/plot_a.eepic
deleted file mode 100644
index bf0e6e787a..0000000000
--- a/graphics/epix/doc/plot_a.eepic
+++ /dev/null
@@ -1,95 +0,0 @@
-%% Generated from plot_a.xp on Tue Jul 3 00:20:34 EDT 2007 by
-%% ePiX-1.0.25
-%%
-%% Cartesian bounding box: [-1,1] x [-1,1]
-%% Actual size: 1.5in x 1.5in
-%% Figure offset: right by 0in, up by 0in
-%%
-\setlength{\unitlength}{1in}
-\begin{picture}(1.5,1.5)(-0,-0)
-%% ---
-\path(0.75,0.75)(0.709403,0.666178)(0.666551,0.577699)(0.62125,0.484165)
- (0.573284,0.385128)(0.522412,0.280089)(0.46836,0.168485)
-\path(0.75,0.75)(0.749023,0.665974)(0.74798,0.585752)(0.746855,0.509046)
- (0.745629,0.435587)(0.744277,0.365124)(0.742767,0.297412)
-\path(0.75,0.75)(0.788831,0.67297)(0.830368,0.605884)(0.875481,0.548895)
- (0.925286,0.502471)(0.981254,0.467495)(1.04539,0.445422)
-\path(0.75,0.75)(0.824541,0.685618)(0.903621,0.632501)(0.988754,0.590989)
- (1.08184,0.561798)(1.18533,0.546138)(1.30251,0.545884)
-\path(0.75,0.75)(0.852385,0.702504)(0.959101,0.662234)(1.07131,0.62933)
- (1.19037,0.604066)(1.31791,0.586882)(1.45594,0.578419)
-\path(0.75,0.75)(0.869635,0.722554)(0.991406,0.694618)(1.11537,0.666178)
- (1.24159,0.637221)(1.37013,0.607733)(1.50104,0.577699)
-\path(0.75,0.75)(0.874862,0.74491)(0.998815,0.731016)(1.12092,0.708519)
- (1.24029,0.677746)(1.35609,0.639142)(1.46759,0.593248)
-\path(0.75,0.75)(0.867939,0.768582)(0.982511,0.77261)(1.09249,0.76265)
- (1.19682,0.739556)(1.29466,0.704421)(1.38541,0.658506)
-\path(0.75,0.75)(0.849863,0.792084)(0.945428,0.818543)(1.03584,0.830052)
- (1.12046,0.827563)(1.1988,0.812243)(1.27061,0.785404)
-\path(0.75,0.75)(0.822527,0.813279)(0.891435,0.864939)(0.956495,0.905455)
- (1.01755,0.935412)(1.07452,0.955475)(1.12739,0.966366)
-\path(0.75,0.75)(0.788515,0.829523)(0.825104,0.905071)(0.859908,0.976933)
- (0.893055,1.04537)(0.924661,1.11063)(0.954829,1.17292)
-\path(0.75,0.75)(0.750924,0.838139)(0.751807,0.93073)(0.752656,1.02814)
- (0.753481,1.13079)(0.754288,1.23912)(0.755083,1.35363)
-\path(0.75,0.75)(0.713174,0.837085)(0.677771,0.934566)(0.643292,1.043)
- (0.609295,1.16316)(0.575368,1.29605)(0.541119,1.44293)
-\path(0.75,0.75)(0.678756,0.825621)(0.609753,0.912727)(0.542063,1.01182)
- (0.47484,1.12367)(0.40728,1.24929)(0.33859,1.39004)
-\path(0.75,0.75)(0.650938,0.804706)(0.554306,0.866713)(0.459296,0.936218)
- (0.365158,1.01352)(0.27118,1.09902)(0.176669,1.19323)
-\path(0.75,0.75)(0.632446,0.776969)(0.516918,0.803473)(0.403366,0.829523)
- (0.291738,0.855133)(0.181986,0.880311)(0.0740632,0.905071)
-\path(0.75,0.75)(0.625191,0.746217)(0.501394,0.73363)(0.379543,0.712441)
- (0.260522,0.68298)(0.145146,0.645689)(0.0341447,0.601107)
-\path(0.75,0.75)(0.630074,0.71664)(0.509637,0.668642)(0.390202,0.606516)
- (0.273258,0.531127)(0.160206,0.443655)(0.0523099,0.345536)
-\path(0.75,0.75)(0.646869,0.69196)(0.541651,0.618018)(0.435639,0.528643)
- (0.330189,0.424716)(0.22666,0.307508)(0.126363,0.178624)
-\path(0.75,0.75)(0.674167,0.674761)(0.59542,0.587383)(0.514234,0.48787)
- (0.431158,0.376427)(0.346809,0.253475)(0.261856,0.119648)
-\path(0.75,0.75)(0.709403,0.666178)(0.666551,0.577699)(0.62125,0.484165)
- (0.573284,0.385128)(0.522412,0.280089)(0.46836,0.168485)
-\path(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)
-\path(0.709403,0.666178)(0.749023,0.665974)(0.788831,0.67297)
- (0.824541,0.685618)(0.852385,0.702504)(0.869635,0.722554)
- (0.874862,0.74491)(0.867939,0.768582)(0.849863,0.792084)
- (0.822527,0.813279)(0.788515,0.829523)(0.750924,0.838139)
- (0.713174,0.837085)(0.678756,0.825621)(0.650938,0.804706)
- (0.632446,0.776969)(0.625191,0.746217)(0.630074,0.71664)
- (0.646869,0.69196)(0.674167,0.674761)(0.709403,0.666178)
-\path(0.666551,0.577699)(0.74798,0.585752)(0.830368,0.605884)
- (0.903621,0.632501)(0.959101,0.662234)(0.991406,0.694618)
- (0.998815,0.731016)(0.982511,0.77261)(0.945428,0.818543)
- (0.891435,0.864939)(0.825104,0.905071)(0.751807,0.93073)
- (0.677771,0.934566)(0.609753,0.912727)(0.554306,0.866713)
- (0.516918,0.803473)(0.501394,0.73363)(0.509637,0.668642)
- (0.541651,0.618018)(0.59542,0.587383)(0.666551,0.577699)
-\path(0.62125,0.484165)(0.746855,0.509046)(0.875481,0.548895)
- (0.988754,0.590989)(1.07131,0.62933)(1.11537,0.666178)(1.12092,0.708519)
- (1.09249,0.76265)(1.03584,0.830052)(0.956495,0.905455)(0.859908,0.976933)
- (0.752656,1.02814)(0.643292,1.043)(0.542063,1.01182)(0.459296,0.936218)
- (0.403366,0.829523)(0.379543,0.712441)(0.390202,0.606516)
- (0.435639,0.528643)(0.514234,0.48787)(0.62125,0.484165)
-\path(0.573284,0.385128)(0.745629,0.435587)(0.925286,0.502471)
- (1.08184,0.561798)(1.19037,0.604066)(1.24159,0.637221)(1.24029,0.677746)
- (1.19682,0.739556)(1.12046,0.827563)(1.01755,0.935412)(0.893055,1.04537)
- (0.753481,1.13079)(0.609295,1.16316)(0.47484,1.12367)(0.365158,1.01352)
- (0.291738,0.855133)(0.260522,0.68298)(0.273258,0.531127)
- (0.330189,0.424716)(0.431158,0.376427)(0.573284,0.385128)
-\path(0.522412,0.280089)(0.744277,0.365124)(0.981254,0.467495)
- (1.18533,0.546138)(1.31791,0.586882)(1.37013,0.607733)(1.35609,0.639142)
- (1.29466,0.704421)(1.1988,0.812243)(1.07452,0.955475)(0.924661,1.11063)
- (0.754288,1.23912)(0.575368,1.29605)(0.40728,1.24929)(0.27118,1.09902)
- (0.181986,0.880311)(0.145146,0.645689)(0.160206,0.443655)
- (0.22666,0.307508)(0.346809,0.253475)(0.522412,0.280089)
-\path(0.46836,0.168485)(0.742767,0.297412)(1.04539,0.445422)
- (1.30251,0.545884)(1.45594,0.578419)(1.50104,0.577699)(1.46759,0.593248)
- (1.38541,0.658506)(1.27061,0.785404)(1.12739,0.966366)(0.954829,1.17292)
- (0.755083,1.35363)(0.541119,1.44293)(0.33859,1.39004)(0.176669,1.19323)
- (0.0740632,0.905071)(0.0341447,0.601107)(0.0523099,0.345536)
- (0.126363,0.178624)(0.261856,0.119648)(0.46836,0.168485)
-\end{picture}
diff --git a/graphics/epix/doc/plot_a.xp b/graphics/epix/doc/plot_a.xp
deleted file mode 100644
index 4304d501d3..0000000000
--- a/graphics/epix/doc/plot_a.xp
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-P f(double u, double v)
-{
- double x=u*Cos(v), y=u*Sin(v);
- // return P(x, y, 0.25*x*(x*x-3*y*y));
- return P(x, y, x*y);
-}
-
-domain R(P(0,0), P(1,1), mesh(6, 20), mesh(6, 20));
-
-int main()
-{
- bounding_box(P(-1,-1),P(1,1));
- unitlength("1in");
- picture(1.5,1.5);
-
- begin();
- revolutions();
-
- camera.at(P(3, 1, 3));
-
- plot(f, R);
-
- end();
-}
diff --git a/graphics/epix/doc/plot_b.eepic b/graphics/epix/doc/plot_b.eepic
deleted file mode 100644
index cf847bd346..0000000000
--- a/graphics/epix/doc/plot_b.eepic
+++ /dev/null
@@ -1,225 +0,0 @@
-%% Generated from plot_b.xp on Tue Jul 3 00:20:46 EDT 2007 by
-%% ePiX-1.0.25
-%%
-%% Cartesian bounding box: [-1,1] x [-1,1]
-%% Actual size: 1.5in x 1.5in
-%% Figure offset: right by 0in, up by 0in
-%%
-\setlength{\unitlength}{1in}
-\begin{picture}(1.5,1.5)(-0,-0)
-%% ---
-\path(0.75,0.75)(0.729972,0.708648)(0.709403,0.666178)(0.688271,0.622545)
- (0.666551,0.577699)(0.64422,0.531591)(0.62125,0.484165)
- (0.597615,0.435364)(0.573284,0.385128)(0.548228,0.333393)
- (0.522412,0.280089)(0.495802,0.225146)(0.46836,0.168485)
-\path(0.75,0.75)(0.749519,0.707493)(0.749023,0.665974)(0.74851,0.625406)
- (0.74798,0.585752)(0.747429,0.546976)(0.746855,0.509046)
- (0.746256,0.471927)(0.745629,0.435587)(0.744971,0.399997)
- (0.744277,0.365124)(0.743544,0.330939)(0.742767,0.297412)
-\path(0.75,0.75)(0.769125,0.71024)(0.788831,0.67297)(0.809212,0.638181)
- (0.830368,0.605884)(0.852415,0.576107)(0.875481,0.548895)
- (0.899715,0.524319)(0.925286,0.502471)(0.952389,0.483477)
- (0.981254,0.467495)(1.01215,0.454726)(1.04539,0.445422)
-\path(0.75,0.75)(0.786786,0.716409)(0.824541,0.685618)(0.863426,0.657638)
- (0.903621,0.632501)(0.945323,0.610259)(0.988754,0.590989)
- (1.03416,0.574791)(1.08184,0.561798)(1.1321,0.552178)(1.18533,0.546138)
- (1.24196,0.543935)(1.30251,0.545884)
-\path(0.75,0.75)(0.800717,0.725352)(0.852385,0.702504)(0.905133,0.68146)
- (0.959101,0.662234)(1.01444,0.644848)(1.07131,0.62933)(1.12989,0.615719)
- (1.19037,0.604066)(1.25297,0.594429)(1.31791,0.586882)(1.38547,0.581511)
- (1.45594,0.578419)
-\path(0.75,0.75)(0.809554,0.736337)(0.869635,0.722554)(0.93025,0.708648)
- (0.991406,0.694618)(1.05311,0.680462)(1.11537,0.666178)(1.1782,0.651765)
- (1.24159,0.637221)(1.30556,0.622545)(1.37013,0.607733)(1.43528,0.592786)
- (1.50104,0.577699)
-\path(0.75,0.75)(0.812485,0.748563)(0.874862,0.74491)(0.937011,0.739054)
- (0.998815,0.731016)(1.06016,0.720825)(1.12092,0.708519)(1.181,0.694142)
- (1.24029,0.677746)(1.29868,0.659392)(1.35609,0.639142)(1.41242,0.617069)
- (1.46759,0.593248)
-\path(0.75,0.75)(0.809307,0.761132)(0.867939,0.768582)(0.925727,0.772387)
- (0.982511,0.77261)(1.03814,0.769331)(1.09249,0.76265)(1.14541,0.752681)
- (1.19682,0.739556)(1.24659,0.723418)(1.29466,0.704421)(1.34095,0.682727)
- (1.38541,0.658506)
-\path(0.75,0.75)(0.800408,0.773024)(0.849863,0.792084)(0.89824,0.807232)
- (0.945428,0.818543)(0.991325,0.826113)(1.03584,0.830052)
- (1.07891,0.830488)(1.12046,0.827563)(1.16044,0.821428)(1.1988,0.812243)
- (1.23553,0.800178)(1.27061,0.785404)
-\path(0.75,0.75)(0.786698,0.783117)(0.822527,0.813279)(0.857449,0.840534)
- (0.891435,0.864939)(0.924458,0.886556)(0.956495,0.905455)
- (0.987531,0.921714)(1.01755,0.935412)(1.04655,0.946636)(1.07452,0.955475)
- (1.10147,0.962021)(1.12739,0.966366)
-\path(0.75,0.75)(0.769508,0.790278)(0.788515,0.829523)(0.807041,0.867775)
- (0.825104,0.905071)(0.842721,0.941445)(0.859908,0.976933)
- (0.876682,1.01156)(0.893055,1.04537)(0.909044,1.07838)(0.924661,1.11063)
- (0.939918,1.14213)(0.954829,1.17292)
-\path(0.75,0.75)(0.750468,0.793535)(0.750924,0.838139)(0.75137,0.883856)
- (0.751807,0.93073)(0.752235,0.978809)(0.752656,1.02814)(0.753071,1.07878)
- (0.753481,1.13079)(0.753886,1.18421)(0.754288,1.23912)(0.754687,1.29556)
- (0.755083,1.35363)
-\path(0.75,0.75)(0.731375,0.79227)(0.713174,0.837085)(0.695327,0.884497)
- (0.677771,0.934566)(0.660445,0.98737)(0.643292,1.043)(0.62626,1.10155)
- (0.609295,1.16316)(0.592347,1.22794)(0.575368,1.29605)(0.558309,1.36765)
- (0.541119,1.44293)
-\path(0.75,0.75)(0.714035,0.786396)(0.678756,0.825621)(0.644034,0.867713)
- (0.609753,0.912727)(0.575798,0.960735)(0.542063,1.01182)
- (0.508444,1.06609)(0.47484,1.12367)(0.441152,1.18468)(0.40728,1.24929)
- (0.373126,1.31768)(0.33859,1.39004)
-\path(0.75,0.75)(0.700112,0.776448)(0.650938,0.804706)(0.60237,0.834787)
- (0.554306,0.866713)(0.506646,0.900512)(0.459296,0.936218)
- (0.412163,0.973871)(0.365158,1.01352)(0.318192,1.05521)(0.27118,1.09902)
- (0.224034,1.145)(0.176669,1.19323)
-\path(0.75,0.75)(0.690966,0.763543)(0.632446,0.776969)(0.574432,0.790278)
- (0.516918,0.803473)(0.459898,0.816554)(0.403366,0.829523)
- (0.347314,0.842382)(0.291738,0.855133)(0.23663,0.867775)
- (0.181986,0.880311)(0.127799,0.892743)(0.0740632,0.905071)
-\path(0.75,0.75)(0.687529,0.749216)(0.625191,0.746217)(0.563106,0.741014)
- (0.501394,0.73363)(0.440168,0.724093)(0.379543,0.712441)
- (0.319626,0.69872)(0.260522,0.68298)(0.202331,0.665282)
- (0.145146,0.645689)(0.089057,0.624272)(0.0341447,0.601107)
-\path(0.75,0.75)(0.690195,0.735167)(0.630074,0.71664)(0.569825,0.694447)
- (0.509637,0.668642)(0.4497,0.639299)(0.390202,0.606516)
- (0.331328,0.570413)(0.273258,0.531127)(0.216163,0.488817)
- (0.160206,0.443655)(0.105542,0.395829)(0.0523099,0.345536)
-\path(0.75,0.75)(0.698772,0.72298)(0.646869,0.69196)(0.594442,0.656957)
- (0.541651,0.618018)(0.488661,0.575214)(0.435639,0.528643)
- (0.382758,0.478428)(0.330189,0.424716)(0.2781,0.367679)(0.22666,0.307508)
- (0.176029,0.244413)(0.126363,0.178624)
-\path(0.75,0.75)(0.712474,0.713891)(0.674167,0.674761)(0.63513,0.632594)
- (0.59542,0.587383)(0.555099,0.539136)(0.514234,0.48787)
- (0.472895,0.433619)(0.431158,0.376427)(0.389102,0.316355)
- (0.346809,0.253475)(0.304364,0.187873)(0.261856,0.119648)
-\path(0.75,0.75)(0.729972,0.708648)(0.709403,0.666178)(0.688271,0.622545)
- (0.666551,0.577699)(0.64422,0.531591)(0.62125,0.484165)
- (0.597615,0.435364)(0.573284,0.385128)(0.548228,0.333393)
- (0.522412,0.280089)(0.495802,0.225146)(0.46836,0.168485)
-\path(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)
- (0.75,0.75)
-\path(0.75,0.75)
-\path(0.709403,0.666178)(0.722321,0.665223)(0.73558,0.665171)
- (0.749023,0.665974)(0.762487,0.667581)(0.77581,0.669932)
- (0.788831,0.67297)(0.801393,0.676634)(0.813343,0.680868)
- (0.824541,0.685618)(0.834856,0.690836)(0.844172,0.696477)
- (0.852385,0.702504)(0.859411,0.708879)(0.865178,0.715573)
- (0.869635,0.722554)(0.872745,0.729792)(0.874488,0.737256)
- (0.874862,0.74491)(0.873876,0.752715)(0.871555,0.760624)
- (0.867939,0.768582)(0.863075,0.776527)(0.857026,0.784387)
- (0.849863,0.792084)(0.841664,0.799529)(0.83252,0.806627)
- (0.822527,0.813279)(0.811787,0.819381)(0.800411,0.82483)
- (0.788515,0.829523)(0.776218,0.833364)(0.763645,0.836262)
- (0.750924,0.838139)(0.738185,0.838931)(0.725558,0.83859)
- (0.713174,0.837085)(0.701162,0.83441)(0.689648,0.830577)
- (0.678756,0.825621)(0.668601,0.819601)(0.659294,0.812596)
- (0.650938,0.804706)(0.643624,0.796048)(0.637436,0.786754)
- (0.632446,0.776969)(0.628712,0.766846)(0.626283,0.756542)
- (0.625191,0.746217)(0.625457,0.736026)(0.627088,0.72612)
- (0.630074,0.71664)(0.634394,0.707713)(0.64001,0.699454)(0.646869,0.69196)
- (0.654905,0.685309)(0.664036,0.679562)(0.674167,0.674761)
- (0.685188,0.670929)(0.696978,0.668072)(0.709403,0.666178)
-\path(0.709403,0.666178)
-\path(0.666551,0.577699)(0.692974,0.578664)(0.720234,0.581422)
- (0.74798,0.585752)(0.775839,0.591423)(0.80343,0.598206)
- (0.830368,0.605884)(0.856279,0.614263)(0.880806,0.623178)
- (0.903621,0.632501)(0.924433,0.642145)(0.942994,0.65206)
- (0.959101,0.662234)(0.972601,0.672687)(0.98339,0.683461)
- (0.991406,0.694618)(0.996632,0.706222)(0.999085,0.718337)
- (0.998815,0.731016)(0.995896,0.74429)(0.990424,0.758164)
- (0.982511,0.77261)(0.972282,0.787565)(0.959873,0.802924)
- (0.945428,0.818543)(0.929098,0.834239)(0.911044,0.849789)
- (0.891435,0.864939)(0.870449,0.879406)(0.848272,0.892888)
- (0.825104,0.905071)(0.801155,0.915638)(0.776645,0.924286)
- (0.751807,0.93073)(0.726882,0.934719)(0.702119,0.936048)
- (0.677771,0.934566)(0.654093,0.930185)(0.631338,0.922887)
- (0.609753,0.912727)(0.589573,0.899834)(0.571022,0.884408)
- (0.554306,0.866713)(0.539611,0.847073)(0.527101,0.825857)
- (0.516918,0.803473)(0.509181,0.780348)(0.503983,0.756921)
- (0.501394,0.73363)(0.501461,0.710895)(0.504209,0.689112)
- (0.509637,0.668642)(0.517723,0.649801)(0.528419,0.632855)
- (0.541651,0.618018)(0.557321,0.605441)(0.575297,0.595218)
- (0.59542,0.587383)(0.617495,0.581912)(0.641293,0.578726)
- (0.666551,0.577699)
-\path(0.666551,0.577699)
-\path(0.62125,0.484165)(0.661714,0.489898)(0.703779,0.498369)
- (0.746855,0.509046)(0.790294,0.521379)(0.833406,0.534828)
- (0.875481,0.548895)(0.915825,0.563151)(0.953779,0.577259)
- (0.988754,0.590989)(1.02025,0.604228)(1.04786,0.616974)(1.07131,0.62933)
- (1.09041,0.641478)(1.10509,0.653667)(1.11537,0.666178)(1.12133,0.679307)
- (1.12312,0.693337)(1.12092,0.708519)(1.11493,0.725052)(1.10538,0.743075)
- (1.09249,0.76265)(1.07646,0.783756)(1.05751,0.806289)(1.03584,0.830052)
- (1.01166,0.854761)(0.985141,0.880045)(0.956495,0.905455)
- (0.925925,0.930468)(0.893649,0.954502)(0.859908,0.976933)
- (0.824965,0.997111)(0.789108,1.01439)(0.752656,1.02814)(0.715955,1.0378)
- (0.679371,1.04288)(0.643292,1.043)(0.608116,1.0379)(0.574243,1.02749)
- (0.542063,1.01182)(0.511952,0.991116)(0.484258,0.965743)
- (0.459296,0.936218)(0.437343,0.903175)(0.418635,0.867345)
- (0.403366,0.829523)(0.391688,0.790542)(0.383719,0.751241)
- (0.379543,0.712441)(0.379214,0.674923)(0.382764,0.639401)
- (0.390202,0.606516)(0.401519,0.576814)(0.416683,0.550743)
- (0.435639,0.528643)(0.458304,0.510741)(0.484558,0.497152)
- (0.514234,0.48787)(0.547111,0.48278)(0.582903,0.481654)(0.62125,0.484165)
-\path(0.62125,0.484165)
-\path(0.573284,0.385128)(0.628255,0.398429)(0.685992,0.415579)
- (0.745629,0.435587)(0.806153,0.457413)(0.866435,0.480025)
- (0.925286,0.502471)(0.981521,0.523945)(1.03403,0.543843)
- (1.08184,0.561798)(1.12417,0.577699)(1.16045,0.591675)(1.19037,0.604066)
- (1.21379,0.615372)(1.23079,0.626204)(1.24159,0.637221)(1.24651,0.649085)
- (1.24594,0.662413)(1.24029,0.677746)(1.22996,0.695523)(1.21536,0.716063)
- (1.19682,0.739556)(1.17465,0.766054)(1.14912,0.795468)(1.12046,0.827563)
- (1.08886,0.861958)(1.0545,0.89813)(1.01755,0.935412)(0.978193,0.973008)
- (0.936617,1.01)(0.893055,1.04537)(0.847784,1.07804)(0.80113,1.10688)
- (0.753481,1.13079)(0.705284,1.14872)(0.65704,1.15976)(0.609295,1.16316)
- (0.562623,1.15839)(0.517613,1.14522)(0.47484,1.12367)(0.434852,1.09408)
- (0.398146,1.05707)(0.365158,1.01352)(0.336248,0.964504)
- (0.311704,0.911264)(0.291738,0.855133)(0.276497,0.797481)
- (0.266074,0.739664)(0.260522,0.68298)(0.259863,0.628631)
- (0.264107,0.577699)(0.273258,0.531127)(0.287318,0.489709)
- (0.306294,0.454081)(0.330189,0.424716)(0.358995,0.401924)
- (0.392679,0.38584)(0.431158,0.376427)(0.474277,0.373467)
- (0.521781,0.37656)(0.573284,0.385128)
-\path(0.573284,0.385128)
-\path(0.522412,0.280089)(0.592255,0.303678)(0.666599,0.332557)
- (0.744277,0.365124)(0.823805,0.399632)(0.903434,0.434308)
- (0.981254,0.467495)(1.05533,0.497794)(1.12387,0.524191)(1.18533,0.546138)
- (1.23857,0.563575)(1.28285,0.576899)(1.31791,0.586882)(1.34384,0.594557)
- (1.36104,0.601102)(1.37013,0.607733)(1.37182,0.615613)(1.3669,0.625786)
- (1.35609,0.639142)(1.34008,0.656388)(1.31944,0.67804)(1.29466,0.704421)
- (1.26612,0.735658)(1.2341,0.771686)(1.1988,0.812243)(1.16038,0.856871)
- (1.11892,0.904905)(1.07452,0.955475)(1.02726,1.0075)(0.977251,1.05971)
- (0.924661,1.11063)(0.86973,1.15865)(0.812793,1.20206)(0.754288,1.23912)
- (0.694765,1.26811)(0.634877,1.28752)(0.575368,1.29605)(0.517045,1.29277)
- (0.460742,1.27718)(0.40728,1.24929)(0.35743,1.20959)(0.311875,1.15903)
- (0.27118,1.09902)(0.235783,1.03125)(0.205991,0.95767)(0.181986,0.880311)
- (0.163849,0.801232)(0.151584,0.722411)(0.145146,0.645689)
- (0.144472,0.572724)(0.149503,0.504968)(0.160206,0.443655)
- (0.17659,0.389804)(0.198709,0.344221)(0.22666,0.307508)
- (0.260573,0.280059)(0.300586,0.26206)(0.346809,0.253475)
- (0.39928,0.254024)(0.457909,0.263169)(0.522412,0.280089)
-\path(0.522412,0.280089)
-\path(0.46836,0.168485)(0.553304,0.204953)(0.645257,0.248719)
- (0.742767,0.297412)(0.843765,0.348317)(0.945636,0.398569)
- (1.04539,0.445422)(1.13995,0.486548)(1.22644,0.5203)(1.30251,0.545884)
- (1.36653,0.563399)(1.41769,0.573743)(1.45594,0.578419)(1.48186,0.579303)
- (1.49647,0.578408)(1.50104,0.577699)(1.49691,0.578964)(1.48538,0.583732)
- (1.46759,0.593248)(1.44451,0.60847)(1.41692,0.63008)(1.38541,0.658506)
- (1.35037,0.693935)(1.31206,0.736325)(1.27061,0.785404)(1.22604,0.840659)
- (1.17832,0.901326)(1.12739,0.966366)(1.07317,1.03445)(1.01563,1.10395)
- (0.954829,1.17292)(0.890909,1.23916)(0.824171,1.30025)(0.755083,1.35363)
- (0.684297,1.39674)(0.612645,1.42719)(0.541119,1.44293)(0.470828,1.44243)
- (0.402935,1.42483)(0.33859,1.39004)(0.278856,1.33875)(0.224644,1.27245)
- (0.176669,1.19323)(0.135426,1.10367)(0.101196,1.00663)
- (0.0740632,0.905071)(0.053964,0.801877)(0.0407306,0.699748)
- (0.0341447,0.601107)(0.0339864,0.508057)(0.0400764,0.422378)
- (0.0523099,0.345536)(0.0706802,0.278715)(0.0952918,0.222844)
- (0.126363,0.178624)(0.164213,0.146543)(0.209236,0.126873)
- (0.261856,0.119648)(0.322456,0.124628)(0.391288,0.141232)
- (0.46836,0.168485)
-\path(0.46836,0.168485)
-\end{picture}
diff --git a/graphics/epix/doc/plot_b.xp b/graphics/epix/doc/plot_b.xp
deleted file mode 100644
index f7560071e9..0000000000
--- a/graphics/epix/doc/plot_b.xp
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-P f(double u, double v)
-{
- double x=u*Cos(v), y=u*Sin(v);
- // return P(x, y, 0.25*x*(x*x-3*y*y));
- return P(x, y, x*y);
-}
-
-domain R(P(0,0), P(1,1), mesh(6, 20), mesh(12,60));
-
-int main()
-{
- bounding_box(P(-1,-1),P(1,1));
- unitlength("1in");
- picture(1.5,1.5);
-
- begin();
- revolutions();
-
- camera.at(P(3, 1, 3));
-
- plot(f, R);
-
- end();
-}
diff --git a/graphics/epix/doc/plotting.eepic b/graphics/epix/doc/plotting.eepic
deleted file mode 100644
index ca0911610b..0000000000
--- a/graphics/epix/doc/plotting.eepic
+++ /dev/null
@@ -1,82 +0,0 @@
-%% Generated from plotting.xp on Thu Jun 28 15:36:18 EDT 2007 by
-%% ePiX-1.1.6
-%%
-%% Cartesian bounding box: [-2,2] x [-1,1]
-%% Actual size: 5 x 1in
-%% Figure offset: left by 0in, down by 0in
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}
-\xdefinecolor{rgb_ff0000}{rgb}{1,0,0}
-\setlength{\unitlength}{1in}
-\begin{picture}(5,1)(-0,-0)
-\path(0,0.5)(5,0.5)
-%%
-\put(0,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(0.3125,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(0.625,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(0.9375,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(1.25,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(1.5625,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(1.875,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(2.1875,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(2.5,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(2.8125,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(3.125,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(3.4375,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(3.75,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(4.0625,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(4.375,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(4.6875,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\put(5,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}}
-\path(2.5,0)(2.5,1)
-%%
-\put(2.5,0){\makebox(0,0){$\rule{4pt}{0.5pt}$}}
-\put(2.5,0.25){\makebox(0,0){$\rule{4pt}{0.5pt}$}}
-\put(2.5,0.5){\makebox(0,0){$\rule{4pt}{0.5pt}$}}
-\put(2.5,0.75){\makebox(0,0){$\rule{4pt}{0.5pt}$}}
-\put(2.5,1){\makebox(0,0){$\rule{4pt}{0.5pt}$}}
-\put(0,0.444652){\makebox(0,0)[t]{$-2$}}
-\put(1.25,0.444652){\makebox(0,0)[t]{$-1$}}
-\put(2.5,0.444652){\makebox(0,0)[t]{$\phantom{-}0$}}
-\put(3.75,0.444652){\makebox(0,0)[t]{$\phantom{-}1$}}
-\put(5,0.444652){\makebox(0,0)[t]{$\phantom{-}2$}}
-\color{rgb_ff0000}%
-\path(0,0.5)(0.0416667,0.527125)
- (0.0833333,0.559633)(0.125,0.601537)(0.166667,0.654364)
- (0.208333,0.716506)(0.25,0.783173)(0.291667,0.846957)
- (0.333333,0.898935)(0.375,0.930119)(0.416667,0.933013)
- (0.458333,0.902995)(0.5,0.839302)(0.541667,0.745419)
- (0.583333,0.628809)(0.625,0.5)(0.666667,0.371191)
- (0.708333,0.254581)(0.75,0.160698)(0.791667,0.0970055)
- (0.833333,0.0669873)(0.875,0.0698806)(0.916667,0.101065)
- (0.958333,0.153043)(1,0.216827)(1.04167,0.283494)(1.08333,0.345636)
- (1.125,0.398463)(1.16667,0.440367)(1.20833,0.472875)(1.25,0.5)
- (1.29167,0.527125)(1.33333,0.559633)(1.375,0.601537)
- (1.41667,0.654364)(1.45833,0.716506)(1.5,0.783173)
- (1.54167,0.846957)(1.58333,0.898935)(1.625,0.930119)
- (1.66667,0.933013)(1.70833,0.902995)(1.75,0.839302)
- (1.79167,0.745419)(1.83333,0.628809)(1.875,0.5)(1.91667,0.371191)
- (1.95833,0.254581)(2,0.160698)(2.04167,0.0970055)
- (2.08333,0.0669873)(2.125,0.0698806)(2.16667,0.101065)
- (2.20833,0.153043)(2.25,0.216827)(2.29167,0.283494)
- (2.33333,0.345636)(2.375,0.398463)(2.41667,0.440367)
- (2.45833,0.472875)(2.5,0.5)(2.54167,0.527125)(2.58333,0.559633)
- (2.625,0.601537)(2.66667,0.654364)(2.70833,0.716506)(2.75,0.783173)
- (2.79167,0.846957)(2.83333,0.898935)(2.875,0.930119)
- (2.91667,0.933013)(2.95833,0.902995)(3,0.839302)(3.04167,0.745419)
- (3.08333,0.628809)(3.125,0.5)(3.16667,0.371191)(3.20833,0.254581)
- (3.25,0.160698)(3.29167,0.0970055)(3.33333,0.0669873)
- (3.375,0.0698806)(3.41667,0.101065)(3.45833,0.153043)(3.5,0.216827)
- (3.54167,0.283494)(3.58333,0.345636)(3.625,0.398463)
- (3.66667,0.440367)(3.70833,0.472875)(3.75,0.5)(3.79167,0.527125)
- (3.83333,0.559633)(3.875,0.601537)(3.91667,0.654364)
- (3.95833,0.716506)(4,0.783173)(4.04167,0.846957)(4.08333,0.898935)
- (4.125,0.930119)(4.16667,0.933013)(4.20833,0.902995)(4.25,0.839302)
- (4.29167,0.745419)(4.33333,0.628809)(4.375,0.5)(4.41667,0.371191)
- (4.45833,0.254581)(4.5,0.160698)(4.54167,0.0970055)
- (4.58333,0.0669873)(4.625,0.0698806)(4.66667,0.101065)
- (4.70833,0.153043)(4.75,0.216827)(4.79167,0.283494)
- (4.83333,0.345636)(4.875,0.398463)(4.91667,0.440367)
- (4.95833,0.472875)(5,0.5)
-%%
-\end{picture}
diff --git a/graphics/epix/doc/plotting.xp b/graphics/epix/doc/plotting.xp
deleted file mode 100644
index ad310f7b02..0000000000
--- a/graphics/epix/doc/plotting.xp
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double f(double x)
-{
- return 0.75*Sin(x) - 0.25*Sin(2*x);
-}
-
-int main()
-{
- picture(P(-2,-1),P(2,1), "5x1in");
-
- begin();
-
- h_axis(16);
- v_axis(4);
-
- h_axis_labels(4, P(0,-4), b); // shift labels down 4pt, align below
-
- revolutions(); // set angle units
- red();
- plot(f, xmin(), xmax(), 120); // use 120 intervals
-
- end();
-}
diff --git a/graphics/epix/doc/plotting2.eepic b/graphics/epix/doc/plotting2.eepic
deleted file mode 100644
index 5f56a743ec..0000000000
--- a/graphics/epix/doc/plotting2.eepic
+++ /dev/null
@@ -1,1766 +0,0 @@
-%% Generated from plotting2.xp on Tue Sep 25 00:02:47 EDT 2007 by
-%% ePiX-1.2.0
-%%
-%% Cartesian bounding box: [-1,1] x [-1,1]
-%% Actual size: 2 x 1in
-%% Figure offset: left by 0in, down by 0in
-%%
-%% usepackages pstricks
-%%
-\newcmykcolor{cmy_0000ff}{0 0 1 0}%
-\newcmykcolor{cmy_0101ff}{0 0 0.996078 0.00392157}%
-\newcmykcolor{cmy_0202ff}{0 0 0.992157 0.00784314}%
-\newcmykcolor{cmy_0303ff}{0 0 0.988235 0.0117647}%
-\newcmykcolor{cmy_0505ff}{0 0 0.980392 0.0196078}%
-\newcmykcolor{cmy_0606ff}{0 0 0.976471 0.0235294}%
-\newcmykcolor{cmy_0808ff}{0 0 0.968627 0.0313725}%
-\newcmykcolor{cmy_0909ff}{0 0 0.964706 0.0352941}%
-\newcmykcolor{cmy_0a0aff}{0 0 0.960784 0.0392157}%
-\newcmykcolor{cmy_0b0bff}{0 0 0.956863 0.0431373}%
-\newcmykcolor{cmy_0c0cff}{0 0 0.952941 0.0470588}%
-\newcmykcolor{cmy_0d0dff}{0 0 0.94902 0.0509804}%
-\newcmykcolor{cmy_0e0eff}{0 0 0.945098 0.054902}%
-\newcmykcolor{cmy_0f0fff}{0 0 0.941176 0.0588235}%
-\newcmykcolor{cmy_1111ff}{0 0 0.933333 0.0666667}%
-\newcmykcolor{cmy_1313ff}{0 0 0.92549 0.0745098}%
-\newcmykcolor{cmy_1515ff}{0 0 0.917647 0.0823529}%
-\newcmykcolor{cmy_1616ff}{0 0 0.913725 0.0862745}%
-\newcmykcolor{cmy_1818ff}{0 0 0.905882 0.0941176}%
-\newcmykcolor{cmy_1919ff}{0 0 0.901961 0.0980392}%
-\newcmykcolor{cmy_1b1bff}{0 0 0.894118 0.105882}%
-\newcmykcolor{cmy_1c1cff}{0 0 0.890196 0.109804}%
-\newcmykcolor{cmy_2020ff}{0 0 0.87451 0.12549}%
-\newcmykcolor{cmy_2323ff}{0 0 0.862745 0.137255}%
-\newcmykcolor{cmy_2525ff}{0 0 0.854902 0.145098}%
-\newcmykcolor{cmy_2626ff}{0 0 0.85098 0.14902}%
-\newcmykcolor{cmy_2828ff}{0 0 0.843137 0.156863}%
-\newcmykcolor{cmy_2929ff}{0 0 0.839216 0.160784}%
-\newcmykcolor{cmy_2a2aff}{0 0 0.835294 0.164706}%
-\newcmykcolor{cmy_2d2dff}{0 0 0.823529 0.176471}%
-\newcmykcolor{cmy_3030ff}{0 0 0.811765 0.188235}%
-\newcmykcolor{cmy_3131ff}{0 0 0.807843 0.192157}%
-\newcmykcolor{cmy_3232ff}{0 0 0.803922 0.196078}%
-\newcmykcolor{cmy_3434ff}{0 0 0.796078 0.203922}%
-\newcmykcolor{cmy_3535ff}{0 0 0.792157 0.207843}%
-\newcmykcolor{cmy_3636ff}{0 0 0.788235 0.211765}%
-\newcmykcolor{cmy_3737ff}{0 0 0.784314 0.215686}%
-\newcmykcolor{cmy_3838ff}{0 0 0.780392 0.219608}%
-\newcmykcolor{cmy_3939ff}{0 0 0.776471 0.223529}%
-\newcmykcolor{cmy_3a3aff}{0 0 0.772549 0.227451}%
-\newcmykcolor{cmy_3b3bff}{0 0 0.768627 0.231373}%
-\newcmykcolor{cmy_3c3cff}{0 0 0.764706 0.235294}%
-\newcmykcolor{cmy_3d3dff}{0 0 0.760784 0.239216}%
-\newcmykcolor{cmy_3e3eff}{0 0 0.756863 0.243137}%
-\newcmykcolor{cmy_3f3fff}{0 0 0.752941 0.247059}%
-\newcmykcolor{cmy_4141ff}{0 0 0.745098 0.254902}%
-\newcmykcolor{cmy_4343ff}{0 0 0.737255 0.262745}%
-\newcmykcolor{cmy_4545ff}{0 0 0.729412 0.270588}%
-\newcmykcolor{cmy_4848ff}{0 0 0.717647 0.282353}%
-\newcmykcolor{cmy_4949ff}{0 0 0.713725 0.286275}%
-\newcmykcolor{cmy_4a4aff}{0 0 0.709804 0.290196}%
-\newcmykcolor{cmy_4b4bff}{0 0 0.705882 0.294118}%
-\newcmykcolor{cmy_4c4cff}{0 0 0.701961 0.298039}%
-\newcmykcolor{cmy_4d4dff}{0 0 0.698039 0.301961}%
-\newcmykcolor{cmy_4e4eff}{0 0 0.694118 0.305882}%
-\newcmykcolor{cmy_4f4fff}{0 0 0.690196 0.309804}%
-\newcmykcolor{cmy_5050ff}{0 0 0.686275 0.313725}%
-\newcmykcolor{cmy_5151ff}{0 0 0.682353 0.317647}%
-\newcmykcolor{cmy_5252ff}{0 0 0.678431 0.321569}%
-\newcmykcolor{cmy_5353ff}{0 0 0.67451 0.32549}%
-\newcmykcolor{cmy_5454ff}{0 0 0.670588 0.329412}%
-\newcmykcolor{cmy_5555ff}{0 0 0.666667 0.333333}%
-\newcmykcolor{cmy_5656ff}{0 0 0.662745 0.337255}%
-\newcmykcolor{cmy_5757ff}{0 0 0.658824 0.341176}%
-\newcmykcolor{cmy_5858ff}{0 0 0.654902 0.345098}%
-\newcmykcolor{cmy_5959ff}{0 0 0.65098 0.34902}%
-\newcmykcolor{cmy_5a5aff}{0 0 0.647059 0.352941}%
-\newcmykcolor{cmy_5b5bff}{0 0 0.643137 0.356863}%
-\newcmykcolor{cmy_5c5cff}{0 0 0.639216 0.360784}%
-\newcmykcolor{cmy_5d5dff}{0 0 0.635294 0.364706}%
-\newcmykcolor{cmy_5e5eff}{0 0 0.631373 0.368627}%
-\newcmykcolor{cmy_5f5fff}{0 0 0.627451 0.372549}%
-\newcmykcolor{cmy_6060ff}{0 0 0.623529 0.376471}%
-\newcmykcolor{cmy_6161ff}{0 0 0.619608 0.380392}%
-\newcmykcolor{cmy_6262ff}{0 0 0.615686 0.384314}%
-\newcmykcolor{cmy_6363ff}{0 0 0.611765 0.388235}%
-\newcmykcolor{cmy_6464ff}{0 0 0.607843 0.392157}%
-\newcmykcolor{cmy_6565ff}{0 0 0.603922 0.396078}%
-\newcmykcolor{cmy_6666ff}{0 0 0.6 0.4}%
-\newcmykcolor{cmy_6767ff}{0 0 0.596078 0.403922}%
-\newcmykcolor{cmy_6868ff}{0 0 0.592157 0.407843}%
-\newcmykcolor{cmy_6969ff}{0 0 0.588235 0.411765}%
-\newcmykcolor{cmy_6a6aff}{0 0 0.584314 0.415686}%
-\newcmykcolor{cmy_6b6bff}{0 0 0.580392 0.419608}%
-\newcmykcolor{cmy_6c6cff}{0 0 0.576471 0.423529}%
-\newcmykcolor{cmy_6d6dff}{0 0 0.572549 0.427451}%
-\newcmykcolor{cmy_6e6eff}{0 0 0.568627 0.431373}%
-\newcmykcolor{cmy_6f6fff}{0 0 0.564706 0.435294}%
-\newcmykcolor{cmy_7070ff}{0 0 0.560784 0.439216}%
-\newcmykcolor{cmy_7171ff}{0 0 0.556863 0.443137}%
-\newcmykcolor{cmy_7272ff}{0 0 0.552941 0.447059}%
-\newcmykcolor{cmy_7373ff}{0 0 0.54902 0.45098}%
-\newcmykcolor{cmy_7474ff}{0 0 0.545098 0.454902}%
-\newcmykcolor{cmy_7575ff}{0 0 0.541176 0.458824}%
-\newcmykcolor{cmy_7676ff}{0 0 0.537255 0.462745}%
-\newcmykcolor{cmy_7777ff}{0 0 0.533333 0.466667}%
-\newcmykcolor{cmy_7878ff}{0 0 0.529412 0.470588}%
-\newcmykcolor{cmy_7979ff}{0 0 0.52549 0.47451}%
-\newcmykcolor{cmy_7a7aff}{0 0 0.521569 0.478431}%
-\newcmykcolor{cmy_7b7bff}{0 0 0.517647 0.482353}%
-\newcmykcolor{cmy_7c7cff}{0 0 0.513725 0.486275}%
-\newcmykcolor{cmy_7d7dff}{0 0 0.509804 0.490196}%
-\newcmykcolor{cmy_7e7eff}{0 0 0.505882 0.494118}%
-\newcmykcolor{cmy_7f7fff}{0 0 0.501961 0.498039}%
-\newrgbcolor{rgb_000000}{0 0 0}%
-\newrgbcolor{rgb_19197f}{0.0980392 0.0980392 0.498039}%
-\newrgbcolor{rgb_191980}{0.0980392 0.0980392 0.501961}%
-\newrgbcolor{rgb_191981}{0.0980392 0.0980392 0.505882}%
-\newrgbcolor{rgb_1a1a82}{0.101961 0.101961 0.509804}%
-\newrgbcolor{rgb_1a1a83}{0.101961 0.101961 0.513725}%
-\newrgbcolor{rgb_1a1a84}{0.101961 0.101961 0.517647}%
-\newrgbcolor{rgb_1a1a85}{0.101961 0.101961 0.521569}%
-\newrgbcolor{rgb_1a1a86}{0.101961 0.101961 0.52549}%
-\newrgbcolor{rgb_1b1b87}{0.105882 0.105882 0.529412}%
-\newrgbcolor{rgb_1b1b88}{0.105882 0.105882 0.533333}%
-\newrgbcolor{rgb_1b1b89}{0.105882 0.105882 0.537255}%
-\newrgbcolor{rgb_1b1b8a}{0.105882 0.105882 0.541176}%
-\newrgbcolor{rgb_1b1b8b}{0.105882 0.105882 0.545098}%
-\newrgbcolor{rgb_1c1c8c}{0.109804 0.109804 0.54902}%
-\newrgbcolor{rgb_1c1c8d}{0.109804 0.109804 0.552941}%
-\newrgbcolor{rgb_1c1c8e}{0.109804 0.109804 0.556863}%
-\newrgbcolor{rgb_1c1c8f}{0.109804 0.109804 0.560784}%
-\newrgbcolor{rgb_1c1c90}{0.109804 0.109804 0.564706}%
-\newrgbcolor{rgb_1d1d91}{0.113725 0.113725 0.568627}%
-\newrgbcolor{rgb_1d1d92}{0.113725 0.113725 0.572549}%
-\newrgbcolor{rgb_1d1d93}{0.113725 0.113725 0.576471}%
-\newrgbcolor{rgb_1d1d94}{0.113725 0.113725 0.580392}%
-\newrgbcolor{rgb_1d1d95}{0.113725 0.113725 0.584314}%
-\newrgbcolor{rgb_1e1e96}{0.117647 0.117647 0.588235}%
-\newrgbcolor{rgb_1e1e97}{0.117647 0.117647 0.592157}%
-\newrgbcolor{rgb_1e1e98}{0.117647 0.117647 0.596078}%
-\newrgbcolor{rgb_1e1e99}{0.117647 0.117647 0.6}%
-\newrgbcolor{rgb_1e1e9a}{0.117647 0.117647 0.603922}%
-\newrgbcolor{rgb_1f1f9b}{0.121569 0.121569 0.607843}%
-\newrgbcolor{rgb_1f1f9c}{0.121569 0.121569 0.611765}%
-\newrgbcolor{rgb_1f1f9d}{0.121569 0.121569 0.615686}%
-\newrgbcolor{rgb_1f1f9e}{0.121569 0.121569 0.619608}%
-\newrgbcolor{rgb_1f1f9f}{0.121569 0.121569 0.623529}%
-\newrgbcolor{rgb_2020a0}{0.12549 0.12549 0.627451}%
-\newrgbcolor{rgb_2020a1}{0.12549 0.12549 0.631373}%
-\newrgbcolor{rgb_2020a2}{0.12549 0.12549 0.635294}%
-\newrgbcolor{rgb_2020a3}{0.12549 0.12549 0.639216}%
-\newrgbcolor{rgb_2020a4}{0.12549 0.12549 0.643137}%
-\newrgbcolor{rgb_2121a5}{0.129412 0.129412 0.647059}%
-\newrgbcolor{rgb_2121a6}{0.129412 0.129412 0.65098}%
-\newrgbcolor{rgb_2121a7}{0.129412 0.129412 0.654902}%
-\newrgbcolor{rgb_2121a8}{0.129412 0.129412 0.658824}%
-\newrgbcolor{rgb_2121a9}{0.129412 0.129412 0.662745}%
-\newrgbcolor{rgb_2222aa}{0.133333 0.133333 0.666667}%
-\newrgbcolor{rgb_2222ab}{0.133333 0.133333 0.670588}%
-\newrgbcolor{rgb_2222ac}{0.133333 0.133333 0.67451}%
-\newrgbcolor{rgb_2222ad}{0.133333 0.133333 0.678431}%
-\newrgbcolor{rgb_2222ae}{0.133333 0.133333 0.682353}%
-\newrgbcolor{rgb_2323af}{0.137255 0.137255 0.686275}%
-\newrgbcolor{rgb_2323b0}{0.137255 0.137255 0.690196}%
-\newrgbcolor{rgb_2323b1}{0.137255 0.137255 0.694118}%
-\newrgbcolor{rgb_2323b2}{0.137255 0.137255 0.698039}%
-\newrgbcolor{rgb_2323b3}{0.137255 0.137255 0.701961}%
-\newrgbcolor{rgb_2424b4}{0.141176 0.141176 0.705882}%
-\newrgbcolor{rgb_2424b5}{0.141176 0.141176 0.709804}%
-\newrgbcolor{rgb_2424b6}{0.141176 0.141176 0.713725}%
-\newrgbcolor{rgb_2525b9}{0.145098 0.145098 0.72549}%
-\newrgbcolor{rgb_2525bb}{0.145098 0.145098 0.733333}%
-\newrgbcolor{rgb_2525bd}{0.145098 0.145098 0.741176}%
-\newrgbcolor{rgb_2626bf}{0.14902 0.14902 0.74902}%
-\newrgbcolor{rgb_2626c0}{0.14902 0.14902 0.752941}%
-\newrgbcolor{rgb_2626c1}{0.14902 0.14902 0.756863}%
-\newrgbcolor{rgb_2626c2}{0.14902 0.14902 0.760784}%
-\newrgbcolor{rgb_2727c3}{0.152941 0.152941 0.764706}%
-\newrgbcolor{rgb_2727c4}{0.152941 0.152941 0.768627}%
-\newrgbcolor{rgb_2727c5}{0.152941 0.152941 0.772549}%
-\newrgbcolor{rgb_2727c6}{0.152941 0.152941 0.776471}%
-\newrgbcolor{rgb_2727c7}{0.152941 0.152941 0.780392}%
-\newrgbcolor{rgb_2828c8}{0.156863 0.156863 0.784314}%
-\newrgbcolor{rgb_2828c9}{0.156863 0.156863 0.788235}%
-\newrgbcolor{rgb_2828ca}{0.156863 0.156863 0.792157}%
-\newrgbcolor{rgb_2828cc}{0.156863 0.156863 0.8}%
-\newrgbcolor{rgb_2929cd}{0.160784 0.160784 0.803922}%
-\newrgbcolor{rgb_2929ce}{0.160784 0.160784 0.807843}%
-\newrgbcolor{rgb_2929d1}{0.160784 0.160784 0.819608}%
-\newrgbcolor{rgb_2a2ad4}{0.164706 0.164706 0.831373}%
-\newrgbcolor{rgb_2a2ad5}{0.164706 0.164706 0.835294}%
-\newrgbcolor{rgb_2a2ad6}{0.164706 0.164706 0.839216}%
-\newrgbcolor{rgb_2b2bd8}{0.168627 0.168627 0.847059}%
-\newrgbcolor{rgb_2b2bd9}{0.168627 0.168627 0.85098}%
-\newrgbcolor{rgb_2b2bdb}{0.168627 0.168627 0.858824}%
-\newrgbcolor{rgb_2c2cde}{0.172549 0.172549 0.870588}%
-\newrgbcolor{rgb_2d2de2}{0.176471 0.176471 0.886275}%
-\newrgbcolor{rgb_2d2de3}{0.176471 0.176471 0.890196}%
-\newrgbcolor{rgb_2d2de5}{0.176471 0.176471 0.898039}%
-\newrgbcolor{rgb_2e2ee6}{0.180392 0.180392 0.901961}%
-\newrgbcolor{rgb_2e2ee8}{0.180392 0.180392 0.909804}%
-\newrgbcolor{rgb_2e2ee9}{0.180392 0.180392 0.913725}%
-\newrgbcolor{rgb_2f2feb}{0.184314 0.184314 0.921569}%
-\newrgbcolor{rgb_2f2fed}{0.184314 0.184314 0.929412}%
-\newrgbcolor{rgb_2f2fef}{0.184314 0.184314 0.937255}%
-\newrgbcolor{rgb_3030f0}{0.188235 0.188235 0.941176}%
-\newrgbcolor{rgb_3030f1}{0.188235 0.188235 0.945098}%
-\newrgbcolor{rgb_3030f2}{0.188235 0.188235 0.94902}%
-\newrgbcolor{rgb_3030f3}{0.188235 0.188235 0.952941}%
-\newrgbcolor{rgb_3030f4}{0.188235 0.188235 0.956863}%
-\newrgbcolor{rgb_3131f5}{0.192157 0.192157 0.960784}%
-\newrgbcolor{rgb_3131f6}{0.192157 0.192157 0.964706}%
-\newrgbcolor{rgb_3131f8}{0.192157 0.192157 0.972549}%
-\newrgbcolor{rgb_3131f9}{0.192157 0.192157 0.976471}%
-\newrgbcolor{rgb_3232fb}{0.196078 0.196078 0.984314}%
-\newrgbcolor{rgb_3232fc}{0.196078 0.196078 0.988235}%
-\newrgbcolor{rgb_3232fd}{0.196078 0.196078 0.992157}%
-\newrgbcolor{rgb_3232fe}{0.196078 0.196078 0.996078}%
-\psset{unit=1in,linewidth=0.4pt}%
-\begin{pspicture}(2,1)(0,0)%
-\psline(1,0.5)(0.460099,0.0671161)
-\psset{fillcolor=rgb_000000}%
-\pspolygon[fillstyle=solid](0.513324,0.109791)(0.500341,0.125984)
- (0.460099,0.0671161)(0.526308,0.093598)(0.513324,0.109791)
-\psline(1,0.5)(2.30211,0.383998)
-\pspolygon[fillstyle=solid](2.19255,0.39376)(2.1907,0.373086)
- (2.30211,0.383998)(2.19439,0.414433)(2.19255,0.39376)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](1.21563,0.452275)(1.23301,0.375451)
- (1.17732,0.388446)(1.12142,0.416397)(1.11204,0.483169)
- (1.164,0.462409)(1.21563,0.452275)
-\psset{fillcolor=cmy_5858ff}%
-\psset{linecolor=rgb_2121a6}%
-\pspolygon[fillstyle=solid](1.31978,0.464555)(1.34701,0.395075)
- (1.28931,0.377672)(1.23301,0.375451)(1.21563,0.452275)
- (1.26742,0.453019)(1.31978,0.464555)
-\psset{fillcolor=cmy_6969ff}%
-\psset{linecolor=rgb_1d1d95}%
-\pspolygon[fillstyle=solid](1.11204,0.483169)(1.12142,0.416397)
- (1.0645,0.458716)(1.0058,0.514406)(1.0053,0.553791)
- (1.05928,0.513957)(1.11204,0.483169)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](1.42762,0.517893)(1.46924,0.473639)
- (1.40679,0.427311)(1.34701,0.395075)(1.31978,0.464555)
- (1.3731,0.486452)(1.42762,0.517893)
-\psset{fillcolor=cmy_7676ff}%
-\psset{linecolor=rgb_1b1b88}%
-\pspolygon[fillstyle=solid](1.0053,0.553791)(1.0058,0.514406)
- (0.944617,0.581935)(0.880444,0.659087)(0.892338,0.65446)
- (0.949725,0.601259)(1.0053,0.553791)
-\psset{fillcolor=cmy_6565ff}%
-\psset{linecolor=rgb_1e1e99}%
-\pspolygon[fillstyle=solid](1.19425,0.509734)(1.21563,0.452275)
- (1.164,0.462409)(1.11204,0.483169)(1.10071,0.531856)
- (1.14768,0.517332)(1.19425,0.509734)
-\psset{fillcolor=cmy_6161ff}%
-\psset{linecolor=rgb_1f1f9d}%
-\pspolygon[fillstyle=solid](1.28699,0.515829)(1.31978,0.464555)
- (1.26742,0.453019)(1.21563,0.452275)(1.19425,0.509734)
- (1.24062,0.509263)(1.28699,0.515829)
-\psset{fillcolor=cmy_6f6fff}%
-\psset{linecolor=rgb_1c1c8f}%
-\pspolygon[fillstyle=solid](1.10071,0.531856)(1.11204,0.483169)
- (1.05928,0.513957)(1.0053,0.553791)(1.00473,0.579391)
- (1.05312,0.552809)(1.10071,0.531856)
-\psset{fillcolor=cmy_6666ff}%
-\psset{linecolor=rgb_1e1e98}%
-\pspolygon[fillstyle=solid](1.38015,0.548201)(1.42762,0.517893)
- (1.3731,0.486452)(1.31978,0.464555)(1.28699,0.515829)
- (1.33349,0.529041)(1.38015,0.548201)
-\psset{fillcolor=cmy_6c6cff}%
-\psset{linecolor=rgb_1d1d92}%
-\pspolygon[fillstyle=solid](1.54036,0.603855)(1.60334,0.602838)
- (1.53472,0.5328)(1.46924,0.473639)(1.42762,0.517893)
- (1.48342,0.557617)(1.54036,0.603855)
-\psset{fillcolor=cmy_7979ff}%
-\psset{linecolor=rgb_1a1a85}%
-\pspolygon[fillstyle=solid](1.00473,0.579391)(1.0053,0.553791)
- (0.949725,0.601259)(0.892338,0.65446)(0.905094,0.644715)
- (0.955399,0.610498)(1.00473,0.579391)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](0.892338,0.65446)(0.880444,0.659087)
- (0.812994,0.742797)(0.742326,0.82905)(0.772133,0.767878)
- (0.833083,0.710977)(0.892338,0.65446)
-\psset{fillcolor=cmy_7070ff}%
-\psset{linecolor=rgb_1c1c8e}%
-\pspolygon[fillstyle=solid](1.1691,0.547312)(1.19425,0.509734)
- (1.14768,0.517332)(1.10071,0.531856)(1.08754,0.562251)
- (1.12854,0.552782)(1.1691,0.547312)
-\psset{fillcolor=cmy_7777ff}%
-\psset{linecolor=rgb_1b1b87}%
-\pspolygon[fillstyle=solid](1.08754,0.562251)(1.10071,0.531856)
- (1.05312,0.552809)(1.00473,0.579391)(1.00408,0.591586)
- (1.04606,0.57537)(1.08754,0.562251)
-\psset{fillcolor=cmy_6d6dff}%
-\psset{linecolor=rgb_1d1d91}%
-\pspolygon[fillstyle=solid](1.24902,0.548712)(1.28699,0.515829)
- (1.24062,0.509263)(1.19425,0.509734)(1.1691,0.547312)
- (1.20925,0.545979)(1.24902,0.548712)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](0.905094,0.644715)(0.892338,0.65446)
- (0.833083,0.710977)(0.772133,0.767878)(0.801956,0.715411)
- (0.853879,0.680337)(0.905094,0.644715)
-\psset{fillcolor=cmy_7171ff}%
-\psset{linecolor=rgb_1c1c8d}%
-\pspolygon[fillstyle=solid](1.47358,0.599945)(1.54036,0.603855)
- (1.48342,0.557617)(1.42762,0.517893)(1.38015,0.548201)
- (1.42692,0.572286)(1.47358,0.599945)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](1.00408,0.591586)(1.00473,0.579391)
- (0.955399,0.610498)(0.905094,0.644715)(0.918709,0.630156)
- (0.961612,0.610155)(1.00408,0.591586)
-\psset{fillcolor=cmy_7171ff}%
-\psset{linecolor=rgb_1c1c8d}%
-\pspolygon[fillstyle=solid](1.32731,0.565028)(1.38015,0.548201)
- (1.33349,0.529041)(1.28699,0.515829)(1.24902,0.548712)
- (1.2884,0.555226)(1.32731,0.565028)
-\psset{fillcolor=cmy_7878ff}%
-\psset{linecolor=rgb_1a1a86}%
-\pspolygon[fillstyle=solid](0.772133,0.767878)(0.742326,0.82905)
- (0.668933,0.912872)(0.593817,0.988506)(0.647182,0.869075)
- (0.709925,0.821791)(0.772133,0.767878)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](0.918709,0.630156)(0.905094,0.644715)
- (0.853879,0.680337)(0.801956,0.715411)(0.832163,0.670073)
- (0.875495,0.650521)(0.918709,0.630156)
-\psset{fillcolor=cmy_7b7bff}%
-\psset{linecolor=rgb_1a1a83}%
-\pspolygon[fillstyle=solid](1.14055,0.565734)(1.1691,0.547312)
- (1.12854,0.552782)(1.08754,0.562251)(1.07271,0.575185)
- (1.10684,0.569509)(1.14055,0.565734)
-\psset{fillcolor=cmy_7979ff}%
-\psset{linecolor=rgb_1a1a85}%
-\pspolygon[fillstyle=solid](1.65578,0.705915)(1.74819,0.763081)
- (1.67477,0.680906)(1.60334,0.602838)(1.54036,0.603855)
- (1.59806,0.654266)(1.65578,0.705915)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](1.07271,0.575185)(1.08754,0.562251)
- (1.04606,0.57537)(1.00408,0.591586)(1.00338,0.591308)
- (1.0382,0.582558)(1.07271,0.575185)
-\psset{fillcolor=cmy_7575ff}%
-\psset{linecolor=rgb_1b1b89}%
-\pspolygon[fillstyle=solid](0.801956,0.715411)(0.772133,0.767878)
- (0.709925,0.821791)(0.647182,0.869075)(0.697531,0.775355)
- (0.749674,0.74781)(0.801956,0.715411)
-\psset{fillcolor=cmy_7a7aff}%
-\psset{linecolor=rgb_1a1a84}%
-\pspolygon[fillstyle=solid](1.2064,0.564093)(1.24902,0.548712)
- (1.20925,0.545979)(1.1691,0.547312)(1.14055,0.565734)
- (1.17375,0.563943)(1.2064,0.564093)
-\psset{fillcolor=cmy_7878ff}%
-\psset{linecolor=rgb_1a1a86}%
-\pspolygon[fillstyle=solid](1.40315,0.59151)(1.47358,0.599945)
- (1.42692,0.572286)(1.38015,0.548201)(1.32731,0.565028)
- (1.36563,0.577419)(1.40315,0.59151)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](1.00338,0.591308)(1.00408,0.591586)
- (0.961612,0.610155)(0.918709,0.630156)(0.933183,0.611153)
- (0.968339,0.601011)(1.00338,0.591308)
-\psset{fillcolor=cmy_6c6cff}%
-\psset{linecolor=rgb_1d1d92}%
-\pspolygon[fillstyle=solid](0.189032,0.289372)(0.105002,0.195832)
- (0.106173,0.133184)(0.107102,0.0871823)(0.187635,0.204779)
- (0.187646,0.241139)(0.189032,0.289372)
-\psset{fillcolor=cmy_7c7cff}%
-\psset{linecolor=rgb_1a1a82}%
-\pspolygon[fillstyle=solid](1.26963,0.569425)(1.32731,0.565028)
- (1.2884,0.555226)(1.24902,0.548712)(1.2064,0.564093)
- (1.23839,0.566016)(1.26963,0.569425)
-\psset{fillcolor=cmy_7171ff}%
-\psset{linecolor=rgb_1c1c8d}%
-\pspolygon[fillstyle=solid](0.832163,0.670073)(0.801956,0.715411)
- (0.749674,0.74781)(0.697531,0.775355)(0.746272,0.701846)
- (0.788976,0.687585)(0.832163,0.670073)
-\psset{fillcolor=cmy_7c7cff}%
-\psset{linecolor=rgb_1a1a82}%
-\pspolygon[fillstyle=solid](1.56495,0.658972)(1.65578,0.705915)
- (1.59806,0.654266)(1.54036,0.603855)(1.47358,0.599945)
- (1.51977,0.629498)(1.56495,0.658972)
-\psset{fillcolor=cmy_4949ff}%
-\psset{linecolor=rgb_2424b5}%
-\pspolygon[fillstyle=solid](0.19769,0.416171)(0.10474,0.365653)
- (0.104222,0.273918)(0.105002,0.195832)(0.189032,0.289372)
- (0.192187,0.348273)(0.19769,0.416171)
-\psset{fillcolor=cmy_7b7bff}%
-\psset{linecolor=rgb_1a1a83}%
-\pspolygon[fillstyle=solid](0.933183,0.611153)(0.918709,0.630156)
- (0.875495,0.650521)(0.832163,0.670073)(0.863092,0.630402)
- (0.898045,0.621157)(0.933183,0.611153)
-\psset{fillcolor=cmy_5656ff}%
-\psset{linecolor=rgb_2121a8}%
-\pspolygon[fillstyle=solid](0.647182,0.869075)(0.593817,0.988506)
- (0.518501,1.04983)(0.444947,1.09101)(0.524261,0.929508)
- (0.584894,0.90608)(0.647182,0.869075)
-\psset{fillcolor=cmy_5353ff}%
-\psset{linecolor=rgb_2222ab}%
-\pspolygon[fillstyle=solid](0.697531,0.775355)(0.647182,0.869075)
- (0.584894,0.90608)(0.524261,0.929508)(0.596275,0.807827)
- (0.646156,0.795963)(0.697531,0.775355)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](0.187635,0.204779)(0.107102,0.0871823)
- (0.107428,0.0586308)(0.107074,0.0480454)(0.191172,0.170524)
- (0.188802,0.181093)(0.187635,0.204779)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](1.32922,0.579024)(1.40315,0.59151)
- (1.36563,0.577419)(1.32731,0.565028)(1.26963,0.569425)
- (1.29996,0.573925)(1.32922,0.579024)
-\psset{fillcolor=cmy_6c6cff}%
-\psset{linecolor=rgb_1d1d92}%
-\pspolygon[fillstyle=solid](0.863092,0.630402)(0.832163,0.670073)
- (0.788976,0.687585)(0.746272,0.701846)(0.794552,0.644134)
- (0.828519,0.638261)(0.863092,0.630402)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](1.109,0.566914)(1.14055,0.565734)
- (1.10684,0.569509)(1.07271,0.575185)(1.05638,0.57247)
- (1.08289,0.569392)(1.109,0.566914)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](1.05638,0.57247)(1.07271,0.575185)
- (1.0382,0.582558)(1.00338,0.591308)(1.00261,0.579992)
- (1.02959,0.576053)(1.05638,0.57247)
-\pspolygon[fillstyle=solid](1.47456,0.620443)(1.56495,0.658972)
- (1.51977,0.629498)(1.47358,0.599945)(1.40315,0.59151)
- (1.43958,0.606246)(1.47456,0.620443)
-\psset{fillcolor=cmy_5050ff}%
-\psset{linecolor=rgb_2222ae}%
-\pspolygon[fillstyle=solid](0.746272,0.701846)(0.697531,0.775355)
- (0.646156,0.795963)(0.596275,0.807827)(0.663929,0.71633)
- (0.704444,0.711739)(0.746272,0.701846)
-\psset{fillcolor=cmy_2323ff}%
-\psset{linecolor=rgb_2b2bdb}%
-\pspolygon[fillstyle=solid](0.218731,0.569601)(0.114562,0.578881)
- (0.107723,0.468479)(0.10474,0.365653)(0.19769,0.416171)
- (0.206264,0.490868)(0.218731,0.569601)
-\psset{fillcolor=cmy_7b7bff}%
-\psset{linecolor=rgb_1a1a83}%
-\pspolygon[fillstyle=solid](1.00261,0.579992)(1.00338,0.591308)
- (0.968339,0.601011)(0.933183,0.611153)(0.948523,0.588133)
- (0.975553,0.584095)(1.00261,0.579992)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](1.1597,0.563866)(1.2064,0.564093)
- (1.17375,0.563943)(1.14055,0.565734)(1.109,0.566914)
- (1.13464,0.565078)(1.1597,0.563866)
-\psset{fillcolor=cmy_7474ff}%
-\psset{linecolor=rgb_1b1b8a}%
-\pspolygon[fillstyle=solid](0.948523,0.588133)(0.933183,0.611153)
- (0.898045,0.621157)(0.863092,0.630402)(0.895059,0.594987)
- (0.921647,0.591852)(0.948523,0.588133)
-\psset{fillcolor=cmy_2828ff}%
-\psset{linecolor=rgb_2a2ad6}%
-\pspolygon[fillstyle=solid](0.524261,0.929508)(0.444947,1.09101)
- (0.375363,1.10732)(0.311925,1.09597)(0.413159,0.926478)
- (0.466591,0.936797)(0.524261,0.929508)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](1.20765,0.562964)(1.26963,0.569425)
- (1.23839,0.566016)(1.2064,0.564093)(1.1597,0.563866)
- (1.18407,0.563204)(1.20765,0.562964)
-\psset{fillcolor=cmy_4f4fff}%
-\psset{linecolor=rgb_2323af}%
-\pspolygon[fillstyle=solid](0.794552,0.644134)(0.746272,0.701846)
- (0.704444,0.711739)(0.663929,0.71633)(0.729448,0.647866)
- (0.761441,0.647482)(0.794552,0.644134)
-\psset{fillcolor=cmy_2828ff}%
-\psset{linecolor=rgb_2a2ad6}%
-\pspolygon[fillstyle=solid](0.596275,0.807827)(0.524261,0.929508)
- (0.466591,0.936797)(0.413159,0.926478)(0.504048,0.800507)
- (0.548656,0.809592)(0.596275,0.807827)
-\psset{fillcolor=cmy_2929ff}%
-\psset{linecolor=rgb_2a2ad5}%
-\pspolygon[fillstyle=solid](0.663929,0.71633)(0.596275,0.807827)
- (0.548656,0.809592)(0.504048,0.800507)(0.58863,0.707203)
- (0.625178,0.714938)(0.663929,0.71633)
-\psset{fillcolor=cmy_3f3fff}%
-\psset{linecolor=rgb_2626bf}%
-\pspolygon[fillstyle=solid](0.298804,0.454436)(0.19769,0.416171)
- (0.192187,0.348273)(0.189032,0.289372)(0.285765,0.364096)
- (0.29087,0.406486)(0.298804,0.454436)
-\psset{fillcolor=cmy_6666ff}%
-\psset{linecolor=rgb_1e1e98}%
-\pspolygon[fillstyle=solid](0.895059,0.594987)(0.863092,0.630402)
- (0.828519,0.638261)(0.794552,0.644134)(0.84333,0.598464)
- (0.868903,0.597273)(0.895059,0.594987)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](1.38364,0.588709)(1.47456,0.620443)
- (1.43958,0.606246)(1.40315,0.59151)(1.32922,0.579024)
- (1.35719,0.584157)(1.38364,0.588709)
-\psset{fillcolor=cmy_6464ff}%
-\psset{linecolor=rgb_1e1e9a}%
-\pspolygon[fillstyle=solid](0.285765,0.364096)(0.189032,0.289372)
- (0.187646,0.241139)(0.187635,0.204779)(0.282956,0.300896)
- (0.283191,0.328573)(0.285765,0.364096)
-\psset{fillcolor=cmy_0909ff}%
-\psset{linecolor=rgb_3131f5}%
-\pspolygon[fillstyle=solid](0.258703,0.72553)(0.145957,0.803098)
- (0.126792,0.692284)(0.114562,0.578881)(0.218731,0.569601)
- (0.235947,0.649066)(0.258703,0.72553)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](1.2519,0.563022)(1.32922,0.579024)
- (1.29996,0.573925)(1.26963,0.569425)(1.20765,0.562964)
- (1.2303,0.562975)(1.2519,0.563022)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](1.76674,0.798575)(1.89443,0.91833)
- (1.82212,0.844276)(1.74819,0.763081)(1.65578,0.705915)
- (1.71247,0.755316)(1.76674,0.798575)
-\psset{fillcolor=cmy_1b1bff}%
-\psset{linecolor=rgb_2d2de3}%
-\pspolygon[fillstyle=solid](0.324666,0.560164)(0.218731,0.569601)
- (0.206264,0.490868)(0.19769,0.416171)(0.298804,0.454436)
- (0.309934,0.506308)(0.324666,0.560164)
-\psset{fillcolor=cmy_2d2dff}%
-\psset{linecolor=rgb_2929d1}%
-\pspolygon[fillstyle=solid](0.729448,0.647866)(0.663929,0.71633)
- (0.625178,0.714938)(0.58863,0.707203)(0.669881,0.638666)
- (0.698841,0.644979)(0.729448,0.647866)
-\psset{fillcolor=cmy_0909ff}%
-\psset{linecolor=rgb_3131f5}%
-\pspolygon[fillstyle=solid](0.413159,0.926478)(0.311925,1.09597)
- (0.256452,1.05661)(0.210141,0.991471)(0.323082,0.85378)
- (0.36506,0.8984)(0.413159,0.926478)
-\psset{fillcolor=cmy_0a0aff}%
-\psset{linecolor=rgb_3030f4}%
-\pspolygon[fillstyle=solid](0.504048,0.800507)(0.413159,0.926478)
- (0.36506,0.8984)(0.323082,0.85378)(0.426348,0.750295)
- (0.463108,0.78052)(0.504048,0.800507)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](1.6493,0.708781)(1.76674,0.798575)
- (1.71247,0.755316)(1.65578,0.705915)(1.56495,0.658972)
- (1.60841,0.686169)(1.6493,0.708781)
-\psset{fillcolor=cmy_5050ff}%
-\psset{linecolor=rgb_2222ae}%
-\pspolygon[fillstyle=solid](0.84333,0.598464)(0.794552,0.644134)
- (0.761441,0.647482)(0.729448,0.647866)(0.794573,0.596748)
- (0.818499,0.598346)(0.84333,0.598464)
-\psset{fillcolor=cmy_0d0dff}%
-\psset{linecolor=rgb_3030f1}%
-\pspolygon[fillstyle=solid](0.58863,0.707203)(0.504048,0.800507)
- (0.463108,0.78052)(0.426348,0.750295)(0.523665,0.673044)
- (0.554683,0.693119)(0.58863,0.707203)
-\psset{fillcolor=cmy_0606ff}%
-\psset{linecolor=rgb_3131f8}%
-\pspolygon[fillstyle=solid](0.366464,0.664928)(0.258703,0.72553)
- (0.235947,0.649066)(0.218731,0.569601)(0.324666,0.560164)
- (0.343397,0.613816)(0.366464,0.664928)
-\psset{fillcolor=cmy_0000ff}%
-\psset{linecolor=rgb_3232fe}%
-\pspolygon[fillstyle=solid](0.323082,0.85378)(0.210141,0.991471)
- (0.173421,0.904998)(0.145957,0.803098)(0.258703,0.72553)
- (0.287629,0.795046)(0.323082,0.85378)
-\psset{fillcolor=cmy_7474ff}%
-\psset{linecolor=rgb_1b1b8a}%
-\pspolygon[fillstyle=solid](1.03875,0.556754)(1.05638,0.57247)
- (1.02959,0.576053)(1.00261,0.579992)(1.00179,0.559495)
- (1.02033,0.558175)(1.03875,0.556754)
-\psset{fillcolor=cmy_7676ff}%
-\psset{linecolor=rgb_1b1b88}%
-\pspolygon[fillstyle=solid](1.07488,0.553783)(1.109,0.566914)
- (1.08289,0.569392)(1.05638,0.57247)(1.03875,0.556754)
- (1.05696,0.555279)(1.07488,0.553783)
-\psset{fillcolor=cmy_7171ff}%
-\psset{linecolor=rgb_1c1c8d}%
-\pspolygon[fillstyle=solid](1.00179,0.559495)(1.00261,0.579992)
- (0.975553,0.584095)(0.948523,0.588133)(0.964748,0.561577)
- (0.983236,0.560652)(1.00179,0.559495)
-\psset{fillcolor=cmy_0000ff}%
-\psset{linecolor=rgb_3232fe}%
-\pspolygon[fillstyle=solid](0.426348,0.750295)(0.323082,0.85378)
- (0.287629,0.795046)(0.258703,0.72553)(0.366464,0.664928)
- (0.394092,0.711151)(0.426348,0.750295)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](1.53831,0.642183)(1.6493,0.708781)
- (1.60841,0.686169)(1.56495,0.658972)(1.47456,0.620443)
- (1.50763,0.632843)(1.53831,0.642183)
-\psset{fillcolor=cmy_7777ff}%
-\psset{linecolor=rgb_1b1b87}%
-\pspolygon[fillstyle=solid](1.10948,0.550772)(1.1597,0.563866)
- (1.13464,0.565078)(1.109,0.566914)(1.07488,0.553783)
- (1.09241,0.552281)(1.10948,0.550772)
-\psset{fillcolor=cmy_6a6aff}%
-\psset{linecolor=rgb_1d1d94}%
-\pspolygon[fillstyle=solid](0.964748,0.561577)(0.948523,0.588133)
- (0.921647,0.591852)(0.895059,0.594987)(0.92836,0.562423)
- (0.946423,0.562194)(0.964748,0.561577)
-\psset{fillcolor=cmy_1515ff}%
-\psset{linecolor=rgb_2e2ee9}%
-\pspolygon[fillstyle=solid](0.669881,0.638666)(0.58863,0.707203)
- (0.554683,0.693119)(0.523665,0.673044)(0.617846,0.615994)
- (0.642811,0.628942)(0.669881,0.638666)
-\psset{fillcolor=cmy_0101ff}%
-\psset{linecolor=rgb_3232fd}%
-\pspolygon[fillstyle=solid](0.523665,0.673044)(0.426348,0.750295)
- (0.394092,0.711151)(0.366464,0.664928)(0.471308,0.617992)
- (0.495823,0.647676)(0.523665,0.673044)
-\psset{fillcolor=cmy_3838ff}%
-\psset{linecolor=rgb_2727c6}%
-\pspolygon[fillstyle=solid](0.794573,0.596748)(0.729448,0.647866)
- (0.698841,0.644979)(0.669881,0.638666)(0.750078,0.58872)
- (0.771713,0.593556)(0.794573,0.596748)
-\psset{fillcolor=cmy_7b7bff}%
-\psset{linecolor=rgb_1a1a83}%
-\pspolygon[fillstyle=solid](1.29137,0.562256)(1.38364,0.588709)
- (1.35719,0.584157)(1.32922,0.579024)(1.2519,0.563022)
- (1.27231,0.562867)(1.29137,0.562256)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](0.191172,0.170524)(0.107074,0.0480454)
- (0.106268,0.0557124)(0.105573,0.08167)(0.20082,0.188793)
- (0.195007,0.173177)(0.191172,0.170524)
-\psset{fillcolor=cmy_7979ff}%
-\psset{linecolor=rgb_1a1a85}%
-\pspolygon[fillstyle=solid](0.282956,0.300896)(0.187635,0.204779)
- (0.188802,0.181093)(0.191172,0.170524)(0.28937,0.271374)
- (0.284992,0.281718)(0.282956,0.300896)
-\psset{fillcolor=cmy_7676ff}%
-\psset{linecolor=rgb_1b1b88}%
-\pspolygon[fillstyle=solid](1.14185,0.547647)(1.20765,0.562964)
- (1.18407,0.563204)(1.1597,0.563866)(1.10948,0.550772)
- (1.12599,0.549239)(1.14185,0.547647)
-\psset{fillcolor=cmy_0505ff}%
-\psset{linecolor=rgb_3131f9}%
-\pspolygon[fillstyle=solid](0.471308,0.617992)(0.366464,0.664928)
- (0.343397,0.613816)(0.324666,0.560164)(0.432412,0.550565)
- (0.450178,0.585184)(0.471308,0.617992)
-\psset{fillcolor=cmy_6161ff}%
-\psset{linecolor=rgb_1f1f9d}%
-\pspolygon[fillstyle=solid](0.92836,0.562423)(0.895059,0.594987)
- (0.868903,0.597273)(0.84333,0.598464)(0.893412,0.561425)
- (0.910657,0.56219)(0.92836,0.562423)
-\psset{fillcolor=cmy_1616ff}%
-\psset{linecolor=rgb_2e2ee8}%
-\pspolygon[fillstyle=solid](0.432412,0.550565)(0.324666,0.560164)
- (0.309934,0.506308)(0.298804,0.454436)(0.406584,0.481275)
- (0.417922,0.515489)(0.432412,0.550565)
-\psset{fillcolor=cmy_7b7bff}%
-\psset{linecolor=rgb_1a1a83}%
-\pspolygon[fillstyle=solid](1.43089,0.593568)(1.53831,0.642183)
- (1.50763,0.632843)(1.47456,0.620443)(1.38364,0.588709)
- (1.40831,0.592049)(1.43089,0.593568)
-\psset{fillcolor=cmy_0909ff}%
-\psset{linecolor=rgb_3131f5}%
-\pspolygon[fillstyle=solid](0.617846,0.615994)(0.523665,0.673044)
- (0.495823,0.647676)(0.471308,0.617992)(0.574906,0.58195)
- (0.595165,0.600168)(0.617846,0.615994)
-\psset{fillcolor=cmy_3636ff}%
-\psset{linecolor=rgb_2828c8}%
-\pspolygon[fillstyle=solid](0.406584,0.481275)(0.298804,0.454436)
- (0.29087,0.406486)(0.285765,0.364096)(0.392802,0.420142)
- (0.398255,0.449137)(0.406584,0.481275)
-\psset{fillcolor=cmy_2626ff}%
-\psset{linecolor=rgb_2b2bd8}%
-\pspolygon[fillstyle=solid](0.750078,0.58872)(0.669881,0.638666)
- (0.642811,0.628942)(0.617846,0.615994)(0.711075,0.574268)
- (0.729819,0.582261)(0.750078,0.58872)
-\psset{fillcolor=cmy_5555ff}%
-\psset{linecolor=rgb_2121a9}%
-\pspolygon[fillstyle=solid](0.893412,0.561425)(0.84333,0.598464)
- (0.818499,0.598346)(0.794573,0.596748)(0.860696,0.558086)
- (0.876726,0.560071)(0.893412,0.561425)
-\psset{fillcolor=cmy_7474ff}%
-\psset{linecolor=rgb_1b1b8a}%
-\pspolygon[fillstyle=solid](1.17127,0.54409)(1.2519,0.563022)
- (1.2303,0.562975)(1.20765,0.562964)(1.14185,0.547647)
- (1.15697,0.54595)(1.17127,0.54409)
-\psset{fillcolor=cmy_0b0bff}%
-\psset{linecolor=rgb_3030f3}%
-\pspolygon[fillstyle=solid](0.574906,0.58195)(0.471308,0.617992)
- (0.450178,0.585184)(0.432412,0.550565)(0.542015,0.540801)
- (0.557169,0.561937)(0.574906,0.58195)
-\psset{fillcolor=cmy_4848ff}%
-\psset{linecolor=rgb_2424b6}%
-\pspolygon[fillstyle=solid](0.860696,0.558086)(0.794573,0.596748)
- (0.771713,0.593556)(0.750078,0.58872)(0.830997,0.552142)
- (0.845422,0.555444)(0.860696,0.558086)
-\psset{fillcolor=cmy_5a5aff}%
-\psset{linecolor=rgb_2020a4}%
-\pspolygon[fillstyle=solid](0.392802,0.420142)(0.285765,0.364096)
- (0.283191,0.328573)(0.282956,0.300896)(0.390156,0.374904)
- (0.390121,0.395173)(0.392802,0.420142)
-\psset{fillcolor=cmy_7575ff}%
-\psset{linecolor=rgb_1b1b89}%
-\pspolygon[fillstyle=solid](1.32484,0.558669)(1.43089,0.593568)
- (1.40831,0.592049)(1.38364,0.588709)(1.29137,0.562256)
- (1.30893,0.560936)(1.32484,0.558669)
-\psset{fillcolor=cmy_1c1cff}%
-\psset{linecolor=rgb_2d2de2}%
-\pspolygon[fillstyle=solid](0.711075,0.574268)(0.617846,0.615994)
- (0.595165,0.600168)(0.574906,0.58195)(0.678618,0.554358)
- (0.693971,0.564896)(0.711075,0.574268)
-\psset{fillcolor=cmy_7171ff}%
-\psset{linecolor=rgb_1c1c8d}%
-\pspolygon[fillstyle=solid](1.19703,0.539628)(1.29137,0.562256)
- (1.27231,0.562867)(1.2519,0.563022)(1.17127,0.54409)
- (1.18465,0.542005)(1.19703,0.539628)
-\psset{fillcolor=cmy_1818ff}%
-\psset{linecolor=rgb_2e2ee6}%
-\pspolygon[fillstyle=solid](0.542015,0.540801)(0.432412,0.550565)
- (0.417922,0.515489)(0.406584,0.481275)(0.519554,0.497979)
- (0.529474,0.519246)(0.542015,0.540801)
-\psset{fillcolor=cmy_3d3dff}%
-\psset{linecolor=rgb_2626c1}%
-\pspolygon[fillstyle=solid](0.830997,0.552142)(0.750078,0.58872)
- (0.729819,0.582261)(0.711075,0.574268)(0.805053,0.543639)
- (0.817512,0.548194)(0.830997,0.552142)
-\psset{fillcolor=cmy_6666ff}%
-\psset{linecolor=rgb_1e1e98}%
-\pspolygon[fillstyle=solid](1.01993,0.53134)(1.03875,0.556754)
- (1.02033,0.558175)(1.00179,0.559495)(1.00092,0.532012)
- (1.01046,0.531756)(1.01993,0.53134)
-\psset{fillcolor=cmy_6565ff}%
-\psset{linecolor=rgb_1e1e99}%
-\pspolygon[fillstyle=solid](1.00092,0.532012)(1.00179,0.559495)
- (0.983236,0.560652)(0.964748,0.561577)(0.98189,0.532011)
- (0.991382,0.5321)(1.00092,0.532012)
-\psset{fillcolor=cmy_6868ff}%
-\psset{linecolor=rgb_1e1e96}%
-\pspolygon[fillstyle=solid](1.03849,0.530055)(1.07488,0.553783)
- (1.05696,0.555279)(1.03875,0.556754)(1.01993,0.53134)
- (1.02929,0.53077)(1.03849,0.530055)
-\psset{fillcolor=cmy_1c1cff}%
-\psset{linecolor=rgb_2d2de2}%
-\pspolygon[fillstyle=solid](0.678618,0.554358)(0.574906,0.58195)
- (0.557169,0.561937)(0.542015,0.540801)(0.653524,0.530867)
- (0.66511,0.542917)(0.678618,0.554358)
-\psset{fillcolor=cmy_6262ff}%
-\psset{linecolor=rgb_1f1f9c}%
-\pspolygon[fillstyle=solid](0.98189,0.532011)(0.964748,0.561577)
- (0.946423,0.562194)(0.92836,0.562423)(0.963262,0.531266)
- (0.972499,0.531735)(0.98189,0.532011)
-\psset{fillcolor=cmy_6868ff}%
-\psset{linecolor=rgb_1e1e96}%
-\pspolygon[fillstyle=solid](1.05617,0.528201)(1.10948,0.550772)
- (1.09241,0.552281)(1.07488,0.553783)(1.03849,0.530055)
- (1.04746,0.529197)(1.05617,0.528201)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](0.963262,0.531266)(0.92836,0.562423)
- (0.910657,0.56219)(0.893412,0.561425)(0.945465,0.52972)
- (0.954234,0.530596)(0.963262,0.531266)
-\psset{fillcolor=cmy_3232ff}%
-\psset{linecolor=rgb_2828cc}%
-\pspolygon[fillstyle=solid](0.519554,0.497979)(0.406584,0.481275)
- (0.398255,0.449137)(0.392802,0.420142)(0.507551,0.458909)
- (0.512249,0.477666)(0.519554,0.497979)
-\psset{fillcolor=cmy_7575ff}%
-\psset{linecolor=rgb_1b1b89}%
-\pspolygon[fillstyle=solid](1.59029,0.647141)(1.71949,0.731475)
- (1.68666,0.724552)(1.6493,0.708781)(1.53831,0.642183)
- (1.56604,0.647284)(1.59029,0.647141)
-\psset{fillcolor=cmy_6868ff}%
-\psset{linecolor=rgb_1e1e96}%
-\pspolygon[fillstyle=solid](1.07258,0.525802)(1.14185,0.547647)
- (1.12599,0.549239)(1.10948,0.550772)(1.05617,0.528201)
- (1.06456,0.527069)(1.07258,0.525802)
-\psset{fillcolor=cmy_7070ff}%
-\psset{linecolor=rgb_1c1c8e}%
-\pspolygon[fillstyle=solid](1.46867,0.589042)(1.59029,0.647141)
- (1.56604,0.647284)(1.53831,0.642183)(1.43089,0.593568)
- (1.45111,0.592716)(1.46867,0.589042)
-\psset{fillcolor=cmy_3737ff}%
-\psset{linecolor=rgb_2727c7}%
-\pspolygon[fillstyle=solid](0.805053,0.543639)(0.711075,0.574268)
- (0.693971,0.564896)(0.678618,0.554358)(0.783529,0.532958)
- (0.793701,0.538535)(0.805053,0.543639)
-\psset{fillcolor=cmy_6c6cff}%
-\psset{linecolor=rgb_1d1d92}%
-\pspolygon[fillstyle=solid](1.21844,0.533751)(1.32484,0.558669)
- (1.30893,0.560936)(1.29137,0.562256)(1.19703,0.539628)
- (1.20832,0.536895)(1.21844,0.533751)
-\psset{fillcolor=cmy_5959ff}%
-\psset{linecolor=rgb_2121a5}%
-\pspolygon[fillstyle=solid](0.945465,0.52972)(0.893412,0.561425)
- (0.876726,0.560071)(0.860696,0.558086)(0.928911,0.52734)
- (0.937007,0.528634)(0.945465,0.52972)
-\psset{fillcolor=cmy_7878ff}%
-\psset{linecolor=rgb_1a1a86}%
-\pspolygon[fillstyle=solid](1.71949,0.731475)(1.86122,0.850819)
- (1.81692,0.831665)(1.76674,0.798575)(1.6493,0.708781)
- (1.68666,0.724552)(1.71949,0.731475)
-\psset{fillcolor=cmy_6868ff}%
-\psset{linecolor=rgb_1e1e96}%
-\pspolygon[fillstyle=solid](1.08732,0.52286)(1.17127,0.54409)
- (1.15697,0.54595)(1.14185,0.547647)(1.07258,0.525802)
- (1.08018,0.524399)(1.08732,0.52286)
-\psset{fillcolor=cmy_6a6aff}%
-\psset{linecolor=rgb_1d1d94}%
-\pspolygon[fillstyle=solid](1.35106,0.550511)(1.46867,0.589042)
- (1.45111,0.592716)(1.43089,0.593568)(1.32484,0.558669)
- (1.33893,0.555247)(1.35106,0.550511)
-\psset{fillcolor=cmy_2525ff}%
-\psset{linecolor=rgb_2b2bd9}%
-\pspolygon[fillstyle=solid](0.653524,0.530867)(0.542015,0.540801)
- (0.529474,0.519246)(0.519554,0.497979)(0.636366,0.506205)
- (0.643926,0.518523)(0.653524,0.530867)
-\psset{fillcolor=cmy_5454ff}%
-\psset{linecolor=rgb_2222aa}%
-\pspolygon[fillstyle=solid](0.928911,0.52734)(0.860696,0.558086)
- (0.845422,0.555444)(0.830997,0.552142)(0.913992,0.524138)
- (0.921223,0.525839)(0.928911,0.52734)
-\psset{fillcolor=cmy_7373ff}%
-\psset{linecolor=rgb_1b1b8b}%
-\pspolygon[fillstyle=solid](0.390156,0.374904)(0.282956,0.300896)
- (0.284992,0.281718)(0.28937,0.271374)(0.398466,0.350056)
- (0.392913,0.35979)(0.390156,0.374904)
-\psset{fillcolor=cmy_3636ff}%
-\psset{linecolor=rgb_2828c8}%
-\pspolygon[fillstyle=solid](0.783529,0.532958)(0.678618,0.554358)
- (0.66511,0.542917)(0.653524,0.530867)(0.76699,0.520758)
- (0.774605,0.526998)(0.783529,0.532958)
-\psset{fillcolor=cmy_7979ff}%
-\psset{linecolor=rgb_1a1a85}%
-\pspolygon[fillstyle=solid](1.86122,0.850819)(2.0226,1.01759)
- (1.96232,0.978383)(1.89443,0.91833)(1.76674,0.798575)
- (1.81692,0.831665)(1.86122,0.850819)
-\psset{fillcolor=cmy_6666ff}%
-\psset{linecolor=rgb_1e1e98}%
-\pspolygon[fillstyle=solid](1.10005,0.519369)(1.19703,0.539628)
- (1.18465,0.542005)(1.17127,0.54409)(1.08732,0.52286)
- (1.09396,0.521183)(1.10005,0.519369)
-\psset{fillcolor=cmy_5050ff}%
-\psset{linecolor=rgb_2222ae}%
-\pspolygon[fillstyle=solid](0.913992,0.524138)(0.830997,0.552142)
- (0.817512,0.548194)(0.805053,0.543639)(0.90107,0.520175)
- (0.90726,0.522245)(0.913992,0.524138)
-\psset{fillcolor=cmy_5151ff}%
-\psset{linecolor=rgb_2222ad}%
-\pspolygon[fillstyle=solid](0.507551,0.458909)(0.392802,0.420142)
- (0.390121,0.395173)(0.390156,0.374904)(0.50598,0.427985)
- (0.505457,0.442216)(0.507551,0.458909)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](0.28937,0.271374)(0.191172,0.170524)
- (0.195007,0.173177)(0.20082,0.188793)(0.306183,0.276904)
- (0.296309,0.269877)(0.28937,0.271374)
-\psset{fillcolor=cmy_6363ff}%
-\psset{linecolor=rgb_1f1f9b}%
-\pspolygon[fillstyle=solid](1.23484,0.526055)(1.35106,0.550511)
- (1.33893,0.555247)(1.32484,0.558669)(1.21844,0.533751)
- (1.2273,0.530147)(1.23484,0.526055)
-\psset{fillcolor=cmy_3737ff}%
-\psset{linecolor=rgb_2727c7}%
-\pspolygon[fillstyle=solid](0.636366,0.506205)(0.519554,0.497979)
- (0.512249,0.477666)(0.507551,0.458909)(0.62752,0.482848)
- (0.630886,0.49422)(0.636366,0.506205)
-\psset{fillcolor=cmy_4d4dff}%
-\psset{linecolor=rgb_2323b1}%
-\pspolygon[fillstyle=solid](0.90107,0.520175)(0.805053,0.543639)
- (0.793701,0.538535)(0.783529,0.532958)(0.890469,0.515566)
- (0.895461,0.517942)(0.90107,0.520175)
-\psset{fillcolor=cmy_6363ff}%
-\psset{linecolor=rgb_1f1f9b}%
-\pspolygon[fillstyle=solid](1.11043,0.515333)(1.21844,0.533751)
- (1.20832,0.536895)(1.19703,0.539628)(1.10005,0.519369)
- (1.10555,0.517419)(1.11043,0.515333)
-\psset{fillcolor=cmy_3a3aff}%
-\psset{linecolor=rgb_2727c4}%
-\pspolygon[fillstyle=solid](0.76699,0.520758)(0.653524,0.530867)
- (0.643926,0.518523)(0.636366,0.506205)(0.755889,0.507874)
- (0.760736,0.514347)(0.76699,0.520758)
-\psset{fillcolor=cmy_3c3cff}%
-\psset{linecolor=rgb_2626c2}%
-\pspolygon[fillstyle=solid](1.6438,0.0321256)(1.71591,-0.120081)
- (1.76775,-0.074723)(1.81976,-0.0100767)(1.73326,0.116772)
- (1.68934,0.0674669)(1.6438,0.0321256)
-\psset{fillcolor=cmy_4b4bff}%
-\psset{linecolor=rgb_2323b3}%
-\pspolygon[fillstyle=solid](0.890469,0.515566)(0.783529,0.532958)
- (0.774605,0.526998)(0.76699,0.520758)(0.882464,0.510471)
- (0.886127,0.513068)(0.890469,0.515566)
-\psset{fillcolor=cmy_5858ff}%
-\psset{linecolor=rgb_2121a6}%
-\pspolygon[fillstyle=solid](1.36891,0.536746)(1.49483,0.572133)
- (1.48332,0.582232)(1.46867,0.589042)(1.35106,0.550511)
- (1.36109,0.544356)(1.36891,0.536746)
-\psset{fillcolor=cmy_5f5fff}%
-\psset{linecolor=rgb_1f1f9f}%
-\pspolygon[fillstyle=solid](1.1182,0.510778)(1.23484,0.526055)
- (1.2273,0.530147)(1.21844,0.533751)(1.11043,0.515333)
- (1.11466,0.513118)(1.1182,0.510778)
-\psset{fillcolor=cmy_5b5bff}%
-\psset{linecolor=rgb_2020a3}%
-\pspolygon[fillstyle=solid](1.49483,0.572133)(1.62644,0.6285)
- (1.61057,0.641013)(1.59029,0.647141)(1.46867,0.589042)
- (1.48332,0.582232)(1.49483,0.572133)
-\psset{fillcolor=cmy_5858ff}%
-\psset{linecolor=rgb_2121a6}%
-\pspolygon[fillstyle=solid](1.24569,0.516371)(1.36891,0.536746)
- (1.36109,0.544356)(1.35106,0.550511)(1.23484,0.526055)
- (1.24099,0.52146)(1.24569,0.516371)
-\psset{fillcolor=cmy_5d5dff}%
-\psset{linecolor=rgb_2020a1}%
-\pspolygon[fillstyle=solid](1,0.5)(1.01993,0.53134)
- (1.01046,0.531756)(1.00092,0.532012)(1,0.5)
-\pspolygon[fillstyle=solid](1,0.5)(1.00092,0.532012)
- (0.991382,0.5321)(0.98189,0.532011)(1,0.5)
-\pspolygon[fillstyle=solid](1,0.5)(1.03849,0.530055)
- (1.02929,0.53077)(1.01993,0.53134)(1,0.5)
-\pspolygon[fillstyle=solid](1,0.5)(0.98189,0.532011)
- (0.972499,0.531735)(0.963262,0.531266)(1,0.5)
-\pspolygon[fillstyle=solid](1,0.5)(1.05617,0.528201)
- (1.04746,0.529197)(1.03849,0.530055)(1,0.5)
-\psset{fillcolor=cmy_5c5cff}%
-\psset{linecolor=rgb_2020a2}%
-\pspolygon[fillstyle=solid](1,0.5)(0.963262,0.531266)
- (0.954234,0.530596)(0.945465,0.52972)(1,0.5)
-\psset{fillcolor=cmy_4343ff}%
-\psset{linecolor=rgb_2525bb}%
-\pspolygon[fillstyle=solid](0.755889,0.507874)(0.636366,0.506205)
- (0.630886,0.49422)(0.62752,0.482848)(0.750565,0.495176)
- (0.752488,0.50145)(0.755889,0.507874)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](1,0.5)(1.07258,0.525802)
- (1.06456,0.527069)(1.05617,0.528201)(1,0.5)
-\psset{fillcolor=cmy_5c5cff}%
-\psset{linecolor=rgb_2020a2}%
-\pspolygon[fillstyle=solid](1,0.5)(0.945465,0.52972)
- (0.937007,0.528634)(0.928911,0.52734)(1,0.5)
-\psset{fillcolor=cmy_4c4cff}%
-\psset{linecolor=rgb_2323b2}%
-\pspolygon[fillstyle=solid](0.882464,0.510471)(0.76699,0.520758)
- (0.760736,0.514347)(0.755889,0.507874)(0.877275,0.505078)
- (0.879506,0.507799)(0.882464,0.510471)
-\pspolygon[fillstyle=solid](0.62752,0.482848)(0.507551,0.458909)
- (0.505457,0.442216)(0.50598,0.427985)(0.627253,0.462871)
- (0.6263,0.472334)(0.62752,0.482848)
-\psset{fillcolor=cmy_5f5fff}%
-\psset{linecolor=rgb_1f1f9f}%
-\pspolygon[fillstyle=solid](1,0.5)(1.08732,0.52286)
- (1.08018,0.524399)(1.07258,0.525802)(1,0.5)
-\psset{fillcolor=cmy_5a5aff}%
-\psset{linecolor=rgb_2020a4}%
-\pspolygon[fillstyle=solid](1,0.5)(0.928911,0.52734)
- (0.921223,0.525839)(0.913992,0.524138)(1,0.5)
-\pspolygon[fillstyle=solid](1.12312,0.505768)(1.24569,0.516371)
- (1.24099,0.52146)(1.23484,0.526055)(1.1182,0.510778)
- (1.12103,0.508324)(1.12312,0.505768)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](1.62644,0.6285)(1.76797,0.713246)
- (1.74686,0.728005)(1.71949,0.731475)(1.59029,0.647141)
- (1.61057,0.641013)(1.62644,0.6285)
-\psset{fillcolor=cmy_6a6aff}%
-\psset{linecolor=rgb_1d1d94}%
-\pspolygon[fillstyle=solid](0.50598,0.427985)(0.390156,0.374904)
- (0.392913,0.35979)(0.398466,0.350056)(0.515019,0.407859)
- (0.509149,0.416487)(0.50598,0.427985)
-\psset{fillcolor=cmy_5959ff}%
-\psset{linecolor=rgb_2121a5}%
-\pspolygon[fillstyle=solid](1,0.5)(0.913992,0.524138)
- (0.90726,0.522245)(0.90107,0.520175)(1,0.5)
-\psset{fillcolor=cmy_5f5fff}%
-\psset{linecolor=rgb_1f1f9f}%
-\pspolygon[fillstyle=solid](1,0.5)(1.10005,0.519369)
- (1.09396,0.521183)(1.08732,0.52286)(1,0.5)
-\psset{fillcolor=cmy_5252ff}%
-\psset{linecolor=rgb_2222ac}%
-\pspolygon[fillstyle=solid](1.54709,0.00607935)(1.61087,-0.15044)
- (1.66387,-0.145468)(1.71591,-0.120081)(1.6438,0.0321256)
- (1.59652,0.0115261)(1.54709,0.00607935)
-\psset{fillcolor=cmy_5757ff}%
-\psset{linecolor=rgb_2121a7}%
-\pspolygon[fillstyle=solid](1,0.5)(0.90107,0.520175)
- (0.895461,0.517942)(0.890469,0.515566)(1,0.5)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](1,0.5)(1.11043,0.515333)
- (1.10555,0.517419)(1.10005,0.519369)(1,0.5)
-\psset{fillcolor=cmy_5050ff}%
-\psset{linecolor=rgb_2222ae}%
-\pspolygon[fillstyle=solid](0.877275,0.505078)(0.755889,0.507874)
- (0.752488,0.50145)(0.750565,0.495176)(0.875059,0.499586)
- (0.875788,0.502332)(0.877275,0.505078)
-\psset{fillcolor=cmy_5656ff}%
-\psset{linecolor=rgb_2121a8}%
-\pspolygon[fillstyle=solid](1,0.5)(0.890469,0.515566)
- (0.886127,0.513068)(0.882464,0.510471)(1,0.5)
-\psset{fillcolor=cmy_5d5dff}%
-\psset{linecolor=rgb_2020a1}%
-\pspolygon[fillstyle=solid](1,0.5)(1.1182,0.510778)
- (1.11466,0.513118)(1.11043,0.515333)(1,0.5)
-\psset{fillcolor=cmy_2626ff}%
-\psset{linecolor=rgb_2b2bd8}%
-\pspolygon[fillstyle=solid](1.73326,0.116772)(1.81976,-0.0100767)
- (1.87193,0.0727816)(1.92376,0.172159)(1.81542,0.25192)
- (1.77544,0.178833)(1.73326,0.116772)
-\psset{fillcolor=cmy_4b4bff}%
-\psset{linecolor=rgb_2323b3}%
-\pspolygon[fillstyle=solid](1.25055,0.504845)(1.37753,0.517385)
- (1.37441,0.527719)(1.36891,0.536746)(1.24569,0.516371)
- (1.24889,0.510816)(1.25055,0.504845)
-\psset{fillcolor=cmy_5656ff}%
-\psset{linecolor=rgb_2121a8}%
-\pspolygon[fillstyle=solid](1,0.5)(0.882464,0.510471)
- (0.879506,0.507799)(0.877275,0.505078)(1,0.5)
-\psset{fillcolor=cmy_5b5bff}%
-\psset{linecolor=rgb_2020a3}%
-\pspolygon[fillstyle=solid](1,0.5)(1.12312,0.505768)
- (1.12103,0.508324)(1.1182,0.510778)(1,0.5)
-\psset{fillcolor=cmy_5454ff}%
-\psset{linecolor=rgb_2222aa}%
-\pspolygon[fillstyle=solid](1.12505,0.500414)(1.25055,0.504845)
- (1.24889,0.510816)(1.24569,0.516371)(1.12312,0.505768)
- (1.12447,0.503125)(1.12505,0.500414)
-\psset{fillcolor=cmy_4f4fff}%
-\psset{linecolor=rgb_2323af}%
-\pspolygon[fillstyle=solid](0.750565,0.495176)(0.62752,0.482848)
- (0.6263,0.472334)(0.627253,0.462871)(0.751245,0.483425)
- (0.750144,0.489142)(0.750565,0.495176)
-\psset{fillcolor=cmy_4141ff}%
-\psset{linecolor=rgb_2525bd}%
-\pspolygon[fillstyle=solid](1.37753,0.517385)(1.50776,0.542368)
- (1.50301,0.558773)(1.49483,0.572133)(1.36891,0.536746)
- (1.37441,0.527719)(1.37753,0.517385)
-\psset{fillcolor=cmy_5757ff}%
-\psset{linecolor=rgb_2121a7}%
-\pspolygon[fillstyle=solid](1,0.5)(0.877275,0.505078)
- (0.875788,0.502332)(0.875059,0.499586)(1,0.5)
-\psset{fillcolor=cmy_5858ff}%
-\psset{linecolor=rgb_2121a6}%
-\pspolygon[fillstyle=solid](1,0.5)(1.12505,0.500414)
- (1.12447,0.503125)(1.12312,0.505768)(1,0.5)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](0.398466,0.350056)(0.28937,0.271374)
- (0.296309,0.269877)(0.306183,0.276904)(0.418616,0.346439)
- (0.406961,0.34569)(0.398466,0.350056)
-\psset{fillcolor=cmy_5454ff}%
-\psset{linecolor=rgb_2222aa}%
-\pspolygon[fillstyle=solid](0.875059,0.499586)(0.750565,0.495176)
- (0.750144,0.489142)(0.751245,0.483425)(0.875906,0.494186)
- (0.875097,0.496864)(0.875059,0.499586)
-\psset{fillcolor=cmy_5858ff}%
-\psset{linecolor=rgb_2121a6}%
-\pspolygon[fillstyle=solid](1,0.5)(0.875059,0.499586)
- (0.875097,0.496864)(0.875906,0.494186)(1,0.5)
-\psset{fillcolor=cmy_6161ff}%
-\psset{linecolor=rgb_1f1f9d}%
-\pspolygon[fillstyle=solid](1.76797,0.713246)(1.92548,0.836328)
- (1.8979,0.852992)(1.86122,0.850819)(1.71949,0.731475)
- (1.74686,0.728005)(1.76797,0.713246)
-\psset{fillcolor=cmy_5656ff}%
-\psset{linecolor=rgb_2121a8}%
-\pspolygon[fillstyle=solid](1,0.5)(1.1239,0.494874)
- (1.12486,0.497656)(1.12505,0.500414)(1,0.5)
-\psset{fillcolor=cmy_3b3bff}%
-\psset{linecolor=rgb_2727c3}%
-\pspolygon[fillstyle=solid](1.50776,0.542368)(1.64384,0.584677)
- (1.63759,0.609591)(1.62644,0.6285)(1.49483,0.572133)
- (1.50301,0.558773)(1.50776,0.542368)
-\psset{fillcolor=cmy_6161ff}%
-\psset{linecolor=rgb_1f1f9d}%
-\pspolygon[fillstyle=solid](0.627253,0.462871)(0.50598,0.427985)
- (0.509149,0.416487)(0.515019,0.407859)(0.635784,0.447596)
- (0.630406,0.4546)(0.627253,0.462871)
-\psset{fillcolor=cmy_5a5aff}%
-\psset{linecolor=rgb_2020a4}%
-\pspolygon[fillstyle=solid](1,0.5)(0.875906,0.494186)
- (0.877488,0.491574)(0.879836,0.489043)(1,0.5)
-\psset{fillcolor=cmy_4e4eff}%
-\psset{linecolor=rgb_2323b0}%
-\pspolygon[fillstyle=solid](1.1239,0.494874)(1.24918,0.491962)
- (1.25065,0.498531)(1.25055,0.504845)(1.12505,0.500414)
- (1.12486,0.497656)(1.1239,0.494874)
-\psset{fillcolor=cmy_5555ff}%
-\psset{linecolor=rgb_2121a9}%
-\pspolygon[fillstyle=solid](1,0.5)(1.11965,0.48934)
- (1.12216,0.492093)(1.1239,0.494874)(1,0.5)
-\psset{fillcolor=cmy_5c5cff}%
-\psset{linecolor=rgb_2020a2}%
-\pspolygon[fillstyle=solid](1,0.5)(0.879836,0.489043)
- (0.882942,0.486608)(0.886789,0.484281)(1,0.5)
-\psset{fillcolor=cmy_5555ff}%
-\psset{linecolor=rgb_2121a9}%
-\pspolygon[fillstyle=solid](1,0.5)(1.11239,0.484027)
- (1.11639,0.486643)(1.11965,0.48934)(1,0.5)
-\psset{fillcolor=cmy_3e3eff}%
-\psset{linecolor=rgb_2626c0}%
-\pspolygon[fillstyle=solid](1.24918,0.491962)(1.37644,0.493576)
- (1.37822,0.505923)(1.37753,0.517385)(1.25055,0.504845)
- (1.25065,0.498531)(1.24918,0.491962)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](1,0.5)(0.886789,0.484281)
- (0.89136,0.482071)(0.896629,0.479987)(1,0.5)
-\psset{fillcolor=cmy_5959ff}%
-\psset{linecolor=rgb_2121a5}%
-\pspolygon[fillstyle=solid](0.875906,0.494186)(0.751245,0.483425)
- (0.753877,0.478082)(0.758047,0.473156)(0.879836,0.489043)
- (0.877488,0.491574)(0.875906,0.494186)
-\psset{fillcolor=cmy_5656ff}%
-\psset{linecolor=rgb_2121a8}%
-\pspolygon[fillstyle=solid](1,0.5)(1.10226,0.479146)
- (1.10767,0.48152)(1.11239,0.484027)(1,0.5)
-\psset{fillcolor=cmy_5a5aff}%
-\psset{linecolor=rgb_2020a4}%
-\pspolygon[fillstyle=solid](0.751245,0.483425)(0.627253,0.462871)
- (0.630406,0.4546)(0.635784,0.447596)(0.758047,0.473156)
- (0.753877,0.478082)(0.751245,0.483425)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](1,0.5)(0.896629,0.479987)
- (0.902567,0.478033)(0.909139,0.476214)(1,0.5)
-\psset{fillcolor=cmy_5757ff}%
-\psset{linecolor=rgb_2121a7}%
-\pspolygon[fillstyle=solid](1,0.5)(1.08949,0.474885)
- (1.09619,0.476928)(1.10226,0.479146)(1,0.5)
-\psset{fillcolor=cmy_4a4aff}%
-\psset{linecolor=rgb_2424b4}%
-\pspolygon[fillstyle=solid](1.11965,0.48934)(1.24148,0.478487)
- (1.24612,0.485243)(1.24918,0.491962)(1.1239,0.494874)
- (1.12216,0.492093)(1.11965,0.48934)
-\psset{fillcolor=cmy_2a2aff}%
-\psset{linecolor=rgb_2a2ad4}%
-\pspolygon[fillstyle=solid](1.37644,0.493576)(1.50673,0.502132)
- (1.50899,0.523306)(1.50776,0.542368)(1.37753,0.517385)
- (1.37822,0.505923)(1.37644,0.493576)
-\psset{fillcolor=cmy_5959ff}%
-\psset{linecolor=rgb_2121a5}%
-\pspolygon[fillstyle=solid](1,0.5)(1.07439,0.47139)
- (1.08221,0.473035)(1.08949,0.474885)(1,0.5)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](1,0.5)(0.909139,0.476214)
- (0.916306,0.474532)(0.924023,0.47299)(1,0.5)
-\psset{fillcolor=cmy_7878ff}%
-\psset{linecolor=rgb_1a1a86}%
-\pspolygon[fillstyle=solid](0.20082,0.188793)(0.105573,0.08167)
- (0.105946,0.125602)(0.108805,0.186635)(0.221782,0.25564)
- (0.209394,0.216686)(0.20082,0.188793)
-\psset{fillcolor=cmy_3939ff}%
-\psset{linecolor=rgb_2727c5}%
-\pspolygon[fillstyle=solid](1.64384,0.584677)(1.78949,0.650223)
- (1.78228,0.687084)(1.76797,0.713246)(1.62644,0.6285)
- (1.63759,0.609591)(1.64384,0.584677)
-\psset{fillcolor=cmy_5a5aff}%
-\psset{linecolor=rgb_2020a4}%
-\pspolygon[fillstyle=solid](1,0.5)(1.05734,0.468753)
- (1.06608,0.469961)(1.07439,0.47139)(1,0.5)
-\psset{fillcolor=cmy_5d5dff}%
-\psset{linecolor=rgb_2020a1}%
-\pspolygon[fillstyle=solid](1,0.5)(0.924023,0.47299)
- (0.932243,0.471589)(0.940912,0.470334)(1,0.5)
-\psset{fillcolor=cmy_5b5bff}%
-\psset{linecolor=rgb_2020a3}%
-\pspolygon[fillstyle=solid](1,0.5)(1.03876,0.46701)
- (1.04821,0.467769)(1.05734,0.468753)(1,0.5)
-\psset{fillcolor=cmy_5c5cff}%
-\psset{linecolor=rgb_2020a2}%
-\pspolygon[fillstyle=solid](1,0.5)(0.940912,0.470334)
- (0.949975,0.469227)(0.959372,0.468273)(1,0.5)
-\psset{fillcolor=cmy_6363ff}%
-\psset{linecolor=rgb_1f1f9b}%
-\pspolygon[fillstyle=solid](1.92548,0.836328)(2.1079,1.01222)
- (2.07205,1.03012)(2.0226,1.01759)(1.86122,0.850819)
- (1.8979,0.852992)(1.92548,0.836328)
-\psset{fillcolor=cmy_5b5bff}%
-\psset{linecolor=rgb_2020a3}%
-\pspolygon[fillstyle=solid](1,0.5)(1.01915,0.466147)
- (1.02906,0.466471)(1.03876,0.46701)(1,0.5)
-\psset{fillcolor=cmy_5e5eff}%
-\psset{linecolor=rgb_2020a0}%
-\pspolygon[fillstyle=solid](0.879836,0.489043)(0.758047,0.473156)
- (0.763749,0.468665)(0.770971,0.464613)(0.886789,0.484281)
- (0.882942,0.486608)(0.879836,0.489043)
-\psset{fillcolor=cmy_5b5bff}%
-\psset{linecolor=rgb_2020a3}%
-\pspolygon[fillstyle=solid](1,0.5)(0.959372,0.468273)
- (0.969041,0.467478)(0.978917,0.466848)(1,0.5)
-\psset{fillcolor=cmy_7878ff}%
-\psset{linecolor=rgb_1a1a86}%
-\pspolygon[fillstyle=solid](0.515019,0.407859)(0.398466,0.350056)
- (0.406961,0.34569)(0.418616,0.346439)(0.535179,0.399064)
- (0.523664,0.402099)(0.515019,0.407859)
-\psset{fillcolor=cmy_5b5bff}%
-\psset{linecolor=rgb_2020a3}%
-\pspolygon[fillstyle=solid](1,0.5)(0.999023,0.466116)
- (1.00912,0.466032)(1.01915,0.466147)(1,0.5)
-\pspolygon[fillstyle=solid](1,0.5)(0.978917,0.466848)
- (0.988933,0.466391)(0.999023,0.466116)(1,0.5)
-\psset{fillcolor=cmy_3535ff}%
-\psset{linecolor=rgb_2828c9}%
-\pspolygon[fillstyle=solid](1.24148,0.478487)(1.36555,0.467434)
- (1.37221,0.480637)(1.37644,0.493576)(1.24918,0.491962)
- (1.24612,0.485243)(1.24148,0.478487)
-\psset{fillcolor=cmy_4848ff}%
-\psset{linecolor=rgb_2424b6}%
-\pspolygon[fillstyle=solid](1.11239,0.484027)(1.22757,0.465351)
- (1.23529,0.471816)(1.24148,0.478487)(1.11965,0.48934)
- (1.11639,0.486643)(1.11239,0.484027)
-\psset{fillcolor=cmy_1b1bff}%
-\psset{linecolor=rgb_2d2de3}%
-\pspolygon[fillstyle=solid](1.50673,0.502132)(1.64155,0.520244)
- (1.64513,0.55453)(1.64384,0.584677)(1.50776,0.542368)
- (1.50899,0.523306)(1.50673,0.502132)
-\psset{fillcolor=cmy_2d2dff}%
-\psset{linecolor=rgb_2929d1}%
-\pspolygon[fillstyle=solid](1.56058,0.160334)(1.6438,0.0321256)
- (1.68934,0.0674669)(1.73326,0.116772)(1.6364,0.222327)
- (1.59977,0.186629)(1.56058,0.160334)
-\psset{fillcolor=cmy_6464ff}%
-\psset{linecolor=rgb_1e1e9a}%
-\pspolygon[fillstyle=solid](0.758047,0.473156)(0.635784,0.447596)
- (0.64341,0.441874)(0.653304,0.437383)(0.770971,0.464613)
- (0.763749,0.468665)(0.758047,0.473156)
-\psset{fillcolor=cmy_6f6fff}%
-\psset{linecolor=rgb_1c1c8f}%
-\pspolygon[fillstyle=solid](0.635784,0.447596)(0.515019,0.407859)
- (0.523664,0.402099)(0.535179,0.399064)(0.653304,0.437383)
- (0.64341,0.441874)(0.635784,0.447596)
-\psset{fillcolor=cmy_1b1bff}%
-\psset{linecolor=rgb_2d2de3}%
-\pspolygon[fillstyle=solid](1.36555,0.467434)(1.49191,0.456177)
- (1.501,0.479507)(1.50673,0.502132)(1.37644,0.493576)
- (1.37221,0.480637)(1.36555,0.467434)
-\psset{fillcolor=cmy_1919ff}%
-\psset{linecolor=rgb_2d2de5}%
-\pspolygon[fillstyle=solid](1.6364,0.222327)(1.73326,0.116772)
- (1.77544,0.178833)(1.81542,0.25192)(1.7012,0.317458)
- (1.67032,0.266403)(1.6364,0.222327)
-\psset{fillcolor=cmy_6161ff}%
-\psset{linecolor=rgb_1f1f9d}%
-\pspolygon[fillstyle=solid](0.886789,0.484281)(0.770971,0.464613)
- (0.779692,0.460981)(0.78988,0.457739)(0.896629,0.479987)
- (0.89136,0.482071)(0.886789,0.484281)
-\psset{fillcolor=cmy_4949ff}%
-\psset{linecolor=rgb_2424b5}%
-\pspolygon[fillstyle=solid](1.10226,0.479146)(1.20772,0.4535)
- (1.21837,0.45921)(1.22757,0.465351)(1.11239,0.484027)
- (1.10767,0.48152)(1.10226,0.479146)
-\psset{fillcolor=cmy_1111ff}%
-\psset{linecolor=rgb_2f2fed}%
-\pspolygon[fillstyle=solid](1.81542,0.25192)(1.92376,0.172159)
- (1.97421,0.285475)(2.02166,0.408983)(1.88544,0.421119)
- (1.85244,0.33369)(1.81542,0.25192)
-\psset{fillcolor=cmy_3030ff}%
-\psset{linecolor=rgb_2929ce}%
-\pspolygon[fillstyle=solid](1.22757,0.465351)(1.34511,0.441628)
- (1.3565,0.454315)(1.36555,0.467434)(1.24148,0.478487)
- (1.23529,0.471816)(1.22757,0.465351)
-\psset{fillcolor=cmy_1313ff}%
-\psset{linecolor=rgb_2f2feb}%
-\pspolygon[fillstyle=solid](1.64155,0.520244)(1.78302,0.550882)
- (1.78963,0.60413)(1.78949,0.650223)(1.64384,0.584677)
- (1.64513,0.55453)(1.64155,0.520244)
-\psset{fillcolor=cmy_3939ff}%
-\psset{linecolor=rgb_2727c5}%
-\pspolygon[fillstyle=solid](1.78949,0.650223)(1.94995,0.746725)
- (1.94296,0.80048)(1.92548,0.836328)(1.76797,0.713246)
- (1.78228,0.687084)(1.78949,0.650223)
-\psset{fillcolor=cmy_0808ff}%
-\psset{linecolor=rgb_3131f6}%
-\pspolygon[fillstyle=solid](1.49191,0.456177)(1.62063,0.44471)
- (1.63329,0.483148)(1.64155,0.520244)(1.50673,0.502132)
- (1.501,0.479507)(1.49191,0.456177)
-\psset{fillcolor=cmy_4c4cff}%
-\psset{linecolor=rgb_2323b2}%
-\pspolygon[fillstyle=solid](1.08949,0.474885)(1.18236,0.443736)
- (1.1957,0.448317)(1.20772,0.4535)(1.10226,0.479146)
- (1.09619,0.476928)(1.08949,0.474885)
-\psset{fillcolor=cmy_6464ff}%
-\psset{linecolor=rgb_1e1e9a}%
-\pspolygon[fillstyle=solid](0.896629,0.479987)(0.78988,0.457739)
- (0.801491,0.454842)(0.81447,0.452238)(0.909139,0.476214)
- (0.902567,0.478033)(0.896629,0.479987)
-\psset{fillcolor=cmy_7c7cff}%
-\psset{linecolor=rgb_1a1a82}%
-\pspolygon[fillstyle=solid](0.306183,0.276904)(0.20082,0.188793)
- (0.209394,0.216686)(0.221782,0.25564)(0.336923,0.313416)
- (0.319506,0.291774)(0.306183,0.276904)
-\psset{fillcolor=cmy_1515ff}%
-\psset{linecolor=rgb_2e2ee9}%
-\pspolygon[fillstyle=solid](1.34511,0.441628)(1.46416,0.410519)
- (1.47958,0.432922)(1.49191,0.456177)(1.36555,0.467434)
- (1.3565,0.454315)(1.34511,0.441628)
-\psset{fillcolor=cmy_0808ff}%
-\psset{linecolor=rgb_3131f6}%
-\pspolygon[fillstyle=solid](1.7012,0.317458)(1.81542,0.25192)
- (1.85244,0.33369)(1.88544,0.421119)(1.75179,0.433026)
- (1.72856,0.373711)(1.7012,0.317458)
-\psset{fillcolor=cmy_5050ff}%
-\psset{linecolor=rgb_2222ae}%
-\pspolygon[fillstyle=solid](1.07439,0.47139)(1.15207,0.436591)
- (1.16779,0.439816)(1.18236,0.443736)(1.08949,0.474885)
- (1.08221,0.473035)(1.07439,0.47139)
-\psset{fillcolor=cmy_6b6bff}%
-\psset{linecolor=rgb_1d1d93}%
-\pspolygon[fillstyle=solid](0.770971,0.464613)(0.653304,0.437383)
- (0.665477,0.434016)(0.679931,0.431611)(0.78988,0.457739)
- (0.779692,0.460981)(0.770971,0.464613)
-\psset{fillcolor=cmy_3131ff}%
-\psset{linecolor=rgb_2929cd}%
-\pspolygon[fillstyle=solid](1.20772,0.4535)(1.31566,0.418861)
- (1.33147,0.429708)(1.34511,0.441628)(1.22757,0.465351)
- (1.21837,0.45921)(1.20772,0.4535)
-\psset{fillcolor=cmy_4545ff}%
-\psset{linecolor=rgb_2525b9}%
-\pspolygon[fillstyle=solid](1.4744,0.138283)(1.54709,0.00607935)
- (1.59652,0.0115261)(1.6438,0.0321256)(1.56058,0.160334)
- (1.51884,0.144112)(1.4744,0.138283)
-\psset{fillcolor=cmy_0101ff}%
-\psset{linecolor=rgb_3232fd}%
-\pspolygon[fillstyle=solid](1.62063,0.44471)(1.75179,0.433026)
- (1.77018,0.49296)(1.78302,0.550882)(1.64155,0.520244)
- (1.63329,0.483148)(1.62063,0.44471)
-\psset{fillcolor=cmy_6464ff}%
-\psset{linecolor=rgb_1e1e9a}%
-\pspolygon[fillstyle=solid](0.909139,0.476214)(0.81447,0.452238)
- (0.828748,0.449869)(0.844242,0.44768)(0.924023,0.47299)
- (0.916306,0.474532)(0.909139,0.476214)
-\psset{fillcolor=cmy_0505ff}%
-\psset{linecolor=rgb_3131f9}%
-\pspolygon[fillstyle=solid](1.46416,0.410519)(1.58342,0.369794)
- (1.6039,0.406438)(1.62063,0.44471)(1.49191,0.456177)
- (1.47958,0.432922)(1.46416,0.410519)
-\psset{fillcolor=cmy_0202ff}%
-\psset{linecolor=rgb_3232fc}%
-\pspolygon[fillstyle=solid](1.58342,0.369794)(1.7012,0.317458)
- (1.72856,0.373711)(1.75179,0.433026)(1.62063,0.44471)
- (1.6039,0.406438)(1.58342,0.369794)
-\psset{fillcolor=cmy_0e0eff}%
-\psset{linecolor=rgb_3030f0}%
-\pspolygon[fillstyle=solid](1.53245,0.306569)(1.6364,0.222327)
- (1.67032,0.266403)(1.7012,0.317458)(1.58342,0.369794)
- (1.55951,0.336116)(1.53245,0.306569)
-\psset{fillcolor=cmy_6969ff}%
-\psset{linecolor=rgb_1d1d95}%
-\pspolygon[fillstyle=solid](1.43923,0.040527)(1.49747,-0.0982892)
- (1.55585,-0.134733)(1.61087,-0.15044)(1.54709,0.00607935)
- (1.49491,0.0158499)(1.43923,0.040527)
-\psset{fillcolor=cmy_5555ff}%
-\psset{linecolor=rgb_2121a9}%
-\pspolygon[fillstyle=solid](1.05734,0.468753)(1.11756,0.432255)
- (1.13529,0.434074)(1.15207,0.436591)(1.07439,0.47139)
- (1.06608,0.469961)(1.05734,0.468753)
-\psset{fillcolor=cmy_6464ff}%
-\psset{linecolor=rgb_1e1e9a}%
-\pspolygon[fillstyle=solid](0.924023,0.47299)(0.844242,0.44768)
- (0.860857,0.44562)(0.878483,0.443646)(0.940912,0.470334)
- (0.932243,0.471589)(0.924023,0.47299)
-\psset{fillcolor=cmy_1818ff}%
-\psset{linecolor=rgb_2e2ee6}%
-\pspolygon[fillstyle=solid](1.31566,0.418861)(1.42461,0.371119)
- (1.44579,0.3897)(1.46416,0.410519)(1.34511,0.441628)
- (1.33147,0.429708)(1.31566,0.418861)
-\psset{fillcolor=cmy_5959ff}%
-\psset{linecolor=rgb_2121a5}%
-\pspolygon[fillstyle=solid](1.03876,0.46701)(1.07968,0.43057)
- (1.09898,0.431103)(1.11756,0.432255)(1.05734,0.468753)
- (1.04821,0.467769)(1.03876,0.46701)
-\psset{fillcolor=cmy_1111ff}%
-\psset{linecolor=rgb_2f2fed}%
-\pspolygon[fillstyle=solid](1.78302,0.550882)(1.93401,0.597589)
- (1.94669,0.677812)(1.94995,0.746725)(1.78949,0.650223)
- (1.78963,0.60413)(1.78302,0.550882)
-\psset{fillcolor=cmy_7777ff}%
-\psset{linecolor=rgb_1b1b87}%
-\pspolygon[fillstyle=solid](0.653304,0.437383)(0.535179,0.399064)
- (0.549666,0.398476)(0.567233,0.399933)(0.679931,0.431611)
- (0.665477,0.434016)(0.653304,0.437383)
-\psset{fillcolor=cmy_0101ff}%
-\psset{linecolor=rgb_3232fd}%
-\pspolygon[fillstyle=solid](1.75179,0.433026)(1.88544,0.421119)
- (1.91311,0.510505)(1.93401,0.597589)(1.78302,0.550882)
- (1.77018,0.49296)(1.75179,0.433026)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](0.418616,0.346439)(0.306183,0.276904)
- (0.319506,0.291774)(0.336923,0.313416)(0.452538,0.361054)
- (0.433703,0.351806)(0.418616,0.346439)
-\psset{fillcolor=cmy_3737ff}%
-\psset{linecolor=rgb_2727c7}%
-\pspolygon[fillstyle=solid](1.18236,0.443736)(1.27784,0.401367)
- (1.29775,0.409345)(1.31566,0.418861)(1.20772,0.4535)
- (1.1957,0.448317)(1.18236,0.443736)
-\psset{fillcolor=cmy_0c0cff}%
-\psset{linecolor=rgb_3030f2}%
-\pspolygon[fillstyle=solid](1.42461,0.371119)(1.53245,0.306569)
- (1.55951,0.336116)(1.58342,0.369794)(1.46416,0.410519)
- (1.44579,0.3897)(1.42461,0.371119)
-\psset{fillcolor=cmy_2020ff}%
-\psset{linecolor=rgb_2c2cde}%
-\pspolygon[fillstyle=solid](1.46963,0.263451)(1.56058,0.160334)
- (1.59977,0.186629)(1.6364,0.222327)(1.53245,0.306569)
- (1.50244,0.282108)(1.46963,0.263451)
-\psset{fillcolor=cmy_6363ff}%
-\psset{linecolor=rgb_1f1f9b}%
-\pspolygon[fillstyle=solid](0.940912,0.470334)(0.878483,0.443646)
- (0.896998,0.44173)(0.916271,0.43986)(0.959372,0.468273)
- (0.949975,0.469227)(0.940912,0.470334)
-\psset{fillcolor=cmy_5d5dff}%
-\psset{linecolor=rgb_2020a1}%
-\pspolygon[fillstyle=solid](1.01915,0.466147)(1.03945,0.431091)
- (1.05979,0.43059)(1.07968,0.43057)(1.03876,0.46701)
- (1.02906,0.466471)(1.01915,0.466147)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](0.535179,0.399064)(0.418616,0.346439)
- (0.433703,0.351806)(0.452538,0.361054)(0.567233,0.399933)
- (0.549666,0.398476)(0.535179,0.399064)
-\psset{fillcolor=cmy_3939ff}%
-\psset{linecolor=rgb_2727c5}%
-\pspolygon[fillstyle=solid](1.94995,0.746725)(2.13284,0.884999)
- (2.12834,0.963057)(2.1079,1.01222)(1.92548,0.836328)
- (1.94296,0.80048)(1.94995,0.746725)
-\psset{fillcolor=cmy_6262ff}%
-\psset{linecolor=rgb_1f1f9c}%
-\pspolygon[fillstyle=solid](0.959372,0.468273)(0.916271,0.43986)
- (0.936157,0.438041)(0.956509,0.436296)(0.978917,0.466848)
- (0.969041,0.467478)(0.959372,0.468273)
-\psset{fillcolor=cmy_5f5fff}%
-\psset{linecolor=rgb_1f1f9f}%
-\pspolygon[fillstyle=solid](0.999023,0.466116)(0.997986,0.433208)
- (1.0188,0.431991)(1.03945,0.431091)(1.01915,0.466147)
- (1.00912,0.466032)(0.999023,0.466116)
-\psset{fillcolor=cmy_6f6fff}%
-\psset{linecolor=rgb_1c1c8f}%
-\pspolygon[fillstyle=solid](0.78988,0.457739)(0.679931,0.431611)
- (0.696648,0.429965)(0.71559,0.428845)(0.81447,0.452238)
- (0.801491,0.454842)(0.78988,0.457739)
-\psset{fillcolor=cmy_6161ff}%
-\psset{linecolor=rgb_1f1f9d}%
-\pspolygon[fillstyle=solid](0.978917,0.466848)(0.956509,0.436296)
- (0.977171,0.434667)(0.997986,0.433208)(0.999023,0.466116)
- (0.988933,0.466391)(0.978917,0.466848)
-\psset{fillcolor=cmy_0303ff}%
-\psset{linecolor=rgb_3232fb}%
-\pspolygon[fillstyle=solid](1.88544,0.421119)(2.02166,0.408983)
- (2.06392,0.537585)(2.09838,0.664828)(1.93401,0.597589)
- (1.91311,0.510505)(1.88544,0.421119)
-\psset{fillcolor=cmy_4141ff}%
-\psset{linecolor=rgb_2525bd}%
-\pspolygon[fillstyle=solid](1.15207,0.436591)(1.23246,0.39052)
- (1.25605,0.395068)(1.27784,0.401367)(1.18236,0.443736)
- (1.16779,0.439816)(1.15207,0.436591)
-\psset{fillcolor=cmy_2323ff}%
-\psset{linecolor=rgb_2b2bdb}%
-\pspolygon[fillstyle=solid](1.27784,0.401367)(1.37438,0.342743)
- (1.40077,0.355325)(1.42461,0.371119)(1.31566,0.418861)
- (1.29775,0.409345)(1.27784,0.401367)
-\psset{fillcolor=cmy_1b1bff}%
-\psset{linecolor=rgb_2d2de3}%
-\pspolygon[fillstyle=solid](1.37438,0.342743)(1.46963,0.263451)
- (1.50244,0.282108)(1.53245,0.306569)(1.42461,0.371119)
- (1.40077,0.355325)(1.37438,0.342743)
-\psset{fillcolor=cmy_7171ff}%
-\psset{linecolor=rgb_1c1c8d}%
-\pspolygon[fillstyle=solid](0.81447,0.452238)(0.71559,0.428845)
- (0.736691,0.427999)(0.759855,0.427181)(0.844242,0.44768)
- (0.828748,0.449869)(0.81447,0.452238)
-\psset{fillcolor=cmy_3939ff}%
-\psset{linecolor=rgb_2727c5}%
-\pspolygon[fillstyle=solid](1.39584,0.245193)(1.4744,0.138283)
- (1.51884,0.144112)(1.56058,0.160334)(1.46963,0.263451)
- (1.43409,0.251074)(1.39584,0.245193)
-\psset{fillcolor=cmy_0f0fff}%
-\psset{linecolor=rgb_2f2fef}%
-\pspolygon[fillstyle=solid](1.93401,0.597589)(2.09838,0.664828)
- (2.12222,0.783232)(2.13284,0.884999)(1.94995,0.746725)
- (1.94669,0.677812)(1.93401,0.597589)
-\psset{fillcolor=cmy_4e4eff}%
-\psset{linecolor=rgb_2323b0}%
-\pspolygon[fillstyle=solid](1.11756,0.432255)(1.18041,0.386614)
- (1.20721,0.387725)(1.23246,0.39052)(1.15207,0.436591)
- (1.13529,0.434074)(1.11756,0.432255)
-\psset{fillcolor=cmy_7b7bff}%
-\psset{linecolor=rgb_1a1a83}%
-\pspolygon[fillstyle=solid](0.679931,0.431611)(0.567233,0.399933)
- (0.587968,0.402922)(0.611934,0.40685)(0.71559,0.428845)
- (0.696648,0.429965)(0.679931,0.431611)
-\psset{fillcolor=cmy_3434ff}%
-\psset{linecolor=rgb_2828ca}%
-\pspolygon[fillstyle=solid](1.23246,0.39052)(1.31435,0.328195)
- (1.34554,0.333655)(1.37438,0.342743)(1.27784,0.401367)
- (1.25605,0.395068)(1.23246,0.39052)
-\psset{fillcolor=cmy_3131ff}%
-\psset{linecolor=rgb_2929cd}%
-\pspolygon[fillstyle=solid](1.31435,0.328195)(1.39584,0.245193)
- (1.43409,0.251074)(1.46963,0.263451)(1.37438,0.342743)
- (1.34554,0.333655)(1.31435,0.328195)
-\psset{fillcolor=cmy_5a5aff}%
-\psset{linecolor=rgb_2020a4}%
-\pspolygon[fillstyle=solid](1.07968,0.43057)(1.1228,0.388846)
- (1.15222,0.387052)(1.18041,0.386614)(1.11756,0.432255)
- (1.09898,0.431103)(1.07968,0.43057)
-\psset{fillcolor=cmy_7272ff}%
-\psset{linecolor=rgb_1c1c8c}%
-\pspolygon[fillstyle=solid](0.844242,0.44768)(0.759855,0.427181)
- (0.784951,0.42616)(0.811811,0.424741)(0.878483,0.443646)
- (0.860857,0.44562)(0.844242,0.44768)
-\psset{fillcolor=cmy_6060ff}%
-\psset{linecolor=rgb_1f1f9e}%
-\pspolygon[fillstyle=solid](1.3764,0.157338)(1.43923,0.040527)
- (1.49491,0.0158499)(1.54709,0.00607935)(1.4744,0.138283)
- (1.42703,0.142821)(1.3764,0.157338)
-\psset{fillcolor=cmy_6363ff}%
-\psset{linecolor=rgb_1f1f9b}%
-\pspolygon[fillstyle=solid](1.03945,0.431091)(1.06103,0.395505)
- (1.09234,0.391756)(1.1228,0.388846)(1.07968,0.43057)
- (1.05979,0.43059)(1.03945,0.431091)
-\psset{fillcolor=cmy_7272ff}%
-\psset{linecolor=rgb_1c1c8c}%
-\pspolygon[fillstyle=solid](0.878483,0.443646)(0.811811,0.424741)
- (0.840235,0.422779)(0.869988,0.42019)(0.916271,0.43986)
- (0.896998,0.44173)(0.878483,0.443646)
-\psset{fillcolor=cmy_4a4aff}%
-\psset{linecolor=rgb_2424b4}%
-\pspolygon[fillstyle=solid](1.18041,0.386614)(1.24529,0.327916)
- (1.2809,0.32634)(1.31435,0.328195)(1.23246,0.39052)
- (1.20721,0.387725)(1.18041,0.386614)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](0.567233,0.399933)(0.452538,0.361054)
- (0.47545,0.373217)(0.502743,0.387128)(0.611934,0.40685)
- (0.587968,0.402922)(0.567233,0.399933)
-\psset{fillcolor=cmy_6a6aff}%
-\psset{linecolor=rgb_1d1d94}%
-\pspolygon[fillstyle=solid](0.997986,0.433208)(0.996875,0.404353)
- (1.02913,0.399802)(1.06103,0.395505)(1.03945,0.431091)
- (1.0188,0.431991)(0.997986,0.433208)
-\psset{fillcolor=cmy_7171ff}%
-\psset{linecolor=rgb_1c1c8d}%
-\pspolygon[fillstyle=solid](0.916271,0.43986)(0.869988,0.42019)
- (0.900811,0.41696)(0.932427,0.413148)(0.956509,0.436296)
- (0.936157,0.438041)(0.916271,0.43986)
-\psset{fillcolor=cmy_6e6eff}%
-\psset{linecolor=rgb_1c1c90}%
-\pspolygon[fillstyle=solid](0.956509,0.436296)(0.932427,0.413148)
- (0.964546,0.408882)(0.996875,0.404353)(0.997986,0.433208)
- (0.977171,0.434667)(0.956509,0.436296)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](0.71559,0.428845)(0.611934,0.40685)
- (0.639145,0.411067)(0.669551,0.414914)(0.759855,0.427181)
- (0.736691,0.427999)(0.71559,0.428845)
-\psset{fillcolor=cmy_5656ff}%
-\psset{linecolor=rgb_2121a8}%
-\pspolygon[fillstyle=solid](1.31112,0.252497)(1.3764,0.157338)
- (1.42703,0.142821)(1.4744,0.138283)(1.39584,0.245193)
- (1.35487,0.24577)(1.31112,0.252497)
-\psset{fillcolor=cmy_4e4eff}%
-\psset{linecolor=rgb_2323b0}%
-\pspolygon[fillstyle=solid](1.24529,0.327916)(1.31112,0.252497)
- (1.35487,0.24577)(1.39584,0.245193)(1.31435,0.328195)
- (1.2809,0.32634)(1.24529,0.327916)
-\psset{fillcolor=cmy_5f5fff}%
-\psset{linecolor=rgb_1f1f9f}%
-\pspolygon[fillstyle=solid](1.1228,0.388846)(1.16806,0.339925)
- (1.20762,0.332598)(1.24529,0.327916)(1.18041,0.386614)
- (1.15222,0.387052)(1.1228,0.388846)
-\psset{fillcolor=cmy_7c7cff}%
-\psset{linecolor=rgb_1a1a82}%
-\pspolygon[fillstyle=solid](0.452538,0.361054)(0.336923,0.313416)
- (0.359168,0.34034)(0.38701,0.370633)(0.502743,0.387128)
- (0.47545,0.373217)(0.452538,0.361054)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](0.759855,0.427181)(0.669551,0.414914)
- (0.703026,0.417762)(0.739356,0.419062)(0.811811,0.424741)
- (0.784951,0.42616)(0.759855,0.427181)
-\psset{fillcolor=cmy_6e6eff}%
-\psset{linecolor=rgb_1c1c90}%
-\pspolygon[fillstyle=solid](1.06103,0.395505)(1.08409,0.360109)
- (1.1268,0.349318)(1.16806,0.339925)(1.1228,0.388846)
- (1.09234,0.391756)(1.06103,0.395505)
-\psset{fillcolor=cmy_7474ff}%
-\psset{linecolor=rgb_1b1b8a}%
-\pspolygon[fillstyle=solid](0.336923,0.313416)(0.221782,0.25564)
- (0.239289,0.303779)(0.263419,0.358433)(0.38701,0.370633)
- (0.359168,0.34034)(0.336923,0.313416)
-\psset{fillcolor=cmy_6767ff}%
-\psset{linecolor=rgb_1e1e97}%
-\pspolygon[fillstyle=solid](1.16806,0.339925)(1.21527,0.281861)
- (1.26458,0.264805)(1.31112,0.252497)(1.24529,0.327916)
- (1.20762,0.332598)(1.16806,0.339925)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](0.611934,0.40685)(0.502743,0.387128)
- (0.53466,0.401467)(0.571331,0.414834)(0.669551,0.414914)
- (0.639145,0.411067)(0.611934,0.40685)
-\psset{fillcolor=cmy_6d6dff}%
-\psset{linecolor=rgb_1d1d91}%
-\pspolygon[fillstyle=solid](0.221782,0.25564)(0.108805,0.186635)
- (0.116083,0.263023)(0.130252,0.351753)(0.263419,0.358433)
- (0.239289,0.303779)(0.221782,0.25564)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](0.811811,0.424741)(0.739356,0.419062)
- (0.778241,0.418391)(0.819298,0.415485)(0.869988,0.42019)
- (0.840235,0.422779)(0.811811,0.424741)
-\psset{fillcolor=cmy_7676ff}%
-\psset{linecolor=rgb_1b1b88}%
-\pspolygon[fillstyle=solid](0.996875,0.404353)(0.99567,0.382977)
- (1.04025,0.371574)(1.08409,0.360109)(1.06103,0.395505)
- (1.02913,0.399802)(0.996875,0.404353)
-\psset{fillcolor=cmy_7a7aff}%
-\psset{linecolor=rgb_1a1a84}%
-\pspolygon[fillstyle=solid](1.31393,0.130943)(1.36413,0.0350099)
- (1.43413,-0.0414045)(1.49747,-0.0982892)(1.43923,0.040527)
- (1.3792,0.0793428)(1.31393,0.130943)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](0.869988,0.42019)(0.819298,0.415485)
- (0.862077,0.410271)(0.906078,0.402876)(0.932427,0.413148)
- (0.900811,0.41696)(0.869988,0.42019)
-\psset{fillcolor=cmy_7b7bff}%
-\psset{linecolor=rgb_1a1a83}%
-\pspolygon[fillstyle=solid](0.932427,0.413148)(0.906078,0.402876)
- (0.950781,0.393616)(0.99567,0.382977)(0.996875,0.404353)
- (0.964546,0.408882)(0.932427,0.413148)
-\psset{fillcolor=cmy_7070ff}%
-\psset{linecolor=rgb_1c1c8e}%
-\pspolygon[fillstyle=solid](1.21527,0.281861)(1.26407,0.212769)
- (1.32218,0.181056)(1.3764,0.157338)(1.31112,0.252497)
- (1.26458,0.264805)(1.21527,0.281861)
-\psset{fillcolor=cmy_7676ff}%
-\psset{linecolor=rgb_1b1b88}%
-\pspolygon[fillstyle=solid](1.26407,0.212769)(1.31393,0.130943)
- (1.3792,0.0793428)(1.43923,0.040527)(1.3764,0.157338)
- (1.32218,0.181056)(1.26407,0.212769)
-\psset{fillcolor=cmy_7777ff}%
-\psset{linecolor=rgb_1b1b87}%
-\pspolygon[fillstyle=solid](1.08409,0.360109)(1.10888,0.325677)
- (1.1633,0.302583)(1.21527,0.281861)(1.16806,0.339925)
- (1.1268,0.349318)(1.08409,0.360109)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](0.669551,0.414914)(0.571331,0.414834)
- (0.612735,0.425841)(0.658661,0.43323)(0.739356,0.419062)
- (0.703026,0.417762)(0.669551,0.414914)
-\psset{fillcolor=cmy_7676ff}%
-\psset{linecolor=rgb_1b1b88}%
-\pspolygon[fillstyle=solid](0.502743,0.387128)(0.38701,0.370633)
- (0.42117,0.401992)(0.462221,0.431813)(0.571331,0.414834)
- (0.53466,0.401467)(0.502743,0.387128)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](0.99567,0.382977)(0.994341,0.37309)
- (1.05238,0.34969)(1.10888,0.325677)(1.08409,0.360109)
- (1.04025,0.371574)(0.99567,0.382977)
-\psset{fillcolor=cmy_7d7dff}%
-\psset{linecolor=rgb_191981}%
-\pspolygon[fillstyle=solid](0.739356,0.419062)(0.658661,0.43323)
- (0.708693,0.435991)(0.762219,0.433471)(0.819298,0.415485)
- (0.778241,0.418391)(0.739356,0.419062)
-\pspolygon[fillstyle=solid](1.10888,0.325677)(1.13571,0.293061)
- (1.20191,0.250812)(1.26407,0.212769)(1.21527,0.281861)
- (1.1633,0.302583)(1.10888,0.325677)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](0.906078,0.402876)(0.87651,0.412187)
- (0.935442,0.394373)(0.994341,0.37309)(0.99567,0.382977)
- (0.950781,0.393616)(0.906078,0.402876)
-\psset{fillcolor=cmy_7e7eff}%
-\psset{linecolor=rgb_191980}%
-\pspolygon[fillstyle=solid](0.819298,0.415485)(0.762219,0.433471)
- (0.818456,0.425453)(0.87651,0.412187)(0.906078,0.402876)
- (0.862077,0.410271)(0.819298,0.415485)
-\psset{fillcolor=cmy_6a6aff}%
-\psset{linecolor=rgb_1d1d94}%
-\pspolygon[fillstyle=solid](0.38701,0.370633)(0.263419,0.358433)
- (0.295756,0.416063)(0.337777,0.472291)(0.462221,0.431813)
- (0.42117,0.401992)(0.38701,0.370633)
-\psset{fillcolor=cmy_7272ff}%
-\psset{linecolor=rgb_1c1c8c}%
-\pspolygon[fillstyle=solid](0.571331,0.414834)(0.462221,0.431813)
- (0.51047,0.457371)(0.565855,0.476055)(0.658661,0.43323)
- (0.612735,0.425841)(0.571331,0.414834)
-\psset{fillcolor=cmy_7f7fff}%
-\psset{linecolor=rgb_19197f}%
-\pspolygon[fillstyle=solid](1.13571,0.293061)(1.16504,0.263219)
- (1.2427,0.193231)(1.31393,0.130943)(1.26407,0.212769)
- (1.20191,0.250812)(1.13571,0.293061)
-\pspolygon[fillstyle=solid](0.994341,0.37309)(0.99284,0.379708)
- (1.0658,0.336973)(1.13571,0.293061)(1.10888,0.325677)
- (1.05238,0.34969)(0.994341,0.37309)
-\pspolygon[fillstyle=solid](1.16504,0.263219)(1.19745,0.237271)
- (1.28572,0.129037)(1.36413,0.0350099)(1.31393,0.130943)
- (1.2427,0.193231)(1.16504,0.263219)
-\psset{fillcolor=cmy_7272ff}%
-\psset{linecolor=rgb_1c1c8c}%
-\pspolygon[fillstyle=solid](0.658661,0.43323)(0.565855,0.476055)
- (0.62787,0.485674)(0.695551,0.484744)(0.762219,0.433471)
- (0.708693,0.435991)(0.658661,0.43323)
-\psset{fillcolor=cmy_5d5dff}%
-\psset{linecolor=rgb_2020a1}%
-\pspolygon[fillstyle=solid](0.263419,0.358433)(0.130252,0.351753)
- (0.154241,0.448121)(0.191195,0.545437)(0.337777,0.472291)
- (0.295756,0.416063)(0.263419,0.358433)
-\psset{fillcolor=cmy_7b7bff}%
-\psset{linecolor=rgb_1a1a83}%
-\pspolygon[fillstyle=solid](0.87651,0.412187)(0.842212,0.450088)
- (0.917852,0.418332)(0.99284,0.379708)(0.994341,0.37309)
- (0.935442,0.394373)(0.87651,0.412187)
-\psset{fillcolor=cmy_7676ff}%
-\psset{linecolor=rgb_1b1b88}%
-\pspolygon[fillstyle=solid](0.762219,0.433471)(0.695551,0.484744)
- (0.767541,0.472718)(0.842212,0.450088)(0.87651,0.412187)
- (0.818456,0.425453)(0.762219,0.433471)
-\psset{fillcolor=cmy_6262ff}%
-\psset{linecolor=rgb_1f1f9c}%
-\pspolygon[fillstyle=solid](0.462221,0.431813)(0.337777,0.472291)
- (0.390602,0.522128)(0.454699,0.560441)(0.565855,0.476055)
- (0.51047,0.457371)(0.462221,0.431813)
-\psset{fillcolor=cmy_7c7cff}%
-\psset{linecolor=rgb_1a1a82}%
-\pspolygon[fillstyle=solid](0.99284,0.379708)(0.991097,0.4096)
- (1.08095,0.336955)(1.16504,0.263219)(1.13571,0.293061)
- (1.0658,0.336973)(0.99284,0.379708)
-\psset{fillcolor=cmy_6262ff}%
-\psset{linecolor=rgb_1f1f9c}%
-\pspolygon[fillstyle=solid](0.565855,0.476055)(0.454699,0.560441)
- (0.52964,0.582636)(0.613978,0.585437)(0.695551,0.484744)
- (0.62787,0.485674)(0.565855,0.476055)
-\psset{fillcolor=cmy_7474ff}%
-\psset{linecolor=rgb_1b1b8a}%
-\pspolygon[fillstyle=solid](0.842212,0.450088)(0.800716,0.529938)
- (0.896933,0.475736)(0.991097,0.4096)(0.99284,0.379708)
- (0.917852,0.418332)(0.842212,0.450088)
-\psset{fillcolor=cmy_6a6aff}%
-\psset{linecolor=rgb_1d1d94}%
-\pspolygon[fillstyle=solid](0.695551,0.484744)(0.613978,0.585437)
- (0.705338,0.567542)(0.800716,0.529938)(0.842212,0.450088)
- (0.767541,0.472718)(0.695551,0.484744)
-\psset{fillcolor=cmy_7878ff}%
-\psset{linecolor=rgb_1a1a86}%
-\pspolygon[fillstyle=solid](0.991097,0.4096)(0.989001,0.47266)
- (1.09845,0.354344)(1.19745,0.237271)(1.16504,0.263219)
- (1.08095,0.336955)(0.991097,0.4096)
-\psset{fillcolor=cmy_4f4fff}%
-\psset{linecolor=rgb_2323af}%
-\pspolygon[fillstyle=solid](0.337777,0.472291)(0.191195,0.545437)
- (0.244003,0.635089)(0.314618,0.707241)(0.454699,0.560441)
- (0.390602,0.522128)(0.337777,0.472291)
-\psset{fillcolor=cmy_6b6bff}%
-\psset{linecolor=rgb_1d1d93}%
-\pspolygon[fillstyle=solid](0.800716,0.529938)(0.747762,0.67368)
- (0.870898,0.582631)(0.989001,0.47266)(0.991097,0.4096)
- (0.896933,0.475736)(0.800716,0.529938)
-\psset{fillcolor=cmy_4f4fff}%
-\psset{linecolor=rgb_2323af}%
-\pspolygon[fillstyle=solid](0.454699,0.560441)(0.314618,0.707241)
- (0.403301,0.752297)(0.50809,0.762937)(0.613978,0.585437)
- (0.52964,0.582636)(0.454699,0.560441)
-\psset{fillcolor=cmy_5c5cff}%
-\psset{linecolor=rgb_2020a2}%
-\pspolygon[fillstyle=solid](0.613978,0.585437)(0.50809,0.762937)
- (0.624809,0.736041)(0.747762,0.67368)(0.800716,0.529938)
- (0.705338,0.567542)(0.613978,0.585437)
-\end{pspicture}%
diff --git a/graphics/epix/doc/plotting2.xp b/graphics/epix/doc/plotting2.xp
deleted file mode 100644
index 2a0ed661e5..0000000000
--- a/graphics/epix/doc/plotting2.xp
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P f(double r, double th)
-{
- return P(r*Cos(th), r*Sin(th), pow(r, 3)*Cos(3*th));
-}
-
-int main()
-{
- picture(P(-1,-1),P(1,1), "2x1in");
-
- begin();
-
- domain R(P(0,0), P(1, 2*M_PI), mesh(8,40), mesh(8,80));
-
- camera.at(3,1,2); // set the viewpoint
-
- arrow(P(0,0,0), P(1.25,0,0));
- arrow(P(0,0,0), P(0,1.25,0));
-
- plain(Blue(1.2));
- fill(Yellow()); // shade
- surface(f, R);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/doc/plotting3.eepic b/graphics/epix/doc/plotting3.eepic
deleted file mode 100644
index d61bee76c4..0000000000
--- a/graphics/epix/doc/plotting3.eepic
+++ /dev/null
@@ -1,146 +0,0 @@
-%% Generated from plotting3.xp on Tue Sep 25 18:08:09 EDT 2007 by
-%% ePiX-1.2.0
-%%
-%% Cartesian bounding box: [0,18.8496] x [-1,1]
-%% Actual size: 5 x 1in
-%% Figure offset: left by 0in, down by 0in
-%%
-%% usepackages epic,eepic,xcolor
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}%
-\xdefinecolor{rgb_0000ff}{rgb}{0,0,1}%
-\xdefinecolor{rgb_00ff00}{rgb}{0,1,0}%
-\xdefinecolor{rgb_3f00bf}{rgb}{0.247059,0,0.74902}%
-\xdefinecolor{rgb_7f007f}{rgb}{0.498039,0,0.498039}%
-\xdefinecolor{rgb_bf003f}{rgb}{0.74902,0,0.247059}%
-\setlength{\unitlength}{1in}%
-\begin{picture}(5,1)(0,0)%
-\path(0,0.5)(2.5,0.5)(5,0.5)
-\put(0,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}}
-\put(1.25,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}}
-\put(2.5,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}}
-\put(3.75,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}}
-\put(5,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}}
-\path(0,0)(0,0.5)(0,1)
-\put(0,0){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{6pt}{0.5pt}$}}}
-\put(0,1){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{6pt}{0.5pt}$}}}
-\allinethickness{0.8pt}%
-\color{rgb_00ff00}%
-\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654508)
- (0.125,0.726995)(0.166667,0.793893)(0.208333,0.853553)
- (0.25,0.904508)(0.291667,0.945503)(0.333333,0.975528)
- (0.375,0.993844)(0.416667,1)(0.458333,0.993844)(0.5,0.975528)
- (0.541667,0.945503)(0.583333,0.904508)(0.625,0.853553)
- (0.666667,0.793893)(0.708333,0.726995)(0.75,0.654508)
- (0.791667,0.578217)(0.833333,0.5)(0.875,0.421783)
- (0.916667,0.345492)(0.958333,0.273005)(1,0.206107)
- (1.04167,0.146447)(1.08333,0.0954915)(1.125,0.0544967)
- (1.16667,0.0244717)(1.20833,0.00615583)(1.25,0)(1.29167,0.00615583)
- (1.33333,0.0244717)(1.375,0.0544967)(1.41667,0.0954915)
- (1.45833,0.146447)(1.5,0.206107)(1.54167,0.273005)
- (1.58333,0.345492)(1.625,0.421783)(1.66667,0.5)(1.70833,0.578217)
- (1.75,0.654508)(1.79167,0.726995)(1.83333,0.793893)(1.875,0.853553)
- (1.91667,0.904508)(1.95833,0.945503)(2,0.975528)(2.04167,0.993844)
- (2.08333,1)(2.125,0.993844)(2.16667,0.975528)(2.20833,0.945503)
- (2.25,0.904508)(2.29167,0.853553)(2.33333,0.793893)(2.375,0.726995)
- (2.41667,0.654508)(2.45833,0.578217)(2.5,0.5)(2.54167,0.421783)
- (2.58333,0.345492)(2.625,0.273005)(2.66667,0.206107)
- (2.70833,0.146447)(2.75,0.0954915)(2.79167,0.0544967)
- (2.83333,0.0244717)(2.875,0.00615583)(2.91667,0)
- (2.95833,0.00615583)(3,0.0244717)(3.04167,0.0544967)
- (3.08333,0.0954915)(3.125,0.146447)(3.16667,0.206107)
- (3.20833,0.273005)(3.25,0.345492)(3.29167,0.421783)(3.33333,0.5)
- (3.375,0.578217)(3.41667,0.654508)(3.45833,0.726995)(3.5,0.793893)
- (3.54167,0.853553)(3.58333,0.904508)(3.625,0.945503)
- (3.66667,0.975528)(3.70833,0.993844)(3.75,1)(3.79167,0.993844)
- (3.83333,0.975528)(3.875,0.945503)(3.91667,0.904508)
- (3.95833,0.853553)(4,0.793893)(4.04167,0.726995)(4.08333,0.654508)
- (4.125,0.578217)(4.16667,0.5)(4.20833,0.421783)(4.25,0.345492)
- (4.29167,0.273005)(4.33333,0.206107)(4.375,0.146447)
- (4.41667,0.0954915)(4.45833,0.0544967)(4.5,0.0244717)
- (4.54167,0.00615583)(4.58333,0)(4.625,0.00615583)
- (4.66667,0.0244717)(4.70833,0.0544967)(4.75,0.0954915)
- (4.79167,0.146447)(4.83333,0.206107)(4.875,0.273005)
- (4.91667,0.345492)(4.95833,0.421783)(5,0.5)
-\color{rgb_bf003f}%
-\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654508)
- (0.125,0.726995)(0.166667,0.793893)(0.208333,0.853553)
- (0.25,0.904508)(0.291667,0.945503)(0.333333,0.975528)
- (0.375,0.993844)(0.416667,1)(0.458333,0.993844)(0.5,0.975528)
- (0.541667,0.945503)(0.583333,0.904508)(0.625,0.853553)
- (0.666667,0.793893)(0.708333,0.726995)(0.75,0.654508)
- (0.791667,0.578217)(0.833333,0.5)(0.875,0.421783)
- (0.916667,0.345492)(0.958333,0.273005)(1,0.206107)
- (1.04167,0.146447)(1.08333,0.0954915)(1.125,0.0544967)
- (1.16667,0.0244717)(1.20833,0.00615583)(1.25,0)(1.29167,0.00615583)
- (1.33333,0.0244717)(1.375,0.0544967)(1.41667,0.0954915)
- (1.45833,0.146447)(1.5,0.206107)(1.54167,0.273005)
- (1.58333,0.345492)(1.625,0.421783)(1.66667,0.5)(1.70833,0.578217)
- (1.75,0.654508)(1.79167,0.726995)(1.83333,0.793893)(1.875,0.853553)
- (1.91667,0.904508)(1.95833,0.945503)(2,0.975528)(2.04167,0.993844)
- (2.08333,1)(2.125,0.993844)(2.16667,0.975528)(2.20833,0.945503)
- (2.25,0.904508)(2.29167,0.853553)(2.33333,0.793893)(2.375,0.726995)
- (2.41667,0.654508)(2.45833,0.578217)(2.5,0.5)(2.54167,0.421783)
- (2.58333,0.345491)(2.625,0.273005)(2.66667,0.206107)
- (2.70833,0.146446)(2.75,0.0954902)(2.79167,0.0544945)
- (2.83333,0.0244679)(2.875,0.00614921)(2.91667,0)
- (2.95833,0.00613686)(3,0.02444)(3.04167,0.054444)
- (3.08333,0.0954044)(3.125,0.146304)(3.16667,0.205875)
- (3.20833,0.272628)(3.25,0.344886)(3.29167,0.420815)
- (3.33333,0.498463)(3.375,0.57579)(3.41667,0.650696)
- (3.45833,0.721039)(3.5,0.78464)(3.54167,0.839253)(3.58333,0.882522)
- (3.625,0.911868)(3.66667,0.924325)(3.70833,0.916271)(3.75,0.883026)
- (3.79167,0.818266)(3.83333,0.713166)(3.875,0.555181)
- (3.91667,0.326308)(3.95833,0.000641819)(3.95839,0)
-\color{rgb_7f007f}%
-\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654508)
- (0.125,0.726995)(0.166667,0.793893)(0.208333,0.853553)
- (0.25,0.904508)(0.291667,0.945503)(0.333333,0.975528)
- (0.375,0.993844)(0.416667,1)(0.458333,0.993844)(0.5,0.975528)
- (0.541667,0.945503)(0.583333,0.904508)(0.625,0.853553)
- (0.666667,0.793893)(0.708333,0.726995)(0.75,0.654508)
- (0.791667,0.578217)(0.833333,0.5)(0.875,0.421783)
- (0.916667,0.345492)(0.958333,0.273005)(1,0.206107)
- (1.04167,0.146447)(1.08333,0.0954915)(1.125,0.0544967)
- (1.16667,0.0244717)(1.20833,0.00615583)(1.25,0)(1.29167,0.00615583)
- (1.33333,0.0244717)(1.375,0.0544967)(1.41667,0.0954915)
- (1.45833,0.146447)(1.5,0.206107)(1.54167,0.273005)
- (1.58333,0.345492)(1.625,0.421783)(1.66667,0.5)(1.70833,0.578218)
- (1.75,0.654509)(1.79167,0.726996)(1.83333,0.793895)(1.875,0.853557)
- (1.91667,0.904515)(1.95833,0.945515)(2,0.975549)(2.04167,0.993881)
- (2.08291,1)
-\path(2.08376,1)(2.125,0.993951)(2.16667,0.975708)
- (2.20833,0.945803)(2.25,0.905003)(2.29167,0.854363)
- (2.33333,0.795206)(2.375,0.729106)(2.41667,0.657874)
- (2.45833,0.583539)(2.5,0.50835)(2.54167,0.434785)(2.58333,0.365591)
- (2.625,0.303858)(2.66667,0.253144)(2.70833,0.21768)(2.75,0.202677)
- (2.79167,0.214776)(2.83333,0.262697)(2.875,0.358157)
- (2.91667,0.51715)(2.95833,0.761732)(2.98586,1)
-\color{rgb_3f00bf}%
-\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654508)
- (0.125,0.726995)(0.166667,0.793893)(0.208333,0.853553)
- (0.25,0.904508)(0.291667,0.945503)(0.333333,0.975528)
- (0.375,0.993844)(0.416667,1)(0.458333,0.993844)(0.5,0.975528)
- (0.541667,0.945503)(0.583333,0.904508)(0.625,0.853553)
- (0.666667,0.793893)(0.708333,0.726995)(0.75,0.654508)
- (0.791667,0.578217)(0.833333,0.5)(0.875,0.421782)(0.916667,0.34549)
- (0.958333,0.273001)(1,0.206099)(1.04167,0.14643)(1.08333,0.0954587)
- (1.125,0.0544347)(1.16667,0.0243571)(1.20833,0.00594841)
- (1.24757,0)
-\path(1.2526,0)(1.29167,0.00551665)(1.33333,0.02338)
- (1.375,0.0526628)(1.41667,0.0924591)(1.45833,0.141506)
- (1.5,0.198171)(1.54167,0.260422)(1.58333,0.325792)(1.625,0.391305)
- (1.66667,0.453377)(1.70833,0.507659)(1.75,0.548813)
- (1.79167,0.570203)(1.83333,0.563454)(1.875,0.517876)
- (1.91667,0.419672)(1.95833,0.250906)(1.99812,0)
-\color{rgb_0000ff}%
-\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654509)
- (0.125,0.726996)(0.166667,0.793896)(0.208333,0.853572)
- (0.25,0.904573)(0.291667,0.945693)(0.333333,0.976009)
- (0.375,0.994933)(0.403805,1)
-\path(0.439996,1)(0.458333,0.998222)
- (0.5,0.983515)(0.541667,0.959373)(0.583333,0.927598)
- (0.625,0.890616)(0.666667,0.851521)(0.708333,0.814127)
- (0.75,0.783009)(0.791667,0.763557)(0.833333,0.762022)
- (0.875,0.785563)(0.916667,0.842295)(0.958333,0.941339)(0.974464,1)
-\end{picture}%
diff --git a/graphics/epix/doc/plotting3.xp b/graphics/epix/doc/plotting3.xp
deleted file mode 100644
index e5d1088978..0000000000
--- a/graphics/epix/doc/plotting3.xp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P sin_n(double x, double n) // Taylor polynomial of sin x
-{
- const int N((int) floor(n)); // convert y to an index bound
- const double sqx(-pow(x, 2)); // store -x^2 for efficiency
- double val(x), summand(x); // places to store results of evaluation
-
- // step through odd numbers from 1 to 2N+1
- for (int i=1; i <= 2*N+1; i += 2)
- {
- summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)!
- val += summand;
- }
-
- return P(x, val);
-}
-
-int main()
-{
- picture(P(0,-1),P(6*M_PI, 1), "5x1in");
-
- begin();
-
- set_crop();
- h_axis(4);
- v_axis(1);
-
- bold();
- green();
- plot(Sin, 0, xmax(), 120);
-
- domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(120, 40));
- for (int i=3; 0 <= i; --i)
- {
- rgb(0.25*i, 0, 1-0.25*i);
- plot(sin_n, R.slice2(5*i+1));
- }
-
- end();
-}
diff --git a/graphics/epix/doc/scaling.eepic b/graphics/epix/doc/scaling.eepic
deleted file mode 100644
index 0b6231c4ee..0000000000
--- a/graphics/epix/doc/scaling.eepic
+++ /dev/null
@@ -1,56 +0,0 @@
-%% Generated from scaling.xp on Sat Sep 1 14:17:35 EDT 2007 by
-%% ePiX-1.1.15
-%%
-%% Cartesian bounding box: [0,4] x [0,1]
-%% Actual size: 4 x 0.75in
-%% Figure offset: left by 0in, down by 0in
-%%
-%% usepackages epic,eepic,xcolor
-%%
-\xdefinecolor{rgb_000000}{rgb}{0,0,0}%
-\setlength{\unitlength}{1in}%
-\begin{picture}(4,0.75)(0,0)%
-\path(1.75,0.375)(2.75,0.375)
-\path(2.63584,0.359433)(2.66438,0.359433)
-\path(2.63584,0.364622)(2.69292,0.364622)
-\path(2.63584,0.369811)(2.72146,0.369811)
-\path(2.63584,0.375)(2.75,0.375)
-\path(2.63584,0.380189)(2.72146,0.380189)
-\path(2.63584,0.385378)(2.69292,0.385378)
-\path(2.63584,0.390567)(2.66438,0.390567)
-\path(2.74456,0.374012)(2.74456,0.375988)
-\path(2.73913,0.373023)(2.73913,0.376977)
-\path(2.73369,0.372035)(2.73369,0.377965)
-\path(2.72826,0.371047)(2.72826,0.378953)
-\path(2.72282,0.370058)(2.72282,0.379942)
-\path(2.71738,0.36907)(2.71738,0.38093)
-\path(2.71195,0.368081)(2.71195,0.381919)
-\path(2.70651,0.367093)(2.70651,0.382907)
-\path(2.70108,0.366105)(2.70108,0.383895)
-\path(2.69564,0.365116)(2.69564,0.384884)
-\path(2.6902,0.364128)(2.6902,0.385872)
-\path(2.68477,0.36314)(2.68477,0.38686)
-\path(2.67933,0.362151)(2.67933,0.387849)
-\path(2.6739,0.361163)(2.6739,0.388837)
-\path(2.66846,0.360175)(2.66846,0.389825)
-\path(2.66302,0.359186)(2.66302,0.390814)
-\path(2.65759,0.358198)(2.65759,0.391802)
-\path(2.65215,0.35721)(2.65215,0.39279)
-\path(2.64672,0.356221)(2.64672,0.393779)
-\path(2.64128,0.355233)(2.64128,0.394767)
-\path(2.63584,0.354244)(2.63584,0.395756)
-\path(2.63584,0.375)(2.63584,0.354244)(2.75,0.375)
- (2.63584,0.395756)(2.63584,0.375)
-\put(0.027674,0.121424){\makebox(0,0)[bl]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize $(x_\mathrm{min},y_\mathrm{min})$}}}}
-\put(0,0.09375){\makebox(0,0){\hbox{\color{rgb_000000}\scriptsize $\circle{0.0069185}\circle{0.013837}\circle{0.0207555}\circle{0.027674}$}}}
-\put(1.47233,0.722326){\makebox(0,0)[tr]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize $(x_\mathrm{max},y_\mathrm{max})$}}}}
-\put(1.5,0.75){\makebox(0,0){\hbox{\color{rgb_000000}\scriptsize $\circle{0.0069185}\circle{0.013837}\circle{0.0207555}\circle{0.027674}$}}}
-\put(0.75,0.038402){\makebox(0,0)[t]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize Canvas (virtual)}}}}
-\path(1.5,0.09375)(1.5,0.75)(0,0.75)(0,0.09375)(1.5,0.09375)
-\put(3.02767,0.121424){\makebox(0,0)[bl]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize $(0,0)$}}}}
-\put(3,0.09375){\makebox(0,0){\hbox{\color{rgb_000000}\scriptsize $\circle{0.0069185}\circle{0.013837}\circle{0.0207555}\circle{0.027674}$}}}
-\put(3.97233,0.628576){\makebox(0,0)[tr]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize $(h_\mathrm{size}, v_\mathrm{size})$}}}}
-\put(4,0.65625){\makebox(0,0){\hbox{\color{rgb_000000}\scriptsize $\circle{0.0069185}\circle{0.013837}\circle{0.0207555}\circle{0.027674}$}}}
-\put(3.5,0.038402){\makebox(0,0)[t]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize Page (actual)}}}}
-\path(4,0.09375)(4,0.65625)(3,0.65625)(3,0.09375)(4,0.09375)
-\end{picture}%
diff --git a/graphics/epix/doc/scaling.xp b/graphics/epix/doc/scaling.xp
deleted file mode 100644
index 7d243caabc..0000000000
--- a/graphics/epix/doc/scaling.xp
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(0,0), P(4,1), "4x0.75in");
-
- begin();
-
- font_size("scriptsize");
-
- screen canv(P(0,0), P(1,1));
- activate(canv);
-
- border();
- ddot(canv.bl(), P(2,2), "$(x_\\mathrm{min},y_\\mathrm{min})$", tr);
- ddot(canv.tr(), P(-2,-2), "$(x_\\mathrm{max},y_\\mathrm{max})$", bl);
- label(canv.b(), P(0,-4), "Canvas (virtual)", b);
- deactivate(canv);
-
- screen pg(P(0,0), P(1,1));
- activate(pg);
-
- border();
- ddot(pg.bl(), P(2,2), "$(0,0)$", tr);
- ddot(pg.tr(), P(-2,-2), "$(h_\\mathrm{size}, v_\\mathrm{size})$", bl);
- label(pg.b(), P(0,-4), "Page (actual)", b);
- deactivate(pg);
-
- arrow(P(1.75, 0.5), P(2.75,0.5));
-
- inset(canv, P(0,0.125), P(1.5, 1));
- inset(pg, P(3,0.125), P(4,0.875));
-
- end();
-}
diff --git a/graphics/epix/doc/sgn.eepic b/graphics/epix/doc/sgn.eepic
deleted file mode 100644
index 0aafc5d5af..0000000000
--- a/graphics/epix/doc/sgn.eepic
+++ /dev/null
@@ -1,30 +0,0 @@
-%% Generated from sgn.xp on Tue Jan 4 15:32:30 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [-2,2] x [-1,1]
-%% Actual size: 1.5in x 0.75in
-%% Figure offset: right by 0in, up by 0in
-%%
-\setlength{\unitlength}{1in}
-\begin{picture}(1.5,0.75)(-0,-0)
-%% ---
-\path(0,0.375)(1.5,0.375)
-\put(0,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(0.375,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(0.75,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(1.125,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(1.5,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-%% ---
-\path(0.75,0)(0.75,0.75)
-\put(0.75,0){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}}
-\put(0.75,0.75){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}}
-%% ---
-\thicklines
-\path(0,0)(0.75,0)
-\path(1.5,0.75)(0.75,0.75)
-\thinlines
-\put(0.75,0.375){\makebox(0,0)[c]{{\circle*{0.041511}}}}
-\whiten\put(0.75,0){\makebox(0,0)[c]{{\circle{0.041511}}}}
-\whiten\put(0.75,0.75){\makebox(0,0)[c]{{\circle{0.041511}}}}
-\put(0.75,-0.055348){\makebox(0,0)[t]{\code{sgn}}}
-\end{picture}
diff --git a/graphics/epix/doc/sgn.xp b/graphics/epix/doc/sgn.xp
deleted file mode 100644
index 5296973ba4..0000000000
--- a/graphics/epix/doc/sgn.xp
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- bounding_box(P(-2,-1),P(2,1));
- unitlength("1in");
- picture(1.5,0.75);
-
- begin();
-
- h_axis(4);
- v_axis(1);
-
- bold();
- line(P(x_min,-1), P(0,-1));
- line(P(x_max, 1), P(0, 1));
-
- plain();
- dot(P(0,0));
- circ(P(0,-1));
- circ(P(0,1));
-
- label(P(0,y_min), P(0,-4), "\\code{sgn}", b);
-
- end();
-}
diff --git a/graphics/epix/doc/sinx.eepic b/graphics/epix/doc/sinx.eepic
deleted file mode 100644
index c62bf19e00..0000000000
--- a/graphics/epix/doc/sinx.eepic
+++ /dev/null
@@ -1,40 +0,0 @@
-%% Generated from sinx.xp on Tue Jan 4 15:32:32 EST 2005 by
-%% ePiX-1.0.3
-%%
-%% Cartesian bounding box: [-2,2] x [-1,1]
-%% Actual size: 1.5in x 0.75in
-%% Figure offset: right by 0in, up by 0in
-%%
-\setlength{\unitlength}{1in}
-\begin{picture}(1.5,0.75)(-0,-0)
-%% ---
-\path(0,0.375)(1.5,0.375)
-\put(0,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(0.375,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(0.75,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(1.125,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-\put(1.5,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}}
-%% ---
-\path(0.75,0)(0.75,0.75)
-\put(0.75,0){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}}
-\put(0.75,0.75){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}}
-%% ---
-\thicklines
-\path(0,0.375)(0.025,0.362444)(0.05,0.351239)(0.075,0.343466)(0.1,0.340756)
- (0.125,0.343988)(0.15,0.353074)(0.175,0.366907)(0.2,0.383461)
- (0.225,0.400058)(0.25,0.413765)(0.275,0.42186)(0.3,0.422302)
- (0.325,0.414135)(0.35,0.397758)(0.375,0.375)(0.4,0.348991)
- (0.425,0.323823)(0.45,0.304047)(0.475,0.29406)(0.5,0.297469)
- (0.525,0.316532)(0.55,0.351733)(0.575,0.40159)(0.6,0.462702)
- (0.625,0.530061)(0.65,0.597586)(0.675,0.65881)(0.7,0.707649)
- (0.725,0.73913)(0.75,0.75)(0.775,0.73913)(0.8,0.707649)(0.825,0.65881)
- (0.85,0.597586)(0.875,0.530061)(0.9,0.462702)(0.925,0.40159)
- (0.95,0.351733)(0.975,0.316532)(1,0.297469)(1.025,0.29406)(1.05,0.304047)
- (1.075,0.323823)(1.1,0.348991)(1.125,0.375)(1.15,0.397758)
- (1.175,0.414135)(1.2,0.422302)(1.225,0.42186)(1.25,0.413765)
- (1.275,0.400058)(1.3,0.383461)(1.325,0.366907)(1.35,0.353074)
- (1.375,0.343988)(1.4,0.340756)(1.425,0.343466)(1.45,0.351239)
- (1.475,0.362444)(1.5,0.375)
-\path(1.5,0.375)
-\put(0.75,-0.055348){\makebox(0,0)[t]{\code{sinx}}}
-\end{picture}
diff --git a/graphics/epix/doc/sinx.xp b/graphics/epix/doc/sinx.xp
deleted file mode 100644
index 62c08bbc48..0000000000
--- a/graphics/epix/doc/sinx.xp
+++ /dev/null
@@ -1,23 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- bounding_box(P(-2,-1),P(2,1));
- unitlength("1in");
- picture(1.5,0.75);
-
- begin();
- revolutions();
-
- h_axis(4);
- v_axis(1);
-
- bold();
- plot(sinx, x_min, x_max, 60);
-
- label(P(0,y_min), P(0,-4), "\\code{sinx}", b);
-
- end();
-}
diff --git a/graphics/epix/doc/slices.eepic b/graphics/epix/doc/slices.eepic
deleted file mode 100644
index 4aebe69de4..0000000000
--- a/graphics/epix/doc/slices.eepic
+++ /dev/null
@@ -1,45 +0,0 @@
-%% Generated from slices.xp on Sun Dec 31 13:11:11 EST 2006 by
-%% ePiX-1.0.22
-%%
-%% Cartesian bounding box: [0,7] x [0,2]
-%% Actual size: 5in x 0.75in
-%% Figure offset: right by 0in, up by 0in
-%%
-\setlength{\unitlength}{1in}
-\begin{picture}(5,0.75)(-0,-0)
-%% ---
-\thicklines
-\path(0,0)(0,0.75)
-\path(0.178571,0)(0.178571,0.75)
-\path(0.357143,0)(0.357143,0.75)
-\path(0.535714,0)(0.535714,0.75)
-\path(0.714286,0)(0.714286,0.75)
-\path(0.892857,0)(0.892857,0.75)
-\path(1.07143,0)(1.07143,0.75)
-\path(1.25,0)(1.25,0.75)
-\path(1.42857,0)(1.42857,0.75)
-\path(0,0)(1.42857,0)
-\path(0,0.107143)(1.42857,0.107143)
-\path(0,0.214286)(1.42857,0.214286)
-\path(0,0.321429)(1.42857,0.321429)
-\path(0,0.428571)(1.42857,0.428571)
-\path(0,0.535714)(1.42857,0.535714)
-\path(0,0.642857)(1.42857,0.642857)
-\path(0,0.75)(1.42857,0.75)
-\put(0.714286,-0.055348){\makebox(0,0)[t]{\code{R}}}
-\path(1.78571,0)(1.78571,0.75)
-\path(1.96429,0)(1.96429,0.75)
-\path(2.14286,0)(2.14286,0.75)
-\path(2.32143,0)(2.32143,0.75)
-\path(2.5,0)(2.5,0.75)
-\path(2.67857,0)(2.67857,0.75)
-\path(2.85714,0)(2.85714,0.75)
-\path(3.03571,0)(3.03571,0.75)
-\path(3.21429,0)(3.21429,0.75)
-\put(2.5,-0.055348){\makebox(0,0)[t]{\code{R.slices1()}}}
-\path(3.57143,0)(5,0)
-\path(3.57143,0.25)(5,0.25)
-\path(3.57143,0.5)(5,0.5)
-\path(3.57143,0.75)(5,0.75)
-\put(4.28571,-0.055348){\makebox(0,0)[t]{\code{R.slices2(3)}}}
-\end{picture}
diff --git a/graphics/epix/doc/slices.xp b/graphics/epix/doc/slices.xp
deleted file mode 100644
index c67dddf876..0000000000
--- a/graphics/epix/doc/slices.xp
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-void my_grid(const P& loc, int N1, int N2, std::string lab)
-{
- if (0 < N1)
- {
- const double dx(1.0/N1);
- for (int i=-N1; i<= N1; ++i)
- line(loc+P(i*dx,0), loc+P(i*dx,2));
- }
-
- if (0 < N2)
- {
- const double dy(1.0/N2);
- for (int i=0; i<= N2; ++i)
- line(loc+P(-1,2*i*dy), loc+P(1,2*i*dy));
- }
-
- label(loc, P(0,-4), "\\code{"+lab+"}", b);
-}
-
-int main()
-{
- bounding_box(P(0,0),P(7,2));
- unitlength("1in");
- picture(5,0.75);
-
- begin();
-
- bold();
-
- my_grid(P(1,0), 4, 7, "R");
- my_grid(P(3.5,0), 4, 0, "R.slices1()");
- my_grid(P(6,0), 0, 3, "R.slices2(3)");
-
- end();
-}
diff --git a/graphics/epix/domain.cc b/graphics/epix/domain.cc
deleted file mode 100644
index cbb86a4d42..0000000000
--- a/graphics/epix/domain.cc
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * domain.cc -- ePiX domain slicing operations
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August09, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-#include <list>
-#include <iostream>
-
-#include "constants.h"
-#include "triples.h"
-#include "functions.h"
-
-#include "domain.h"
-
-namespace ePiX {
-
- typedef std::list<domain>::const_iterator dolci;
- const double EPS(EPIX_EPSILON);
-
- mesh::mesh(int n1, int n2, int n3)
- : n_1((int)max(1, fabs(n1))),
- n_2((int)max(1, fabs(n2))),
- n_3((int)max(1, fabs(n3))) { }
-
- mesh::mesh(int n)
- : n_1((int)max(1, fabs(n))),
- n_2((int)max(1, fabs(n))),
- n_3((int)max(1, fabs(n))) { }
-
- mesh::mesh() : n_1(1), n_2(1), n_3(1) { }
-
-
- domain::domain(const P& arg1, const P& arg2, const mesh& c, const mesh& f)
- : m_corner1(arg1), m_corner2(arg2)
- {
- int c1(c.n1()), c2(c.n2()), c3(c.n3());
- int f1(f.n1()), f2(f.n2()), f3(f.n3());
-
- if (m_corner1.x1() == m_corner2.x1()) { c1 = f1 = 1; }
- if (m_corner1.x2() == m_corner2.x2()) { c2 = f2 = 1; }
- if (m_corner1.x3() == m_corner2.x3()) { c3 = f3 = 1; }
-
- m_coarse = mesh(c1,c2,c3);
- m_fine = mesh(f1,f2,f3);
- }
-
- domain::domain(const P& arg1, const P& arg2, const mesh& c)
- : m_corner1(arg1), m_corner2(arg2)
- {
- int c1(c.n1()), c2(c.n2()), c3(c.n3());
-
- if (m_corner1.x1() == m_corner2.x1()) { c1 = 1; }
- if (m_corner1.x2() == m_corner2.x2()) { c2 = 1; }
- if (m_corner1.x3() == m_corner2.x3()) { c3 = 1; }
-
- m_coarse = mesh(c1,c2,c3);
- m_fine = mesh(c1,c2,c3);
- }
-
- // 1-dim'l domain
- domain::domain(double t_min, double t_max, int num_pts)
- : m_corner1(t_min), m_corner2(t_max), m_coarse(num_pts), m_fine(num_pts)
- { }
-
-
- int domain::dim() const
- {
- int D(0);
- if (fabs(m_corner2.x1() - m_corner1.x1()) > EPIX_EPSILON)
- ++D;
- if (fabs(m_corner2.x2() - m_corner1.x2()) > EPIX_EPSILON)
- ++D;
- if (fabs(m_corner2.x3() - m_corner1.x3()) > EPIX_EPSILON)
- ++D;
-
- return D;
- }
-
- double domain::step1() const
- {
- return (m_corner2.x1() - m_corner1.x1())/m_coarse.n1();
- }
-
- double domain::step2() const
- {
- return (m_corner2.x2() - m_corner1.x2())/m_coarse.n2();
- }
-
- double domain::step3() const
- {
- return (m_corner2.x3() - m_corner1.x3())/m_coarse.n3();
- }
-
- double domain::dx1() const
- {
- return (m_corner2.x1() - m_corner1.x1())/m_fine.n1();
- }
-
- double domain::dx2() const
- {
- return (m_corner2.x2() - m_corner1.x2())/m_fine.n2();
- }
-
- double domain::dx3() const
- {
- return (m_corner2.x3() - m_corner1.x3())/m_fine.n3();
- }
-
-
- // resizing attempts to preserve real resolution
- domain domain::resize1(double a1, double b1) const
- {
- P new_corner1(a1, m_corner1.x2(), m_corner1.x3());
- P new_corner2(b1, m_corner2.x2(), m_corner2.x3());
-
- // hack to avoid spurious round-down; should never cause round-up
- double ratio((b1-a1)/(m_corner2.x1()-m_corner1.x1()) + EPS);
- mesh new_c((int)floor(ratio*m_coarse.n1()), m_coarse.n2(), m_coarse.n3());
- mesh new_f((int)floor(ratio*m_fine.n1()), m_fine.n2(), m_fine.n3());
-
- if (step1() == 0)
- {
- new_c = mesh(1, m_coarse.n2(), m_coarse.n3());
- new_f = mesh(1, m_fine.n2(), m_fine.n3());
- }
-
- return domain(new_corner1, new_corner2, new_c, new_f);
- }
-
- domain domain::resize2(double a2, double b2) const
- {
- P new_corner1(m_corner1.x1(), a2, m_corner1.x3());
- P new_corner2(m_corner2.x1(), b2, m_corner2.x3());
-
- double ratio((b2-a2)/(m_corner2.x2()-m_corner1.x2()) + EPS);
- mesh new_c(m_coarse.n1(), (int)floor(ratio*m_coarse.n2()), m_coarse.n3());
- mesh new_f( m_fine.n1(), (int)floor(ratio*m_fine.n2()), m_fine.n3());
-
- if (step2() == 0)
- {
- new_c = mesh(m_coarse.n1(), 1, m_coarse.n3());
- new_f = mesh( m_fine.n1(), 1, m_fine.n3());
- }
-
- return domain(new_corner1, new_corner2, new_c, new_f);
- }
-
- domain domain::resize3(double a3, double b3) const
- {
- P new_corner1(m_corner1.x1(), m_corner1.x2(), a3);
- P new_corner2(m_corner2.x1(), m_corner2.x2(), b3);
-
- double ratio((b3-a3)/(m_corner2.x3()-m_corner1.x3()) + EPS);
- mesh new_c(m_coarse.n1(), m_coarse.n2(), (int)floor(ratio*m_coarse.n3()));
- mesh new_f( m_fine.n1(), m_fine.n2(), (int)floor(ratio*m_fine.n3()));
-
- if (step3() == 0)
- {
- new_c = mesh(m_coarse.n1(), m_coarse.n2(), 1);
- new_f = mesh( m_fine.n1(), m_fine.n2(), 1);
- }
-
- return domain(new_corner1, new_corner2, new_c, new_f);
- }
-
-
- // "snip_to" is defined in functions.h and performs the "obvious"
- // truncation: snip_to(x, a, b) = x, min(a,b), or max(a,b)
-
- // one slice
- domain domain::slice1(double a1) const
- {
- a1 = snip_to(a1, m_corner1.x1(), m_corner2.x1());
-
- return domain(P(a1, m_corner1.x2(), m_corner1.x3()),
- P(a1, m_corner2.x2(), m_corner2.x3()),
- mesh(1, m_coarse.n2(), m_coarse.n3()),
- mesh(1, m_fine.n2(), m_fine.n3()));
- }
-
- domain domain::slice2(double a2) const
- {
- a2 = snip_to(a2, m_corner1.x2(), m_corner2.x2());
-
- return domain(P(m_corner1.x1(), a2, m_corner1.x3()),
- P(m_corner2.x1(), a2, m_corner2.x3()),
- mesh(m_coarse.n1(), 1, m_coarse.n3()),
- mesh( m_fine.n1(), 1, m_fine.n3()));
- }
-
- domain domain::slice3(double a3) const
- {
- a3 = snip_to(a3, m_corner1.x3(), m_corner2.x3());
-
- return domain(P(m_corner1.x1(), m_corner1.x2(), a3),
- P(m_corner2.x1(), m_corner2.x2(), a3),
- mesh(m_coarse.n1(), m_coarse.n2(), 1),
- mesh( m_fine.n1(), m_fine.n2(), 1));
- }
-
-
- // coordinate slices
- std::list<domain> domain::slices1(const unsigned int n) const
- {
- unsigned int N(m_coarse.n1());
- double du(step1());
-
- if (n > 0)
- {
- du *= N*1.0/n;
- N = n;
- }
-
- std::list<domain> val;
-
- for (unsigned int i=0; i <= N; ++i)
- val.push_back(slice1(m_corner1.x1() + i*du));
-
- return val;
- }
-
- std::list<domain> domain::slices2(const unsigned int n) const
- {
- unsigned int N(m_coarse.n2());
- double du(step2());
-
- if (n > 0)
- {
- du *= N*1.0/n;
- N = n;
- }
-
- std::list<domain> val;
-
- for (unsigned int i=0; i <= N; ++i)
- val.push_back(slice2(m_corner1.x2() + i*du));
-
- return val;
- }
-
- std::list<domain> domain::slices3(const unsigned int n) const
- {
- unsigned int N(m_coarse.n3());
- double du(step3());
-
- if (n > 0)
- {
- du *= N*1.0/n;
- N = n;
- }
-
- std::list<domain> val;
-
- for (unsigned int i=0; i <= N; ++i)
- val.push_back(slice3(m_corner1.x3() + i*du));
-
- return val;
- }
-
- P domain::corner1() const
- {
- return m_corner1;
- }
- P domain::corner2() const
- {
- return m_corner2;
- }
-
- double domain::corner1_x1() const
- {
- return m_corner1.x1();
- }
- double domain::corner1_x2() const
- {
- return m_corner1.x2();
- }
- double domain::corner1_x3() const
- {
- return m_corner1.x3();
- }
-
- double domain::corner2_x1() const
- {
- return m_corner2.x1();
- }
- double domain::corner2_x2() const
- {
- return m_corner2.x2();
- }
- double domain::corner2_x3() const
- {
- return m_corner2.x3();
- }
-
-
- int domain::coarse_n1() const
- {
- return m_coarse.n1();
- }
- int domain::coarse_n2() const
- {
- return m_coarse.n2();
- }
- int domain::coarse_n3() const
- {
- return m_coarse.n3();
- }
-
- int domain::fine_n1() const
- {
- return m_fine.n1();
- }
- int domain::fine_n2() const
- {
- return m_fine.n2();
- }
- int domain::fine_n3() const
- {
- return m_fine.n3();
- }
-
-
- domain_list::domain_list(std::list<domain> arg)
- : m_list(arg) { }
-
- domain_list& domain_list::add(const domain& arg)
- {
- m_list.push_back(arg);
- return *this;
- }
-
- domain_list& domain_list::add(const domain_list& arg)
- {
- // Less efficient than m_list.splice(m_list.end(), arg), but preserves arg
- for (dolci p=arg.m_list.begin(); p != arg.m_list.end(); ++p)
- m_list.push_back(*p);
-
- return *this;
- }
-} // end of namespace
diff --git a/graphics/epix/domain.h b/graphics/epix/domain.h
deleted file mode 100644
index d0b2bf70ea..0000000000
--- a/graphics/epix/domain.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * domain.h -- ePiX mesh and domain classes
- *
- * This file is part of ePiX, a preprocessor for creating high-quality
- * line figures in LaTeX
- *
- * Version 1.1.6
- * Last Change: July 04, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_DOMAIN
-#define EPIX_DOMAIN
-
-#include <list>
-
-#include "triples.h"
-#include "functions.h"
-
-namespace ePiX {
-
- class mesh {
- public:
- mesh(int n1, int n2, int n3=1);
- mesh(int n); // mesh(n, n, n);
- mesh(); // mesh(1, 1, 1);
-
- int n1() const { return n_1; }
- int n2() const { return n_2; }
- int n3() const { return n_3; }
-
- private:
- int n_1;
- int n_2;
- int n_3;
- }; // end of class mesh
-
- // A domain is a gridded coordinate box with specified corners
- // and coarse/fine meshes, used for plotting. The "coarse" step
- // sizes are step1, etc., and the "fine" step sizes are dx1, etc.
- // Steps may be negative.
- //
- // A domain may be "sliced" by setting one of its coordinates to
- // a specified constant.
- //
- // Data members are public for convenience; each member ensures
- // its own well-constructedness.
- //
- class domain {
- public:
- domain(const P& arg1, const P& arg2, const mesh& c, const mesh& f);
- domain(const P& arg1, const P& arg2, const mesh& c);
-
- // 1-dim'l domain
- domain(double t_min, double t_max, int num_pts);
-
- int dim() const; // dimension
-
- // big and small steps
- double step1() const;
- double step2() const;
- double step3() const;
-
- double dx1() const;
- double dx2() const;
- double dx3() const;
-
- // resizing attempts to preserve real resolution
- domain resize1(double a1, double b1) const;
- domain resize2(double a2, double b2) const;
- domain resize3(double a3, double b3) const;
-
- // coordinate slices
- domain slice1(double a1) const;
- domain slice2(double a2) const;
- domain slice3(double a3) const;
-
- // "n=0": use number from coarse mesh
- std::list<domain> slices1(const unsigned int n=0) const;
- std::list<domain> slices2(const unsigned int n=0) const;
- std::list<domain> slices3(const unsigned int n=0) const;
-
- // state functions for internal use
- P corner1() const;
- P corner2() const;
-
- double corner1_x1() const;
- double corner1_x2() const;
- double corner1_x3() const;
-
- double corner2_x1() const;
- double corner2_x2() const;
- double corner2_x3() const;
-
- int coarse_n1() const;
- int coarse_n2() const;
- int coarse_n3() const;
-
- int fine_n1() const;
- int fine_n2() const;
- int fine_n3() const;
-
- private:
- P m_corner1;
- P m_corner2;
- mesh m_coarse;
- mesh m_fine;
- }; // end of class domain
-
- class domain_list {
- public:
- domain_list(std::list<domain>); // implicitly converts "slices" output
- domain_list& add(const domain&);
- domain_list& add(const domain_list&);
-
- std::list<domain> m_list; // public: we're a simple wrapper
- }; // end of class domain_list
-} // end of namespace
-
-#endif /* EPIX_DOMAIN */
diff --git a/graphics/epix/edge_data.h b/graphics/epix/edge_data.h
deleted file mode 100644
index 60d7a8bf56..0000000000
--- a/graphics/epix/edge_data.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * edge_data.h -- ePiX::edge implementation classes for polyline/polygon
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_EDGE_DATA
-#define EPIX_EDGE_DATA
-#include <algorithm>
-
-#include "triples.h"
-#include "pairs.h"
-
-namespace ePiX {
-
- // basic edge data: ordered endpoints and visibility flag
- template<typename T> class edge_data {
- public:
- edge_data(const T& fm, const T& to, bool seen)
- : m_tail(fm), m_head(to), m_seen(seen) { }
-
- T tail() const { return m_tail; }
- T head() const { return m_head; }
- bool is_seen() const { return m_seen; }
- bool is_null() const { return m_tail == m_head; }
-
- edge_data& reverse()
- {
- std::swap(m_tail, m_head);
- return *this;
- }
-
- double length() const
- {
- return norm(m_head - m_tail);
- }
-
- void seen(bool S) { m_seen=S; }
-
- private:
- T m_tail;
- T m_head;
- bool m_seen;
- };
-
- typedef edge_data<P> edge3d;
- typedef edge_data<pair> edge2d;
-} // end of namespace
-
-#endif /* EPIX_EDGE_DATA */
diff --git a/graphics/epix/eepic.cc b/graphics/epix/eepic.cc
deleted file mode 100644
index eaed35a653..0000000000
--- a/graphics/epix/eepic.cc
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * eepic.cc -- ePiX's eepic output format
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-#include <list>
-
-#include <string>
-#include <sstream>
-
-#include <set> // for pallet
-
-#include "constants.h"
-
-#include "functions.h"
-
-#include "pairs.h"
-#include "edge_data.h"
-
-#include "Color.h"
-
-#include "path_style.h"
-#include "pen_data.h"
-
-#include "hatching.h"
-
-#include "format.h"
-#include "eepic.h"
-
-namespace ePiX {
-
- // rotate successive hatches this much to avoid parallelity
- const double d_hatch_theta(111.24612); // ~90*(sqrt(5)-1)
-
- eepic::eepic()
- : m_ink(Black()), m_nib(PLAIN_WIDTH), m_hatch(0) { }
-
- eepic* eepic::clone() const
- {
- return new eepic(*this);
- }
-
- // Filled region with specified Cartesian edges, offset, and color
- std::string eepic::print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fc,
- const pen_data& line,
- const std::string& len) const
- {
- std::stringstream obuf;
-
- // set angle
- const double hatch_angle(m_hatch);
- m_hatch += d_hatch_theta;
-
- // draw hatch lines separated by pen.width(), actual line width
- // scaled by density
- double dens(fc.alpha()); // transparency
- if (dens < EPIX_EPSILON)
- return "";
-
- // else
- length hatch_width(length(PLAIN_WIDTH).to(len));
-
- path_state style; // solid
-
- if (EPIX_EPSILON < dens*hatch_width.magnitude())
- {
- // Use fill color, draw thin lines to simulate transparency.
- // Area covered by double-hatching is (supposed to be) dens.
- pen_data fill_pen(fc, (1-sqrt(1-dens))*hatch_width);
-
- // draw hatch-filled edges
- hatch_data bd1(hatch_angle, hatch_width.magnitude(), edges);
- for (unsigned int i=0; i < bd1.data().size(); ++i)
- obuf << format::print_line(bd1.data().at(i), offset,
- fill_pen, style, std::string(""), len);
-
- // re-draw hatch lines at right angles...
- hatch_data bd2(hatch_angle+90, hatch_width.magnitude(), edges);
- for (unsigned int i=0; i < bd2.data().size(); ++i)
- obuf << format::print_line(bd2.data().at(i), offset,
- fill_pen, style, "", len);
- }
-
- obuf << set_pen_state(line);
- obuf << print_paths(edges, offset, "", len);
-
- return obuf.str();
- } // end of eepic::print_fill()
-
-
- // may assume line is visible
- std::string eepic::print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line,
- const pen_data& base,
- const path_state& style,
- const std::string& len) const
- {
- std::string value;
-
- // draw *solid* base first if necessary
- if (line.width() < base.width() && !base.color().is_unset())
- value += format::print_line(edges, offset, base, path_state(), "", len);
-
- return value += format::print_line(edges, offset, line, style, "", len);
- }
-
-
- std::string eepic::print_color(const std::string& model,
- const std::string& name,
- double d1, double d2, double d3) const
- {
- return format::xdefinecolor(model, name, d1, d2, d3);
- }
-
- std::string eepic::print_color(const std::string& model,
- const std::string& name,
- double d1, double d2,
- double d3, double d4) const
- {
- return format::xdefinecolor(model, name, d1, d2, d3, d4);
- }
-
- // one-line comment
- std::string eepic::print_comment(const std::string& msg) const
- {
- std::stringstream obuf;
- obuf << "%% " << msg << std::endl;
-
- return obuf.str();
- }
-
- // verbatim string, newline protected
- std::string eepic::print_verbatim(const std::string& msg) const
- {
- std::stringstream obuf;
- obuf << msg << "%" << std::endl;
-
- return obuf.str();
- }
-
- void eepic::reset_state() const
- {
- m_ink = Neutral();
- m_nib = length(0);
- }
-
-
- //// private member functions ////
- std::string eepic::start_picture(const pair& sz, const pair& offset) const
- {
- std::stringstream obuf;
- obuf << "\\begin{picture}"
- << format::print(sz) << format::print(-offset) << "%" << std::endl;
-
- return obuf.str();
- }
-
- std::string eepic::end_picture() const
- {
- std::stringstream obuf;
- obuf << "\\end{picture}%" << std::endl;
- return obuf.str();
- }
-
- std::string eepic::set_unitlength(const std::string& len) const
- {
- std::stringstream obuf;
-
- obuf << "\\setlength{\\unitlength}{1" << len << "}%" << std::endl;
-
- return obuf.str();
- }
-
-
- std::string eepic::usepackages() const
- {
- return "usepackages epic,eepic,xcolor";
- }
-
- // string argument for passing attributes local to this path/loop
- std::string eepic::start_open_path(const std::string& attribs) const
- {
- return "\\path";
- }
-
- std::string eepic::end_open_path(const std::string& attribs) const
- {
- std::stringstream obuf;
- obuf << std::endl;
- return obuf.str();
- }
-
- std::string eepic::start_closed_path(const std::string& attribs) const
- {
- return "\\path";
- }
-
- std::string eepic::end_closed_path(const std::string& attribs) const
- {
- std::stringstream obuf;
- obuf << std::endl;
- return obuf.str();
- }
-
- std::string eepic::set_fill_state(const Color& col) const // unused
- {
- std::stringstream obuf;
-
- if (m_ink != col)
- {
- m_ink = col;
- obuf << "\\color{" << m_ink.name() << "}%" << std::endl;
- }
-
- return obuf.str();
- }
-
- std::string eepic::set_pen_state(const pen_data& pen) const
- {
- std::stringstream obuf;
-
- if (m_nib != pen.width())
- {
- m_nib = pen.width();
- obuf << "\\allinethickness{" << m_nib.name() << "}%" << std::endl;
- }
-
- if (m_ink != pen.color())
- {
- m_ink = pen.color();
- obuf << "\\color{" << m_ink.name() << "}%" << std::endl;
- }
-
- return obuf.str();
- }
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- std::string eepic::put_box(const pair& loc, const std::string& msg) const
- {
- std::stringstream obuf;
- obuf << "\\put" << print(loc) << "{" << msg << "}" << std::endl;
-
- return obuf.str();
- }
-
- std::string eepic::print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const
- {
- std::stringstream obuf;
- obuf << "\\put" << print(here)
- << "{\\color{" << print(color) << "}$";
-
- if (fill)
- obuf << "\\allinethickness{" << 0.5*diam << len << "}"
- << "\\circle{" << 0.5*diam << "}";
-
- else
- obuf << "\\circle{" << diam << "}";
-
- obuf << "$}%" << std::endl;
-
- return obuf.str();
- }
-} // end of namespace
diff --git a/graphics/epix/eepic.h b/graphics/epix/eepic.h
deleted file mode 100644
index 08d37e4874..0000000000
--- a/graphics/epix/eepic.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * eepic.h -- ePiX's eepic output format
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 07, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_EEPIC
-#define EPIX_EEPIC
-
-#include <string>
-#include <list>
-#include <set>
-
-#include "Color.h"
-#include "length.h"
-
-#include "edge_data.h"
-#include "format.h"
-
-namespace ePiX {
-
- class path_state;
- class pen_data;
-
- class eepic : public format {
- public:
- eepic();
-
- eepic* clone() const;
-
- // Filled region with specified Cartesian edges, offset, and color
- std::string print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fill,
- const pen_data& line,
- const std::string& len) const;
-
- // Unfilled region, specified Cartesian edges. Should generally be
- // trivially implemented using one-pen function (supplied).
- std::string print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line_pen,
- const pen_data& base_pen,
- const path_state& style,
- const std::string& len) const;
-
- // Print color declaration strings: model, name, densities
- std::string print_color(const std::string&,
- const std::string&,
- double,
- double,
- double) const;
-
- std::string print_color(const std::string&,
- const std::string&,
- double,
- double,
- double,
- double) const;
-
- // One-line comment
- std::string print_comment(const std::string&) const;
-
- // Verbatim output
- std::string print_verbatim(const std::string&) const;
-
- void reset_state() const;
-
- private:
- mutable Color m_ink;
- mutable length m_nib;
- mutable double m_hatch;
-
- std::string start_picture(const pair&, const pair&) const;
- std::string end_picture() const;
-
- std::string set_unitlength(const std::string& len) const;
-
- std::string usepackages() const;
-
- // string argument for passing attributes local to this path/loop
- std::string start_open_path(const std::string&) const;
- std::string end_open_path(const std::string&) const;
-
- std::string start_closed_path(const std::string&) const;
- std::string end_closed_path(const std::string&) const;
-
- // print declarations to set state of output format
- std::string set_fill_state(const Color&) const;
- std::string set_pen_state(const pen_data&) const;
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- std::string put_box(const pair&, const std::string&) const;
-
- std::string print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const;
- }; // end of class eepic
-} // end of namespace
-
-#endif /* EPIX_EEPIC */
diff --git a/graphics/epix/elaps.1 b/graphics/epix/elaps.1
deleted file mode 100644
index 4430a02037..0000000000
--- a/graphics/epix/elaps.1
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/epix.1
diff --git a/graphics/epix/elaps.in b/graphics/epix/elaps.in
deleted file mode 100644
index 6e8041f3d3..0000000000
--- a/graphics/epix/elaps.in
+++ /dev/null
@@ -1,485 +0,0 @@
-#! /bin/bash
-#
-# elaps: Convert an epix file to encapsulated Postscript, i.e. epix2eps
-#
-# Options: --help for usage, --version for version and license
-#
-# Compiler flags may be specified on the command line or in the config
-# file ~/.epixrc. The script attempts to deal intelligently with missing
-# or multiple extensions. If the input file has a recognized extension,
-# there's no issue. If only the root name <infile> is given, the script
-# searches for completions in the order of preference dictated by the
-# variable EPIX_EXTENSIONS. A warning is issued for multiple matches.
-#
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Andrew D. Hwang <For address, do "elaps -V">
-#
-
-. "@pkglibdir@/epix-lib.sh"
-
-EPIX_CONFIG_FILE="$HOME/.epixrc"
-# Search these extensions in order of preference
-ELAPS_EXTENSIONS="eepic xp flx cc c C cpp" # or NULL
-ELAPS_DOT_EXT=".${ELAPS_EXTENSIONS// /|.}" # for usage message
-
-# default options
-ELAPS_PKGS="latexsym,amsmath,rotating"
-declare ELAPS_PSTCOL
-ELAPS_SIZE=12 # figure compiled in [12pt]{article}
-
-ELAPS_PDF="no" # Create PDF file?
-ELAPS_PS="no" # Create PS file instead of EPS?
-
-declare -a EPIX_OPTS
-declare -a DVIPS_OPTS
-
-LATEX_BIN=latex # elaps only uses [huge]latex, not pdflatex or pslatex
-LATEX_INTERACT="scrollmode"
-
-# auxiliary programs
-PS2EPS="ps2epsi"
-
-# internal filenames
-PID=$$
-ELAPS_TEMP_EEPIC="$PROG-$PID".eepic
-ELAPS_TEMP_LATEX="$PROG-$PID".tex
-ELAPS_TEMP_DVI="$PROG-$PID".dvi
-ELAPS_TEMP_PS="$PROG-$PID".ps
-ELAPS_TEMP_EPSI="$PROG-$PID".epsi
-
-# globals to pass tokens
-ELAPS_USER_OUT="no" # user specified output file?
-
-declare -a ELAPS_FILE_LIST
-declare -a TMP_CMD
-
-declare -a TEMPFILES
-trap '[ -n "${TEMPFILES[*]}" ] && rm -f "${TEMPFILES[@]}"' 0 1 2 3 7 10 13 15
-
-TEMPFILES=("$ELAPS_TEMP_EEPIC" "$ELAPS_TEMP_LATEX" "$ELAPS_TEMP_DVI" \
- "$ELAPS_TEMP_PS" "$ELAPS_TEMP_EPSI" )
-
-function elaps_help()
-{
-cat <<"HELP"
-Options:
- -h, --help
- Show this message and exit
-
- -V, --version, --gpl
- Show version and license
-
- -v, --verbose
- Show success/failure messages
-
- -H, --huge
- Use hugelatex (if available)
-
- -i, --interactive
- Run LaTeX interactively (implies verbose)
-
- -n, --no-config
- Ignore $(HOME)/.dvipsrc
-
- -o, --output
- Specify output file (ONLY for use with a single input file)
-
- --pst
- Write eepic file using PSTricks macros
-
- --tikz
- Write eepic file using tikz macros
-
- --eepic
- Write eepic file using eepic macros
-
- -p, --pkg <LaTeX package>
- Use an additional LaTeX package in the temporary LaTeX file, e.g.
- "-p floatflt". Multiple packages are specified one per "-p" flag.
-
- -pdf, --pdf
- Create PDF file instead of EPS
-
- -ps, --ps
- Create standalone PostScript file (overrides --pdf)
-
- --pstcol
- Use (obsolete) pstcol package instead of pstricks
-
- -P<printer>
- dvips printer options, e.g. "-Pamz", may be given on the command
- line. They are also read from ~/.dvipsrc if this file exists.
-
- --size
- Set default font size: 10, 11, or 12 (default)
-
- Other options are passed to epix (q.v.).
-
-HELP
-ePiX_bugreport
-
-} # End of elaps_help
-
-# Generate US letter-friendly LaTeX file
-function elaps_make_latex ()
-{
- ALL_LATEX_PKGS="$ELAPS_PKGS"
-
-# Get LATEX_PKGS from input file
- ePiX_usepackages $2
- if [ ! -z "$LATEX_PKGS" ]; then # should always be true...
- ALL_LATEX_PKGS="$ALL_LATEX_PKGS,$LATEX_PKGS"
- else # compatibility fallback
- ALL_LATEX_PKGS="$ALL_LATEX_PKGS,epic,eepic,pstricks"
- fi
-
-# Clear global
- unset LATEX_PKGS
-
-# No effect unless file requires pstricks
- if [ ! -z "$ELAPS_PSTCOL" ]; then
- ALL_LATEX_PKGS="${ALL_LATEX_PKGS/pstricks/$ELAPS_PSTCOL/}"
- fi
-
-cat <<LaTeX >> $1
-\documentclass[${ELAPS_SIZE}pt]{article}
-\usepackage{$ALL_LATEX_PKGS}
-\setlength{\textwidth}{7.5in}
-\setlength{\textheight}{9.5in}
-\setlength{\oddsidemargin}{-0.5in}
-\setlength{\topmargin}{0in}
-\pagestyle{empty}
-
-\begin{document}
-\vfil
-\begin{center}
-\input{$2}
-\end{center}
-\vfil
-\end{document}
-
-LaTeX
-} # End of elaps_make_latex
-
-
-function elaps_parse_options ()
-{
- while [ "$1" != "${1#-}" ]; do
- case "$1" in
-
- -h|--help)
- ePiX_usage elaps $ELAPS_DOT_EXT
- elaps_help
- exit 0
- ;;
-
- -H|--huge)
- if [ $(which hugelatex 2> /dev/null) ]; then
- LATEX_BIN=hugelatex
- else
- ePiX_warn " hugelatex not available, ignoring \"$1\" option"
- fi
- shift
- ;;
-
- -i|--interactive)
- EPIX_STDOUT="$SYSTEM_STDOUT"
- LATEX_INTERACT="errorstopmode"
- shift
- ;;
-
- -n|--no-config) # do not use ~/.dvipsrc
- export DVIPSRC="$SYSTEM_DEVNULL"
- shift
- ;;
-
- -o|--output)
- if [ "$2" = "${2%%.eps}.eps" ]; then
- EPIX_OUTROOT="${2%%.eps}"
-
- elif [ "$2" = "${2%%.pdf}.pdf" ]; then
- ELAPS_PDF="yes"
- EPIX_OUTROOT="${2%%.pdf}"
-
- else
- EPIX_OUTROOT="$2"
- fi
- ELAPS_USER_OUT="yes"
- shift 2
- ;;
-
- --pst)
- EPIX_OPTS=("${EPIX_OPTS[@]}" "-DEPIX_FMT_PSTRICKS")
- shift; continue
- ;;
-
- --tikz)
- EPIX_OPTS=("${EPIX_OPTS[@]}" "-DEPIX_FMT_TIKZ")
- shift; continue
- ;;
-
- --eepic)
- EPIX_OPTS=("${EPIX_OPTS[@]}" "-DEPIX_FMT_EEPIC")
- shift; continue
- ;;
-
- -P)
- DVIPS_OPTS=("${DVIPS_OPTS[@]}" "-P$2")
- shift 2
- ;;
-
- -P*)
- DVIPS_OPTS=("${DVIPS_OPTS[@]}" "$1")
- shift
- ;;
-
- -pdf|--pdf)
- ELAPS_PDF="yes"
- shift
- ;;
-
- -ps|--ps)
- ELAPS_PS="yes"
- ELAPS_PDF="no" # redundant; enforced by logic later
- shift
- ;;
-
- --pstcol)
- ELAPS_PSTCOL="pstcol,xcolor"
- shift
- ;;
-
- -p|--pkg)
- if [ "$2" != "${2#-}" ]; then
- ePiX_warn "\"$1\" cannot be followed by \"$2\"; skipping"
- shift 1
- else
- ELAPS_PKGS="$ELAPS_PKGS,$2"
- shift 2
- fi
- ;;
-
- -p*)
- ELAPS_PKGS="$ELAPS_PKGS,${1#-p}"
- shift
- ;;
-
- # Deliberately undocumented; run silently, no log file
- -q|--quiet)
- EPIX_STDOUT="$SYSTEM_DEVNULL"
- EPIX_STDERR="$SYSTEM_DEVNULL"
- LATEX_INTERACT="batchmode"
- shift; continue
- ;;
-
- --size)
- ELAPS_SIZE="$2"
- shift 2
- ;;
-
- -V|--version|--gpl)
- ePiX_version elaps
- ePiX_license
- exit 0
- ;;
-
- -v|--verbose)
- if [ -z "$2" ]; then
- echo "Please use -V for version"
- exit 0
- fi
- EPIX_STDOUT="$SYSTEM_STDOUT"
- shift
- ;;
-
- -vv)
- echo "Discontinued option -vv; please use -v for verbose output"
- exit 0
- ;;
-
-
- # pass other options to epix
- -i*|-u|-x|-I|-L|-l|-W)
- EPIX_OPTS=("${EPIX_OPTS[@]}" "$1" "$2")
- shift 2
- ;;
-
- -b)
- ePiX_warn "Skipping option \"$1 $2\""
- shift 2
- ;;
-
- *)
- EPIX_OPTS=("${EPIX_OPTS[@]}" "$1")
- shift
- ;;
- esac
- done
-
- # Assume remaining parameters are input files
- INFILE_COUNT=$#
-
- if [ "$ELAPS_USER_OUT" = "yes" -a $INFILE_COUNT -gt 1 ]; then
- shift $(($INFILE_COUNT - 1))
- ePiX_warn "Output file specified with multiple input files. Skipping all but \"$*\""
- fi
-
- ELAPS_FILE_LIST=("$@")
-} # end of elaps_parse_options()
-
-
-function elaps_process_files()
-{
- if [ -z "$1" ]; then
- ePiX_die "No input file specified"
- fi
-
- # file counts
- local processed=0
- local success=0
- local failure=0
-
- for EPIX_INFILE in "${ELAPS_FILE_LIST[@]}"; do
-
- # sets EPIX_INROOT, EPIX_SUFFIX, EPIX_NOTFOUND, touches EPIX_LOGFILE
- epix_parse_filename "$EPIX_INFILE" "$ELAPS_EXTENSIONS"
- let processed=processed+1
-
- if [ "$EPIX_NOTFOUND" = "yes" ]; then
- let failure=failure+1
- continue
- fi
-
- : ${EPIX_OUTROOT:=$EPIX_INROOT}
- EPIX_OUTFILE="$EPIX_OUTROOT".eepic
-
- # Create eepic file if necessary
- if [ "$EPIX_SUFFIX" != "eepic" ]; then
- if [ -f "$EPIX_OUTFILE" ]; then # back up existing file
- mv -f "$EPIX_OUTFILE" "${EPIX_OUTFILE}~"
- fi
-
- TMP_CMD=(@bindir@/epix "${EPIX_OPTS[@]}" -o "$EPIX_OUTFILE" "$EPIX_INFILE")
-
- ePiX_command "${TMP_CMD[@]}"
- echo "---" | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
-
- if [ "$EPIX_INFILE" -nt "$EPIX_OUTFILE" ]; then
- ePiX_warn "\"${TMP_CMD[*]}\" failed"
- unset EPIX_OUTFILE
- unset EPIX_OUTROOT
- let failure=failure+1
- continue
-
- else
- ln -s "$EPIX_OUTFILE" "$ELAPS_TEMP_EEPIC"
- fi
-
- else # we were passed an eepic file name
- ln -s "$EPIX_INFILE" "$ELAPS_TEMP_EEPIC"
- fi
-
- elaps_make_latex "$ELAPS_TEMP_LATEX" "$ELAPS_TEMP_EEPIC"
-
- # Create $ELAPS_TEMP_PS
- TMP_CMD=($LATEX_BIN -interaction=$LATEX_INTERACT "$ELAPS_TEMP_LATEX")
-
- ePiX_command "${TMP_CMD[@]}"
-
- if [ "$ELAPS_TEMP_LATEX" -nt "$ELAPS_TEMP_DVI" ]; then
- # Report informative (but fake) command line
- ePiX_warn "\"$LATEX_BIN -interaction=$LATEX_INTERACT ${EPIX_INROOT}.tex\" failed"
- rm -f "$ELAPS_TEMP_LATEX" "$ELAPS_TEMP_EEPIC" # clean temps
- unset EPIX_OUTFILE
- unset EPIX_OUTROOT
- let failure=failure+1
- continue
- else
- echo "---" | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
- fi
-
- TMP_CMD=(dvips "${DVIPS_OPTS[@]}" -f -o "$ELAPS_TEMP_PS" "$ELAPS_TEMP_DVI")
-
- ePiX_command "${TMP_CMD[@]}"
-
- if [ "$ELAPS_TEMP_DVI" -nt "$ELAPS_TEMP_PS" ]; then
- # Report informative (but fake) command line
- ePiX_warn "\"dvips ${DVIPS_OPTS[@]} -f -o ${EPIX_INROOT}.ps ${EPIX_INROOT}.dvi\" failed"
-
- unset EPIX_OUTFILE
- unset EPIX_OUTROOT
- let failure=failure+1
- continue
- else
- echo "---" | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
- fi
-
- if [ "$ELAPS_PS" = "yes" ]; then
- # fix title; can't conveniently put sed command into ePiX_command
- echo -n "sed \"s/$PROG-$PID/$EPIX_INROOT/g\" \"$ELAPS_TEMP_PS\"" \
- | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
- echo " > \"$EPIX_OUTROOT.ps\"" \
- | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
-
- sed "s/$PROG-$PID/$EPIX_INROOT/g" "$ELAPS_TEMP_PS" \
- > "$EPIX_OUTROOT.ps"
-
- else
- # Create eps file,
- TMP_CMD=("$PS2EPS" "$ELAPS_TEMP_PS")
- ePiX_command "${TMP_CMD[@]}"
-
- # fix title,
- echo -n "sed \"s/$PROG-$PID/$EPIX_INROOT/g\" \"$ELAPS_TEMP_EPSI\""\
- | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
- echo " > \"$EPIX_OUTROOT.eps\"" \
- | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
-
- sed "s/$PROG-$PID/$EPIX_INROOT/g" \
- "$ELAPS_TEMP_EPSI" > "$EPIX_OUTROOT.eps" &&
- rm -f "$ELAPS_TEMP_EPSI"
-
- # create pdf if requested,
- if [ "$ELAPS_PDF" = "yes" ]; then
- echo -n "grep -v \"^%%Orientation:\" \"$EPIX_OUTROOT.eps\"" \
- | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
- echo " | epstopdf --filter --outfile=\"$EPIX_OUTROOT.pdf\"" \
- | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
- # avoid ghostscript rotation bug
- grep -v "^%%Orientation:" "$EPIX_OUTROOT.eps" \
- | epstopdf --filter --outfile="$EPIX_OUTROOT.pdf"
- rm -f "$EPIX_OUTROOT.eps" # clean up eps
- fi
- fi
-
- let success=success+1
- unset EPIX_OUTFILE
- unset EPIX_OUTROOT
-
- # and clean up
- rm -f "$ELAPS_TEMP_LATEX" "$ELAPS_TEMP_DVI" "$ELAPS_TEMP_PS" \
- "$ELAPS_TEMP_EEPIC" "$PROG-$PID.aux" "$PROG-$PID.log"
-
- echo -e "\nTranscript written on $EPIX_LOGFILE" > "$EPIX_STDOUT"
-
- done # for EPIX_INFILE in $INFILE_LIST
-
- if [ $processed -gt 1 ]; then
- echo "$processed files processed: $success successfully, $failure failed" > "$EPIX_STDERR"
- fi
-} # elaps_process_files()
-
-
-## Script proper starts here ##
-
-if [ $# -eq 0 ]; then
- ePiX_usage elaps $ELAPS_DOT_EXT
- elaps_help
- exit 0
-fi
-
-elaps_parse_options "$@"
-
-elaps_process_files "${ELAPS_FILE_LIST[@]}"
-
-exit 0
diff --git a/graphics/epix/enums.h b/graphics/epix/enums.h
deleted file mode 100644
index 1da13b67b1..0000000000
--- a/graphics/epix/enums.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * enums.h -- ePiX's user-visible enumeration types
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.0.23
- * Last Change: January 10, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_ENUMS
-#define EPIX_ENUMS
-
-namespace ePiX {
-
- enum epix_mark_type {PATH, CIRC, SPOT, RING, DOT, DDOT, PLUS, OPLUS,
- TIMES, OTIMES, DIAMOND, UP, DOWN, BOX, BBOX,
- HTICK, VTICK, TEXT};
-
- enum epix_label_posn {none, c, r, tr, rt, t, tl, lt, l, bl, lb, b, br, rb};
-
- enum epix_integral_type {LEFT, RIGHT, UPPER, LOWER, TRAP, MIDPT};
-
- enum epix_field_type {SLOPE, DART, VECTOR};
-
-} // end of namespace
-
-#endif /* EPIX_ENUMS */
diff --git a/graphics/epix/epix-lib.sh b/graphics/epix/epix-lib.sh
deleted file mode 100644
index 422b2e7e16..0000000000
--- a/graphics/epix/epix-lib.sh
+++ /dev/null
@@ -1,179 +0,0 @@
-# Common functions for ePiX's shell scripts
-#
-PROG=$(basename $0)
-
-# global variables for all scripts
-EPIX_PID=$$
-
-# Needn't be secure
-EPIX_TEMPDIR=${PROG}-${EPIX_PID}
-
-# Caution: Common logfile name for all ${PROG} processes in cwd,
-# used until we've parsed command-line options. Will assign a
-# unique name once we have an input file name.
-EPIX_LOGFILE=${PROG}.log
-if [ -f "${EPIX_LOGFILE}" ]; then rm -f "${EPIX_LOGFILE}"; fi
-
-# These may need to be modified
-declare -r SYSTEM_STDOUT=/dev/stdout
-declare -r SYSTEM_STDERR=/dev/stderr
-declare -r SYSTEM_DEVNULL=/dev/null
-
-EPIX_STDOUT=$SYSTEM_DEVNULL
-EPIX_STDERR=$SYSTEM_STDERR
-
-declare EPIX_NOTFOUND
-
-declare LATEX_PKGS
-
-# in increasing order of severity
-function ePiX_msg {
- echo -e "$PROG: $@" | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
-}
-
-function ePiX_warn {
- echo -e "$PROG: WARNING: $@" | tee -a "$EPIX_LOGFILE" >"$EPIX_STDERR"
-}
-
-function ePiX_fail {
- echo -e "$PROG: WARNING: $@" | tee -a "$EPIX_LOGFILE" >"$EPIX_STDERR"
- if [ "$EPIX_OUTROOT" = "$EPIX_INROOT" ]; then unset EPIX_OUTROOT; fi
- let failure=failure+1
-}
-
-function ePiX_die {
- echo -e "$PROG: ERROR: $@" | tee -a "$EPIX_LOGFILE" >"$EPIX_STDERR"
- echo -e "Transcript written on ${EPIX_LOGFILE}\n"
- exit 1;
-}
-
-# Echo command to stderr/stdout and logfile, then run command
-#
-function ePiX_command {
- ePiX_msg "$@"
- ("$@" 2>&1) | tee -a "$EPIX_LOGFILE" > "$EPIX_STDOUT"
-}
-
-
-# epix_parse_filename EPIX_INFILE MY_EXTENSIONS:
-#
-# Attempt to decompose EPIX_INFILE into EPIX_INROOT.EPIX_SUFFIX, with
-# EPIX_SUFFIX in MY_EXTENSIONS, then check for existence of file.
-# If EPIX_INFILE has no suffix, the first match (if any) wins.
-# If no file is found, EPIX_NOTFOUND="yes"
-#
-function epix_parse_filename {
- EPIX_INFILE="$1"
- shift;
- MY_EXTENSIONS="$@"
-
- unset EPIX_INROOT
- unset EPIX_SUFFIX
- unset EPIX_NOTFOUND
-
- local FOUND_CT=0
-
- # Check for recognized extension
- for EXT in $MY_EXTENSIONS; do
- TMP_ROOT="${EPIX_INFILE%.$EXT}"
- if [ "$EPIX_INFILE" = "$TMP_ROOT.$EXT" ]; then
- EPIX_INROOT="$TMP_ROOT"
- EPIX_SUFFIX="$EXT"
- break
- fi
- done
-
- # None found; were we given just the root?
- if [ -z "$EPIX_SUFFIX" ]; then
- EPIX_INROOT="${EPIX_INFILE%%.}"
-
- # Search for (and count) completions
- for EXT in $MY_EXTENSIONS; do
- if [ -f "$EPIX_INROOT.$EXT" ]; then
- if [ $FOUND_CT -eq 0 ]; then # first match wins
- EPIX_INFILE="$EPIX_INROOT.$EXT"
- EPIX_SUFFIX="$EXT"
- fi
-
- let FOUND_CT=FOUND_CT+1
- fi
- done
-
- # no match
- if [ $FOUND_CT -eq 0 ]; then EPIX_NOTFOUND="yes"; fi
-
- # Found suffix, check for input file
- else
- if [ -f "$EPIX_INFILE" ]; then
- let FOUND_CT=FOUND_CT+1
- else
- EPIX_NOTFOUND="yes"
- fi
- fi # if $EPIX_SUFFIX=""
-
- # initialize logfile
- EPIX_LOGFILE="${EPIX_INROOT}_${EPIX_SUFFIX}.log"
- if [ -f "$EPIX_LOGFILE" ]; then rm "$EPIX_LOGFILE"; fi
- touch "$EPIX_LOGFILE"
-
- # Print status messages
- ePiX_msg "Processing $EPIX_INFILE:"
-
- if [ $FOUND_CT -eq 0 ]; then
- ePiX_warn " No completion of \"$EPIX_INROOT\" found"
-
- elif [ $FOUND_CT -ge 2 ]; then
- ePiX_warn " Found $FOUND_CT completions of \"$EPIX_INROOT\", using $EPIX_INFILE"
-
- elif [ "$EPIX_NOTFOUND" = "yes" ]; then
- ePiX_warn " \"$EPIX_INFILE\" not found"
- fi
-} # end of epix_parse_filename
-
-
-# Get extra LaTeX package names from file
-function ePiX_usepackages()
-{
- TMP_PKGS=$(grep "%% usepackages " $1)
- LATEX_PKGS=${TMP_PKGS#"%% usepackages "}
-}
-
-function ePiX_usage()
-{
-cat <<HELP
-Usage: $1 [options] <file(s)>[$2]
-
-HELP
-}
-
-
-function ePiX_version()
-{
-cat <<VERSION
-$1 (ePiX 1.2.1)
-
-Copyright (C) 2007 Andrew D. Hwang
-
-VERSION
-}
-
-function ePiX_license()
-{
-cat <<LICENSE
-License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>
-ePiX is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-
-LICENSE
-}
-
-function ePiX_bugreport()
-{
- my_decode="tr '[a-m][n-z]' '[n-z][a-m]'" # Mac OS X has no 'rot'
- SPAMMY="<$(echo nujnat|$my_decode)@$(echo zngupf|$my_decode)."
- SPAMMY="${SPAMMY}$(echo ubylpebff|$my_decode).$(echo rqh|$my_decode)>"
-
-cat <<BUG
-Please report bugs to $SPAMMY
-BUG
-} \ No newline at end of file
diff --git a/graphics/epix/epix.1.in b/graphics/epix/epix.1.in
deleted file mode 100644
index 45c5085666..0000000000
--- a/graphics/epix/epix.1.in
+++ /dev/null
@@ -1,50 +0,0 @@
-.TH ePiX 1 "January 06, 2004"
-.LO 1
-.fi
-.SH NAME
-ePiX \- Utilities for creating mathematically accurate figures
-.SH SYNOPSIS
-.in +7n
-.ti -7n
-epix [options] file(s)[.xp]
-.P
-elaps [options] file(s)[.eepic|.xp]
-.P
-laps [options] file(s)[.tex]
-.P
-flix [options] file[.flx]
-.in -7n
-.P
-All scripts have built-in (terse and verbose) help.
-.P
-.SH ONLINE RESOURCES
-Project page:
-
- http://mathcs.holycross.edu/~ahwang/current/ePiX.html
-
-Public CVS server:
-
- https://savannah.nongnu.org/projects/epix
-
-CTAN:
-
- http://www.ctan.org/tex-archive/graphics/epix
-
-Mailing lists:
-
- http://lists.nongnu.org/mail/?group=epix
-
-.SH DOCUMENTATION
-Sample files and an extensive tutorial introduction/reference manual
-come with the source code. Please look in
-.B @docdir@
-for these materials. The documentation can be downloaded separately.
-Please consult the project page.
-
-.SH "AUTHOR"
-.nf
-.na
-Andrew D. Hwang (ahwang -at- mathcs -dot- holycross -dot- edu)
-Department of Mathematics and Computer Science
-College of the Holy Cross
-Worcester, MA 01610-2395, USA
diff --git a/graphics/epix/epix.el.in b/graphics/epix/epix.el.in
deleted file mode 100644
index 19d69c2155..0000000000
--- a/graphics/epix/epix.el.in
+++ /dev/null
@@ -1,1068 +0,0 @@
-;;; epix.el --- A major mode for working with ePiX files.
-
-;; Copyright (C) 2002, 2007 Jay Belanger
-
-;; Author: Jay Belanger
-;; Maintainer: Jay Belanger <belanger@truman.edu>
-
-;; Keywords: epix
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2 of
-;; the License, or (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be
-;; useful, but WITHOUT ANY WARRANTY; without even the implied
-;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-;; PURPOSE. See the GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public
-;; License along with this program; if not, write to the Free
-;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-;; MA 02111-1307 USA
-;;
-;;
-;; Please send suggestions and bug reports to <belanger@truman.edu>.
-
-;;; Commentary:
-
-;; Quick intro
-
-;; epix-mode is an extension of c++-mode with some extra commands for
-;; editing ePiX files. The commands are
-;; C-cC-x run epix on the current file (x for epiX, I guess)
-;; C-cC-l run elaps on the current file (l for eLaps)
-;; The output of the run can be seen by
-;; C-cC-r show the output buffer (r for Results)
-;; and in case of errors, they can be jumped to, in sequence, with
-;; C-c` go to the next error
-;; The file created by elaps can be viewed with
-;; C-cC-v view the output file (v for View)
-;; By default, the output will be encapsulated postscript. This
-;; can be changed by changing the customizable variable
-;; `epix-elaps-output-format'. This can be changed for the current
-;; emacs session with `C-cC-r'.
-;; An unwanted ePiX process can be killed with
-;; C-cC-k
-;; A reminder of some ePiX commands will be given with
-;; C-cC-h get help on ePiX
-;; If the file extension is .flx, then there will also be the commands
-;; C-cC-f run flix on the current file
-;; C-cC-w view the mng file.
-;;
-;; To install, put both epix.el and epix.info in the emacs load path.
-;; Adding the lines
-;; (autoload 'epix-mode "epix" "ePiX editing mode" t)
-;; (autoload 'flix-mode "epix" "flix editing mode" t)
-;; to your .emacs file will ensure that the command is always available.
-;; Adding the lines
-;; (setq auto-mode-alist (cons '("\\.xp" . epix-mode) auto-mode-alist))
-;; (setq auto-mode-alist (cons '("\\.flx" . flix-mode) auto-mode-alist))
-;; will ensure that any file ending in .xp or .flx will be recognized as
-;; an ePiX file or flix file, and started in the proper mode.
-;;
-;; Some variables that the user may wish to change (via customization
-;; or otherwise) are
-;; epix-postscript-viewer (default "gv")
-;; The command used to view postscript files.
-;; epix-mng-viewer (default "display")
-;; The command used to view mng files.
-;; epix-mark-files-as-epix (default nil)
-;; Setting this to t will ensure that any file in ePiX mode
-;; will be marked with a /* -*-ePiX-* */ so that next
-;; time it is opened, it will be put in epix-mode. (This isn't necessary
-;; if auto-mode-alist is set up properly.)
-;; epix-mark-files-as-flix (default nil)
-;; Setting this to t will ensure that any file in flix mode
-;; will be marked with a /* -*-flix-* */ so that next
-;; time it is opened, it will be put in flix-mode. (This isn't necessary
-;; if auto-mode-alist is set up properly.)
-;; epix-insert-template-in-empty-buffer (default nil)
-;; Setting this to t will cause any empty buffer which is put in
-;; ePiX mode to have a skeleton of commands inserted into it.
-;; The skeleton can be inserted at any time with the command
-;; epix-insert-template
-;; epix-template
-;; This is the skeleton which will inserted.
-;; By default, it is
-;; #include \"epix.h\"
-;; using namespace ePiX;
-;;
-;; int main()
-;; {
-;; picture(P(,), P(,), \"\");
-;;
-;; begin();
-;;
-;; end();
-;; }
-;;
-;; epix-flix-template
-;; This is the skeleton which will inserted.
-;; By default, it is
-;; #include \"epix.h\"
-;; using namespace ePiX;
-;;
-;; int main(int argc, char* argv[])
-;; {
-;; if (argc == 3)
-;; {
-;; char* arg;
-;; double temp1, temp2;
-;; temp1=strtod(argv[1], &arg);
-;; temp2=strtod(argv[2], &arg);
-;;
-;; tix()=temp1/temp2;
-;; }
-;; picture(P(,), P(,), \"\");
-;;
-;; begin();
-;;
-;; end();
-;; }
-
-;;; Require
-(require 'cc-mode)
-
-;;; Customization
-
-(defgroup epix nil
- "ePiX mode"
- :prefix "epix-"
- :tag "ePiX")
-
-(defcustom epix-elaps-output-format 'eps
- "The output format for elaps."
- :group 'epix
- :type '(choice (const :tag "EPS" eps)
- (const :tag "PS" ps)
- (const :tag "PDF" pdf)))
-
-(defcustom epix-info-file "@docdir@/epix.info.bz2"
- "The info file for ePiX."
- :group 'epix
- :type 'file)
-
-(defcustom epix-mark-files-as-epix nil
- "Non-nil means to make sure that any ePiX file is marked as such."
- :group 'epix
- :type 'boolean)
-
-(defcustom epix-mark-files-as-flix nil
- "Non-nil means to make sure that any flix file is marked as such."
- :group 'epix
- :type 'boolean)
-
-(defcustom epix-template
-"#include \"epix.h\"
-using namespace ePiX;
-
-int main()
-{
-picture(P(,), P(,), \"\");
-
-begin();
-
-end();
-}
-"
- "The information to enter into an empty ePiX buffer."
- :group 'epix
- :type 'string)
-
-(defcustom epix-template-start "P("
- "The place to start the point in the template."
- :group 'epix
- :type 'string)
-
-(defcustom epix-flix-template
-"#include \"epix.h\"
-using namespace ePiX;
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1(strtod(argv[1], &arg)), temp2(strtod(argv[2], &arg));
-
- tix()=temp1/temp2;
- }
-picture(P(,), P(,), \"\");
-
-begin();
-
-end();
-}
-"
- "The information to enter into an empty ePiX buffer."
- :group 'epix
- :type 'string)
-
-(defcustom epix-flix-template-start "P("
- "The place to start the point in the template."
- :group 'epix
- :type 'string)
-
-(defcustom epix-insert-template-in-empty-buffer nil
- "Non-nil means to insert the template into an empty ePiX buffer."
- :group 'epix
- :type 'boolean)
-
-(defcustom epix-command-name "epix"
- "The name of the ePiX program."
- :group 'epix
- :type 'string)
-
-(defcustom epix-command-args ""
- "Arguments to pass to epix"
- :group 'epix
- :type 'string)
-
-(defcustom epix-elaps-command-name "elaps"
- "The name of the elaps program."
- :group 'epix
- :type 'string)
-
-(defcustom epix-elaps-command-args ""
- "Arguments to pass to elaps"
- :group 'epix
- :type 'string)
-
-(defcustom epix-flix-command-name "flix"
- "The name of the flix program."
- :group 'epix
- :type 'string)
-
-(defcustom epix-flix-command-args ""
- "Arguments to pass to flix"
- :group 'epix
- :type 'string)
-
-(defcustom epix-postscript-viewer "gv"
- "The name of the program used to view postscript files."
- :group 'epix
- :type 'string)
-
-(defcustom epix-pdf-viewer "xpdf"
- "The name of the program used to view pdf files."
- :group 'epix
- :type 'string)
-
-(defcustom epix-mng-viewer "display"
- "The name of the program used to view mng files."
- :group 'epix
- :type 'string)
-
-;;; Some utility variables
-
-(defvar epix-output-buffer nil)
-(make-variable-buffer-local 'epix-output-buffer)
-
-(defvar epix-error-point nil)
-(make-variable-buffer-local 'epix-error-point)
-
-(defvar epix-elaps-output-format-list
- '((ps " -ps" ".ps")
- (pdf " -pdf" ".pdf")
- (eps "" ".eps")))
-
-(defun epix-change-elaps-output-format ()
- "Change the output format for elaps."
- (interactive)
- (let ((newformat
- (read-string
- "New output format (ps,eps,pdf): ")))
- (cond
- ((string= newformat "pdf")
- (setq epix-elaps-output-format 'pdf))
- ((string= newformat "ps")
- (setq epix-elaps-output-format 'ps))
- ((string= newformat "eps")
- (setq epix-elaps-output-format 'eps))
- (t
- (message "Not an acceptable format.")))))
-
-;;; Functions to run epix and friends
-
-(defun epix-check-process ()
- "See if there is a process associated with the output buffer.
-If there is and it is running, offer to kill it."
- (let ((epp)
- (epix-proc (get-buffer-process epix-output-buffer)))
- (if epix-proc (setq epp t) (setq epp nil))
- (if (and
- epix-proc
- (y-or-n-p "There is an ePiX process running. Kill it? "))
- (progn
- (kill-process epix-proc)
- (setq epp nil)))
- epp))
-
-(defun epix-kill-process ()
- "Kill any epix process running."
- (interactive)
- (let ((epix-proc (get-buffer-process epix-output-buffer)))
- (if (and
- epix-proc
- (y-or-n-p "Really kill ePiX process? "))
- (kill-process epix-proc))))
-
-
-(defun epix-check-buffer ()
- "See if the buffer has been modified since it was last saved.
-If it has been, offer to save it."
- (if (and
- (buffer-modified-p)
- (y-or-n-p (concat "Save file " (buffer-file-name) "?")))
- (save-buffer)))
-
-(defun epix-run-command (command file &optional args)
- "Create a process to run COMMAND on FILE.
-Return the new process."
- (let ((buffer epix-output-buffer))
- (epix-check-buffer)
- (unless (epix-check-process)
- (set-buffer (get-buffer-create buffer))
- (setq epix-error-point nil)
- (erase-buffer)
- (insert "Running `" command "' on `" file "\n")
- (message "Type `C-c C-r' to display results of compilation.")
- (let ((process)
- (cmd))
- (if (not (string= args ""))
- (setq cmd
- (append
- (list 'start-process "ePiX" buffer "/bin/sh" command)
- (split-string args)
- (list file)))
- (setq cmd (list 'start-process "ePiX" buffer "/bin/sh" command file)))
- (setq process (eval cmd))
- (set-process-filter process 'epix-command-filter)
- (set-process-sentinel process 'epix-command-sentinel)
- (set-marker (process-mark process) (point-max))
- process))))
-
-(defun epix-command-sentinel (process event)
- (when (string-match "finished" event)
- (message "ePiX process finished")
- (set-buffer epix-output-buffer)
- (goto-char (point-max))
- (insert "\nePiX process finished\n")))
-
-(defun epix-command-filter (process string)
- "Filter to process normal output."
- (save-excursion
- (set-buffer (process-buffer process))
- (save-excursion
- (goto-char (process-mark process))
- (insert-before-markers string)
- (set-marker (process-mark process) (point))))
- (if (string-match "Compilation failed" string)
- (message (concat "ePiX errors in `" (buffer-name)
- "'. Use C-c ` to display."))))
-(defun epix-run-epix ()
- "Run epix on the current file."
- (interactive)
- (let ((file (file-name-nondirectory (buffer-file-name))))
- (epix-run-command epix-command-name file epix-command-args)))
-
-(defun epix-run-elaps ()
- "Run elaps on the current file."
- (interactive)
- (let ((file (file-name-nondirectory (buffer-file-name))))
- (epix-run-command epix-elaps-command-name file
- (concat
- epix-elaps-command-args
- (nth 1 (assoc epix-elaps-output-format
- epix-elaps-output-format-list))))))
-
-(defun epix-run-flix ()
- "Run flix on the current file."
- (interactive)
- (let ((file (file-name-nondirectory (buffer-file-name))))
- (epix-run-command epix-flix-command-name file epix-flix-command-args)))
-
-(defun epix-view-elaps-output ()
- "View the eps output of the file."
- (interactive)
- (let ((filename (file-name-nondirectory (buffer-file-name)))
- (file nil)
- (extension (nth 2 (assoc epix-elaps-output-format
- epix-elaps-output-format-list))))
- (if (file-name-extension filename)
- (setq file (concat (file-name-sans-extension filename) extension)))
- (unless (file-exists-p file)
- (setq file (concat filename extension)))
- (message file)
- (if (file-exists-p file)
- (call-process
- (if (eq epix-elaps-output-format 'pdf)
- epix-pdf-viewer
- epix-postscript-viewer)
- nil epix-output-buffer nil file)
- (message (concat "No file " file ". Run elaps first.")))))
-
-(defun epix-view-mng ()
- "View the mng output of the file."
- (interactive)
- (let ((filename (file-name-nondirectory (buffer-file-name)))
- (file nil))
- (if (file-name-extension filename)
- (setq file (concat (file-name-sans-extension filename) ".mng")))
- (unless (file-exists-p file)
- (setq file (concat filename ".mng")))
- (message file)
- (if (file-exists-p file)
- (call-process epix-mng-viewer nil epix-output-buffer nil file)
- (message (concat "No file " file ". Run flix first.")))))
-
-;;; Dealing with output
-
-(defun epix-show-output-buffer ()
- "Show the epix output buffer."
- (interactive)
- (let ((buf (current-buffer)))
- (if (get-buffer epix-output-buffer)
- (progn
- (pop-to-buffer epix-output-buffer t)
- (bury-buffer buf)
- (goto-char (point-max))
- (recenter (/ (window-height) 2))
- (pop-to-buffer buf))
- (message "No output buffer."))))
-
-(defun epix-find-error (arg)
- "Go to the next ePiX error."
- (interactive "P")
- (if arg
- (save-excursion
- (set-buffer epix-output-buffer)
- (setq epix-error-point nil)))
- (let ((ln)
- (col)
- (epix-error-end)
- (buf (current-buffer)))
- (switch-to-buffer-other-window epix-output-buffer)
- (widen)
- (if epix-error-point
- (goto-char epix-error-point)
- (goto-char (point-min)))
- (if (re-search-forward ":\\([0-9]+\\):\\([0-9]+\\):" (point-max) t)
- (progn
- (setq epix-error-point (point))
- (setq ln (string-to-int (match-string 1)))
- (setq col (string-to-int (match-string 2)))
- (save-excursion
- (if (re-search-forward ":[0-9]+:[0-9]+:" (point-max) t)
- (setq epix-error-end (line-beginning-position))
- (if (search-forward "Compilation failed" (point-max) t)
- (setq epix-error-end (line-beginning-position))
- (setq epix-error-end (point-max)))))
- (recenter)
- (beginning-of-line)
- (if (looking-at "epix: Compiling...")
- (forward-char (length "epix: Compiling...")))
- (narrow-to-region (point) epix-error-end)
- (switch-to-buffer-other-window buf)
- (goto-line ln)
- (move-to-column col))
- (switch-to-buffer-other-window buf)
- (message "No more errors."))))
-
-
-;;; Auxiliary functions
-
-(defun epix-mark-file-as-epix ()
- "Mark the file as an ePiX buffer.
-The next time the file is loaded, it will then be in ePiX mode"
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (unless (looking-at ".*-\\*-ePiX-\\*-")
- (insert "/* -*-ePiX-*- */\n"))))
-
-(defun epix-mark-file-as-flix ()
- "Mark the file as a flix buffer.
-The next time the file is loaded, it will then be in flix mode"
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (unless (looking-at ".*-\\*-flix-\\*-")
- (insert "/* -*-flix-*- */\n"))))
-
-(defun epix-insert-epix-template ()
- "Insert a template."
- (interactive)
- (if (looking-at ".*-\\*-ePiX-\\*-")
- (forward-line 1))
- (let ((beg (point)))
- (insert epix-template)
- (indent-region beg (point) nil)
- (goto-char beg)
- (search-forward epix-template-start)))
-
-(defun epix-insert-flix-template ()
- "Insert a template."
- (interactive)
- (if (looking-at ".*-\\*-flix-\\*-")
- (forward-line 1))
- (let ((beg (point)))
- (insert epix-flix-template)
- (indent-region beg (point) nil)
- (goto-char beg)
- (search-forward epix-flix-template-start)))
-
-(defun epix-help ()
- "Read an ePiX info file"
- (interactive)
- (info-other-window epix-info-file))
-
-(require 'info-look)
-(info-lookup-maybe-add-help
- :mode 'epix-mode
- :ignore-case nil
- :regexp "[_a-zA-Z0-9./+-]+"
- :doc-spec (list
- (list
- (concat "("
- epix-info-file
- ")Function Index"))))
-; nil
-; "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil)))
-
-
-;;; To take care of the different types
-
-(defvar epix-preface
-"int[ \t\n]*main()[ \t\n]*{")
-
-(defvar epix-flix-preface
-"int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1(strtod(argv[1], &arg)), temp2(strtod(argv[2], &arg));
-
- tix()=temp1/temp2;
- }")
-
-(defun epix-epix-to-flix ()
- "Change some of the buffer to accomodate flix."
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (replace-regexp "-\\*-ePiX-\\*-" "-*-flix-*-")
- (goto-char (point-min))
- (replace-regexp epix-preface epix-flix-preface))
- (flix-mode))
-
-;;; ePiX mode
-
-(defvar epix-mode-map nil
- "The keymap for ePiX mode.")
-
-(if epix-mode-map
- nil
- (let ((map (copy-keymap c++-mode-map)))
- (define-key map "\C-c\C-k" 'epix-kill-process)
- (define-key map "\C-c\C-x" 'epix-run-epix)
- (define-key map "\C-c\C-l" 'epix-run-elaps)
- (define-key map "\C-c\C-r" 'epix-show-output-buffer)
- (define-key map "\C-c\C-v" 'epix-view-elaps-output)
- (define-key map "\C-c\C-r" 'epix-change-elaps-output-format)
- (define-key map "\C-c\C-h" 'epix-help)
- (define-key map "\C-c\C-i" 'info-complete-symbol)
- (define-key map "\C-c`" 'epix-find-error)
- (setq epix-mode-map map)))
-
-(easy-menu-define epix-mode-menu epix-mode-map
- "ePiX mode menu"
- '("ePiX"
- ["Run ePiX" epix-run-epix t]
- ["Run elaps" epix-run-elaps t]
- ["View the eps file" epix-view-elaps-output t]
- ["Change the output format" epix-change-elaps-output-format t]
- ["Get help on ePiX" epix-help t]
- ["Show the output buffer" epix-show-output-buffer t]))
-
-(define-derived-mode epix-mode c++-mode "ePiX"
- "ePiX mode is a major mode for editing ePiX files.
-It is C++ mode with a couple of extra commands:
-
-Run epix on the file being visited: C-cC-x
-Run elaps on the file being visited: C-cC-l
-View the output: C-cC-v
-Change the output format: C-cC-r
-Get help on ePiX: C-cC-h
-Complete the ePiX symbol under point: C-cTAB
-
-In the case of errors:
-Go to the (next) error: C-c`
-
-SUMMARY OF EPIX COMMANDS
-------------------------
-
-Preamble
---------
-picture(P(a,b), P(c,d), \"height[dim] x width dim\");
-
-The actual picture commands need to be between
-begin();
-and
-end();
-
-Colors
-------
-RGB(r,g,b);
-Red(d); Green(d); Blue(d); Black(d); White(d);
-
-CMY(c,m,y);
-Cyan(d); Magenta(d); Yellow(d); CMY_Black(d); CMY_White(d);
-
-CMYK(c,m,y,k);
-CyanK(d); MagentaK(d); YellowK(d); CMYK_Black(d); CMYK_White(d);
-
-Primary densities interpolate linearly between anti-saturation (-1),
-no color(0), full saturation (1), and saturation on all channels (2
-or -2). Densities are meaningful mod 4. Colors can be superposed,
-blended, inverted, filtered, and scaled.
-
-Line and fill styles
------------
-Widths: plain([Color]); bold([Color]); bbold([Color]);
- pen(Color, [len]); pen(len);
- base(Color, [len]); base(len);
-Styles: solid(); dashed(); dotted();
- line_style(string);
-Fill: fill(Color); fill(bool); nofill();
-
-The base pen draws an underlayer/border if wider than the line pen.
-line_style accepts a WYSIWYG pattern of spaces, dashes, and periods.
-
-Lines
------
-line(P(a,b),P(c,d));
-Line(P(a,b),P(c,d));
-Line(P(a,b),m);
-
-The line goes from one point to the other,
-the Line is that part of the entire line which lies inside the
-bounding box.
-
-Polygons
---------
-triangle(P(a,b),P(c,d),P(e,f));
-rect(P(a,b),P(c,d));
-quad(P(a,b),P(c,d),P(e,f),P(g,h));
-
-Axes
-----
-h_axis(P(a,b),P(c,d),n);
-v_axis(P(a,b),P(c,d),n);
-h_log_axis(P(a,b),P(c,d),n);
-v_log_axis(P(a,b),P(c,d),n);
-
-h_axis_labels(P(a,b),P(c,d),n,P(u,v));
-v_axis_labels(P(a,b),P(c,d),n,P(u,v));
-h_log_axis_labels(P(a,b),P(c,d),n,P(u,v));
-v_log_axis_labels(P(a,b),P(c,d),n,P(u,v));
-
-h_axis_masklabels(P(a,b),P(c,d),n,P(u,v));
-v_axis_masklabels(P(a,b),P(c,d),n,P(u,v));
-h_log_axis_masklabels(P(a,b),P(c,d),n,P(u,v));
-v_log_axis_masklabels(P(a,b),P(c,d),n,P(u,v));
-
-The axis commands will put n+1 evenly spaced tick marks on the line.
-The labeling commands will put n+1 evenly spaced labels,
-masklabels will put the label on an opaque white rectangle.
-
-Points
-------
-spot(P(a,b)); dot(P(a,b)); ddot(P(a,b)); box(P(a,b)); bbox(P(a,b));
-circ(P(a,b));
-ring(P(a,b));
-
-spot, dot and ddot are various sized (in decreasing order) dots.
-A circ is a small circle with white interior.
-A ring is a small circle with transparent interior.
-
-Arrows
-------
-arrow(P(a,b),P(c,d));
-dart(P(a,b),P(c,d));
-
-A dart is a small arrow.
-
-Labels
-------
-label(P(a,b),P(u,v),\"label\");
-label(P(a,b),\"label\");
-label(P(a,b),P(u,v),\"label\",posn);
-masklabel(P(a,b),P(u,v),\"label\");
-masklabel(P(a,b),\"label\");
-masklabel(P(a,b),P(u,v),\"label\",posn);
-
-These commands put a label at the point P(a,b).
-P(u,v) is an offset (in true points).
-posn will specify the position of the label relative to the basepoint,
-and can be c(enter), l(eft), r(ight), t(op), b(ottom) or an
-appropriate pair.
-
-Text attributes
----------------
-label_color(Color); label_mask(Color); label_pad(len);
-label_border(Color, [len]); label_border(len); no_label_border();
-font_size(LaTeX size); font_face(face);
-label_angle(theta);
-
-The LaTeX size is a string such as \"Huge\" or \"scriptsize\". The
-font face is one of \"rm\" (default), \"bf\", \"sc\", or \"tt\".
-
-Curves
-------
-ellipse(P(a,b),P(c,d),P(e,f),tmin,tmax);
-circle(P(a,b),r);
-circle(P(a,b),P(c,d),P(e,f));
-
-Ellipse draws (a,b)+Cos(t)*(c,d)+Sin(t)*(e,f) for tmin <= t <= tmax.
-
-Arcs
-----
-arc(P(a,b),r,theta1,theta2);
-arc_arrow(P(a,b),r,theta1,theta2);
-
-The angles are measured in current angle units (radians by default).
-
-Splines
--------
-spline(P(a,b),P(c,d),P(e,f));
-spline(P(a,b),P(c,d),P(e,f),P(g,h));
-
-Plotting
---------
-plot(f,a,b,n);
-
-This plots the function f from a to b using n+1 evenly spaced points.
-If f is P-valued, then this will be a parametric plot.
-
-Calc plotting
--------------
-plot(Deriv(f),a,b,n);
-plot(Integral(f),a,b,n);
-plot(Integral(f),x0,a,b,n);
-
-plot(Deriv(f)...) plots f'.
-plot(Integral(f)...) plots int_a^x f (or if x0 is given, int_x0^x f).
-
-Tangents
---------
-tan_line(f,t);
-envelope(f,t_min,t_max,n);
-tan_field(f,t_min,t_max,n);
-
-tan_line will plot the tangent Line to the graph.
-envelope will plot n+1 tangent Lines.
-tan_field will plot n+1 tangent vectors.
-Here, as above, f can be P-valued.
-
-Vector fields
--------------
-slope_field(F,P(a,b),P(c,d),n1,n2);
-dart_field(F,P(a,b),P(c,d),n1,n2);
-vector_field(F,P(a,b),P(c,d),n1,n2);
-
-The slope_field elements will have fixed length, no arrows.
-The dart_field elements will have fixed length, small arrows.
-The vector_field elements will have true length.
-
-Fractals
---------
-const int seed[] = {N, k1, k2, k3, ... , kn};
-fractal(P(a,b),P(c,d),D,seed);
-
-seed determines a path made up of equal space line segments, each of
-which can point in the direction 2 pi k/N. Each integer after N in seed
-will specify the direction of the next segment.
-fractal will recursively replace each segment in seed by a copy of the
-original, up to a depth of D, and draw it from P(a,b) to P(c,d)."
- (setq font-lock-defaults
- '((c++-font-lock-keywords
- c++-font-lock-keywords-1
- c++-font-lock-keywords-2
- c++-font-lock-keywords-3)
- nil nil ((?_ . "w")) beginning-of-defun
- (font-lock-mark-block-function . mark-defun)))
- (setq epix-output-buffer (concat "*" (buffer-file-name) " output*"))
- (use-local-map epix-mode-map)
- (if (and epix-insert-template-in-empty-buffer
- (= (point-min) (point-max)))
- (progn
- (if epix-mark-files-as-epix
- (epix-mark-file-as-epix))
- (epix-insert-epix-template))
- (if epix-mark-files-as-epix
- (epix-mark-file-as-epix)))
- (run-hooks 'epix-mode-hook))
-
-;;; flix mode
-
-(defvar flix-mode-map nil
- "The keymap for flix mode.")
-
-(if flix-mode-map
- nil
- (let ((map (copy-keymap c++-mode-map)))
- (define-key map "\C-c\C-k" 'epix-kill-process)
- (define-key map "\C-c\C-x" 'epix-run-epix)
- (define-key map "\C-c\C-l" 'epix-run-elaps)
- (define-key map "\C-c\C-r" 'epix-show-output-buffer)
- (define-key map "\C-c\C-v" 'epix-view-elaps-output)
- (define-key map "\C-c\C-h" 'epix-help)
- (define-key map "\C-c`" 'epix-find-error)
- (define-key map "\C-c\C-f" 'epix-run-flix)
- (define-key map "\C-c\C-w" 'epix-view-mng)
- (setq flix-mode-map map)))
-
-(easy-menu-define flix-mode-menu flix-mode-map
- "flix mode menu"
- '("flix"
- ["Run flix" epix-run-flix t]
- ["View the mng file" epix-view-mng t]
- ["Get help on flix/ePiX" epix-help t]
- ["Show the output buffer" epix-show-output-buffer t]
- ("ePiX"
- ["Run ePiX" epix-run-epix t]
- ["Run elaps" epix-run-elaps t]
- ["View the eps file" epix-view-elaps-output t])))
-
-(define-derived-mode flix-mode c++-mode "flix"
- "flix mode is a major mode for editing flix files.
-It is C++ mode with a couple of extra commands:
-
-Run flix on the file being visited: C-cC-f
-View the mng output: C-cC-w
-Get help on flix: C-cC-h
-
-Since a flix file is a valid ePiX file, the
-following commands are also available:
-Run epix on the file being visited: C-cC-x
-Run elaps on the file being visited: C-cC-l
-View the postscript output: C-cC-v
-In the case of errors:
-Go to the (next) error: C-c`
-
-An ePiX file isn't necessarily a flix file,
-but the command
-M-x epix-epix-to-flix
-will try to turn an ePiX file into a flix file.
-
-SUMMARY OF FLIX/EPIX COMMANDS
-------------------------
-
-Preamble
---------
-picture(P(a,b), P(c,d), \"height[dim] x width dim\");
-
-The actual picture commands need to be between
-begin();
-and
-end();
-
-Colors
-------
-RGB(r,g,b);
-Red(d); Green(d); Blue(d); Black(d); White(d);
-
-CMY(c,m,y);
-Cyan(d); Magenta(d); Yellow(d); CMY_Black(d); CMY_White(d);
-
-CMYK(c,m,y,k);
-CyanK(d); MagentaK(d); YellowK(d); CMYK_Black(d); CMYK_White(d);
-
-Primary densities interpolate linearly between anti-saturation (-1),
-no color(0), full saturation (1), and saturation on all channels (2
-or -2). Densities are meaningful mod 4. Colors can be superposed,
-blended, inverted, filtered, and scaled.
-
-Line and fill styles
------------
-Widths: plain([Color]); bold([Color]); bbold([Color]);
- pen(Color, [len]); pen(len);
- base(Color, [len]); base(len);
-Styles: solid(); dashed(); dotted();
- line_style(string);
-Fill: fill(Color); fill(bool); nofill();
-
-The base pen draws an underlayer/border if wider than the line pen.
-line_style accepts a WYSIWYG pattern of spaces, dashes, and periods.
-
-Lines
------
-line(P(a,b),P(c,d));
-Line(P(a,b),P(c,d));
-Line(P(a,b),m);
-
-The line goes from one point to the other,
-the Line is that part of the entire line which lies inside the
-bounding box.
-
-Polygons
---------
-triangle(P(a,b),P(c,d),P(e,f));
-rect(P(a,b),P(c,d));
-quad(P(a,b),P(c,d),P(e,f),P(g,h));
-
-Axes
-----
-h_axis(P(a,b),P(c,d),n);
-v_axis(P(a,b),P(c,d),n);
-h_log_axis(P(a,b),P(c,d),n);
-v_log_axis(P(a,b),P(c,d),n);
-
-h_axis_labels(P(a,b),P(c,d),n,P(u,v));
-v_axis_labels(P(a,b),P(c,d),n,P(u,v));
-h_log_axis_labels(P(a,b),P(c,d),n,P(u,v));
-v_log_axis_labels(P(a,b),P(c,d),n,P(u,v));
-
-h_axis_masklabels(P(a,b),P(c,d),n,P(u,v));
-v_axis_masklabels(P(a,b),P(c,d),n,P(u,v));
-h_log_axis_masklabels(P(a,b),P(c,d),n,P(u,v));
-v_log_axis_masklabels(P(a,b),P(c,d),n,P(u,v));
-
-The axis commands will put n+1 evenly spaced tick marks on the line.
-The labeling commands will put n+1 evenly spaced labels,
-masklabels will put the label on an opaque white rectangle.
-
-Points
-------
-spot(P(a,b)); dot(P(a,b)); ddot(P(a,b)); box(P(a,b)); bbox(P(a,b));
-circ(P(a,b));
-ring(P(a,b));
-
-spot, dot and ddot are various sized (in decreasing order) dots.
-A circ is a small circle with white interior.
-A ring is a small circle with transparent interior.
-
-Arrows
-------
-arrow(P(a,b),P(c,d));
-dart(P(a,b),P(c,d));
-
-A dart is a small arrow.
-
-Labels
-------
-label(P(a,b),P(u,v),\"label\");
-label(P(a,b),\"label\");
-label(P(a,b),P(u,v),\"label\",posn);
-masklabel(P(a,b),P(u,v),\"label\");
-masklabel(P(a,b),\"label\");
-masklabel(P(a,b),P(u,v),\"label\",posn);
-
-These commands put a label at the point P(a,b).
-P(u,v) is an offset (in true points).
-posn will specify the position of the label relative to the basepoint,
-and can be c(enter), l(eft), r(ight), t(op), b(ottom) or an
-appropriate pair.
-
-Text attributes
----------------
-label_color(Color); label_mask(Color); label_pad(len);
-label_border(Color, [len]); label_border(len); no_label_border();
-font_size(LaTeX size); font_face(face);
-label_angle(theta);
-
-The LaTeX size is a string such as \"Huge\" or \"scriptsize\". The
-font face is one of \"rm\" (default), \"bf\", \"sc\", or \"tt\".
-
-Curves
-------
-ellipse(P(a,b),P(c,d),P(e,f),tmin,tmax);
-circle(P(a,b),r);
-circle(P(a,b),P(c,d),P(e,f));
-
-Ellipse draws (a,b)+Cos(t)*(c,d)+Sin(t)*(e,f) for tmin <= t <= tmax.
-
-Arcs
-----
-arc(P(a,b),r,theta1,theta2);
-arc_arrow(P(a,b),r,theta1,theta2);
-
-The angles are measured in current angle units (radians by default).
-
-Splines
--------
-spline(P(a,b),P(c,d),P(e,f));
-spline(P(a,b),P(c,d),P(e,f),P(g,h));
-
-Plotting
---------
-plot(f,a,b,n);
-
-This plots the function f from a to b using n+1 evenly spaced points.
-If f is P-valued, then this will be a parametric plot.
-
-Calc plotting
--------------
-plot(Deriv(f),a,b,n);
-plot(Integral(f),a,b,n);
-plot(Integral(f),x0,a,b,n);
-
-plot(Deriv(f)...) plots f'.
-plot(Integral(f)...) plots int_a^x f (or if x0 is given, int_x0^x f).
-
-Tangents
---------
-tan_line(f,t);
-envelope(f,t_min,t_max,n);
-tan_field(f,t_min,t_max,n);
-
-tan_line will plot the tangent Line to the graph.
-envelope will plot n+1 tangent Lines.
-tan_field will plot n+1 tangent vectors.
-Here, as above, f can be P-valued.
-
-Vector fields
--------------
-slope_field(F,P(a,b),P(c,d),n1,n2);
-dart_field(F,P(a,b),P(c,d),n1,n2);
-vector_field(F,P(a,b),P(c,d),n1,n2);
-
-The slope_field elements will have fixed length, no arrows.
-The dart_field elements will have fixed length, small arrows.
-The vector_field elements will have true length.
-
-Fractals
---------
-const int seed[] = {N, k1, k2, k3, ... , kn};
-fractal(P(a,b),P(c,d),D,seed);
-
-seed determines a path made up of equal space line segments, each of
-which can point in the direction 2 pi k/N. Each integer after N in seed
-will specify the direction of the next segment.
-fractal will recursively replace each segment in seed by a copy of the
-original, up to a depth of D, and draw it from P(a,b) to P(c,d)."
- (setq font-lock-defaults
- '((c++-font-lock-keywords
- c++-font-lock-keywords-1
- c++-font-lock-keywords-2
- c++-font-lock-keywords-3)
- nil nil ((?_ . "w")) beginning-of-defun
- (font-lock-mark-block-function . mark-defun)))
- (setq epix-output-buffer (concat "*" (buffer-file-name) " output*"))
- (use-local-map flix-mode-map)
- (if (and epix-insert-template-in-empty-buffer
- (= (point-min) (point-max)))
- (progn
- (if epix-mark-files-as-epix
- (epix-mark-file-as-flix))
- (epix-insert-flix-template))
- (if epix-mark-files-as-epix
- (epix-mark-file-as-flix)))
- (run-hooks 'epix-mode-hook)
- (run-hooks 'flix-mode-hook))
-
-(provide 'epix)
diff --git a/graphics/epix/epix.in b/graphics/epix/epix.in
deleted file mode 100644
index d5c302cbbb..0000000000
--- a/graphics/epix/epix.in
+++ /dev/null
@@ -1,340 +0,0 @@
-#! /bin/bash
-#
-# epix: wrapper script for ePiX
-#
-# Options: --help for usage, --version for version and license
-#
-# Compiler flags may be specified on the command line or in the config
-# file ~/.epixrc. The script attempts to deal intelligently with missing
-# or multiple extensions. If the input file has a recognized extension,
-# there's no issue. If only the root name <infile> is given, the script
-# searches for completions in the order of preference dictated by the
-# variable EPIX_EXTENSIONS. A warning is issued for multiple matches.
-#
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Andrew D. Hwang <For address, do "epix -V">
-#
-
-. "@pkglibdir@/epix-lib.sh"
-
-EPIX_CONFIG_FILE="$HOME/.epixrc"
-# Search these extensions in order of preference
-EPIX_EXTENSIONS="xp flx cc c C cpp" # or NULL
-EPIX_DOT_EXT=".${EPIX_EXTENSIONS// /|.}" # for usage message
-
-# Default inc/lib directories and compiler
-DEFAULT_INC="-I@includedir@"
-DEFAULT_LIB="-L@pkglibdir@"
-COMPILER="@RUNTIME_COMPILER@"
-
-# Use default library unless we're called by version number
-LIBS="-lm"
-POSTLIBS="-lepix"
-EPIX_SRC_EXT=cc
-
-declare EPIX_MYINCLUDES
-declare EPIX_MYLIBDIRS
-declare EPIX_MYLIBS
-declare EPIX_MYWARNS
-declare EPIX_MYFLAGS
-
-declare -a EPIX_FILE_LIST
-
-declare -a TEMPFILES
-trap '[ -n "${TEMPFILES[*]}" ] && rm -f "${TEMPFILES[@]}"' 0 1 2 3 7 10 13 15
-
-function epix_help()
-{
-cat <<"HELP"
-Options:
- -h, --help
- Show this message and exit
-
- -V, --version
- Show version and exit
-
- -v, --verbose
- Show success/failure messages
-
- --gpl
- Show license
-
- -o, --output
- Specify output file name (ONLY for use with a single input file)
-
- --pst
- Write output file using PSTricks macros
-
- --tikz
- Write output file using tikz macros
-
- --eepic
- Write output file using eepic macros
-
- -I<include>
- Append include directory
-
- -L<library>
- Append library directory
-
- -l<lib>
- Link against lib
-
- --no-defaults
- Do not use default include/library directories or libraries
-
- -cc, --compiler)
- Specify the compiler (e.g., gcc)
-
- All other options are passed to the compiler. Valid options,
- one per line, may be placed in $HOME/.epixrc.
-
-HELP
-ePiX_bugreport
-
-} # End of epix_help
-
-
-# Parse command line/config file for compiler flags/options
-function epix_parse_options {
-while [ "$1" != "${1#-}" ]; do
- case "$1" in
-
- -I)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- EPIX_MYINCLUDES="$EPIX_MYINCLUDES -I$2"; shift 2; continue
- ;;
-
- -L)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- EPIX_MYLIBDIRS="$EPIX_MYLIBDIRS -L$2"; shift 2; continue
- ;;
-
- -l)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- EPIX_MYLIBS="$EPIX_MYLIBS -l$2"; shift 2; continue
- ;;
-
- -W)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- EPIX_MYWARNS="$EPIX_MYWARNS -W$2"; shift 2; continue
- ;;
-
- -I*)
- EPIX_MYINCLUDES="$EPIX_MYINCLUDES $1"; shift; continue
- ;;
-
- -L*)
- EPIX_MYLIBDIRS="$EPIX_MYLIBDIRS $1"; shift; continue
- ;;
-
- -l*)
- EPIX_MYLIBS="$EPIX_MYLIBS $1"; shift; continue
- ;;
-
- -W*)
- EPIX_MYWARNS="$EPIX_MYWARNS $1"; shift; continue
- ;;
-
- -i*|-u|-x)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- EPIX_MYFLAGS="$EPIX_MYFLAGS $1 $2"; shift 2; continue
- ;;
-
- -b)
- ePiX_warn "Skipping option \"$1 $2\""
- shift 2; continue
- ;;
-
- -o|--output)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- EPIX_OUTFILE="$2"
- EPIX_OUTROOT="${EPIX_OUTFILE%%.eepic}"
- shift 2; continue
- ;;
-
- --pst)
- EPIX_MYFLAGS="$EPIX_MYFLAGS -DEPIX_FMT_PSTRICKS"
- shift; continue
- ;;
-
- --tikz)
- EPIX_MYFLAGS="$EPIX_MYFLAGS -DEPIX_FMT_TIKZ"
- shift; continue
- ;;
-
- --eepic)
- EPIX_MYFLAGS="$EPIX_MYFLAGS -DEPIX_FMT_EEPIC"
- shift; continue
- ;;
-
- # Deliberately undocumented
- -q|--quiet)
- EPIX_STDOUT="$SYSTEM_DEVNULL"
- EPIX_STDERR="$SYSTEM_DEVNULL"
- shift; continue
- ;;
-
- -v|--verbose)
- if [ -z "$2" ]; then
- echo "Please use -V for version"
- exit 0
- fi
- EPIX_STDOUT="$SYSTEM_STDOUT"
- EPIX_STDERR="$SYSTEM_STDERR"
- shift; continue
- ;;
-
- -vv)
- echo "Discontinued option -vv; please use -v for verbose output"
- exit 0
- ;;
-
-
- -h|--help)
- ePiX_usage epix $EPIX_DOT_EXT
- epix_help
- exit 0
- ;;
-
- -V|--version|--gpl)
- ePiX_version epix
- ePiX_license
- exit 0
- ;;
-
- --no-defaults)
- POSTLIBS=
- DEFAULT_INC=
- DEFAULT_LIB=
- shift; continue
- ;;
-
- -cc|--compiler)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- COMPILER=$2
- COMP_NAME=$(basename "$COMPILER")
- if [ "${COMP_NAME: -2}" = cc ]; then EPIX_SRC_EXT=c; fi
- shift 2; continue
- ;;
-
- *)
- EPIX_MYFLAGS="$EPIX_MYFLAGS $1"; shift; continue
- ;;
- esac
-
-done
-
-# Assume remaining parameters are input files
-EPIX_FILE_LIST=("$@")
-} # End of epix_parse_options
-
-
-# Compile specified files to eepic
-function epix_compile_files {
-
- if [ -z "$1" ]; then
- ePiX_die "No input file specified"
- fi
-
- mkdir "$EPIX_TEMPDIR" || ePiX_die "Can't create \"${EPIX_TEMPDIR}\""
-
- # file counts
- local processed=0
- local success=0
- local failure=0
-
- for EPIX_INFILE in "${EPIX_FILE_LIST[@]}"; do
-
- # sets EPIX_INROOT, EPIX_SUFFIX, EPIX_NOTFOUND, touches EPIX_LOGFILE
- epix_parse_filename "$EPIX_INFILE" "$EPIX_EXTENSIONS"
- let processed=processed+1
-
- if [ "$EPIX_NOTFOUND" = "yes" ]; then ePiX_fail && continue; fi
-
- : ${EPIX_OUTROOT:=$EPIX_INROOT}
- EPIX_OUTFILE="$EPIX_OUTROOT".eepic
-
- { TEMP_BIN="$EPIX_INROOT" &&
- touch "${EPIX_TEMPDIR}/$TEMP_BIN" &&
- TEMPFILES=("{TEMPFILES[@]}" "${EPIX_TEMPDIR}/$TEMP_BIN") ; } ||
- { ePiX_fail "Couldn't create \"$EPIX_TEMPDIR/$TEMP_BIN\"" && continue;}
-
- # Create symlink to input file with appropriate extension for compiler
- TEMP_INPUT="${TEMP_BIN}-tmp.$EPIX_SRC_EXT"
-
- TEMPFILES=("{TEMPFILES[@]}" "${EPIX_TEMPDIR}/$TEMP_INPUT")
-
- { cd ${EPIX_TEMPDIR} && \
- ln -s "../$EPIX_INFILE" "$TEMP_INPUT" && cd .. ; } ||
- { ePiX_fail "Couldn't create \"${EPIX_TEMPDIR}/$TEMP_INPUT\"" && \
- continue; }
-
- # Log message, and compile executable
- TMP_CMD=($COMPILER "${EPIX_TEMPDIR}/${TEMP_INPUT}" $EPIX_MYWARNS \
- -o "${EPIX_TEMPDIR}/${TEMP_BIN}" \
- $EPIX_MYFLAGS $EPIX_MYINCLUDES $DEFAULT_INC $EPIX_MYLIBDIRS \
- $DEFAULT_LIB $LIBS $EPIX_MYLIBS $POSTLIBS)
-
- ePiX_command "${TMP_CMD[@]}"
-
- # Write eepic file
- if [ -x "$EPIX_TEMPDIR/$TEMP_BIN" ]; then
- echo "%% Generated from $EPIX_INFILE on $(date) by" \
- > "$EPIX_OUTFILE"
- ePiX_msg "Writing eepic file: ./$EPIX_TEMPDIR/$TEMP_BIN > $EPIX_OUTFILE"
- ./$EPIX_TEMPDIR/"$TEMP_BIN" >> "$EPIX_OUTFILE"
-
- if [ $? -ne 0 ]; then
- ePiX_warn "Could not create $EPIX_OUTFILE"
- let failure=failure+1
- else
- let success=success+1
- fi
-
- else
- ePiX_warn "Compilation of $EPIX_INFILE failed"
- let failure=failure+1
- fi
-
- # Clean up; for multiple input files, clear output name
- rm -f "$EPIX_TEMPDIR/$TEMP_BIN" "$EPIX_TEMPDIR/$TEMP_INPUT"
- if [ "$EPIX_OUTROOT" = "$EPIX_INROOT" ]; then unset EPIX_OUTROOT; fi
-
- echo -e "\nTranscript written on $EPIX_LOGFILE" > "$EPIX_STDOUT"
-
- done # for EPIX_INFILE in $INFILE_LIST
-
- if [ $processed -gt 1 ]; then
- echo "$processed files processed: $success successfully, $failure failed" > "$EPIX_STDERR"
- fi
-
- if [ -d "$EPIX_TEMPDIR" ]; then rm -Rf "$EPIX_TEMPDIR"; fi
-} # end of epix_compile_files
-
-## Script proper starts here ##
-
-if [ $# -eq 0 ]; then
- ePiX_usage epix $EPIX_DOT_EXT
- epix_help
- exit 0
-fi
-
-# Read options from the config file, if any
-if [ -f "$EPIX_CONFIG_FILE" ]; then
- cat "$EPIX_CONFIG_FILE" | grep -v "#" | \
- while read line; do
- epix_parse_options "$line"
- done
-fi
-
-# Command line options override config file options
-epix_parse_options "$@"
-
-# Suppress all warnings if none are requested
-if [ "$EPIX_MYWARNS" = "" ]; then EPIX_MYWARNS="-w"; fi
-
-# Remaining option(s) assumed to be input file(s)
-epix_compile_files "${EPIX_FILE_LIST[@]}"
-
-exit 0
diff --git a/graphics/epix/errors.h b/graphics/epix/errors.h
deleted file mode 100644
index 7867e22686..0000000000
--- a/graphics/epix/errors.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * errors.h -- ePiX warning/error functions
- *
- * This file is part of ePiX, a preprocessor for creating high-quality
- * line figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 30, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_ERRORS
-#define EPIX_ERRORS
-
-#include <iostream>
-#include <string>
-
-namespace ePiX {
-
- inline void epix_warning(std::string msg)
- {
- std::cerr << "ePiX WARNING: " << msg << std::endl;
- }
-
- inline void epix_error(std::string msg)
- {
- std::cerr << "ePiX ERROR: " << msg << std::endl;
- exit(1);
- }
-} // end of namespace
-
-#endif /* EPIX_ERRORS */
diff --git a/graphics/epix/facet.cc b/graphics/epix/facet.cc
deleted file mode 100644
index 3b808d1b59..0000000000
--- a/graphics/epix/facet.cc
+++ /dev/null
@@ -1,505 +0,0 @@
-/*
- * facet.cc -- Utility classes for shaded surface plotting
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "constants.h"
-#include "errors.h"
-#include "functions.h"
-
-#include "frame.h"
-#include "camera.h"
-
-#include "Color.h"
-#include "paint_style.h"
-
-#include "facet.h"
-
-namespace ePiX {
-
- facet::facet(P f(double, double),
- double u0, double v0,
- double du, double dv,
- const unsigned int N1, const unsigned int N2)
- : m_tint(the_paint_style().fill_color()),
- m_line(the_paint_style().line_pen()),
- m_fill(the_paint_style().fill_flag()),
- pt1(f(u0, v0)),
- pt2(f(u0 + N1*du, v0)),
- pt3(f(u0 + N1*du, v0 + N2*dv)),
- pt4(f(u0, v0 + N2*dv)),
- center(0.25*(pt1 + pt2 + pt3 + pt4)),
- direction(center-cam().viewpt()),
- distance(norm(direction))
- {
- perp = ((pt2 - center)*(pt1 - center));
-
- if (norm(perp) < EPIX_EPSILON)
- perp = (pt4 - center)*(pt3 - center);
-
- perp *= recip(norm(perp));
-
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + i*du, v0));
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0 + N1*du, v0 + j*dv));
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + (N1-i)*du, v0 + N2*dv));
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0 + (N2-j)*dv));
-
- bd.close().fill(!m_tint.is_unset());
- }
-
-
- // facet constructor for f(double, double, double)
- facet::facet(P f(double, double, double),
- double u0, double v0, double w0,
- double du, double dv, double dw,
- const unsigned int N1, const unsigned int N2)
- : m_tint(the_paint_style().fill_color()),
- m_line(the_paint_style().line_pen()),
- m_fill(the_paint_style().fill_flag()),
- pt1(f(u0, v0, w0))
- {
- if (du == 0) // (y,z)
- {
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0, v0 + i*dv, w0));
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0 + N1*dv, w0 + j*dw));
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0, v0 + (N1-i)*dv, w0 + N2*dw));
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0, w0 + (N2-j)*dw));
-
- // use corners to approximate distance to camera
- pt2 = f(u0, v0 + N1*dv, w0);
- pt3 = f(u0, v0 + N1*dv, w0 + N2*dw);
- pt4 = f(u0, v0, w0 + N2*dw);
- }
-
- else if (dv == 0) // (x,z)
- {
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + i*du, v0, w0));
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0 + N1*du, v0, w0 + j*dw));
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + (N1-i)*du, v0, w0 + N2*dw));
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0, w0 + (N2-j)*dw));
-
- // use corners to approximate distance to camera
- pt2 = f(u0 + N1*du, v0, w0);
- pt3 = f(u0 + N1*du, v0, w0 + N2*dw);
- pt4 = f(u0, v0, w0 + N2*dw);
- }
-
- else if (dw == 0) // (x,y)
- {
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + i*du, v0, w0));
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0 + N1*du, v0 + j*dv, w0));
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + (N1-i)*du, v0 + N2*dv, w0));
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0 + (N2-j)*dv, w0));
-
- // use corners to approximate distance to camera
- pt2 = f(u0 + N1*du, v0, w0);
- pt3 = f(u0 + N1*du, v0 + N2*dv, w0);
- pt4 = f(u0, v0 + N2*dv, w0);
- }
-
- else
- epix_error("Bad call to facet constructor"); // exits
-
- bd.close().fill(!m_tint.is_unset());
-
- center = 0.25*(pt1 + pt2 + pt3 + pt4);
-
- direction = center-cam().viewpt();
- distance = norm(direction);
-
- perp = ((pt2 - center)*(pt1 - center));
-
- if (norm(perp) < EPIX_EPSILON)
- perp = (pt4 - center)*(pt3 - center);
-
- perp *= recip(norm(perp));
-
- } // end of facet(f(double, double, double), ...)
-
-
- // for surface of rotation
- facet::facet(double f(double), double g(double),
- double u0, double v0,
- double du, double dv,
- const unsigned int N1, const unsigned int N2,
- const frame& coords)
- : m_tint(the_paint_style().fill_color()),
- m_line(the_paint_style().line_pen()),
- m_fill(the_paint_style().fill_flag()),
- pt1(f(u0)*coords.sea() +
- g(u0)*Cos(v0)*coords.sky() +
- g(u0)*Sin(v0)*coords.eye()),
- pt2(f(u0 + N1*du)*coords.sea() +
- g(u0 + N1*du)*Cos(v0)*coords.sky() +
- g(u0 + N1*du)*Sin(v0)*coords.eye()),
- pt3(f(u0 + N1*du)*coords.sea() +
- g(u0 + N1*du)*Cos(v0 + N2*dv)*coords.sky() +
- g(u0 + N1*du)*Sin(v0 + N2*dv)*coords.eye()),
- pt4(f(u0)*coords.sea() +
- g(u0)*Cos(v0 + N2*dv)*coords.sky() +
- g(u0)*Sin(v0 + N2*dv)*coords.eye()),
- center(0.25*(pt1 + pt2 + pt3 + pt4)),
- direction(center-cam().viewpt()), distance(norm(direction))
- {
- perp = ((pt2 - center)*(pt1 - center));
-
- if (norm(perp) < EPIX_EPSILON)
- perp = (pt4 - center)*(pt3 - center);
-
- perp *= recip(norm(perp));
-
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + i*du)*coords.sea() +
- g(u0 + i*du)*Cos(v0)*coords.sky() +
- g(u0 + i*du)*Sin(v0)*coords.eye());
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0 + N1*du)*coords.sea() +
- g(u0 + N1*du)*Cos(v0 + j*dv)*coords.sky() +
- g(u0 + N1*du)*Sin(v0 + j*dv)*coords.eye());
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + (N1-i)*du)*coords.sea() +
- g(u0 + (N1-i)*du)*Cos(v0 + N2*dv)*coords.sky() +
- g(u0 + (N1-i)*du)*Sin(v0 + N2*dv)*coords.eye());
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0)*coords.sea() +
- g(u0)*Cos(v0 + (N2-j)*dv)*coords.sky() +
- g(u0)*Sin(v0 + (N2-j)*dv)*coords.eye());
-
- bd.close().fill(!m_tint.is_unset());
- }
-
- //// Color-dependent constructors
- facet::facet(P f(double, double),
- double u0, double v0,
- double du, double dv,
- const unsigned int N1, const unsigned int N2,
- const Color& tint)
- : m_tint(tint), m_line(the_paint_style().line_pen()),
- m_fill(the_paint_style().fill_flag()),
- pt1(f(u0, v0)),
- pt2(f(u0 + N1*du, v0)),
- pt3(f(u0 + N1*du, v0 + N2*dv)),
- pt4(f(u0, v0 + N2*dv)),
- center(0.25*(pt1 + pt2 + pt3 + pt4)),
- direction(center-cam().viewpt()),
- distance(norm(direction))
- {
- perp = ((pt2 - center)*(pt1 - center));
-
- if (norm(perp) < EPIX_EPSILON)
- perp = (pt4 - center)*(pt3 - center);
-
- perp *= recip(norm(perp));
-
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + i*du, v0));
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0 + N1*du, v0 + j*dv));
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + (N1-i)*du, v0 + N2*dv));
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0 + (N2-j)*dv));
-
- bd.close().fill(!m_tint.is_unset());
- }
-
-
- // facet constructor for f(double, double, double)
- facet::facet(P f(double, double, double),
- double u0, double v0, double w0,
- double du, double dv, double dw,
- const unsigned int N1, const unsigned int N2,
- const Color& tint)
- : m_tint(tint), m_line(the_paint_style().line_pen()),
- m_fill(the_paint_style().fill_flag()),
- pt1(f(u0, v0, w0))
- {
- if (du == 0) // (y,z)
- {
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0, v0 + i*dv, w0));
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0 + N1*dv, w0 + j*dw));
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0, v0 + (N1-i)*dv, w0 + N2*dw));
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0, w0 + (N2-j)*dw));
-
- // use corners to approximate distance to camera
- pt2 = f(u0, v0 + N1*dv, w0);
- pt3 = f(u0, v0 + N1*dv, w0 + N2*dw);
- pt4 = f(u0, v0, w0 + N2*dw);
- }
-
- else if (dv == 0) // (x,z)
- {
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + i*du, v0, w0));
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0 + N1*du, v0, w0 + j*dw));
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + (N1-i)*du, v0, w0 + N2*dw));
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0, w0 + (N2-j)*dw));
-
- // use corners to approximate distance to camera
- pt2 = f(u0 + N1*du, v0, w0);
- pt3 = f(u0 + N1*du, v0, w0 + N2*dw);
- pt4 = f(u0, v0, w0 + N2*dw);
- }
-
- else if (dw == 0) // (x,y)
- {
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + i*du, v0, w0));
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0 + N1*du, v0 + j*dv, w0));
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + (N1-i)*du, v0 + N2*dv, w0));
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0, v0 + (N2-j)*dv, w0));
-
- // use corners to approximate distance to camera
- pt2 = f(u0 + N1*du, v0, w0);
- pt3 = f(u0 + N1*du, v0 + N2*dv, w0);
- pt4 = f(u0, v0 + N2*dv, w0);
- }
-
- else
- epix_error("Bad call to facet constructor"); // exits
-
- bd.close().fill(!m_tint.is_unset());
-
- center = 0.25*(pt1 + pt2 + pt3 + pt4);
-
- direction = center-cam().viewpt();
- distance = norm(direction);
-
- perp = ((pt2 - center)*(pt1 - center));
-
- if (norm(perp) < EPIX_EPSILON)
- perp = (pt4 - center)*(pt3 - center);
-
- perp *= recip(norm(perp));
-
- } // end of facet(f(double, double, double), ...)
-
-
- // for surface of rotation
- facet::facet(double f(double), double g(double),
- double u0, double v0,
- double du, double dv,
- const unsigned int N1, const unsigned int N2,
- const Color& tint, const frame& coords)
- : m_tint(tint), m_line(the_paint_style().line_pen()),
- m_fill(the_paint_style().fill_flag()),
- pt1(f(u0)*coords.sea() +
- g(u0)*Cos(v0)*coords.sky() +
- g(u0)*Sin(v0)*coords.eye()),
- pt2(f(u0 + N1*du)*coords.sea() +
- g(u0 + N1*du)*Cos(v0)*coords.sky() +
- g(u0 + N1*du)*Sin(v0)*coords.eye()),
- pt3(f(u0 + N1*du)*coords.sea() +
- g(u0 + N1*du)*Cos(v0 + N2*dv)*coords.sky() +
- g(u0 + N1*du)*Sin(v0 + N2*dv)*coords.eye()),
- pt4(f(u0)*coords.sea() +
- g(u0)*Cos(v0 + N2*dv)*coords.sky() +
- g(u0)*Sin(v0 + N2*dv)*coords.eye()),
- center(0.25*(pt1 + pt2 + pt3 + pt4)),
- direction(center-cam().viewpt()), distance(norm(direction))
- {
- perp = ((pt2 - center)*(pt1 - center));
-
- if (norm(perp) < EPIX_EPSILON)
- perp = (pt4 - center)*(pt3 - center);
-
- perp *= recip(norm(perp));
-
- // bottom edge
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + i*du)*coords.sea() +
- g(u0 + i*du)*Cos(v0)*coords.sky() +
- g(u0 + i*du)*Sin(v0)*coords.eye());
-
- // right edge
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0 + N1*du)*coords.sea() +
- g(u0 + N1*du)*Cos(v0 + j*dv)*coords.sky() +
- g(u0 + N1*du)*Sin(v0 + j*dv)*coords.eye());
-
- // top edge (backward)
- for (unsigned int i=0; i<N1; ++i)
- bd.pt(f(u0 + (N1-i)*du)*coords.sea() +
- g(u0 + (N1-i)*du)*Cos(v0 + N2*dv)*coords.sky() +
- g(u0 + (N1-i)*du)*Sin(v0 + N2*dv)*coords.eye());
-
- // left edge (downward)
- for (unsigned int j=0; j<N2; ++j)
- bd.pt(f(u0)*coords.sea() +
- g(u0)*Cos(v0 + (N2-j)*dv)*coords.sky() +
- g(u0)*Sin(v0 + (N2-j)*dv)*coords.eye());
-
- bd.close().fill(!m_tint.is_unset());
- }
-
-
- facet* facet::clone() const
- {
- return new facet(*this);
- }
-
- double facet::how_far() const { return distance; }
-
- bool facet::front_facing() const
- {
- return (-direction|perp) > -EPIX_EPSILON;
- }
-
- // N.B. We assume the fill state is stored by our caller
- void facet::draw(int cull) const
- {
- if (( cull == 1 && front_facing() ) || ( cull == -1 && !front_facing() ))
- return;
-
- // else
- Color paint(m_tint);
- if (paint.is_unset())
- paint = White();
-
- Color ink(m_line.color());
- if (ink.is_unset())
- ink = paint;
-
- if (m_fill)
- {
- // calculate cosine^2 of normal angle
- // Magic formula (simulated ambient lighting)
- const double dens(0.5*(1+pow(perp|(recip(distance)*direction), 2)));
-
- paint *= dens;
- ink *= dens;
- }
-
- bd.draw(paint, pen_data(ink, m_line.width()));
- } // end of facet::draw(bool, int)
-
-
- bool by_distance::operator() (const facet& arg1, const facet& arg2)
- {
- return arg1.how_far() > arg2.how_far();
- }
-
- bool by_distance::operator() (const facet* arg1, const facet* arg2)
- {
- return arg1->how_far() > arg2->how_far();
- }
-} // end of namespace
diff --git a/graphics/epix/facet.h b/graphics/epix/facet.h
deleted file mode 100644
index 0e118da181..0000000000
--- a/graphics/epix/facet.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * facet.h -- Utility classes for shaded surface plotting
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.7
- * Last Change: July 08, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "triples.h"
-#include "frame.h"
-
-#include "path.h"
-
-#include "Color.h"
-#include "pen_data.h"
-
-namespace ePiX {
-
- class facet {
- public:
- // create quasi-planar region bounded by path segments in f(R)
- facet(P f(double, double),
- double u0, double v0, double du, double dv,
- const unsigned int N1, const unsigned int N2);
-
- facet(P f(double, double, double),
- double u0, double v0, double w0,
- double du, double dv, double dw,
- const unsigned int N1, const unsigned int N2);
-
- // for surfaces of rotation
- facet(double f(double), double g(double),
- double u0, double v0, double du, double dv,
- const unsigned int N1, const unsigned int N2,
- const frame& coords=frame());
-
-
- facet(P f(double, double),
- double u0, double v0, double du, double dv,
- const unsigned int N1, const unsigned int N2, const Color&);
-
- facet(P f(double, double, double),
- double u0, double v0, double w0,
- double du, double dv, double dw,
- const unsigned int N1, const unsigned int N2, const Color&);
-
- // for surfaces of rotation
- facet(double f(double), double g(double),
- double u0, double v0, double du, double dv,
- const unsigned int N1, const unsigned int N2, const Color&,
- const frame& coords=frame());
-
-
- facet* clone() const;
-
- double how_far() const;
-
- bool front_facing() const;
-
- void draw(int cull) const;
-
- private:
- Color m_tint;
- pen_data m_line;
- bool m_fill;
-
- P pt1, pt2, pt3, pt4, center, direction, perp;
- double distance;
-
- path bd;
- };
-
-
- class by_distance {
- public:
- bool operator() (const facet&, const facet&);
- bool operator() (const facet*, const facet*);
- };
-} // end of namespace
diff --git a/graphics/epix/files b/graphics/epix/files
deleted file mode 100644
index 4997b1e7ba..0000000000
--- a/graphics/epix/files
+++ /dev/null
@@ -1,224 +0,0 @@
-# Version 1.2.1
-AUTHORS
-BUGS
-ChangeLog
-COPYING
-INSTALL
-Makefile.am
-Makefile.in
-NEWS
-POST-INSTALL
-README
-THANKS
-TODO
-VERSION
-aclocal.m4
-active_screen.cc
-active_screen.h
-affine.cc
-affine.h
-angle_units.cc
-angle_units.h
-arrow_data.cc
-arrow_data.h
-arrow_style.cc
-arrow_style.h
-axis.cc
-axis.h
-bash_completions
-camera.cc
-camera.h
-circle.cc
-circle.h
-clipping.cc
-clipping.h
-Color.cc
-Color.h
-Color_Base.cc
-Color_Base.h
-Color_CMY.cc
-Color_CMY.h
-Color_CMYK.cc
-Color_CMYK.h
-Color_Gray.cc
-Color_Gray.h
-#Color_Named.cc
-#Color_Named.h
-Color_Neutral.cc
-Color_Neutral.h
-Color_RGB.cc
-Color_RGB.h
-Color_Sep.cc
-Color_Sep.h
-Color_Utils.cc
-Color_Utils.h
-#color.cc
-#color.h
-config.guess
-config.sub
-configure
-configure.ac
-#configure.in
-constants.h
-crop_algorithms.h
-cropping.h
-cropping.cc
-curves.cc
-curves.h
-data_bins.cc
-data_bins.h
-data_file.cc
-data_file.h
-data_mask.cc
-data_mask.h
-#dataplot.cc
-#dataplot.h
-debug.h
-depcomp
-deriv.h
-domain.cc
-domain.h
-edge_data.h
-eepic.cc
-eepic.h
-elaps.1
-elaps.in
-enums.h
-#epix.1
-epix.1.in
-#epix.ebuild
-epix.el.in
-epix.in
-#epix.spec
-epix-lib.sh
-errors.h
-facet.cc
-facet.h
-files
-flix.1
-flix.in
-fmt_template.cc
-fmt_template.h
-format.cc
-format.h
-frac.cc
-frac.h
-frame.cc
-frame.h
-functions.cc
-functions.h
-geometry.cc
-geometry.h
-#globals.cc
-#globals.h
-glyph.cc
-glyph.h
-halfspace.cc
-halfspace.h
-hatching.cc
-hatching.h
-install-sh
-intersections.cc
-intersections.h
-interval.cc
-interval.h
-label_data.cc
-label_data.h
-label_style.cc
-label_style.h
-#Label.cc
-#Label.h
-laps.1
-laps.in
-legend.cc
-legend.h
-legend_item.cc
-legend_item.h
-legend_tile.cc
-legend_tile.h
-length.cc
-length.h
-lens.cc
-lens.h
-make_header
-map.h
-markers.cc
-markers.h
-marker_style.cc
-marker_style.h
-mask_diamond.cc
-mask_diamond.h
-mask_ellipse.cc
-mask_ellipse.h
-mask_rectangle.cc
-mask_rectangle.h
-missing
-mkinstalldirs
-#objects.cc
-#objects.h
-#output.cc
-#output.h
-paint_style.cc
-paint_style.h
-pairs.cc
-pairs.h
-path.h
-path.cc
-path_data.cc
-path_data.h
-path_style.cc
-path_style.h
-pen_arrow.cc
-pen_arrow.h
-pen_data.cc
-pen_data.h
-pen_fill.cc
-pen_fill.h
-pen_line.cc
-pen_line.h
-picture.cc
-picture.h
-picture_data.cc
-picture_data.h
-plane.cc
-plane.h
-plot_algorithms.h
-plots.cc
-plots.h
-#polygon.cc
-#polygon.h
-#polyhedron.cc
-#polyhedron.h
-pst.cc
-pst.h
-screen.cc
-screen.h
-screen_crop.cc
-screen_crop.h
-screen_data.cc
-screen_data.h
-screen_mask.cc
-screen_mask.h
-segment.cc
-segment.h
-sphere.cc
-sphere.h
-spline_data.h
-spline.cc
-spline.h
-state.cc
-state.h
-#state_data.cc
-#state_data.h
-surface.cc
-surface.h
-tikz.cc
-tikz.h
-tile.cc
-tile.h
-triples.cc
-triples.h
-utils.cc
-utils.h
-verbatim.cc
-verbatim.h
diff --git a/graphics/epix/flix.1 b/graphics/epix/flix.1
deleted file mode 100644
index 4430a02037..0000000000
--- a/graphics/epix/flix.1
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/epix.1
diff --git a/graphics/epix/flix.in b/graphics/epix/flix.in
deleted file mode 100644
index 5c011ab3af..0000000000
--- a/graphics/epix/flix.in
+++ /dev/null
@@ -1,563 +0,0 @@
-#! /bin/bash
-#
-# flix: Convert ePiX file(s) to png/mng/gif
-#
-# Options: --help for usage, --version for version and license
-#
-# Compiler flags may be specified on the command line or in the config
-# file ~/.epixrc, just as for epix.
-#
-# LaTeX packages may be specified on the command line or in the config
-# file ~/.dvipsrc, just as for elaps
-#
-# Copyright (C) 2004, 2005, 2006, 2007
-# Andrew D. Hwang <For address, do "flix -V">
-#
-
-. "@pkglibdir@/epix-lib.sh"
-
-EPIX_CONFIG_FILE="$HOME/.epixrc"
-FLIX_CONFIG_FILE="$HOME/.flixrc"
-
-# Search these extensions in order of preference
-FLIX_EXTENSIONS="flx xp cc c C cpp" # or NULL
-FLIX_DOT_EXT=".${FLIX_EXTENSIONS// /|.}" # for usage message
-
-# Path to standard header and library and compiler
-HDR_PATH="-I@includedir@"
-LIB_PATH="-L@pkglibdir@"
-COMPILER="@RUNTIME_COMPILER@"
-
-# default values
-FLIX_TMAX=1
-FLIX_FRAME_COUNT=24
-FLIX_DELAY=8
-
-# filename variables
-declare FLIX_FRAME # $EPIX_INROOT-frameXX
-declare FLIX_MOVIE # actual output filename
-
-FLIX_SUFFIX=mng
-
-# flags
-FLIX_PROGRESS="yes" # Show progress bar?
-FLIX_ONLY_EEPIC="no" # Create eepic files only?
-FLIX_ONLY_PNG="no" # Create png and eepic files only?
-FLIX_SAVE_EEPIC="no" # Save eepic files after run?
-FLIX_SAVE_PNG="no" # Save png files after run?
-
-FLIX_FRAME_PAD="" # zero or more zeros, dep. on number of frames
-FLIX_1ST_FRAME= # filename, to test success of compile
-
-trap '[ -n "$EPIX_TEMPDIR" ] && rm -rf "$EPIX_TEMPDIR"' 0 1 2 3 7 10 13 15
-
-# options for external programs
-declare -a ELAPS_OPTS
-
-# compiler variables
-declare GXX_INCLUDES
-declare GXX_LIBDIRS
-GXX_LIBS="-lm"
-GXX_POSTLIBS="-lepix"
-declare -a GXX_DEFINES
-
-function flix_help
-{
-cat <<HELP
-Options:
- -h, --help
- Show this message and exit
-
- -V, --version, --gpl
- Show version and license
-
- -v, --verbose
- Show success/failure messages
-
- -d, --delay
- Set frame delay in 1/100 sec (default 8)
-
- --frames
- Set number of frames (default 24).
-
- --gif
- Create gif output instead of mng
-
- --no-defaults
- Do not use default include/library directories or libraries
-
- --pst
- Write frames using PSTricks macros (useful only with --save-eepic)
-
- --tikz
- Write frames using tikz macros (useful only with --save-eepic)
-
- --eepic
- Write frames using eepic macros (useful only with --save-eepic)
-
- --only-eepic
- Create only eepic files (default no); implies --save-eepic
-
- --only-png
- Create only png files (default no); implies --save-png
-
- -o, --output
- Specify output file explicitly (extension optional)
-
- --save-eepic
- Save eepic files (default no)
-
- --save-png
- Save png files (default no)
-
- -t, --tmax
- Set maximum time on animation interval (default 1.0).
-
- -H, --huge
- Use hugelatex (if available) to compile frames
-
- -D*
- Pass preprocessor definition to the compiler
-
- -I*, -L*, -l*, -W*, -i*, -u, -x
- Passed to g++ (q.v.)
-
- Other options are passed to elaps (q.v.)
-
-HELP
-ePiX_bugreport
-
-} # End of flix_help
-
-
-function flix_pad_init()
-{
- let TMP_CT=$((FLIX_FRAME_COUNT/10))
- while [ $TMP_CT -ne 0 ]
- do
- let TMP_CT=$((TMP_CT/10))
- FLIX_FRAME_PAD="0$FLIX_FRAME_PAD"
- done
-}
-
-
-# Parse command line/config file for compiler flags/options
-function flix_parse_options
-{
-while [ "$1" != "${1#-}" ]; do
- case "$1" in
-
- -v|--verbose)
- if [ -z "$2" ]; then
- echo "Please use -V for version"
- exit 0
- fi
- EPIX_STDOUT="$SYSTEM_STDOUT"
- FLIX_PROGRESS="no"
- shift; continue
- ;;
-
- -vv)
- echo "Discontinued option -vv; please use -v for verbose output"
- exit 0
- ;;
-
- -h|--help)
- ePiX_usage flix $FLIX_DOT_EXT
- flix_help
- exit 0
- ;;
-
- -V|--version|--gpl)
- ePiX_version flix
- ePiX_license
- exit 0
- ;;
-
- -d|--delay)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- FLIX_DELAY="$2"
- shift 2; continue
- ;;
-
- --frames)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- FLIX_FRAME_COUNT="$2"
- shift 2; continue
- ;;
-
- --gif)
- FLIX_SUFFIX=gif
- shift; continue
- ;;
-
- --no-defaults)
- GXX_POSTLIBS=
- HDR_PATH=
- LIB_PATH=
- ELAPS_OPTS=("${ELAPS_OPTS[@]}" "$1")
- shift; continue
- ;;
-
- --pst)
- GXX_DEFINES=("${GXX_DEFINES[@]}" "-DEPIX_FMT_PSTRICKS")
- shift; continue
- ;;
-
- --tikz)
- GXX_DEFINES=("${GXX_DEFINES[@]}" "-DEPIX_FMT_TIKZ")
- shift; continue
- ;;
-
- --eepic)
- GXX_DEFINES=("${GXX_DEFINES[@]}" "-DEPIX_FMT_EEPIC")
- shift; continue
- ;;
-
- --only-eepic)
- FLIX_ONLY_EEPIC="yes"
- FLIX_SAVE_EEPIC="yes"
- shift; continue
- ;;
-
- --only-png)
- FLIX_ONLY_PNG="yes"
- FLIX_SAVE_PNG="yes"
- shift; continue
- ;;
-
- -o|--output)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- FLIX_OUTFILE="$2"
- if [ "$FLIX_OUTFILE" = "${FLIX_OUTFILE%.mng}.mng" ]; then
- FLIX_SUFFIX=mng
- EPIX_OUTROOT="${FLIX_OUTFILE%.mng}"
-
- elif [ "$FLIX_OUTFILE" = "${FLIX_OUTFILE%.gif}.gif" ]; then
- FLIX_SUFFIX=gif
- EPIX_OUTROOT="${FLIX_OUTFILE%.gif}"
-
- else
- EPIX_OUTROOT="$FLIX_OUTFILE"
-
- fi
- shift 2; continue
- ;;
-
- # Deliberately undocumented
- -q|--quiet)
- EPIX_STDERR="$SYSTEM_DEVNULL"
- shift; continue
- ;;
-
- --save-eepic)
- FLIX_SAVE_EEPIC="yes"
- shift; continue
- ;;
-
- --save-png)
- FLIX_SAVE_PNG="yes"
- shift; continue
- ;;
-
- -t|--tmax)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- FLIX_TMAX="$2"
- shift 2; continue
- ;;
-
- -H|--huge)
- ELAPS_OPTS=("${ELAPS_OPTS[@]}" "$1")
- shift 1; continue
- ;;
-
- -D)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- if [ "$2" != "${2#-}" ]; then
- GXX_DEFINES=("${GXX_DEFINES[@]}" "-D$2")
- shift 2; continue
- else
- ePiX_warn "Ignoring option \"$1\" followed by \"$2\""
- shift 1; continue
- fi
- ;;
-
- -D*)
- GXX_DEFINES=("${GXX_DEFINES[@]}" "$1")
- shift 1; continue
- ;;
-
- -I)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- GXX_INCLUDES="$GXX_INCLUDES -I$2"; shift 2; continue
- ;;
-
- -L)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- GXX_LIBDIRS="$GXX_LIBDIRS -L$2"; shift 2; continue
- ;;
-
- -l)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- GXX_LIBS="$GXX_LIBS -l$2"; shift 2; continue
- ;;
-
- -W)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- FLIX_WARNS="$FLIX_WARNS -W$2"; shift 2; continue
- ;;
-
- -I*)
- GXX_INCLUDES="$GXX_INCLUDES $1"; shift; continue
- ;;
-
- -L*)
- GXX_LIBDIRS="$GXX_LIBDIRS $1"; shift; continue
- ;;
-
- -l*)
- GXX_LIBS="$GXX_LIBS $1"; shift; continue
- ;;
-
- -W*)
- FLIX_WARNS="$FLIX_WARNS $1"; shift; continue
- ;;
-
- # Relatively obscure compiler options
- -i*|-u|-x)
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- FLIX_FLAGS="$FLIX_FLAGS $1 $2"; shift 2; continue
- ;;
-
- *) # Pass other options to elaps
- if [ $# -lt 2 ]; then ePiX_die "Missing argument to \"$1\" option"; fi
- if [ "$2" != "${2#-}" ]; then
- ELAPS_OPTS=("${ELAPS_OPTS[@]}" "$1")
- shift 1; continue
- else
- ELAPS_OPTS=("${ELAPS_OPTS[@]}" "$1" "$2")
- shift 2; continue
- fi
- ;;
- esac
-done
-
-# Assume remaining parameters are input files
-FLIX_FILE_LIST=("$@")
-} # End of flix_parse_options
-
-
-# compile infile outfile.exe
-function flix_compile_files()
-{
- if [ -z "$1" ]; then
- ePiX_die "No input file specified"
- fi
-
- # See epix-lib.sh
- mkdir "$EPIX_TEMPDIR" || ePiX_die "Can't create \"${EPIX_TEMPDIR}\""
-
- # file counts
- local processed=0
- local success=0
- local failure=0
-
- # N.B. Global variables named EPIX_XX
- for EPIX_INFILE in "${FLIX_FILE_LIST[@]}"; do
-
- epix_parse_filename "$EPIX_INFILE" "$FLIX_EXTENSIONS"
- let processed=processed+1
-
- if [ "$EPIX_NOTFOUND" = "yes" ]; then ePiX_fail && continue ; fi
-
- : ${EPIX_OUTROOT=$EPIX_INROOT}
- FLIX_FRAME="$EPIX_OUTROOT"-frame
-
- # Temporary binary
- { TEMP_BIN="$EPIX_INROOT" && touch "${EPIX_TEMPDIR}/$TEMP_BIN" ; } ||
- { ePiX_fail "No write permission in \"${EPIX_TEMPDIR}\"?!" && \
- continue ; }
-
- TEMPFILES=("{TEMPFILES[@]}" "${EPIX_TEMPDIR}/$TEMP_BIN")
-
- # Create symlink to input file with appropriate extension for compiler
- TEMP_INPUT="${TEMP_BIN}-tmp.cc"
-
- TEMPFILES=("{TEMPFILES[@]}" "${EPIX_TEMPDIR}/$TEMP_INPUT")
-
- { cd ${EPIX_TEMPDIR} && \
- ln -s "../$EPIX_INFILE" "$TEMP_INPUT" && cd .. ; } ||
- { ePiX_fail "Couldn't create \"${EPIX_TEMPDIR}/$TEMP_INPUT\"" && \
- continue ; }
-
- # Compile executable
- TMP_CMD=($COMPILER "${EPIX_TEMPDIR}/$TEMP_INPUT" $FLIX_WARNS \
- "${GXX_DEFINES[@]}" -o "${EPIX_TEMPDIR}/$TEMP_BIN" \
- $HDR_PATH $GXX_INCLUDES $LIB_PATH $GXX_LIBDIRS $GXX_LIBS \
- $GXX_POSTLIBS $FLIX_FLAGS)
-
- ePiX_command "${TMP_CMD[@]}"
-
- # Write animation frames
- if [ ! -x "${EPIX_TEMPDIR}/$TEMP_BIN" ]; then
- ePiX_fail "Couldn't compile executable \"${EPIX_TEMPDIR}/$TEMP_BIN\""
- continue
- fi
-
- # purge old files
- rm -f "$FLIX_FRAME"*.eepic # eepics always overwritten
-
- if [ "$FLIX_ONLY_EEPIC" = "no" ]; then
- # some pngs clobbered => remove all
- rm -f "$FLIX_FRAME"*.png
- fi
-
- # and create new frames
- for i in $(seq 1 $FLIX_FRAME_COUNT); do
- flix_png "${EPIX_TEMPDIR}/$TEMP_BIN" $i
-
- # bomb out if we can't create first new frame
- if [ ! -f "${FLIX_1ST_FRAME}" ]; then
- ePiX_fail "Couldn't create frames"
- continue 2
- fi
- done
-
- if [ "$FLIX_ONLY_PNG" = "no" -a "$FLIX_ONLY_EEPIC" = "no" ]; then
- FLIX_MOVIE="${EPIX_OUTROOT}.$FLIX_SUFFIX"
- TMP_CMD=(convert -delay $FLIX_DELAY "$FLIX_FRAME"*.png "$FLIX_MOVIE")
-
- ePiX_command "${TMP_CMD[@]}"
-
- if [ -f "$FLIX_MOVIE" ]; then
- let success=success+1
- else
- ePiX_fail "Couldn't assemble frames"
- continue
- fi
- fi
-
- echo -e "\nTranscript written on $EPIX_LOGFILE" > "$EPIX_STDOUT"
-
- # clean up
- if [ "$EPIX_OUTROOT" = "$EPIX_INROOT" ]; then unset EPIX_OUTROOT; fi
-
- rm -f "$FLIX_FRAME"*.eps "$FLIX_FRAME"*.log
-
- if [ "$FLIX_SAVE_EEPIC" = "no" ]; then
- rm -f "$FLIX_FRAME"*.eepic
- fi
-
- if [ "$FLIX_SAVE_PNG" = "no" ]; then
- rm -f "$FLIX_FRAME"*.png
- fi
-
- # Newline after progress bar?
- if [ "$FLIX_PROGRESS" = "yes" ]; then echo; fi
-
- done # for EPIX_INFILE in $FLIX_INFILE_LIST
-
- if [ $processed -gt 1 ]; then
- echo "$processed files processed: $success movie(s) written, $failure failed" > "$EPIX_STDERR"
- fi
-
- if [ -d "$EPIX_TEMPDIR" ]; then rm -Rf "$EPIX_TEMPDIR"; fi
-} # end of flix_compile_files()
-
-
-# Prints ....|....10....|....20
-function progress_bar()
-{
- if [ $(($1 % 10)) -eq 0 ]; then
- echo -n "$1"
- elif [ $(($1 % 5)) -eq 0 ]; then
- echo -n "|"
- else
- echo -n "."
- fi
-}
-
-
-# Create a single eepic, eps, and/or png file:
-# flix_png file.exe frame_number
-function flix_png()
-{
- local TEMP_BIN="$1"
- local INDEX="$2"
-
- TIME=$(echo ${FLIX_TMAX}*${INDEX} | bc)
-
- # Calculate number of 0s in output filename
- TMP_CT=$(( ${INDEX}/10 ))
- TMP_PAD="$FLIX_FRAME_PAD"
-
- # progress bar
- if [ "$FLIX_PROGRESS" = "yes" ]; then
- progress_bar $INDEX
- else
- ePiX_msg "Frame $INDEX.eps"
- fi
-
- # each time we're divisible by ten, remove a 0 from padding
- while [ $TMP_CT -ne 0 ]
- do
- TMP_CT=$(($TMP_CT/10))
- TMP_PAD="${TMP_PAD%%0}"
- done
-
- INDEX="$TMP_PAD$INDEX" # pad with 0s
- if [ $2 -eq 1 ]; then FLIX_1ST_FRAME="$FLIX_FRAME"${TMP_PAD}1.eepic; fi
-
- TMP_NAME="${FLIX_FRAME}${INDEX}"
-
- "./$TEMP_BIN" $TIME $FLIX_FRAME_COUNT > "$TMP_NAME".eepic
-
- if [ $? -ne 0 ]; then
- ePiX_warn "Could not create frames"
- return
- fi
-
- if [ "$FLIX_ONLY_EEPIC" = "no" ]; then # create eps
- TEMPFILES=("{TEMPFILES[@]}" "$TMP_NAME".eps)
-
- TMP_CMD=(elaps "${ELAPS_OPTS[@]}" -o "$TMP_NAME".eps "$TMP_NAME".eepic)
- ePiX_command "${TMP_CMD[@]}"
-
- TMP_CMD=(convert "$TMP_NAME".eps "$TMP_NAME".png)
- ePiX_command "${TMP_CMD[@]}"
- fi
-} # end of flix_png()
-
-## Script proper starts here ##
-
-if [ $# -eq 0 ]; then
- ePiX_usage flix $FLIX_DOT_EXT
- flix_help
- exit 0
-fi
-
-# Read options from config files, if any
-if [ -f "$EPIX_CONFIG_FILE" ]; then
- cat "$EPIX_CONFIG_FILE" | grep -v "#" | \
- while read line; do
- flix_parse_options "$line"
- done
-fi
-
-if [ -f "$FLIX_CONFIG_FILE" ]; then
- cat "$FLIX_CONFIG_FILE" | grep -v "#" | \
- while read line; do
- flix_parse_options "$line"
- done
-fi
-
-flix_parse_options "$@"
-
-flix_pad_init
-
-# Suppress all warnings if none are requested
-if [ "$FLIX_WARNS" = "" ]; then FLIX_WARNS="-w"; fi
-
-flix_compile_files "${FLIX_FILE_LIST[@]}"
-
-exit 0
diff --git a/graphics/epix/fmt_template.cc b/graphics/epix/fmt_template.cc
deleted file mode 100644
index 3b7e423070..0000000000
--- a/graphics/epix/fmt_template.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * fmt.cc -- ePiX::fmt output format
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 08, 2007
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <list>
-
-#include <string>
-#include <sstream>
-
-#include <set>
-
-#include "pairs.h"
-#include "edge_data.h"
-
-#include "Color.h"
-
-#include "path_style.h"
-#include "pen_data.h"
-
-#include "format.h"
-#include "fmt.h"
-
-namespace ePiX {
-
- fmt::fmt() { } // modify as necessary
-
- fmt* fmt::clone() const
- {
- return new fmt(*this);
- }
-
- // Filled region with specified Cartesian edges, offset, and color
- std::string fmt::print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fill,
- const pen_data& line,
- const std::string& len) const
- {
- // Use print_paths to represent a closed polygon bounded by
- // "edges", drawn with "line" and solid "fill"-ed.
- }
-
- // Unfilled region, specified Cartesian edges. Should generally be
- // trivially implemented using one-pen function (supplied).
- std::string fmt::print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line_pen,
- const pen_data& base_pen,
- const path_state& style,
- const std::string& len) const
- {
- // Use print_paths (solid) or format::print_edges (otherwise) to
- // represent a (closed or open) polygon bounded by "edges", drawn
- // with "line" and "base" pens in the line "style".
- }
-
- /*
- * Default implementations provided, see format.cc. If default works
- * for the new format, remove these declarations.
- // Picture start and finish:
- // Size and offset in page units,
- // pallet (set of colors contained in the screen),
- // unitlength
- std::string fmt::pic_header(const pair& sizes,
- const pair& offsets,
- const std::set<Color>& pallet,
- const std::string& len) const
- {
- // Print commands to draw a picture of specified true size and offset
- }
-
- std::string fmt::pic_footer() const
- {
- // Close/end the picture
- }
- */
-
- // Print color declaration strings: model, name, densities;
- // may simply return xdefinecolor(...) if appropriate
- std::string fmt::print_color(const std::string&,
- const std::string&,
- double,
- double,
- double) const;
-
- std::string fmt::print_color(const std::string&,
- const std::string&,
- double,
- double,
- double,
- double) const;
-
- // One-line comment
- std::string fmt::print_comment(const std::string&) const;
-
- // Verbatim output
- std::string fmt::print_verbatim(const std::string&) const;
-
-
- // start/end a picture-like environment, set unit length
- std::string fmt::start_picture(const pair&, const pair&) const;
- std::string fmt::end_picture() const;
-
- std::string fmt::set_unitlength(const std::string& len) const;
-
- // reset internal state date to null
- void fmt::reset_state() const;
-
- //// private member functions ////
-
- // returns "usepackages" + [SPACE] + "comma-separated LaTeX packages"
- std::string fmt::usepackages() const
- {
- return "usepackages fmt";
- }
-
- // string argument for passing attributes local to this path/loop
- std::string fmt::start_open_path(const std::string&) const;
- std::string fmt::end_open_path(const std::string&) const;
-
- std::string fmt::start_closed_path(const std::string&) const;
- std::string fmt::end_closed_path(const std::string&) const;
-
- // print declarations to set state of output format
- std::string fmt::set_fill_state(const Color&) const;
- std::string fmt::set_pen_state(const pen_data&) const;
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- std::string fmt::put_box(const pair&, const std::string&) const;
-
- // draw a filled or hollow circle of specified diam, color
- std::string fmt::print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const;
-
- //// "Optional" (implemented, but reimplementable) functions ////
- // Used to format line breaks in long paths (e.g. newline and two spaces)
- // std::string fmt::path_break() const;
-
- // Used between points in paths (e.g. "" or "--")
- // std::string fmt::path_connector() const;
-
- // std::string fmt::print_pallet(const std::set<Color>& pallet) const;
-
- // Represent a pair, length, or Color as a string
- // std::string fmt::print(const pair&) const; // Default: "(a,b)"
- // std::string fmt::print(const length&) const; // Default: "3.5cm", e.g.
- // std::string fmt::print(const Color&) const; // Default: color name
-
-} // end of namespace
diff --git a/graphics/epix/fmt_template.h b/graphics/epix/fmt_template.h
deleted file mode 100644
index a50b3a3855..0000000000
--- a/graphics/epix/fmt_template.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * fmt.h -- ePiX::fmt output format
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 08, 2007
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * To create files foo.h, foo.cc for output format "foo", do
- *
- * for suff in cc h; do
- * sed 's/fmt/foo/g' format_template.$suff > foo.$suff
- * done
- *
- * The include guards and initial comments should be updated manually.
- */
-
-#ifndef EPIX_FMT
-#define EPIX_FMT
-
-#include <set>
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-
-namespace ePiX {
-
- class Color;
- class pair;
- class path_state;
- class pen_data;
-
- class fmt : public format {
- public:
-
- fmt(); // some constructor mandatory, needn't have this signature
-
- // Return a copy of this
- fmt* clone() const;
-
- // Filled region with specified Cartesian edges, offset, and color
- std::string print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fill,
- const pen_data& line,
- const std::string& len) const;
-
- // Unfilled region, specified Cartesian edges. Should generally be
- // trivially implemented using one-pen function (supplied).
- std::string print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line_pen,
- const pen_data& base_pen,
- const path_state& style,
- const std::string& len) const;
-
- /*
- * Picture start and finish:
- * Size and offset in page units,
- * pallet (set of colors contained in the screen),
- * unitlength
- *
- * These functions have default implementations, see format.cc.
- * If the new format can use the default implementation, these
- * functions declarations should be removed.
- *
- std::string pic_header(const pair& sizes,
- const pair& offsets,
- const std::set<Color>& pallet,
- const std::string& len) const;
-
- std::string pic_footer() const;
- */
-
- // Print color declaration strings: model, name, densities
- std::string print_color(const std::string&,
- const std::string&,
- double,
- double,
- double) const;
-
- std::string print_color(const std::string&,
- const std::string&,
- double,
- double,
- double,
- double) const;
-
- // One-line comment
- std::string print_comment(const std::string&) const;
-
- // Verbatim output
- std::string print_verbatim(const std::string&) const;
-
-
- // begin and end a picture-like environment, set the unit length
- std::string start_picture(const pair&, const pair&) const;
- std::string end_picture() const;
-
- std::string set_unitlength(const std::string& len) const;
-
- // State data, if any, must be mutable
- void reset_state() const;
-
- private:
-
- std::string usepackages() const;
-
- // string argument for passing attributes local to this path/loop
- std::string start_open_path(const std::string&) const;
- std::string end_open_path(const std::string&) const;
-
- std::string start_closed_path(const std::string&) const;
- std::string end_closed_path(const std::string&) const;
-
- // print declarations to set state of output format
- std::string set_fill_state(const Color&) const;
- std::string set_pen_state(const pen_data&) const;
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- std::string put_box(const pair&, const std::string&) const;
-
- // draw a filled or hollow circle of specified diam, color
- std::string print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const;
-
- //// "Optional" (implemented, but reimplementable) functions ////
- // inserted in long paths, defaults to <newline> and two spaces
- // std::string path_break() const;
-
- // inserted between path points, deaults to ""
- // std::string path_break() const;
-
- // std::string print_pallet(const std::set<Color>&) const;
-
- // Represent a pair, length, or Color as a string
- // std::string print(const pair&) const; // Default: "(a,b)"
- // std::string print(const length&) const; // Default: "3.5cm", e.g.
- // std::string print(const Color&) const; // Default: color name
-
- }; // end of class fmt
-} // end of namespace
-
-#endif /* EPIX_FMT */
diff --git a/graphics/epix/format.cc b/graphics/epix/format.cc
deleted file mode 100644
index f799baa7a4..0000000000
--- a/graphics/epix/format.cc
+++ /dev/null
@@ -1,720 +0,0 @@
-/*
- * format.cc -- ePiX output format interface and label-writing functions
- *
- * This file is part of ePiX, a c++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-#include <string>
-#include <sstream>
-#include <vector>
-#include <list>
-
-#include "enums.h"
-#include "constants.h"
-
-#include "errors.h"
-#include "utils.h"
-
-#include "functions.h"
-
-#include "marker_style.h"
-#include "label_style.h"
-#include "path_style.h"
-#include "Color.h"
-
-#include "pen_data.h"
-
-#include "pairs.h"
-#include "edge_data.h"
-
-#include "length.h"
-
-#include "picture.h" // circ may need to add White to pallet
-#include "picture_data.h"
-
-#include "format.h"
-
-namespace ePiX {
- // public, non-virtual
- // LaTeX label-generating commands written in terms of protected interface
- std::string format::print_mark(const pair& here, const pair& offset,
- const epix_mark_type mk,
- const marker_sizes& sz,
- const label_state& style,
- const std::string& len) const
- {
- // convert dotsize to len
- length true_diam(sz.dot_size());
- double diam(true_diam.to(len).magnitude());
-
- // set diameter
- if (mk == DOT || mk == CIRC)
- diam *= 0.75;
- else if (mk == DDOT)
- diam *= 0.5;
-
- // and print
- if (mk == SPOT || mk == DOT || mk == DDOT)
- return print_circle_marker(here + pt_to_len(offset, len), diam, true,
- style.text_color(), len);
-
- else if (mk == CIRC) // Draw filled dot, then ring
- {
- Color bk(style.mask_color());
- // use White for unset mask
- if (bk.is_unset())
- {
- bk = White();
- the_picture().add_to_pallet(bk);
- }
-
- return print_circle_marker(here + pt_to_len(offset, len), diam, true,
- bk, len)
- + print_circle_marker(here + pt_to_len(offset, len), diam, false,
- style.text_color(), len);
- }
-
- else if (mk == RING)
- return print_circle_marker(here + pt_to_len(offset, len), diam, false,
- style.text_color(), len);
-
- else
- return put_box(here + pt_to_len(offset, len),
- print_latex_label(style, print_latex_marker(mk, sz, len),
- false)); // no mask or box
- }
-
- // public, non-virtual
- std::string format::print_text(const pair& here, const pair& offset,
- const std::string& label,
- const label_state& style,
- const std::string& len) const
- {
- return put_box(here + pt_to_len(offset, len),
- print_latex_label(style, label, true));
- }
-
-
- // public, non-virtual
- std::string format::print_line(const edge2d& e,
- const pair& offset,
- const pen_data& line,
- const pen_data& base,
- const path_state& style,
- const std::string& len) const
- {
- if ((line.width() < length(EPIX_EPSILON))
- || (line.color().is_unset())
- || !e.is_seen() )
- return "";
-
- // else
- std::list<edge2d> edges;
- edges.push_back(e);
- return print_line(edges, offset, line, base, style, len);
- }
-
-
- // public, non-virtual (file header comment block)
- std::string format::file_comments(const std::string& units,
- const length& hoffset,
- const length& voffset,
- double Xmin, double Xmax,
- double Ymin, double Ymax,
- double Hsize, double Vsize) const
- {
- std::ostringstream obuf;
-
- const std::string hoff_dir(length(0) < hoffset ? "right" : "left");
- const std::string voff_dir(length(0) < voffset ? "up" : "down");
-
- const double hoff(hoffset.magnitude());
- const double voff(voffset.magnitude());
-
- std::stringstream bd_box, act_sz, fg_off;
- bd_box << " Cartesian bounding box: ["
- << Xmin << "," << Xmax << "] x [" << Ymin << "," << Ymax<< "]";
-
- act_sz << " Actual size: " << Hsize << " x " << Vsize << units;
-
- fg_off << " Figure offset: "
- << hoff_dir << " by " << hoff << units << ", "
- << voff_dir << " by " << voff << units;
-
- obuf << print_comment("ePiX-" + epix_version())
- << print_comment("")
- << print_comment(bd_box.str())
- << print_comment(act_sz.str())
- << print_comment(fg_off.str())
- << print_comment("")
- << print_comment(usepackages())
- << print_comment("");
-
- return obuf.str();
- } // end of file_comments()
-
-
- // public, virtual
- std::string format::pic_header(const pair& sizes,
- const pair& offsets,
- const std::set<Color>& pallet,
- const std::string& len) const
- {
- std::stringstream obuf;
- obuf << print_pallet(pallet)
- << set_unitlength(len)
- << start_picture(sizes, offsets);
-
- return obuf.str();
- }
-
- // public, virtual
- std::string format::pic_footer() const
- {
- return end_picture();
- }
-
- // public, non-virtual
- std::string format::print_color(const std::string& model,
- const std::string& name,
- const std::vector<double>& dens) const
- {
- if (dens.size() == 3)
- return print_color(model, name, dens.at(0), dens.at(1), dens.at(2));
-
- else if (dens.size() == 4)
- return print_color(model, name,
- dens.at(0), dens.at(1), dens.at(2), dens.at(3));
-
- else if (dens.size() == 0) // Neutral()
- return "";
-
- else
- {
- epix_warning("format::print_color(): Internal error");
- return print_color("rgb", "rgb_000000", 0, 0, 0);
- }
- }
-
- // protected, non-virtual (one-pen version)
- std::string format::print_line(const std::list<edge2d>& edges,
- const pair& offset, const pen_data& line,
- const path_state& style,
- const std::string& attribs,
- const std::string& len) const
- {
- if ( (line.width() < length(EPIX_EPSILON))
- || (line.color().is_unset())
- || edges.begin() == edges.end() )
- return "";
-
- // else
- std::stringstream value, obuf;
-
- obuf << set_pen_state(line);
-
- if (style.is_solid())
- obuf << print_paths(edges, offset, attribs, len);
-
- else // not solid
- {
- // compute diameter of dots
- length lw(line.width());
- lw.to(len);
-
- // compute unit length in pt
- length units("1"+len);
- units.to("pt");
- double in_pt(units.magnitude());
-
- double pattern_size(style.separation()); // in pt
-
- // split each edge into pattern_size chunks if necessary
- for (std::list<edge2d>::const_iterator ep = edges.begin();
- ep != edges.end(); ++ep)
- {
- double curr_len(((*ep).length())*in_pt);
-
- // number of dash patterns *ep can hold
- unsigned int N((unsigned int) ceil(curr_len/pattern_size));
- if (N == 1)
- obuf << print_edge((*ep), offset, style.breakpts(),
- lw.magnitude(), line.color(), attribs, len);
-
- if (N > 1)
- {
- pair T((*ep).tail()), dir((1.0/N)*((*ep).head() - T));
- for (unsigned int i=0; i<N; ++i)
- obuf << print_edge(edge2d(T+i*dir, T+(i+1)*dir,
- (*ep).is_seen()),
- offset, style.breakpts(),
- lw.magnitude(), line.color(),
- attribs, len);
- }
- }
- } // end of !solid
-
- return obuf.str();
- } // end of print_line(edges, offset, line, style, attribs, len)
-
-
- std::string format::print_line(const edge2d& e,
- const pair& offset,
- const pen_data& line,
- const path_state& style,
- const std::string& attribs,
- const std::string& len) const
- {
- if ( (line.width() < length(EPIX_EPSILON)) ||
- (line.color().is_unset()) ||
- !e.is_seen() )
- return "";
-
- std::list<edge2d> edges;
- edges.push_back(e);
- return print_line(edges, offset, line, style, attribs, len);
- }
-
-
- // local to this file
- std::string __epix_rule(double x, double y)
- {
- std::stringstream buf;
- buf << "\\rule{" << x << "pt}{" << y << "pt}";
-
- return buf.str();
- }
-
-
- // protected, non-virtual
- std::string format::xdefinecolor(const std::string& model,
- const std::string& name,
- double d1, double d2, double d3) const
- {
- std::stringstream obuf;
- obuf << "\\xdefinecolor{" << name << "}";
-
- if (model == "cmy")
- {
- double bk(min(min(d1,d2),d3));
-
- obuf << "{cmyk}{"
- << d1-bk << "," << d2-bk << "," << d3-bk << "," << bk << "}%"
- << std::endl;
- }
-
- else
- obuf << "{" << model << "}{" << d1 << "," << d2 << "," << d3 << "}%"
- << std::endl;
-
- return obuf.str();
- }
-
- // protected, non-virtual
- std::string format::xdefinecolor(const std::string& model,
- const std::string& name,
- double d1, double d2,
- double d3, double d4) const
- {
- std::stringstream obuf;
- obuf << "\\xdefinecolor{" << name << "}{cmyk}{"
- << d1 << "," << d2 << "," << d3 << "," << d4 << "}%"
- << std::endl;
-
- return obuf.str();
- }
-
- // protected, virtual
- std::string format::print_pallet(const std::set<Color>& pallet) const
- {
- std::stringstream obuf;
-
- for (std::set<Color>::const_iterator cp=pallet.begin();
- cp!=pallet.end(); ++cp)
- obuf << print_color((*cp).model(), (*cp).name(), (*cp).densities());
-
- return obuf.str();
- }
-
- // protected, virtual
- std::string format::print(const pair& arg) const
- {
- std::stringstream o;
- o << "(" << truncate(arg.x1()) << "," << truncate(arg.x2()) << ")";
- return o.str();
- }
-
- // protected, virtual
- std::string format::print(const length& len) const
- {
- return len.name();
- }
-
- // protected, virtual
- std::string format::print(const Color& col) const
- {
- return col.name();
- }
-
- // protected, non-virtual (print non-solid edge as segments and dots)
- std::string format::print_edge(const edge2d& edge, const pair& offset,
- const std::vector<double> bkpts,
- double diam, const Color& col,
- const std::string& attribs,
- const std::string& len) const
- {
- if (!edge.is_seen())
- return "";
-
- if (bkpts.size() % 2 != 0)
- {
- epix_warning("Internal error in path pattern");
- return "";
- }
-
- // else
- std::stringstream obuf;
-
- const pair T(edge.tail() + pt_to_len(offset, len));
- const pair dir(edge.head() - edge.tail());
-
- for (unsigned int i=0; i < bkpts.size(); i += 2)
- {
- double curr(bkpts.at(i)), next(bkpts.at(i+1));
-
- if (EPIX_EPSILON < next - curr) // dash
- obuf << start_open_path(attribs)
- << print(T + curr*dir)
- << path_connector()
- << print(T + next*dir)
- << end_open_path(attribs);
-
- else // dot
- obuf << print_circle_marker(T + curr*dir, diam, true, col, len);
- }
-
- return obuf.str();
- }
-
-
- // protected, non-virtual (solid path, handle (offset) data only)
- std::string format::print_paths(const std::list<edge2d>& edges,
- const pair& offset,
- const std::string& attribs,
- const std::string& len) const
- {
- std::stringstream obuf;
-
- std::list<edge2d>::const_iterator ep(edges.begin());
-
- const pair shift(pt_to_len(offset, len));
-
- bool all_visible(true); // all edges visible?
-
- // Assume not for now
- const std::string pname(start_open_path(attribs));
-
- // print contiguous lists of visible edges
- while (ep != edges.end())
- {
- if ((*ep).is_seen()) // print contiguous visible path
- {
- obuf << pname
- << print((*ep).tail() + shift)
- << path_connector()
- << print((*ep).head() + shift);
- ++ep;
-
- while ((*ep).is_seen() && ep != edges.end())
- obuf << path_connector() << print((*ep++).head() + shift);
-
- obuf << end_open_path(attribs);
- }
-
- else // invisible edge
- {
- ++ep;
- all_visible = false;
- }
- }
-
- std::string value(obuf.str());
-
- --ep; // last edge
-
- // if we're a closed loop of visible edges, adjust open/close path
- if (all_visible && (*edges.begin()).tail() == (*ep).head())
- {
- value.replace(0,
- start_open_path(attribs).size(),
- start_closed_path(attribs));
-
- value.replace(value.size()-end_open_path(attribs).size(),
- end_open_path(attribs).size(),
- end_closed_path(attribs));
- }
-
- return break_lines(value, path_break());
- }
-
-
- //// Label and marker functions ////
- // protected, non-virtual (print LaTeX command for marker of specified size)
- std::string format::print_latex_marker(const epix_mark_type mark,
- const marker_sizes& sz,
- const std::string& len) const
- {
- std::stringstream obuf;
-
- obuf << "$";
-
- switch(mark)
- {
- case PLUS:
- obuf << "+";
- break;
- case OPLUS:
- obuf << "\\oplus";
- break;
- case TIMES:
- obuf << "\\times";
- break;
- case OTIMES:
- obuf << "\\otimes";
- break;
- case DIAMOND:
- obuf << "\\diamond";
- break;
- case UP:
- obuf << "\\bigtriangleup";
- break;
- case DOWN:
- obuf << "\\bigtriangledown";
- break;
- case BOX:
- obuf << __epix_rule(0.75*sz.dot_size(), 0.75*sz.dot_size());
- break;
- case BBOX:
- obuf << __epix_rule(0.5*sz.dot_size(), 0.5*sz.dot_size());
- break;
- case HTICK:
- obuf << __epix_rule(0.5, 2*sz.tick_size());
- break;
- case VTICK:
- obuf << __epix_rule(2*sz.tick_size(), 0.5);
- break;
- // should never see these cases
- case SPOT:
- case DOT:
- case DDOT:
- case CIRC:
- case RING:
- epix_warning("Mark type internal error"); // fall through
- case PATH: // fall through
- case TEXT:
- default:
- return ""; // N.B. return
- }
-
- obuf << "$";
-
- return obuf.str();
- }
-
-
- // public, non-virtual
- // handles font face, size, and color
- std::string format::print_latex_hbox(const label_state& style,
- const std::string& label) const
- {
- std::stringstream text_buf;
-
- bool need_ff(style.fontface() != "rm"); // roman
- bool need_fs(style.fontsize() != "nsz"); // normalsize
-
- text_buf << "\\hbox{\\color{" << print(style.text_color()) << "}";
-
- if (need_ff)
- text_buf << "\\text" << style.fontface() << "{";
-
- if (need_fs)
- text_buf << "\\" << style.fontsize() << " ";
-
- text_buf << label;
-
- if (need_ff)
- text_buf << "}";
-
- text_buf << "}";
-
- return text_buf.str();
- }
-
-
- // protected, virtual
- std::string format::path_break() const
- {
- std::stringstream buf;
- buf << std::endl << " ";
-
- return buf.str();
- }
-
- // inserted between points of a path
- std::string format::path_connector() const
- {
- return "";
- }
-
- // protected, non-virtual
- // handles rotation, masking, border, and alignment
- std::string format::print_latex_label(const label_state& style,
- const std::string& label,
- bool boxed) const
- {
- std::stringstream obuf;
-
- // need rotatebox?
- bool rotated(EPIX_EPSILON < fabs(style.label_angle()));
-
- // need colorbox?
- bool masked(boxed && style.is_masked());
-
- // need extra fcolorbox?
- bool padded(style.label_padding() != length(0));
-
- obuf << "\\makebox(0,0)"
- << print(style.align_to()); // "none" -> ""
-
- obuf << "{";
-
- if (rotated)
- obuf << "\\rotatebox{" << style.label_angle() << "}{";
-
- if (masked)
- {
- pen_data bpen(style.label_border());
-
- // draw border?
- if (!bpen.color().is_unset() && length(EPIX_EPSILON) < bpen.width())
- obuf << "\\fboxrule" << print(bpen.width()) << "%" << std::endl
- << "\\fcolorbox{" << print(bpen.color()) << "}{"
- << print(style.mask_color()) << "}";
-
- else
- obuf << "\\colorbox{" << print(style.mask_color()) << "}";
-
- if (padded)
- {
- // cancel off the xcolor default
- length extra_pad(style.label_padding() + length(-3));
-
- obuf << "{\\fboxrule" << print(extra_pad) << "%" << std::endl
- << "\\fcolorbox{" << print(style.mask_color()) << "}{"
- << print(style.mask_color()) << "}";
- }
-
- obuf << "{";
- }
-
- // finally, the payload
- obuf << print_latex_hbox(style, label);
-
- // close wrappers
- if (masked)
- {
- obuf << "}";
-
- if (padded)
- obuf << "}";
- }
-
- if (rotated)
- obuf << "}";
-
- obuf << "}";
-
- return obuf.str();
- } // end of print_latex_label
-
- // private (convert an epix_label_posn to a string)
- std::string format::print(const epix_label_posn arg) const
- {
- std::string val;
- switch(arg)
- {
- case none:
- return ""; // other cases return at bottom
-
- case c:
- val="c";
- break;
- case r:
- val="l"; // opposite of LaTeX
- break;
- case tr:
- case rt:
- val="bl";
- break;
- case t:
- val="b";
- break;
- case tl:
- case lt:
- val="br";
- break;
- case l:
- val="r";
- break;
- case bl:
- case lb:
- val="tr";
- break;
- case b:
- val="t";
- break;
- case br:
- case rb:
- val="tl";
- break;
- }
-
- return "[" + val + "]";
- } // end of format::print(align_type)
-
-
- // private (true pt offset to len)
- pair format::pt_to_len(pair offset, const std::string& len) const
- {
- return offset *= length("1pt").to(len).magnitude();
- }
-} // end of namespace
diff --git a/graphics/epix/format.h b/graphics/epix/format.h
deleted file mode 100644
index 7432526ac9..0000000000
--- a/graphics/epix/format.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * format.h -- ePiX::output format interface
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file defines ePiX's output interface. The fmt_template
- * files contain skeleton code for a new format. The command
- *
- * for suff in cc h; do
- * sed 's/fmt/foo/g' fmt_template.$suff > foo.$suff
- * done
- *
- * (or manual search-and-replace) creates "blank" files containing
- * declarations and pseudocode. (The include guards should also be
- * changed.) Please consult pst.cc and eepic.cc for complete examples.
- *
- * The pure virtual functions in this file *must* be implemented by
- * derived classes. They are signified by the keyword "virtual" and
- * the definition "= 0" after their declaration. They are also found
- * in the skeleton class mentioned above.
- *
- * The seven ordinary virtual functions (the destructor, pic_header and
- * pic_footer, and four low-level functions for printing a pallet, pair,
- * Color, or length) _may_ be overridden by derived classes, but will
- * not be (unless the format has unusual conventions).
- *
- * No other functions should be re-implemented by derived classes.
- */
-
-#ifndef EPIX_FORMAT
-#define EPIX_FORMAT
-
-#include <set>
-#include <list>
-#include <vector>
-#include <string>
-
-#include "enums.h"
-#include "edge_data.h"
-
-namespace ePiX {
-
- class Color;
- class label_state;
- class length;
-
- class marker_sizes;
- class pair;
- class path_state;
- class pen_data;
-
- class format {
- public:
- // Free resources allocated by the constructor (usually unnecessary)
- virtual ~format() { }
-
- // Return a copy of this
- virtual format* clone() const = 0;
-
-
- // LaTeX symbol with specified location, offset and alignment
- std::string print_mark(const pair& location,
- const pair& offset,
- const epix_mark_type mark,
- const marker_sizes& sizes,
- const label_state& style,
- const std::string& len) const;
-
- // Label text with specified location, offset, and alignment
- std::string print_text(const pair& location,
- const pair& offset,
- const std::string& text,
- const label_state& style,
- const std::string& len) const;
-
-
- // Filled region with specified Cartesian edges, offset, and color
- virtual std::string print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fill,
- const pen_data& line,
- const std::string& len) const = 0;
-
-
- // Unfilled region, specified Cartesian edges. Should generally be
- // trivially implemented using one-pen function (supplied).
- virtual std::string print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line_pen,
- const pen_data& base_pen,
- const path_state& style,
- const std::string& len) const = 0;
-
- // implemented using previous function
- std::string print_line(const edge2d&,
- const pair&,
- const pen_data&,
- const pen_data&,
- const path_state&,
- const std::string&) const;
-
-
- // File comment and information block
- std::string file_comments(const std::string& units,
- const length& hoff,
- const length& voff,
- double Xmin, double Xmax,
- double Ymin, double Ymax,
- double Hsize, double Vsize) const;
-
-
- // Picture start and finish:
- // Size and offset in page units,
- // pallet (set of colors contained in the screen),
- // unitlength
- virtual std::string pic_header(const pair& sizes,
- const pair& offsets,
- const std::set<Color>& pallet,
- const std::string& len) const;
-
- virtual std::string pic_footer() const;
-
-
- // Print color declaration strings: model, name, densities
- std::string print_color(const std::string&,
- const std::string&,
- const std::vector<double>&) const;
-
- // One-line comment
- virtual std::string print_comment(const std::string&) const = 0;
-
- // Verbatim output
- virtual std::string print_verbatim(const std::string&) const = 0;
-
-
- // print text with color, font in an hbox
- std::string print_latex_hbox(const label_state& style,
- const std::string& label) const;
-
- // Derived classes use functions below to implement the public interface.
- // The first two are needed to print screen_data for legend items.
- virtual std::string start_picture(const pair&, const pair&) const = 0;
- virtual std::string end_picture() const = 0;
-
- virtual std::string set_unitlength(const std::string& len) const = 0;
-
- // If child maintains drawing state, this function clears it.
- virtual void reset_state() const = 0;
-
- protected:
- // inserted between points when breaking lines
- virtual std::string path_break() const;
- // inserted between points of a path
- virtual std::string path_connector() const;
-
- // names of LaTeX packages required to process our output
- virtual std::string usepackages() const = 0;
-
- // string argument for passing attributes local to this path/loop
- virtual std::string start_open_path(const std::string&) const = 0;
- virtual std::string end_open_path(const std::string&) const = 0;
-
- virtual std::string start_closed_path(const std::string&) const = 0;
- virtual std::string end_closed_path(const std::string&) const = 0;
-
- // print declarations to set state of output format
- virtual std::string set_fill_state(const Color&) const = 0;
- virtual std::string set_pen_state(const pen_data&) const = 0;
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- virtual std::string put_box(const pair&, const std::string&) const = 0;
-
- // too idiosyncratic to handle format-independently
- virtual std::string print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const = 0;
-
- // xcolor definition strings
- std::string xdefinecolor(const std::string&,
- const std::string&,
- double,
- double,
- double) const;
-
- std::string xdefinecolor(const std::string&,
- const std::string&,
- double,
- double,
- double,
- double) const;
-
- virtual std::string print_color(const std::string&,
- const std::string&,
- double,
- double,
- double) const = 0;
-
- virtual std::string print_color(const std::string&,
- const std::string&,
- double,
- double,
- double,
- double) const = 0;
-
- // Define all colors in the picture
- virtual std::string print_pallet(const std::set<Color>& pallet) const;
-
- // Represent a pair, length, or Color as a string
- virtual std::string print(const pair&) const; // Default: "(a,b)"
- virtual std::string print(const length&) const; // Default: "3.5cm", e.g.
- virtual std::string print(const Color&) const; // Default: color name
-
-
- // one-pen version
- std::string print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line,
- const path_state& style,
- const std::string& attribs,
- const std::string& len) const;
-
- // for single edge; wrap in list and pass to previous function
- std::string print_line(const edge2d& e,
- const pair& offset,
- const pen_data& line,
- const path_state& style,
- const std::string& attribs,
- const std::string& len) const;
-
- // Print a non-solid edge, using the virtual interface
- std::string print_edge(const edge2d& edge, const pair& offset,
- const std::vector<double> bkpts,
- double diam,
- const Color& col,
- const std::string& attribs,
- const std::string& len) const;
-
- // Print an edge list as offset path segments, or as a loop
- // if all edges are visible and path is closed.
- std::string print_paths(const std::list<edge2d>& edges,
- const pair& offset,
- const std::string& attribs,
- const std::string& len) const;
-
- /*
- * Text in an ePiX output file is assumed to be typeset with
- * LaTeX. The functions below perform LaTeX-specific low-level
- * formatting. For uniformity and simplicity, these functions are
- * format-independent: Implementations are provided and these
- * functions are non-virtual. Format-specific masking, padding,
- * and bordering capabilities (e.g. in PSTricks) are not used.
- */
- // label style, text, masking flag
- std::string print_latex_label(const label_state&,
- const std::string&,
- bool) const;
-
- // Print LaTeX command for marker symbol; 3rd (len) argument for scaling
- std::string print_latex_marker(const epix_mark_type,
- const marker_sizes&,
- const std::string&) const;
-
- private:
- // convert an epix_label_posn to string
- std::string print(const epix_label_posn arg) const;
-
- // convert true pt offset to len
- pair pt_to_len(pair offset, const std::string& len) const;
-
- }; // end of base class format
-} // end of namespace
-
-#endif /* EPIX_FORMAT */
diff --git a/graphics/epix/frac.cc b/graphics/epix/frac.cc
deleted file mode 100644
index 6fadd246af..0000000000
--- a/graphics/epix/frac.cc
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * frac.cc -- ePiX rational number class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "frac.h"
-
-namespace ePiX {
-
- const int MAX_DENOM(10000);
- const double EPS(1.0/MAX_DENOM);
-
- unsigned int __epix_gcd (int i, unsigned int j);
-
- frac::frac(const int n, const unsigned int d)
- : m_num(n), m_denom(d) { }
-
- // express arg as a fraction with denominator no larger than MAX_DENOM
- frac::frac(double arg)
- {
- unsigned int denom(1);
- if (fabs(arg) < EPS)
- {
- m_num = 0;
- m_denom = 1;
- }
-
- else
- {
- int sgn(arg < 0 ? -1 : 1);
- double abs_arg(sgn*arg);
-
- // store best approximation
- int best_num(0);
- double running_error(0.5);
-
- while (denom <= 1+MAX_DENOM)
- {
- const double tmp(abs_arg*denom);
-
- int tmp_lo((int) floor(tmp));
-
- if (tmp - tmp_lo < EPS) // good approx
- {
- best_num = tmp_lo;
- break;
- }
-
- else if (tmp - tmp_lo < running_error) // improved approx
- {
- best_num = tmp_lo;
- running_error = tmp - best_num;
- }
-
- int tmp_hi((int) ceil(tmp));
- if (tmp_hi - tmp < EPS)
- {
- best_num = tmp_hi;
- break;
- }
-
- else if (tmp_hi - tmp < running_error)
- {
- best_num = tmp_hi;
- running_error = best_num - tmp;
- }
-
- ++denom;
- }
-
- m_num = sgn*best_num;
- m_denom = denom;
- }
- } // end of frac::frac(double arg)
-
-
- // increment operators
- frac& frac::operator += (const frac& arg)
- {
- m_num *= arg.m_denom;
- m_num += m_denom*arg.m_num;
- m_denom *= arg.m_denom;
-
- return *this;
- }
-
- frac& frac::operator -= (const frac& arg)
- {
- m_num *= arg.m_denom;
- m_num -= m_denom*arg.m_num;
- m_denom *= arg.m_denom;
-
- return *this;
- }
-
- frac& frac::operator *= (const frac& arg)
- {
- m_num *= arg.m_num;
- m_denom *= arg.m_denom;
-
- return *this;
- }
-
- frac& frac::operator /= (const frac& arg)
- {
- unsigned int arg_num(arg.m_num < 0 ? -arg.m_num : arg.m_num);
-
- m_num *= arg.m_denom;
- m_denom *= arg_num;
-
- if (arg.m_num < 0)
- m_num = -1;
-
- return *this;
- }
-
- frac& frac::reduce()
- {
- unsigned int factor(__epix_gcd(m_num, m_denom));
- m_num /= factor;
- m_denom /= factor;
-
- return *this;
- }
-
- double frac::eval() const
- {
- double temp(m_num);
- return temp /= m_denom;
- }
-
- int frac::num() const
- {
- return m_num;
- }
-
- unsigned int frac::denom() const
- {
- return m_denom;
- }
-
- bool frac::is_int() const
- {
- return __epix_gcd(m_num, m_denom) == m_denom;
- }
-
-
- frac operator+ (frac arg1, const frac& arg2)
- {
- return arg1 += arg2;
- }
-
- frac operator- (frac arg1)
- {
- return arg1 *= -1;
- }
-
- frac operator- (frac arg1, const frac& arg2)
- {
- return arg1 -= arg2;
- }
-
- frac operator* (frac arg1, const frac& arg2)
- {
- return arg1 *= arg2;
- }
-
- frac operator/ (frac arg1, const frac& arg2)
- {
- return arg1 /= arg2;
- }
-
- // (in)equality
- bool operator == (const frac& u, const frac& v)
- {
- return u.num()*v.denom() == v.num()*u.denom();
- }
-
- bool operator != (const frac& u, const frac& v)
- {
- return !(u == v);
- }
-
- // denoms are unsigned
- bool operator < (const frac& u, const frac& v)
- {
- return u.num()*v.denom() < v.num()*u.denom();
- }
-
- bool operator > (const frac& u, const frac& v)
- {
- return u.num()*v.denom() > v.num()*u.denom();
- }
-
- bool operator <= (const frac& u, const frac& v)
- {
- return u.num()*v.denom() <= v.num()*u.denom();
- }
-
- bool operator >= (const frac& u, const frac& v)
- {
- return u.num()*v.denom() >= v.num()*u.denom();
- }
-
- // N.B.: gcd(0,i) = |i|
- unsigned int __epix_gcd (int i, unsigned int j)
- {
- unsigned int new_i(i<0 ? -i : i);
- unsigned int temp;
-
- if (new_i==0 || j==0) // (1,0) and (0,1) coprime, others not
- return new_i + j;
-
- else {
- if (j < new_i) // swap them
- {
- temp = j;
- j = new_i;
- new_i = temp;
- }
- // Euclidean algorithm
- while ((temp = j%new_i)) // i does not evenly divide j
- {
- j = new_i;
- new_i = temp;
- }
-
- return new_i;
- }
- }
-} // end of namespace
-
diff --git a/graphics/epix/frac.h b/graphics/epix/frac.h
deleted file mode 100644
index c76d469852..0000000000
--- a/graphics/epix/frac.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * frac.h -- ePiX::rational number class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August 07, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_FRACTION
-#define EPIX_FRACTION
-
-namespace ePiX {
-
- class frac {
- public:
- frac(const int n, const unsigned int d=1);
- explicit frac(double);
-
- // increment operators
- frac& operator += (const frac& arg);
- frac& operator -= (const frac& arg);
- frac& operator *= (const frac& arg);
- frac& operator /= (const frac& arg);
-
- frac& reduce();
- double eval() const;
-
- int num() const;
- unsigned int denom() const;
-
- bool is_int() const;
-
- private:
- int m_num;
- unsigned int m_denom;
- }; // end of class frac
-
- frac operator+ (frac arg1, const frac& arg2);
- frac operator- (frac arg1);
- frac operator- (frac arg1, const frac& arg2);
- frac operator* (frac arg1, const frac& arg2);
- frac operator/ (frac arg1, const frac& arg2);
-
- // (in)equality
- bool operator == (const frac& u, const frac& v);
- bool operator != (const frac& u, const frac& v);
-
- bool operator < (const frac& u, const frac& v);
- bool operator > (const frac& u, const frac& v);
-
- bool operator <= (const frac& u, const frac& v);
- bool operator >= (const frac& u, const frac& v);
-
-} // end of namespace
-
-#endif /* EPIX_FRACTION */
diff --git a/graphics/epix/frame.cc b/graphics/epix/frame.cc
deleted file mode 100644
index 176025ffe0..0000000000
--- a/graphics/epix/frame.cc
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * frame.cc -- ePiX orthonormal basis
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.0.23
- * Last Change: January 10, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include "constants.h"
-#include "functions.h"
-
-#include "errors.h"
-#include "triples.h"
-#include "frame.h"
-
-namespace ePiX {
-
- // standard basis
- frame::frame()
- : m_e1(E_1), m_e2(E_2), m_e3(E_3) { }
-
- // frame constructor, suitable for (sea,sky,eye) frames: Usually we
- // know the eye vector and want to preserve its direction. The frame
- // is guaranteed to be right-handed, and the first arg is immaterial.
- frame::frame(P arg1, P arg2, P arg3)
- {
- if (norm(arg2*arg3) < EPIX_EPSILON) // too nearly linearly dependent
- epix_error("Linearly dependent arguments to frame");
-
- // partial Gram-Schmidt
- arg3 *= 1/norm(arg3); // normalize eye
-
- arg2 %= arg3; // orthogonalize sky_vector, preserving screen direction
- arg2 *= 1/norm(arg2); // and normalize
-
- m_e1 = arg2*arg3;
- m_e2 = arg2;
- m_e3 = arg3;
- }
-
-
- frame& frame::rot1(double angle)
- {
- P temp2(m_e2);
- P temp3(m_e3);
-
- m_e2 = (Cos(angle)*(temp2)) - (Sin(angle)*(temp3));
- m_e3 = (Sin(angle)*(temp2)) + (Cos(angle)*(temp3));
-
- return *this;
- }
-
-
- frame& frame::rot2(double angle)
- {
- P temp3(m_e3);
- P temp1(m_e1);
-
- m_e3 = (Cos(angle)*(temp3)) - (Sin(angle)*(temp1));
- m_e1 = (Sin(angle)*(temp3)) + (Cos(angle)*(temp1));
-
- return *this;
- }
-
- frame& frame::rot3(double angle)
- {
- P temp1(m_e1);
- P temp2(m_e2);
-
- m_e1 = (Cos(angle)*(temp1)) - (Sin(angle)*(temp2));
- m_e2 = (Sin(angle)*(temp1)) + (Cos(angle)*(temp2));
-
- return *this;
- }
-
- // frame elements
- P frame::sea() const
- {
- return m_e1;
- }
- P frame::sky() const
- {
- return m_e2;
- }
- P frame::eye() const
- {
- return m_e3;
- }
-} // end of namespace
diff --git a/graphics/epix/frame.h b/graphics/epix/frame.h
deleted file mode 100644
index fa70c3d16d..0000000000
--- a/graphics/epix/frame.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * frame.h -- Orthonormal basis
- *
- * This file is part of ePiX, a preprocessor for creating high-quality
- * line figures in LaTeX
- *
- * Version 1.0.15
- * Last Change: October 10, 2006
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * In geometry, a "frame" is a right-handed orthonormal basis, that is,
- * an ordered set of three mututally perpendicular unit vectors, oriented
- * according to the right-hand rule. A frame has nothing to do with
- * picture frames.
- *
- *
- * This file provides:
- * - the frame class, and routines for rotating a frame about the axes
- * determined by its elements. (Note that there are no methods for
- * rotating about fixed coordinate axes, and that rotations in R^3 do
- * not generally commute.
- */
-
-#ifndef EPIX_FRAME
-#define EPIX_FRAME
-
-#include "triples.h"
-
-namespace ePiX {
-
- class frame {
- public:
- // standard basis
- frame();
-
- // Gram-Schmidt
- frame(P arg1, P arg2, P arg3); // need args by value
-
- // frame elements
- P sea() const;
- P sky() const;
- P eye() const;
-
- // rotations about frame elements
- frame& rot1(double angle);
- frame& rot2(double angle);
- frame& rot3(double angle);
-
- private:
- P m_e1; // sea
- P m_e2; // sky
- P m_e3; // eye
- }; // end of class frame
-
-} // end of namespace
-
-#endif /* EPIX_FRAME */
diff --git a/graphics/epix/functions.cc b/graphics/epix/functions.cc
deleted file mode 100644
index ae1c9649ae..0000000000
--- a/graphics/epix/functions.cc
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * functions.cc -- non-standard mathematical functions
- *
- * This file is part of ePiX, a preprocessor for creating high-quality
- * line figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-
-#include "constants.h"
-#include "errors.h"
-#include "deriv.h"
-
-#include "angle_units.h"
-#include "triples.h"
-
-#include "functions.h"
-
-namespace ePiX {
-
- // trig functions with angle units
- double Cos(double t)
- {
- return std::cos(the_angle_style().to_radians(t));
- }
-
- double Sin(double t)
- {
- return std::sin(the_angle_style().to_radians(t));
- }
-
- double Tan(double t)
- {
- return std::tan(the_angle_style().to_radians(t));
- }
-
- double Sec(double t)
- {
- return 1.0/std::cos(the_angle_style().to_radians(t));
- }
-
- double Csc(double t)
- {
- return 1.0/std::sin(the_angle_style().to_radians(t));
- }
-
- double Cot(double t)
- {
- return 1.0/std::tan(the_angle_style().to_radians(t));
- }
-
- // and inverses
- double Acos(double arg)
- {
- return std::acos(arg)/the_angle_style().to_radians(1);
- }
-
- double Asin(double arg)
- {
- return std::asin(arg)/the_angle_style().to_radians(1);
- }
-
- double Atan(double arg)
- {
- return std::atan(arg)/the_angle_style().to_radians(1);
- }
-
- double Atan2(double y, double x)
- {
- return std::atan2(y, x)/the_angle_style().to_radians(1);
- }
-
- // Additional hyperbolic tric functions and inverses
- double sech(double x)
- {
- return 1.0/cosh(x);
- }
-
- double csch(double x)
- {
- return 1.0/sinh(x);
- }
-
- double coth(double x)
- {
- return 1.0/tanh(x);
- }
-
- double asech(double x)
- {
- return log((1+sqrt((1-x)*(1+x)))/x);
- }
-
- double acsch(double x)
- {
- return log((1+sqrt(1+x*x))/x);
- }
-
- double acoth(double x)
- {
- return 0.5*log((x+1)/(x-1));
- }
-
- double zero(double arg)
- {
- return 0;
- }
-
- double zero(double x, double y)
- {
- return 0;
- }
-
- double zero(double x, double y, double z)
- {
- return 0;
- }
-
- double zero(const P& arg)
- {
- return 0;
- }
-
- P xyz(double x, double y, double z)
- {
- return P(x, y, z);
- }
-
- P cyl(double r, double t, double z)
- {
- return P(r*Cos(t), r*Sin(t), z);
- }
-
- P sph(double r, double t, double phi)
- {
- return P(r*(Cos(t))*(Cos(phi)), r*(Sin(t))*(Cos(phi)), r*(Sin(phi)));
- }
-
- P log_log(double x, double y, double z)
- {
- return P(log10(x), log10(y), z);
- }
-
- P log_lin(double x, double y, double z)
- {
- return P(log10(x), y, z);
- }
-
- P lin_log(double x, double y, double z)
- {
- return P(x, log10(y), z);
- }
-
-
- // for plot templates, arg mustn't be const P&
- P cylindrical(P arg)
- {
- return cyl(arg.x1(), arg.x2(), arg.x3());
- }
-
- P spherical(P arg)
- {
- return sph(arg.x1(), arg.x2(), arg.x3());
- }
-
- P polar(double r, double t)
- {
- return cyl(r, t, 0);
- }
-
- P cis(double t)
- {
- return cyl(1, t, 0);
- }
-
- double recip (double x)
- {
- return 1.0/x;
- }
-
- // sin(x)/x
- double sinx (double x)
- {
- if (1. + x*x == 1.) // from Don Hatch
- return 1.;
- else
- return Sin(x)/the_angle_style().to_radians(x);
- }
-
- // signum, x/|x|, defined to be 0 at 0
- double sgn (double x)
- {
- if (x > 0)
- return 1;
- else if (x < 0)
- return -1;
- else
- return 0;
- }
-
- // Charlie Brown: Period-2 extension of |x| on [-1,1] /\/\/\/\/\/
- double cb (double x)
- {
- x = fabs(x);
- x -= 2*floor(0.5*x);
- return min(x, 2-x);
- }
-
- // N.B.: gcd(0,i) = |i|
- int gcd (int i, int j)
- {
- int temp;
-
- i=abs(i);
- j=abs(j);
-
- if (i==0 || j==0) // (1,0) and (0,1) coprime, others not
- return i+j;
-
- else {
- if (j < i) // swap them
- {
- temp = j;
- j=i;
- i=temp;
- }
- // Euclidean algorithm
- while ((temp = j%i)) // i does not evenly divide j
- {
- j=i;
- i=temp;
- }
-
- return i;
- }
- }
-
- double min(double a, double b)
- {
- return a < b ? a : b;
- }
-
- double max(double a, double b)
- {
- return b < a ? a : b;
- }
-
- double snip_to(double var, double arg1, double arg2)
- {
- if (var < min(arg1, arg2))
- var = min(arg1,arg2);
- else if (var > max(arg1, arg2))
- var = max(arg1,arg2);
- return var;
- }
-
- // inf and sup of f on [a,b]
- double inf (double f(double), double a, double b)
- {
- const int N((int) ceil(fabs(b-a))); // N >= 1 unless a=b
- double y(f(a));
- const double dx((b-a)/(N*EPIX_ITERATIONS));
-
- for (unsigned int i=1; i <= N*EPIX_ITERATIONS; ++i)
- y = min(y, f(a + i*dx));
-
- return y;
- }
-
- double sup (double f(double), double a, double b)
- {
- const int N((int) ceil(fabs(b-a))); // N >= 1 unless a=b
- double y(f(a));
- const double dx((b-a)/(N*EPIX_ITERATIONS));
-
- for (unsigned int i=1; i <= N*EPIX_ITERATIONS; ++i)
- y = max(y, f(a + i*dx));
-
- return y;
- }
-
- // Integral class helper
- double integrand(double f(double), double t, double dt)
- {
- return (1.0/6)*(f(t) + 4*f(t+0.5*dt)+f(t + dt))*dt;
- } // Simpson's rule
-
- Integral::Integral(double func(double), double a)
- : f(func), x0(a) { }
-
- double Integral::eval(double t) const
- {
- double sum(0);
- const int N(16*(int)ceil(fabs(t - x0))); // hardwired constant 16
-
- if (N > 0)
- {
- const double dx((t - x0)/N);
-
- for (int i=0; i < N; ++i)
- sum += integrand(f, x0+i*dx, dx);
- }
-
- return sum;
- }
-
- P Integral::operator() (const P& arg) const
- {
- double t(arg.x1());
- return P(t, eval(t), 0);
- }
-
- double newton (double f(double), double g(double), double start)
- {
- double guess(start);
- int count(0); // number of iterations
-
- // Magic number 5
- const int ITERS(5);
- while ( (fabs(f(guess)-g(guess)) > EPIX_EPSILON) && (count < ITERS) )
- {
- if (fabs(deriv(f, guess)-deriv(g, guess)) < EPIX_EPSILON)
- {
- epix_warning("Returning critical point in Newton's method");
- return guess;
- }
-
- guess -= (f(guess)-g(guess))/(deriv(f, guess)-deriv(g, guess));
- ++count;
- }
-
- if (count == ITERS)
- epix_warning("Maximum number of iterations in Newton's method");
-
- return guess;
- }
-
- double newton (double f(double), double start)
- {
- return newton(f, zero, start);
- }
-
- // Member functions
- Deriv::Deriv(double func(double))
- : f(func), dt(EPIX_EPSILON) { }
-
- Deriv::Deriv(double func(double), double eps)
- : f(func), dt(eps) { }
-
- P Deriv::operator() (const P& arg) const
- {
- double t(arg.x1());
- return P(t, deriv(f, t, dt), 0);
- }
-
- double Deriv::eval(double t) const
- {
- return deriv(f, t, dt);
- }
-
- // one-sided derivatives
- double Deriv::right(double t) const
- {
- return (2.0/dt)*(f(t+0.5*dt) - f(t));
- }
-
- double Deriv::left(double t) const
- {
- return (2.0/dt)*(f(t) - f(t-0.5*dt));
- }
-} // end of namespace
diff --git a/graphics/epix/functions.h b/graphics/epix/functions.h
deleted file mode 100644
index 40726a8f12..0000000000
--- a/graphics/epix/functions.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * functions.h -- ePiX auxiliary functions; Deriv, Integral classes
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_FUNCTIONS
-#define EPIX_FUNCTIONS
-
-namespace ePiX {
-
- class P;
-
- // sensitive to angle units
- double Cos(double t);
- double Sin(double t);
- double Tan(double t);
-
- double Sec(double t);
- double Csc(double t);
- double Cot(double t);
-
- double Acos(double t);
- double Asin(double t);
- double Atan(double t);
-
- double Atan2(double y, double x);
-
- // additional hyperbolic functions and inverses
- double sech(double);
- double csch(double);
- double coth(double);
-
- double asech(double);
- double acsch(double);
- double acoth(double);
-
- // zero functions
- double zero(double);
- double zero(double, double);
- double zero(double, double, double);
- double zero(const P&);
-
- // P constructors
- P xyz(double x, double y, double z=0);
- P cyl(double r, double t, double z);
- P sph(double r, double t, double phi);
-
- // for log data plotting
- P log_log(double x, double y, double z=0);
- P log_lin(double x, double y, double z=0);
- P lin_log(double x, double y, double z=0);
-
- P cylindrical(P); // not const P&
- P spherical(P);
-
- P polar(double r, double t);
- P cis(double t);
-
- // utility functions
- double recip (double);
- double sinx (double); // discontinuity removed
- double sgn (double);
-
- // period-2 extension of absolute value on [-1,1]: \/\/\/
- double cb (double);
-
- int gcd (int, int);
-
- double min(double, double);
- double max(double, double);
-
- double snip_to(double var, double arg1, double arg2);
-
- double inf (double f(double), double, double);
- double sup (double f(double), double, double);
-
-
- // derivative class
- class Deriv {
- private:
- double (*f)(double);
- double dt;
-
- public:
- Deriv(double func(double));
- Deriv(double func(double), double eps);
-
- P operator() (const P&) const; // for plotting
-
- // numerical values
- double eval(double t) const;
-
- // one-sided derivatives
- double right(double t) const;
- double left(double t) const;
- }; // end of class Deriv
-
-
- // definite integral class
- class Integral {
- private:
- double (*f)(double);
- double x0; // lower limit
-
- public:
- Integral(double func(double), double a=0);
-
- P operator() (const P&) const;
-
- double eval(double) const;
- }; // end of class Integral
-
- double newton (double f(double), double g(double), double start);
- double newton (double f(double), double start);
-
-} // end of namespace
-
-#endif /* EPIX_FUNCTIONS */
diff --git a/graphics/epix/geometry.cc b/graphics/epix/geometry.cc
deleted file mode 100644
index dec6342fc2..0000000000
--- a/graphics/epix/geometry.cc
+++ /dev/null
@@ -1,804 +0,0 @@
-/*
- * geometry.cc -- spherical and hyperbolic geometry
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 22, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-#include <vector>
-
-#include "constants.h"
-#include "errors.h"
-#include "functions.h"
-
-#include "triples.h"
-#include "frame.h"
-
-#include "state.h"
-
-#include "camera.h"
-
-#include "path.h"
-
-#include "sphere.h"
-#include "curves.h"
-
-#include "geometry.h"
-
-namespace ePiX {
-
- //// Static utility functions ////
-
- // Flag for type of projection to the sphere
- enum sphere_proj_type {RADIAL, STEREO_N, STEREO_S};
-
- // point constructor in geographic coords on specified sphere/frame
- P sphere_posn(double lat, double lngtd, const Sphere& S, const frame& coords)
- {
- double rad(S.radius());
-
- return S.center() +
- rad*Cos(lat)*(Cos(lngtd)*coords.sea() + Sin(lngtd)*coords.sky()) +
- rad*Sin(lat)*coords.eye();
- }
-
- // latitudes and longitudes
- void draw_latitude(double lat, double lngtd_min, double lngtd_max,
- bool front, const Sphere& S, const frame& coords)
- {
- P center(S.center() + (S.radius()*Sin(lat)*coords.eye()));
- double radius(S.radius()*Cos(lat));
-
- path temp(center, radius*coords.sea(), radius*coords.sky(),
- lngtd_min, lngtd_max);
-
- temp.clip_to(S, cam().viewpt(), front);
- temp.draw();
- }
-
- // draw portion of longitude line
- void draw_longitude(double lngtd, double lat_min, double lat_max,
- bool front, const Sphere& S, const frame& coords)
- {
- P center(S.center());
- double radius(S.radius());
-
- path temp(center,
- radius*(Cos(lngtd)*coords.sea()+Sin(lngtd)*coords.sky() ),
- radius*coords.eye(), lat_min, lat_max);
-
- temp.clip_to(S, cam().viewpt(), front);
- temp.draw();
- }
-
-
- // Spherical geometry
- P proj_to_sphere(const P& arg, const Sphere& S, sphere_proj_type TYPE)
- {
- P O(S.center());
- double rad(S.radius());
- P loc(arg - O); // location relative to O
-
- if (TYPE == RADIAL)
- return O + (rad/norm(loc))*loc;
-
- else if (TYPE == STEREO_N)
- {
- P temp(loc%E_3);
- double rho(temp|temp);
- return O + (rad/(rho+1))*P(2*temp.x1(), 2*temp.x2(), rho-1);
- }
-
- else if (TYPE == STEREO_S)
- {
- P temp(loc%E_3);
- double rho(temp|temp);
- return O + (rad/(rho+1))*P(2*temp.x1(), 2*temp.x2(), 1-rho);
- }
-
- else // Return center on erroneous projection type
- return O;
- }
-
- void draw_sphereplot(double f1(double),double f2(double),double f3(double),
- double t_min, double t_max, int num_pts, bool front,
- sphere_proj_type TYPE, const Sphere& S)
- {
- std::vector<P> data(num_pts+1);
- double t(t_min);
- const double dt((t_max - t_min)/num_pts);
-
- for (int i=0; i <= num_pts; ++i, t += dt)
- data.at(i) = proj_to_sphere(P(f1(t), f2(t), f3(t)), S, TYPE);
-
- path temp(data, false, false);
- temp.clip_to(S, cam().viewpt(), front);
- temp.draw();
- } // end of draw_sphereplot
-
- void draw_sphereplot(P Phi(double), double t_min, double t_max,
- int num_pts, bool front, sphere_proj_type TYPE,
- const Sphere& S)
- {
- std::vector<P> data(num_pts+1);
- double t(t_min);
- const double dt((t_max - t_min)/num_pts);
-
- for (int i=0; i <= num_pts; ++i, t += dt)
- data.at(i) = proj_to_sphere(Phi(t), S, TYPE);
-
- path temp(data, false, false);
- temp.clip_to(S, cam().viewpt(), front);
- temp.draw();
- } // end of draw_sphereplot
-
-
- // segment mapping class
- class seg {
- public:
- seg(const P& tail, const P& head)
- : m_tail(tail), m_head(head) { }
-
- // so we can be plotted
- P operator() (double t) const
- {
- return m_tail + t*(m_head - m_tail);
- }
-
- private:
- P m_tail;
- P m_head;
- }; // end of class seg
-
-
- // assumes seg contains the actual (scaled, translated) endpoints
- void draw_sphere_arc(const seg& sgmt, double t_min, double t_max,
- bool front, sphere_proj_type TYPE, const Sphere& S)
- {
- P tail(sgmt(t_min)), head(sgmt(t_max));
- double cos_theta(((head-S.center())|(tail-S.center()))/pow(S.radius(),2));
- if (1-cos_theta < EPIX_EPSILON) // endpoints equal
- return; // draw nothing
-
- else if (1+cos_theta < EPIX_EPSILON) // endpoints antipodal
- {
- epix_warning("Spherical arc joins antipodes, no output");
- return;
- }
- // else
-
- int num_pts((int) ceil(EPIX_NUM_PTS*Acos(cos_theta)/full_turn()));
- if (num_pts < 2)
- num_pts=2;
-
- std::vector<P> data(num_pts+1);
- double t(t_min);
- const double dt((t_max - t_min)/num_pts);
-
- P O(S.center());
- double rad(S.radius());
-
- for (int i=0; i <= num_pts; ++i, t += dt)
- {
- P loc(sgmt(t) - O); // location relative to O
- data.at(i) = S.center() + rad*recip(norm(loc))*loc;
- }
-
- path temp(data, false, false);
- temp.clip_to(S, cam().viewpt(), front);
- temp.draw();
- } // end of draw_sphere_arc
-
-
- //// "Geography" and spherical plotting ////
- void latitude(double lat, double lngtd_min, double lngtd_max,
- const Sphere& S, const frame& coords)
- {
- draw_latitude(lat, lngtd_min, lngtd_max, true, S, coords);
- }
-
-
- void longitude(double lngtd, double lat_min, double lat_max,
- const Sphere& S, const frame& coords)
- {
- draw_longitude(lngtd, lat_min, lat_max, true, S, coords);
- }
-
- void back_latitude(double lat, double lngtd_min, double lngtd_max,
- const Sphere& S, const frame& coords)
- {
- draw_latitude(lat, lngtd_min, lngtd_max, false, S, coords);
- }
-
- void back_longitude(double lngtd, double lat_min, double lat_max,
- const Sphere& S, const frame& coords)
- {
- draw_longitude(lngtd, lat_min, lat_max, false, S, coords);
- }
-
-
- // spherical plotting
- void frontplot_N(double f1(double), double f2(double),
- double t_min, double t_max, int num_pts,
- const Sphere& S)
- {
- draw_sphereplot(f1, f2, zero, t_min, t_max, num_pts, true, STEREO_N, S);
- }
-
- void backplot_N(double f1(double), double f2(double),
- double t_min, double t_max, int num_pts,
- const Sphere& S)
- {
- draw_sphereplot(f1, f2, zero, t_min, t_max, num_pts, false, STEREO_N, S);
- }
-
- void frontplot_S(double f1(double), double f2(double),
- double t_min, double t_max, int num_pts,
- const Sphere& S)
- {
- draw_sphereplot(f1, f2, zero, t_min, t_max, num_pts, true, STEREO_S, S);
- }
-
- void backplot_S(double f1(double), double f2(double),
- double t_min, double t_max, int num_pts,
- const Sphere& S)
- {
- draw_sphereplot(f1, f2, zero, t_min, t_max, num_pts, false, STEREO_S, S);
- }
-
-
- // Radial projection from center
- void frontplot_R(P phi(double), double t_min, double t_max,
- int num_pts, const Sphere& S)
- {
- draw_sphereplot(phi, t_min, t_max, num_pts, true, RADIAL, S);
- }
-
- void backplot_R(P phi(double), double t_min, double t_max,
- int num_pts, const Sphere& S)
- {
- draw_sphereplot(phi, t_min, t_max, num_pts, false, RADIAL, S);
- }
-
-
- //// Spherical geometry -- arcs and polyhedra ////
- // arc of great circle between non-antipodal points
- void arc(const P& tail, const P& head, const bool front, const Sphere& S)
- {
- draw_sphere_arc(seg(tail, head), 0, 1, front, RADIAL, S);
- }
-
-
- // user-space functions
- void front_arc(const P& p1, const P& p2, const Sphere& S)
- {
- const P ctr(S.center());
- const double rad(S.radius());
-
- arc(ctr+(rad/norm(p1))*p1, ctr+(rad/norm(p2))*p2, true, S);
- }
-
- void back_arc(const P& p1, const P& p2, const Sphere& S)
- {
- const P ctr(S.center());
- const double rad(S.radius());
-
- arc(ctr+(rad/norm(p1))*p1, ctr+(rad/norm(p2))*p2, false, S);
- }
-
- // join p1 to -p1 through p2
- void front_arc2(const P& p1, const P& p2, const Sphere& S)
- {
- front_arc(p1, p2, S);
- front_arc(p2, -p1, S);
- }
-
- void back_arc2(const P& p1, const P& p2, const Sphere& S)
- {
- back_arc(p1, p2, S);
- back_arc(p2, -p1, S);
- }
-
- void front_line(const P& p1, const P& p2, const Sphere& S)
- {
- front_arc( p1, p2, S);
- front_arc( p2, -p1, S);
- front_arc(-p1, -p2, S);
- front_arc(-p2, p1, S);
- }
-
-
- void back_line(const P& p1, const P& p2, const Sphere& S)
- {
- back_arc( p1, p2, S);
- back_arc( p2, -p1, S);
- back_arc(-p1, -p2, S);
- back_arc(-p2, p1, S);
- }
-
-
- void front_triangle(const P& p1, const P& p2, const P& p3, const Sphere& S)
- {
- front_arc(p1, p2, S);
- front_arc(p2, p3, S);
- front_arc(p3, p1, S);
- }
-
- void back_triangle(const P& p1, const P& p2, const P& p3, const Sphere& S)
- {
- back_arc(p1, p2, S);
- back_arc(p2, p3, S);
- back_arc(p3, p1, S);
- }
-
- // local to this file
- void front_dual(const P& p1, const P& p2, const P& p3, const Sphere& S)
- {
- const P ctr(0.3333*(p1+p2+p3));
-
- front_arc(ctr, 0.5*(p1+p2), S);
- front_arc(ctr, 0.5*(p2+p3), S);
- front_arc(ctr, 0.5*(p3+p1), S);
- }
-
- void back_dual(const P& p1, const P& p2, const P& p3, const Sphere& S)
- {
- const P ctr(0.3333*(p1+p2+p3));
-
- back_arc(ctr, 0.5*(p1+p2), S);
- back_arc(ctr, 0.5*(p2+p3), S);
- back_arc(ctr, 0.5*(p3+p1), S);
- }
-
-
- // spherical polyhedra
- void front_tetra(const Sphere& S, const frame& coords)
- {
- const P f1(coords.sea());
- const P f2(coords.sky());
- const P f3(coords.eye());
-
- const P ppp( f1+f2+f3);
- const P pnn( f1-f2-f3);
- const P npn(-f1+f2-f3);
- const P nnp(-f1-f2+f3);
-
- front_triangle(ppp,pnn,npn,S);
- front_triangle(ppp,npn,nnp,S);
- front_triangle(ppp,nnp,pnn,S);
- front_triangle(nnp,pnn,npn,S);
- }
- void back_tetra(const Sphere& S, const frame& coords)
- {
- const P f1(coords.sea());
- const P f2(coords.sky());
- const P f3(coords.eye());
-
- const P ppp( f1+f2+f3);
- const P pnn( f1-f2-f3);
- const P npn(-f1+f2-f3);
- const P nnp(-f1-f2+f3);
-
- back_triangle(ppp,pnn,npn,S);
- back_triangle(ppp,npn,nnp,S);
- back_triangle(ppp,nnp,pnn,S);
- back_triangle(nnp,pnn,npn,S);
- }
-
- void front_cube(const Sphere& S, const frame& coords)
- {
- const P f1(coords.sea());
- const P f2(coords.sky());
- const P f3(coords.eye());
-
- const P ppp( f1+f2+f3);
- const P npp(-f1+f2+f3);
- const P nnp(-f1-f2+f3);
- const P pnp( f1-f2+f3);
-
- const P ppn( f1+f2-f3);
- const P npn(-f1+f2-f3);
- const P nnn(-f1-f2-f3);
- const P pnn( f1-f2-f3);
-
- front_arc(ppp,npp,S);
- front_arc(npp,nnp,S);
- front_arc(nnp,pnp,S);
- front_arc(pnp,ppp,S);
-
- front_arc(ppn,npn,S);
- front_arc(npn,nnn,S);
- front_arc(nnn,pnn,S);
- front_arc(pnn,ppn,S);
-
- front_arc(ppp,ppn,S);
- front_arc(npp,npn,S);
- front_arc(nnp,nnn,S);
- front_arc(pnp,pnn,S);
- }
- void back_cube(const Sphere& S, const frame& coords)
- {
- const P f1(coords.sea());
- const P f2(coords.sky());
- const P f3(coords.eye());
-
- const P ppp( f1+f2+f3);
- const P npp(-f1+f2+f3);
- const P nnp(-f1-f2+f3);
- const P pnp( f1-f2+f3);
-
- const P ppn( f1+f2-f3);
- const P npn(-f1+f2-f3);
- const P nnn(-f1-f2-f3);
- const P pnn( f1-f2-f3);
-
- back_arc(ppp,npp,S);
- back_arc(npp,nnp,S);
- back_arc(nnp,pnp,S);
- back_arc(pnp,ppp,S);
-
- back_arc(ppn,npn,S);
- back_arc(npn,nnn,S);
- back_arc(nnn,pnn,S);
- back_arc(pnn,ppn,S);
-
- back_arc(ppp,ppn,S);
- back_arc(npp,npn,S);
- back_arc(nnp,nnn,S);
- back_arc(pnp,pnn,S);
- }
-
- void front_octa(const Sphere& S, const frame& coords)
- {
- const P p1(coords.sea());
- const P p2(coords.sky());
- const P p3(coords.eye());
-
- const P m1(-coords.sea());
- const P m2(-coords.sky());
- const P m3(-coords.eye());
-
- // draw "even parity" triangles only
- front_triangle(p1,p2,p3,S);
- front_triangle(m1,m2,p3,S);
-
- front_triangle(m1,p2,m3,S);
- front_triangle(p1,m2,m3,S);
- }
- void back_octa(const Sphere& S, const frame& coords)
- {
- const P p1(coords.sea());
- const P p2(coords.sky());
- const P p3(coords.eye());
-
- const P m1(-coords.sea());
- const P m2(-coords.sky());
- const P m3(-coords.eye());
-
- // draw "even parity" triangles only
- back_triangle(p1,p2,p3,S);
- back_triangle(m1,m2,p3,S);
-
- back_triangle(m1,p2,m3,S);
- back_triangle(p1,m2,m3,S);
- }
-
-
- void front_dodeca(const Sphere& S, const frame& coords)
- {
- const P f1(coords.sea());
- const P f2(coords.sky());
- const P f3(coords.eye());
- const double gam(0.5*(1+sqrt(5)));
-
- const P pop( gam*f1 + f3);
- const P pom( gam*f1 - f3);
- const P mom(-gam*f1 - f3);
- const P mop(-gam*f1 + f3);
-
- const P ppo( f1 + gam*f2);
- const P pmo( f1 - gam*f2);
- const P mmo(-f1 - gam*f2);
- const P mpo(-f1 + gam*f2);
-
- const P opp( f2 + gam*f3);
- const P opm( f2 - gam*f3);
- const P omm(-f2 - gam*f3);
- const P omp(-f2 + gam*f3);
-
- // faces surrounding pop
- front_dual(pop, ppo, opp, S);
- front_dual(pop, opp, omp, S);
- front_dual(pop, omp, pmo, S);
- front_dual(pop, pmo, pom, S);
- front_dual(pop, pom, ppo, S);
-
- // respective reflections about link of pop
- front_dual(opp, ppo, mpo, S);
- front_dual(omp, opp, mop, S);
- front_dual(pmo, omp, mmo, S);
- front_dual(pom, pmo, omm, S);
- front_dual(ppo, pom, opm, S);
-
- // and their antipodes
- front_dual(mom, omm, mmo, S);
- front_dual(mom, opm, omm, S);
- front_dual(mom, mpo, opm, S);
- front_dual(mom, mop, mpo, S);
- front_dual(mom, mmo, mop, S);
-
- front_dual(omm, pmo, mmo, S);
- front_dual(opm, pom, omm, S);
- front_dual(mpo, ppo, opm, S);
- front_dual(mop, opp, mpo, S);
- front_dual(mmo, omp, mop, S);
- }
-
- void back_dodeca(const Sphere& S, const frame& coords)
- {
- const P f1(coords.sea());
- const P f2(coords.sky());
- const P f3(coords.eye());
- const double gam(0.5*(1+sqrt(5)));
-
- const P pop( gam*f1 + f3);
- const P pom( gam*f1 - f3);
- const P mom(-gam*f1 - f3);
- const P mop(-gam*f1 + f3);
-
- const P ppo( f1 + gam*f2);
- const P pmo( f1 - gam*f2);
- const P mmo(-f1 - gam*f2);
- const P mpo(-f1 + gam*f2);
-
- const P opp( f2 + gam*f3);
- const P opm( f2 - gam*f3);
- const P omm(-f2 - gam*f3);
- const P omp(-f2 + gam*f3);
-
- // faces surrounding pop
- back_dual(pop, ppo, opp, S);
- back_dual(pop, opp, omp, S);
- back_dual(pop, omp, pmo, S);
- back_dual(pop, pmo, pom, S);
- back_dual(pop, pom, ppo, S);
-
- // respective reflections about link of pop
- back_dual(opp, ppo, mpo, S);
- back_dual(omp, opp, mop, S);
- back_dual(pmo, omp, mmo, S);
- back_dual(pom, pmo, omm, S);
- back_dual(ppo, pom, opm, S);
-
- // and their antipodes
- back_dual(mom, omm, mmo, S);
- back_dual(mom, opm, omm, S);
- back_dual(mom, mpo, opm, S);
- back_dual(mom, mop, mpo, S);
- back_dual(mom, mmo, mop, S);
-
- back_dual(omm, pmo, mmo, S);
- back_dual(opm, pom, omm, S);
- back_dual(mpo, ppo, opm, S);
- back_dual(mop, opp, mpo, S);
- back_dual(mmo, omp, mop, S);
- }
-
-
- void front_icosa(const Sphere& S, const frame& coords)
- {
- const P f1(coords.sea());
- const P f2(coords.sky());
- const P f3(coords.eye());
- const double gam(0.5*(1+sqrt(5)));
-
- const P pop( gam*f1 + f3);
- const P pom( gam*f1 - f3);
- const P mom(-gam*f1 - f3);
- const P mop(-gam*f1 + f3);
-
- const P ppo( f1 + gam*f2);
- const P pmo( f1 - gam*f2);
- const P mmo(-f1 - gam*f2);
- const P mpo(-f1 + gam*f2);
-
- const P opp( f2 + gam*f3);
- const P opm( f2 - gam*f3);
- const P omm(-f2 - gam*f3);
- const P omp(-f2 + gam*f3);
-
- // faces surrounding pop
- front_triangle(pop, ppo, opp, S);
- front_triangle(pop, opp, omp, S);
- front_triangle(pop, omp, pmo, S);
- front_triangle(pop, pmo, pom, S);
- front_triangle(pop, pom, ppo, S);
-
- // respective reflections about link of pop
- front_triangle(opp, ppo, mpo, S);
- front_triangle(omp, opp, mop, S);
- front_triangle(pmo, omp, mmo, S);
- front_triangle(pom, pmo, omm, S);
- front_triangle(ppo, pom, opm, S);
-
- // and their antipodes
- front_triangle(mom, omm, mmo, S);
- front_triangle(mom, opm, omm, S);
- front_triangle(mom, mpo, opm, S);
- front_triangle(mom, mop, mpo, S);
- front_triangle(mom, mmo, mop, S);
-
- front_triangle(omm, pmo, mmo, S);
- front_triangle(opm, pom, omm, S);
- front_triangle(mpo, ppo, opm, S);
- front_triangle(mop, opp, mpo, S);
- front_triangle(mmo, omp, mop, S);
- }
-
- void back_icosa(const Sphere& S, const frame& coords)
- {
- const P f1(coords.sea());
- const P f2(coords.sky());
- const P f3(coords.eye());
- const double gam(0.5*(1+sqrt(5)));
-
- const P pop( gam*f1 + f3);
- const P pom( gam*f1 - f3);
- const P mom(-gam*f1 - f3);
- const P mop(-gam*f1 + f3);
-
- const P ppo( f1 + gam*f2);
- const P pmo( f1 - gam*f2);
- const P mmo(-f1 - gam*f2);
- const P mpo(-f1 + gam*f2);
-
- const P opp( f2 + gam*f3);
- const P opm( f2 - gam*f3);
- const P omm(-f2 - gam*f3);
- const P omp(-f2 + gam*f3);
-
- // faces surrounding pop
- back_triangle(pop, ppo, opp, S);
- back_triangle(pop, opp, omp, S);
- back_triangle(pop, omp, pmo, S);
- back_triangle(pop, pmo, pom, S);
- back_triangle(pop, pom, ppo, S);
-
- // respective reflections about link of pop
- back_triangle(opp, ppo, mpo, S);
- back_triangle(omp, opp, mop, S);
- back_triangle(pmo, omp, mmo, S);
- back_triangle(pom, pmo, omm, S);
- back_triangle(ppo, pom, opm, S);
-
- // and their antipodes
- back_triangle(mom, omm, mmo, S);
- back_triangle(mom, opm, omm, S);
- back_triangle(mom, mpo, opm, S);
- back_triangle(mom, mop, mpo, S);
- back_triangle(mom, mmo, mop, S);
-
- back_triangle(omm, pmo, mmo, S);
- back_triangle(opm, pom, omm, S);
- back_triangle(mpo, ppo, opm, S);
- back_triangle(mop, opp, mpo, S);
- back_triangle(mmo, omp, mop, S);
- }
-
-
-
- // Hyperbolic lines in upper half space
- // For compatibility with 2-D geometry, the boundary is the (x1,x3)-plane
-
- void hyperbolic_line(const P& tail, const P& head)
- {
- if ( (tail.x2() < 0) || (head.x2() < 0) )
- epix_warning("Endpoint not in upper half-space");
-
- P sh_tail(tail%E_2); // shadow of tail
- P sh_head(head%E_2);
- double ht_tail(tail|E_2), ht_head(head|E_2);
- double dist(norm(sh_head - sh_tail)); // dist btw projections to boundary
-
- if (dist < EPIX_EPSILON)
- line(tail, head);
-
- else
- {
- // use similar triangles to find center; get basis; draw arc
- double diff((ht_head - ht_tail)*(ht_head + ht_tail)/dist);
- double frac(0.5*(diff + dist));
- P center((1-frac/dist)*sh_tail + (frac/dist)*sh_head);
- P e1(tail - center);
- double rad(norm(e1));
-
- P e2(E_2%e1);
- e2 *= rad/norm(e2);
- double theta(Acos(((head-center)|e1)/(rad*rad)));
-
- ellipse(center, e1, e2, 0, theta);
- }
- } // end of hyperbolic_line
-
-
- // Lines in Poincare disk model.
- //
- // Consider the "positive" portion of the standard hyperboloid of two
- // sheets: x^2 + y^2 + 1 = z^2, z>0, and consider copies of the unit
- // disk in the planes z=0 (D0) and z=1 (D1). The Klein model of the disk
- // is gotten by stereographic projection from the origin to D1, while the
- // Poincare model is gotten by stereographic projection from (0,0,-1) to
- // D0. Appropriate compositions of these projection maps are hyperbolic
- // isometries. The algorithm for drawing lines in the disk model is to
- // find the images of the endpoints in the Klein model, draw the line
- // between them, and map this line back to the Poincare model. Because
- // the isometry is "square-root-like" in the radial direction at the
- // unit circle, the points on the Klein line are spaced quadratically
- // close together at the endpoints of the segment (the variable "s") so
- // their images will be roughly equally-spaced in the Poincare model.
- // There is no visual harm if one or both endpoints are far from the
- // circle, and the result is acceptable if both points are on or near the
- // circle. The number of points to draw is determined both by the true
- // distance between the endpoints and by how close they are to the circle.
-
- P poincare_klein(P pt)
- {
- return (2.0/(1+(pt|pt)))*pt;
- }
-
- P klein_poincare(P pt)
- {
- return (1.0/(1+sqrt(1-(pt|pt))))*pt;
- }
-
- P p_line(const P& tail, const P& head, double t)
- {
- double s(0.5*(1+std::cos(M_PI*t))); // s in [0,1]
-
- P current((s*poincare_klein(tail)) + ((1-s)*poincare_klein(head)));
- return klein_poincare(current);
- }
-
- void disk_line(const P& tail, const P& head)
- {
- const int N(EPIX_NUM_PTS);
- std::vector<P> data(N+1);
-
- double t(0);
-
- for (int i=0; i <= N; ++i, t += 1.0/N)
- data.at(i) = p_line(tail, head, t);
-
- path temp(data, false, false);
- temp.draw();
- }
-
-} // end of namespace
diff --git a/graphics/epix/geometry.h b/graphics/epix/geometry.h
deleted file mode 100644
index 60afb8af9c..0000000000
--- a/graphics/epix/geometry.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * geometry.h
- *
- * This file is part of ePiX, a preprocessor for creating high-quality
- * line figures in LaTeX
- *
- * Version 1.1.6
- * Last Change: June 28, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_GEOMETRY
-#define EPIX_GEOMETRY
-
-#include "frame.h"
-#include "sphere.h"
-
-namespace ePiX {
- class P;
-
- // latitude, longitude lines with hiding
- void latitude(double lat, double long_min, double long_max,
- const Sphere& S=Sphere(), const frame& coords=frame());
-
- void longitude(double lngtd, double lat_min, double lat_max,
- const Sphere& S=Sphere(), const frame& coords=frame());
-
- void back_latitude(double lat, double long_min, double long_max,
- const Sphere& S=Sphere(), const frame& coords=frame());
-
- void back_longitude(double lngtd, double lat_min, double lat_max,
- const Sphere& S=Sphere(), const frame& coords=frame());
-
-
- // stereographic projection; path first projected vertically
- void frontplot_N(double f1(double), double f2(double),
- double t_min, double t_max, int num_pts,
- const Sphere& S = Sphere());
-
- void backplot_N(double f1(double), double f2(double),
- double t_min, double t_max, int num_pts,
- const Sphere& S = Sphere());
-
- void frontplot_S(double f1(double), double f2(double),
- double t_min, double t_max, int num_pts,
- const Sphere& S = Sphere());
-
- void backplot_S(double f1(double), double f2(double),
- double t_min, double t_max, int num_pts,
- const Sphere& S = Sphere());
-
- // Radial projection from center
- void frontplot_R(P phi(double), double t_min, double t_max,
- int num_pts, const Sphere& S = Sphere());
-
- void backplot_R(P phi(double), double t_min, double t_max,
- int num_pts, const Sphere& S = Sphere());
-
-
- // All sphere line functions treat point arguments as unscaled
- // displacements from the center of the sphere, not as absolute
- // spatial locations. If the center or radius of the sphere
- // changes, the line automatically adjusts as expected.
-
- // front portion of spherical segment joining p1 to p2
- void front_arc(const P& p1, const P& p2, const Sphere& S = Sphere());
- void back_arc(const P& p1, const P& p2, const Sphere& S = Sphere());
-
- // half-line joining p1 to -p1 through p2
- void front_arc2(const P&, const P&, const Sphere& S=Sphere());
- void back_arc2(const P&, const P&, const Sphere& S=Sphere());
-
- // great circle through p1 and p2
- void front_line(const P&, const P&, const Sphere& S=Sphere());
- void back_line(const P&, const P&, const Sphere& S=Sphere());
-
- void front_triangle(const P&, const P&, const P&, const Sphere& S=Sphere());
- void back_triangle(const P&, const P&, const P&, const Sphere& S=Sphere());
-
- // spherical polyhedra
- void front_tetra(const Sphere& S=Sphere(), const frame& coords=frame());
- void back_tetra(const Sphere& S=Sphere(), const frame& coords=frame());
-
- void front_cube(const Sphere& S=Sphere(), const frame& coords=frame());
- void back_cube(const Sphere& S=Sphere(), const frame& coords=frame());
-
- void front_octa(const Sphere& S=Sphere(), const frame& coords=frame());
- void back_octa(const Sphere& S=Sphere(), const frame& coords=frame());
-
- void front_dodeca(const Sphere& S=Sphere(), const frame& coords=frame());
- void back_dodeca(const Sphere& S=Sphere(), const frame& coords=frame());
-
- void front_icosa(const Sphere& S=Sphere(), const frame& coords=frame());
- void back_icosa(const Sphere& S=Sphere(), const frame& coords=frame());
-
- // Hyperbolic lines
- void hyperbolic_line (const P&, const P&);
- void disk_line (const P&, const P&);
-
-} // end of namespace
-
-#endif /* EPIX_GEOMETRY */
diff --git a/graphics/epix/glyph.cc b/graphics/epix/glyph.cc
deleted file mode 100644
index db4e0f2b37..0000000000
--- a/graphics/epix/glyph.cc
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * glyph.cc -- ePiX screen implemenation for labels and markers
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-#include <sstream>
-
-#include "constants.h"
-#include "angle_units.h"
-
-#include "functions.h"
-
-#include "pairs.h"
-#include "affine.h"
-#include "screen_mask.h"
-
-#include "length.h"
-
-#include "marker_style.h"
-#include "label_style.h"
-
-#include "format.h"
-#include "state.h"
-
-#include "picture_data.h"
-#include "picture.h"
-
-#include "glyph.h"
-
-namespace ePiX {
-
- glyph::glyph(const pair& here, const pair& offset,
- const std::string& label, const epix_mark_type mark,
- const marker_sizes& sizes,
- const label_state& style, const bool seen)
- : m_here(here), m_offset(offset),
- m_label(label), m_mark(mark), m_sizes(sizes),
- m_style(style), m_seen(seen) { }
-
- glyph& glyph::map_by(const affine& f)
- {
- m_here = f(m_here); // new location
-
- // map offset, preserving length
- const double old_norm(norm(m_offset));
- m_offset = f(m_offset) - f(pair(0,0)); // new displacement
-
- const double new_norm(norm(m_offset));
- if (EPIX_EPSILON < new_norm)
- m_offset *= old_norm/new_norm; // scale to preserve page length
-
- // compute new label angle; work in radians for safety/efficiency
- const double th(PI_180*m_style.label_angle()); // old angle in radians
-
- // new baseline direction
- const pair tmp_dir(f(pair(std::cos(th), std::sin(th))) - f(pair(0,0)));
-
- // no change if old baseline maps to zero
- if (EPIX_EPSILON < norm(tmp_dir))
- {
- // new angle in current units
- double theta(Atan2(tmp_dir.x2(), tmp_dir.x1()));
-
- // effectively, reflect label; works well stylistically
- if (f.reverses_orientation())
- theta -= 0.5*full_turn();
-
- m_style.label_angle(theta);
- }
-
- return *this;
- }
-
- glyph& glyph::crop_to(const screen_mask& M)
- {
- if (M.crops(m_here))
- m_seen = false;
-
- return *this;
- }
-
- glyph* glyph::clone() const
- {
- return new glyph(*this);
- }
-
- bool glyph::is_empty() const
- {
- return !m_seen;
- }
-
-
- std::string glyph::print_to(const format& fmt, const std::string& len) const
- {
- if (is_empty())
- return "";
-
- std::stringstream obuf;
- // print (masked) label, if any, before mark.
- if (m_label != "")
- obuf << fmt.print_text(m_here, m_offset, m_label, m_style, len);
-
- if (m_mark != TEXT && m_mark != PATH)
- obuf << fmt.print_mark(m_here, m_offset, m_mark, m_sizes, m_style, len);
-
- return obuf.str();
- }
-
- void glyph::add_to_pallet() const
- {
- the_picture().add_to_pallet(m_style.text_color())
- .add_to_pallet(m_style.mask_color())
- .add_to_pallet(m_style.label_border().color());
- }
-} // end of namespace
diff --git a/graphics/epix/glyph.h b/graphics/epix/glyph.h
deleted file mode 100644
index 44f7fb8cec..0000000000
--- a/graphics/epix/glyph.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * glyph.h -- ePiX screen implemenation for labels and markers
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 16, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_GLYPH
-#define EPIX_GLYPH
-
-#include <string>
-
-#include "pairs.h"
-#include "length.h"
-#include "Color.h"
-
-#include "marker_style.h"
-#include "label_style.h"
-#include "tile.h"
-
-namespace ePiX {
-
- class format;
- class affine;
- class screen_mask;
-
- class glyph : public tile {
- public:
- // location, offsets, contents, mark type, visibility
- glyph(const pair& here, const pair& offset,
- const std::string& label, const epix_mark_type mark,
- const marker_sizes& sizes,
- const label_state& style, const bool seen);
-
- glyph& map_by(const affine&);
- glyph& crop_to(const screen_mask&);
-
- glyph* clone() const;
-
- bool is_empty() const;
-
- std::string print_to(const format&, const std::string&) const;
- void add_to_pallet() const;
-
- private:
- pair m_here;
- pair m_offset;
-
- std::string m_label;
- epix_mark_type m_mark;
-
- marker_sizes m_sizes;
- label_state m_style;
-
- bool m_seen;
- }; // end of class glyph
-
-} // end of namespace
-
-#endif /* EPIX_GLYPH */
diff --git a/graphics/epix/halfspace.cc b/graphics/epix/halfspace.cc
deleted file mode 100644
index 4be13a979c..0000000000
--- a/graphics/epix/halfspace.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * halfspace.cc -- ePiX::halfspace class for clipping
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.8
- * Last Change: July 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <list>
-
-#include "triples.h"
-#include "edge_data.h"
-#include "crop_algorithms.h"
-
-#include "halfspace.h"
-
-namespace ePiX {
-
- halfspace::halfspace(const P& base, const P& perp)
- : m_base(base), m_perp((1.0/norm(perp))*perp) { }
-
- halfspace& halfspace::reverse()
- {
- m_perp *= -1;
- return *this;
- }
-
- bool halfspace::clips(const P& arg) const
- {
- return height(m_perp, m_base, arg) < -EPIX_EPSILON;
- }
-
- std::list<edge3d>& halfspace::clip_path(std::list<edge3d>& L) const
- {
- return chop_path<P>(m_perp, m_base, L);
- }
-
- std::list<edge3d>& halfspace::clip_loop(std::list<edge3d>& L) const
- {
- return chop_loop<P>(m_perp, m_base, L);
- }
-} // end of namespace
diff --git a/graphics/epix/halfspace.h b/graphics/epix/halfspace.h
deleted file mode 100644
index 44f4a8a89c..0000000000
--- a/graphics/epix/halfspace.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * halfspace.h -- ePiX::halfspace class for clipping
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.8
- * Last Change: July 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides the halfspace class for path clipping.
- * A halfspace contains a base point p and a unit vector n, and defines the
- * affine half space (x-p)|n > 0; n points "inward".
- */
-#ifndef EPIX_HALFSPACE
-#define EPIX_HALFSPACE
-
-#include <list>
-
-#include "triples.h"
-#include "edge_data.h"
-
-namespace ePiX {
-
- class halfspace {
- public:
- halfspace(const P& base, const P& perp);
-
- halfspace& reverse();
-
- bool clips(const P&) const;
-
- std::list<edge3d>& clip_path(std::list<edge3d>&) const;
- std::list<edge3d>& clip_loop(std::list<edge3d>&) const;
-
- private:
- P m_base;
- P m_perp;
- }; // end of class halfspace
-} // end of namespace
-
-#endif /* EPIX_HALFSPACE */
diff --git a/graphics/epix/hatching.cc b/graphics/epix/hatching.cc
deleted file mode 100644
index 00fe64b7a3..0000000000
--- a/graphics/epix/hatching.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * hatching.cc -- ePiX's internal data for filled polygons
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <list>
-#include <vector>
-#include <cmath>
-
-#include "errors.h"
-
-#include "constants.h"
-#include "functions.h"
-#include "pairs.h"
-
-#include "edge_data.h"
-
-#include "state.h"
-#include "hatching.h"
-
-namespace ePiX {
-
- bd_edge::bd_edge(const edge2d& edge, double ht1, double ht2, int orient)
- : m_edge(edge), m_lo(min(ht1, ht2)), m_hi(max(ht1, ht2)),
- m_orient(orient) { }
-
- pair bd_edge::tail() const
- {
- return m_edge.tail();
- }
-
- pair bd_edge::head() const
- {
- return m_edge.head();
- }
-
- pair bd_edge::dir() const
- {
- return m_edge.head() - m_edge.tail();
- }
-
- double bd_edge::lo() const
- {
- return m_lo;
- }
-
- double bd_edge::hi() const
- {
- return m_hi;
- }
-
- int bd_edge::orient() const
- {
- return m_orient;
- }
-
-
- cut::cut(pair loc, int sign)
- : m_loc(loc), m_sign(sign) { }
-
- pair cut::loc() const
- {
- return m_loc;
- }
-
- int cut::sign() const
- {
- return m_sign;
- }
-
-
- // (h-t) assumed unit
- scan_line::scan_line(const pair& t, const pair& h)
- : m_perp(J(t - h)), m_ht(h.x1()*t.x2() - h.x2()*t.x1()) { }
-
-
- // keep m_cuts sorted by x
- void scan_line::add_cut(const cut& crossing)
- {
- if (EPIX_EPSILON < fabs((m_perp|crossing.loc()) + m_ht))
- return;
-
- const double x(J(m_perp)|crossing.loc());
-
- std::list<cut>::iterator p(m_cuts.begin());
-
- while (p != m_cuts.end() && (J(m_perp)|(*p).loc()) < x)
- ++p;
-
- m_cuts.insert(p, crossing);
- }
-
-
- // add scans to value
- void scan_line::draw(std::vector<edge2d>& value) const
- {
- std::list<cut>::const_iterator p(m_cuts.begin());
-
- if (p == m_cuts.end()) // redundant guard
- return;
-
- int winding((*p).sign());
-
- pair start((*p).loc());
- pair end(start);
-
- while (p != m_cuts.end())
- {
- // non-zero winding rule
- while (winding != 0 && ++p != m_cuts.end())
- {
- end = (*p).loc();
- winding += (*p).sign();
- }
-
- if (start != end)
- value.push_back(edge2d(start, end, true));
-
- // seek to next start
- while (winding == 0 && ++p != m_cuts.end())
- {
- start = (*p).loc();
- winding += (*p).sign();
- }
- }
- } // end of scan_line::draw
-
-
- // private function; assumes horiz is unit
- void hatch_data::hatch_init(const pair& horiz,
- double sep,
- std::list<edge2d> polygon)
- {
- const pair vert(J(horiz));
-
- // initialize loop with first edge
- std::list<edge2d>::iterator p(polygon.begin());
-
- // first pass: Get min, max vertex heights; remove horizontal edges
- double min_ht((*p).tail()|vert);
- double max_ht(min_ht);
-
- for (p = polygon.begin(); p != polygon.end(); ) // increment at bottom
- {
- double tmp_tl((*p).tail()|vert);
- double tmp_hd((*p).head()|vert);
-
- if (fabs(tmp_hd - tmp_tl) < EPIX_EPSILON) // horizontal edge
- p = polygon.erase(p);
-
- else
- {
- // running extrema from head height
- min_ht = min(min_ht, tmp_hd);
- max_ht = max(max_ht, tmp_hd);
-
- int up(tmp_tl < tmp_hd ? 1 : -1); // get edge orientation
- m_edges.push_back(bd_edge(*p, tmp_tl, tmp_hd, up));
- ++p;
- }
- }
-
- // compute subdivision heights, initialize vector of scan_lines
- unsigned int num_cuts((unsigned int) ceil((max_ht - min_ht)/sep));
- const double true_sep((max_ht - min_ht)/num_cuts);
-
- // initialize hatch lines
- for (unsigned int i=0; i <= num_cuts; ++i)
- {
- double ht(min_ht + i*true_sep);
- m_scans.push_back(scan_line(ht*vert, horiz + ht*vert));
- }
-
- // Second pass: add scan line cuts
- for (std::list<bd_edge>::iterator ep=m_edges.begin();
- ep != m_edges.end(); ++ep)
- {
- // indices of scan lines we cross
- unsigned int i_min((unsigned int) ceil(((*ep).lo()-min_ht)/true_sep));
- unsigned int i_max((unsigned int) floor(((*ep).hi()-min_ht)/true_sep));
-
- // compute parameters once per edge
- const pair tl((*ep).tail());
- const pair dir((*ep).dir());
-
- // relative heights of endpoints
- const double ht_hd((*ep).head()|vert);
- const double ht_tl(tl|vert);
-
- const int up((*ep).orient());
-
- for (unsigned int i = i_min; i <= i_max; ++i)
- {
- const double t((min_ht + i*true_sep - ht_tl)/(ht_hd - ht_tl));
- m_scans.at(i).add_cut(cut(tl + t*dir, up));
- }
- }
- } // end of hatch_init
-
-
- // user-visible constructors
- hatch_data::hatch_data(double dir_x, double dir_y,
- double sep, const std::list<edge2d>& polygon)
- {
- pair dir(dir_x, dir_y);
- dir *= 1.0/norm(dir);
-
- hatch_init(dir, sep, polygon);
- }
-
- hatch_data::hatch_data(double th, double sep,
- const std::list<edge2d>& polygon)
- {
- const double theta(th*PI_180); // th in radians
-
- // orthonormal basis; horiz along cuts, vert perp to cuts
- hatch_init(pair(std::cos(theta), std::sin(theta)), sep, polygon);
- }
-
-
- std::vector<edge2d> hatch_data::data() const
- {
- std::vector<edge2d> value;
-
- for (unsigned int i=0; i < m_scans.size(); ++i)
- m_scans.at(i).draw(value);
-
- return value;
- }
-} // end of namespace
diff --git a/graphics/epix/hatching.h b/graphics/epix/hatching.h
deleted file mode 100644
index 877efde8c8..0000000000
--- a/graphics/epix/hatching.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * hatching.h -- ePiX hatched region data structures
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.13
- * Last Change: August 29, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_HATCHING
-#define EPIX_HATCHING
-
-#include <list>
-#include <vector>
-
-#include "pairs.h"
-#include "edge_data.h"
-
-namespace ePiX {
-
- // edge, endpoint heights, orientation (+/-1 = up/down)
- class bd_edge {
- public:
- bd_edge(const edge2d&, double, double, int);
-
- pair tail() const;
- pair head() const;
- pair dir() const;
-
- double lo() const;
- double hi() const;
-
- int orient() const;
-
- private:
- edge2d m_edge;
-
- double m_lo;
- double m_hi;
-
- int m_orient;
- };
-
- // location where scan line crosses bd_edge
- class cut {
- public:
- cut(pair loc, int sign);
-
- pair loc() const;
- int sign() const;
-
- private:
- pair m_loc; // location
- int m_sign; // orientation
- };
-
- // ax + by + c = 0
- class scan_line {
- public:
- scan_line(const pair& t, const pair& h);
-
- void add_cut(const cut&);
-
- // store what we find in value
- void draw(std::vector<edge2d>& value) const;
-
- private:
- pair m_perp; // (a, b)
- double m_ht; // c
-
- std::list<cut> m_cuts;
- }; // end of class scan_line
-
-
- // ctor converts a list of edge2d into a (large) vector of scan lines
- class hatch_data {
- public:
- // components of hatch direction, scanline separation, polygon to fill
- hatch_data(double, double,
- double sep, const std::list<edge2d>&);
-
- // angle, scanline separation, polygon to fill
- hatch_data(double th, double sep, const std::list<edge2d>&);
-
- std::vector<edge2d> data() const;
-
- private:
- std::list<bd_edge> m_edges;
- std::vector<scan_line> m_scans;
-
- // convert polygon to scan lines parallel to dir, common to both ctors
- void hatch_init(const pair& dir,
- double sep,
- std::list<edge2d> polygon);
- }; // end of class hatch_data
-
-} // end of namespace
-
-#endif /* EPIX_HATCHING */
diff --git a/graphics/epix/install-sh b/graphics/epix/install-sh
deleted file mode 100644
index 4d4a9519ea..0000000000
--- a/graphics/epix/install-sh
+++ /dev/null
@@ -1,323 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2005-05-14.22
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-chmodcmd="$chmodprog 0755"
-chowncmd=
-chgrpcmd=
-stripcmd=
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=
-dst=
-dir_arg=
-dstarg=
-no_target_directory=
-
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
- or: $0 [OPTION]... SRCFILES... DIRECTORY
- or: $0 [OPTION]... -t DIRECTORY SRCFILES...
- or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
--c (ignored)
--d create directories instead of installing files.
--g GROUP $chgrpprog installed files to GROUP.
--m MODE $chmodprog installed files to MODE.
--o USER $chownprog installed files to USER.
--s $stripprog installed files.
--t DIRECTORY install into DIRECTORY.
--T report an error if DSTFILE is a directory.
---help display this help and exit.
---version display version info and exit.
-
-Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
-"
-
-while test -n "$1"; do
- case $1 in
- -c) shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- --help) echo "$usage"; exit $?;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd=$stripprog
- shift
- continue;;
-
- -t) dstarg=$2
- shift
- shift
- continue;;
-
- -T) no_target_directory=true
- shift
- continue;;
-
- --version) echo "$0 $scriptversion"; exit $?;;
-
- *) # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- test -n "$dir_arg$dstarg" && break
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dstarg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dstarg"
- shift # fnord
- fi
- shift # arg
- dstarg=$arg
- done
- break;;
- esac
-done
-
-if test -z "$1"; then
- if test -z "$dir_arg"; then
- echo "$0: no input file specified." >&2
- exit 1
- fi
- # It's OK to call `install-sh -d' without argument.
- # This can happen when creating conditional directories.
- exit 0
-fi
-
-for src
-do
- # Protect names starting with `-'.
- case $src in
- -*) src=./$src ;;
- esac
-
- if test -n "$dir_arg"; then
- dst=$src
- src=
-
- if test -d "$dst"; then
- mkdircmd=:
- chmodcmd=
- else
- mkdircmd=$mkdirprog
- fi
- else
- # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
- # might cause directories to be created, which would be especially bad
- # if $src (and thus $dsttmp) contains '*'.
- if test ! -f "$src" && test ! -d "$src"; then
- echo "$0: $src does not exist." >&2
- exit 1
- fi
-
- if test -z "$dstarg"; then
- echo "$0: no destination specified." >&2
- exit 1
- fi
-
- dst=$dstarg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst ;;
- esac
-
- # If destination is a directory, append the input filename; won't work
- # if double slashes aren't ignored.
- if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dstarg: Is a directory" >&2
- exit 1
- fi
- dst=$dst/`basename "$src"`
- fi
- fi
-
- # This sed command emulates the dirname command.
- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
-
- # Make sure that the destination directory exists.
-
- # Skip lots of stat calls in the usual case.
- if test ! -d "$dstdir"; then
- defaultIFS='
- '
- IFS="${IFS-$defaultIFS}"
-
- oIFS=$IFS
- # Some sh's can't handle IFS=/ for some reason.
- IFS='%'
- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
- shift
- IFS=$oIFS
-
- pathcomp=
-
- while test $# -ne 0 ; do
- pathcomp=$pathcomp$1
- shift
- if test ! -d "$pathcomp"; then
- $mkdirprog "$pathcomp"
- # mkdir can fail with a `File exist' error in case several
- # install-sh are creating the directory concurrently. This
- # is OK.
- test -d "$pathcomp" || exit
- fi
- pathcomp=$pathcomp/
- done
- fi
-
- if test -n "$dir_arg"; then
- $doit $mkdircmd "$dst" \
- && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
- else
- dstfile=`basename "$dst"`
-
- # Make a couple of temp file names in the proper directory.
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
- # Trap to clean up those temp files at exit.
- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
- trap '(exit $?); exit' 1 2 13 15
-
- # Copy the file name to the temp name.
- $doit $cpprog "$src" "$dsttmp" &&
-
- # and set any options; do chmod last to preserve setuid bits.
- #
- # If any of these fail, we abort the whole thing. If we want to
- # ignore errors from any of these, just make sure not to ignore
- # errors from the above "$doit $cpprog $src $dsttmp" command.
- #
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-
- # Now rename the file to the real destination.
- { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
- || {
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
-
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- if test -f "$dstdir/$dstfile"; then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
- || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
- || {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit 1
- }
- else
- :
- fi
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
- }
- }
- fi || { (exit 1); exit 1; }
-done
-
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
- (exit 0); exit 0
-}
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/graphics/epix/intersections.cc b/graphics/epix/intersections.cc
deleted file mode 100644
index 6789e64dbe..0000000000
--- a/graphics/epix/intersections.cc
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * intersections.cc -- ePiX's intersection operators
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "constants.h"
-#include "errors.h"
-
-#include "circle.h"
-#include "plane.h"
-#include "segment.h"
-#include "sphere.h"
-
-#include "intersections.h"
-
-namespace ePiX {
-
- static const double EPS(EPIX_EPSILON);
-
- Segment operator* (const Circle& arg1, const Circle& arg2)
- {
- if (arg1.malformed() || arg2.malformed())
- return Segment(true);
-
- const P p2(arg2.center());
- const P n2(arg2.perp());
-
- P dir(p2 - arg1.center()); // displacement between centers
-
- const double r1(arg1.radius());
- const double r2(arg2.radius());
- const double rad_diff(fabs(r2 - r1));
- const double rad_sum(r2 + r1);
- const double sep(norm(dir));
-
- if ( EPS < norm(arg1.perp()*arg2.perp()) || // non-coplanar
- rad_sum <= sep || // separated
- sep <= rad_diff ) // concentric, catches equality
- return Segment(true);
-
- // else
- dir *= 1.0/sep;
-
- const double COS(((r1-r2)*(r1+r2) - sep*sep)/(2*r2*sep));
- const double SIN(sqrt((1-COS)*(1+COS)));
-
- return Segment(p2 + r2*(COS*dir + SIN*(n2*dir)),
- p2 + r2*(COS*dir - SIN*(n2*dir)));
- }
-
-
- Segment operator* (const Circle& circ, const Plane& pl)
- {
- if (circ.malformed() || pl.malformed())
- return Segment(true);
-
- // else
- P bi_perp(circ.perp()*pl.perp());
- const double denom(norm(bi_perp));
-
- if (denom < EPS) // parallel
- return Segment(true);
-
- // else
- bi_perp *= 1.0/denom;
-
- const P dir(bi_perp*circ.perp()); // unit vector toward pl in circ plane
-
- // shortest distance from circ.center() to pl in circ plane
- const double x(-((circ.center() - pl.pt())|pl.perp())/(dir|pl.perp()));
-
- const double rad(circ.radius());
-
- if (rad <= fabs(x)) // disjoint
- return Segment(true);
-
- // else
- const P vec_y(sqrt((rad-x)*(rad+x))*bi_perp);
- const P midpt(circ.center() + x*dir);
-
- return Segment(midpt - vec_y, midpt + vec_y);
- }
-
- // Extend seg into a line, look for two crossings
- Segment operator* (const Circle& circ, const Segment& seg)
- {
- if (seg.malformed() || circ.malformed())
- return Segment(true);
-
- // else
- const P dir(seg.end2() - seg.end1());
-
- if (EPS < fabs(dir|circ.perp()))
- return Segment(true);
-
- // else
- P to_ctr(circ.center() - seg.end1());
- P perp(circ.perp()*dir);
-
- const double dist((to_ctr|perp)/norm(perp));
- const double rad(circ.radius());
-
- if (rad <= fabs(dist))
- return Segment(true);
-
- // else
- const P vec_x(circ.center() - (dist/norm(perp))*perp);
- const P vec_y((sqrt((rad-dist)*(rad+dist))/norm(dir))*dir);
-
- return Segment(vec_x + vec_y, vec_x - vec_y);
- }
-
-
- // cut plane of circ by S, intersect
- Segment operator* (const Circle& circ, const Sphere& S)
- {
- Plane pl(circ.center(), circ.perp());
- return circ*(pl*S);
- }
-
- Segment operator* (const Plane& pl1, const Plane& pl2)
- {
- if (pl1.malformed() || pl2.malformed())
- return Segment(true);
-
- // else
- P N3((pl1.perp())*(pl2.perp()));
- const double temp(norm(N3));
-
- if (temp < EPS) // parallel
- return Segment(true);
-
- // else N3 non-zero, parallel to intersection
- N3 *= 1/temp; // normalize
-
- P perp((pl1.perp())*N3); // unit vector in pl, perp to intersection
- P pt(pl1.pt() + (((pl2.pt()-pl1.pt())|pl2.perp())/(perp|pl2.perp()))*perp);
- P ctr(pt %= N3); // closest pt to origin on line
- // P ctr(pt - (pt|N3)*N3);
-
- return Segment(ctr - EPIX_INFTY*N3, ctr + EPIX_INFTY*N3);
- }
-
-
- P operator* (const Plane& pl, const Segment& seg)
- {
- if (pl.malformed() || seg.malformed())
- epix_warning("Malformed argument(s) to Plane*Segment");
-
- const P tail(seg.end1());
- const P head(seg.end2());
-
- const double ptail((tail - pl.pt())|pl.perp());
- const double phead((head - pl.pt())|pl.perp());
-
- if (fabs(phead - ptail) < EPS)
- epix_warning("Plane parallel to Segment in intersection");
-
- return tail + (ptail/(ptail-phead))*(head-tail);
- }
-
-
- Circle operator* (const Plane& pl, const Sphere& S)
- {
- if (pl.malformed() || S.malformed())
- return Circle(true);
-
- // else
- const double rad(S.radius());
- const double ht((pl.pt() - S.center())|pl.perp());
-
- if (rad <= fabs(ht)) // disjoint
- return Circle(true);
-
- else
- return Circle(S.center() + ht*pl.perp(),
- sqrt((rad - ht)*(rad + ht)),
- pl.perp());
- }
-
-
- P operator* (const Segment& seg1, const Segment& seg2)
- {
- if (seg1.malformed() || seg2.malformed())
- epix_warning("Malformed argument(s) in Segment intersection");
-
- const P p1(seg1.end1());
- const P dir1(seg1.end2() - p1);
-
- const P p3(seg2.end1());
- const P p4(seg2.end2());
- const P dir2(p4 - p3);
-
- P perp(dir1*dir2);
- double normal_length();
-
- // non-coplanar or parallel
- if (EPS < fabs((dir1*(p3 - p1)) | (p4 - p1)) || norm(perp) < EPS)
- epix_warning("Non-generic arguments in Segment intersection");
-
- // perp lies in plane of segments, is orthog to dir2
- perp *= dir2;
-
- // get t so that normal|(X - p3) = (normal|(p1 - p3 + t*dir1)) = 0.
- // note: X may not lie on either segment
- return p1 + ((perp|(p3-p1))/(perp|dir1))*dir1;
- }
-
- // extend seg into a line
- Segment operator* (const Segment& seg, const Sphere& S)
- {
- if (seg.malformed() || S.malformed())
- return Segment(true);
-
- // else
- P dir(seg.end2() - seg.end1());
- dir *= 1.0/norm(dir);
-
- const P posn(S.center() - seg.end1());
- const P perp(posn%dir);
-
- if (S.radius() <= norm(perp)) // disjoint
- return Segment(true);
-
- // else
- const double B(dir|posn);
- const double C((posn|posn)-pow(S.radius(), 2));
- const double discrim(sqrt(B*B - C)); // [sic]
-
- return Segment(seg.end1() + (B-discrim)*dir,
- seg.end1() + (B+discrim)*dir);
- }
-
- Circle operator* (const Sphere& sph1, const Sphere& sph2)
- {
- if (sph1.malformed() || sph2.malformed())
- return Circle(true);
-
- // else
- const double r1(sph1.radius());
- const double r2(sph2.radius());
- P dir(sph2.center() - sph1.center());
-
- const double dist(norm(dir));
-
- // separated, tangent, or concentric
- if (r1+r2 <= dist || dist <= fabs(r2-r1))
- return Circle(true);
-
- // else
- const double x(0.5*(dist + (r1-r2)*(r1+r2)/dist));
- const P perp((1/dist)*dir);
-
- return Circle(sph1.center() + x*perp, sqrt((r1-x)*(r1+x)), perp);
- }
-
-
- // derived operators
- Segment operator* (const Plane& pl, const Circle& circ)
- {
- return circ*pl;
- }
-
- Segment operator* (const Segment& seg, const Circle& circ)
- {
- return circ*seg;
- }
-
- Segment operator* (const Sphere& S, const Circle& circ)
- {
- return circ*S;
- }
-
- P operator* (const Segment& seg, const Plane& pl)
- {
- return pl*seg;
- }
-
- Circle operator* (const Sphere& S, const Plane& pl)
- {
- return pl*S;
- }
-
- Segment operator* (const Sphere& S, const Segment& seg)
- {
- return seg*S;
- }
-} // end of namespace
diff --git a/graphics/epix/intersections.h b/graphics/epix/intersections.h
deleted file mode 100644
index edf7b05569..0000000000
--- a/graphics/epix/intersections.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * intersections.h -- Circle, Plane, Segment, Sphere intersection operators
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 30, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_INTERSECTIONS
-#define EPIX_INTERSECTIONS
-
-namespace ePiX {
-
- class Circle;
- class Plane;
- class Segment;
- class Sphere;
-
- Segment operator* (const Circle&, const Circle&);
- Segment operator* (const Circle&, const Plane&);
- Segment operator* (const Circle&, const Segment&);
- Segment operator* (const Circle&, const Sphere&);
-
- Segment operator* (const Plane&, const Plane&);
- P operator* (const Plane&, const Segment&);
- Circle operator* (const Plane&, const Sphere&);
-
- P operator* (const Segment&, const Segment&);
- Segment operator* (const Segment&, const Sphere&);
-
- Circle operator* (const Sphere&, const Sphere&);
-
- // derived operators with reversed argument order
- Segment operator* (const Plane&, const Circle&);
- Segment operator* (const Segment&, const Circle&);
- Segment operator* (const Sphere&, const Circle&);
-
- P operator* (const Segment&, const Plane&);
- Circle operator* (const Sphere&, const Plane&);
-
- Segment operator* (const Sphere&, const Segment&);
-
-} // end of namespace
-
-#endif /* EPIX_INTERSECTIONS */
diff --git a/graphics/epix/interval.cc b/graphics/epix/interval.cc
deleted file mode 100644
index 11f7a2aace..0000000000
--- a/graphics/epix/interval.cc
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * interval.cc -- ePiX::interval class functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-#include <cstdlib>
-#include <string>
-
-#include "functions.h"
-#include "interval.h"
-
-namespace ePiX {
-
- // expect arg of the form (a,b), [a,b), (a,b], or [a,b]
- interval::interval(std::string arg)
- : m_closed_l(true), m_closed_r(true)
- {
- std::string::size_type i(arg.find_first_of("[("));
-
- if (i == std::string::npos) // return "empty interval"
- {
- m_rmin=1;
- m_rmax=0;
- return;
- }
-
- // else
- arg.erase(0, i);
-
- if (arg.at(0) == '(')
- m_closed_l = false;
-
- // expect numerical argument
- i = arg.find_first_of("-0123456789.");
- if (i == std::string::npos)
- {
- m_rmin=1;
- m_rmax=0;
- return;
- }
-
- arg.erase(0, i);
-
- // get left endpoint
- const char* tmp1(arg.c_str());
- char* new_arg;
- m_rmin = strtod(tmp1, &new_arg);
- arg=new_arg;
-
- i = arg.find_first_of(",");
- if (i == std::string::npos)
- {
- m_rmax=0;
- m_rmin=1;
- return;
- }
-
- arg.erase(0, i);
-
- // expect another numerical argument
- i = arg.find_first_of("-0123456789.");
- if (i == std::string::npos)
- {
- m_rmax=0;
- m_rmin=1;
- return;
- }
-
- arg.erase(0, i);
-
- const char* tmp2(arg.c_str());
- m_rmax = strtod(tmp2, &new_arg);
- arg=new_arg;
-
- i = arg.find_first_of(")]");
-
- if (i == std::string::npos)
- {
- m_rmax=0;
- m_rmin=1;
- return;
- }
-
- if (arg.at(0) == ')')
- m_closed_r = false;
- } // end of interval(std::string)
-
-
- interval::interval(double a, double b)
- : m_rmin(ePiX::min(a, b)), m_rmax(ePiX::max(a, b)),
- m_closed_l(true), m_closed_r(true) { }
-
- interval interval::literal(double a, double b)
- {
- interval value(a, a);
- value.m_rmax = b;
- return value;
- }
-
- interval interval::emptyset(literal(1,0));
-
- double interval::min() const
- {
- return m_rmin;
- }
-
- double interval::max() const
- {
- return m_rmax;
- }
-
- double interval::avg() const
- {
- return 0.5*(m_rmin + m_rmax);
- }
-
-
- // Magic number
- const double EPS(1.0e-10);
-
- bool interval::contains(double x) const
- {
- // check bounds at each endpoint
- return ( (m_closed_l ? (m_rmin - EPS <= x) : (m_rmin + EPS < x))
- && (m_closed_r ? (x <= m_rmax + EPS) : (x < m_rmax - EPS)) );
- }
-
- // Minkowski sum
- interval& interval::operator +=(const interval& I)
- {
- if (is_empty())
- ;
-
- else if (I.is_empty())
- *this = interval::emptyset;
-
- else
- {
- m_rmin += I.m_rmin;
- m_rmax += I.m_rmax;
-
- // sum contains endpoint iff both arguments do
- m_closed_l &= I.m_closed_l;
- m_closed_r &= I.m_closed_r;
- }
-
- return *this;
- }
-
- // intersection
- interval& interval::operator *=(const interval& I)
- {
- if (!is_empty())
- {
- m_rmin = ePiX::max(m_rmin, I.m_rmin);
- m_rmax = ePiX::min(m_rmax, I.m_rmax);
-
- m_closed_l &= I.m_closed_l;
- m_closed_r &= I.m_closed_r;
- }
-
- return *this;
- }
-
- bool interval::operator== (const interval& I) const
- {
- if (is_empty())
- return (I.is_empty()); // both empty?
-
- else
- return ((m_rmin == I.m_rmin) && (m_rmax == I.m_rmax)
- && (m_closed_l == I.m_closed_l) && (m_closed_r == I.m_closed_r));
- }
-
- bool interval::operator!= (const interval& I) const
- {
- return !(*this == I);
- }
-
- bool interval::is_empty() const
- {
- if ( (m_rmin < m_rmax)
- || ( (m_rmin == m_rmax) && m_closed_l && m_closed_r ) )
- return false;
-
- else
- return true;
- }
-
- // non-members
- interval operator+ (interval I1, const interval& I2)
- {
- return I1 += I2;
- }
-
- interval operator* (interval I1, const interval& I2)
- {
- return I1 *= I2;
- }
-
-} // end of namespace
diff --git a/graphics/epix/interval.h b/graphics/epix/interval.h
deleted file mode 100644
index 465262c4da..0000000000
--- a/graphics/epix/interval.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * interval.h -- ePiX::interval class and operations
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.0.25
- * Last Change: May 20, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
- * This file provides the interval class:
- *
- * - Minkowski sum, intersection
- */
-
-#ifndef EPIX_INTERVAL
-#define EPIX_INTERVAL
-
-#include <string>
-
-namespace ePiX {
-
- class interval {
- public:
- interval(std::string); // allow implicit conversion, must mangle argument
- interval(double, double); // closed interval
-
- static interval emptyset;
-
- double min() const;
- double max() const;
- double avg() const;
-
- bool contains(double) const;
-
- // Minkowski sum
- interval& operator +=(const interval&);
-
- // intersection
- interval& operator *=(const interval&);
-
- bool operator== (const interval&) const;
- bool operator!= (const interval&) const;
- bool is_empty() const;
-
- private:
- double m_rmin, m_rmax;
-
- bool m_closed_l, m_closed_r;
-
- static interval literal(double a, double b); // can force b<a
- }; // end of interval class
-
- interval operator+ (interval I1, const interval& I2);
- interval operator* (interval I1, const interval& I2);
-
-} // end of namespace
-
-#endif /* EPIX_INTERVAL */
diff --git a/graphics/epix/label_data.cc b/graphics/epix/label_data.cc
deleted file mode 100644
index 7f0e8b20f2..0000000000
--- a/graphics/epix/label_data.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * label_data.cc -- ePiX::label_data class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 22, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-
-#include "enums.h"
-
-#include "triples.h"
-#include "pairs.h"
-
-#include "label_data.h"
-#include "camera.h"
-#include "screen_data.h"
-#include "screen.h"
-
-#include "clipping.h"
-
-#include "paint_style.h"
-
-#include "active_screen.h"
-#include "glyph.h"
-
-namespace ePiX {
-
- label_data::label_data(const P& here, const P& offset,
- const std::string& text, epix_mark_type mark)
- : m_here(here), m_offset(offset.x1(), offset.x2()),
- m_text(text), m_mark(mark), m_sizes(the_mark_size()),
- m_style(the_label_style()), m_seen(!the_clip_box().clips(m_here))
- {
- // set axis tick color to line color; rotation ok if requested
- if (m_mark == HTICK || m_mark == VTICK)
- m_style.text_color(the_paint_style().line_color());
- }
-
- // generate label text from user-specified function of 2 or 3 variables
- label_data::label_data(const P& here, const P& offset,
- std::string f(double,double), epix_mark_type mark)
- : m_here(here), m_offset(offset.x1(), offset.x2()),
- m_text(f(here.x1(), here.x2())),
- m_mark(mark), m_sizes(the_mark_size()), m_style(the_label_style()),
- m_seen(!the_clip_box().clips(m_here))
- {
- if (m_mark == HTICK || m_mark == VTICK)
- m_style.text_color(the_paint_style().line_color());
- }
-
- label_data::label_data(const P& here, const P& offset,
- std::string f(double,double,double),
- epix_mark_type mark)
- : m_here(here), m_offset(offset.x1(), offset.x2()),
- m_text(f(here.x1(), here.x2(), here.x3())),
- m_mark(mark), m_sizes(the_mark_size()), m_style(the_label_style()),
- m_seen(!the_clip_box().clips(m_here))
- {
- if (m_mark == HTICK || m_mark == VTICK)
- m_style.text_color(the_paint_style().line_color());
- }
-
- // markers subject to masking, border
- // Only this constructor aligns TICK marks, prevents their rotation
- label_data::label_data(const P& here, epix_mark_type mark, epix_label_posn A)
- : m_here(here), m_offset(0, 0),
- m_text(""), m_mark(mark), m_sizes(the_mark_size()),
- m_style(the_label_style()), m_seen(!the_clip_box().clips(m_here))
- {
- if (m_mark == HTICK || m_mark == VTICK)
- {
- m_style.text_color(the_paint_style().line_color());
- m_style.label_angle(0); // no initial rotation
-
- // prevent unseemly alignment; default is c, so needn't check
- if (m_mark == HTICK && A == t || A == b)
- m_style.align_to(A);
-
- else if (A == l || A == r)
- m_style.align_to(A);
- }
- }
-
-
- label_data& label_data::text_color(const Color& col)
- {
- m_style.text_color(col);
- return *this;
- }
-
- label_data& label_data::mask_color(const Color& col)
- {
- m_style.mask_color(col);
- return *this;
- }
-
- label_data& label_data::align_to(epix_label_posn align)
- {
- m_style.align_to(align);
- return *this;
- }
-
- // send colors through cam
- void label_data::draw() const
- {
- if (m_seen)
- (*active_screen()).m_screen->add_tile(glyph(cam()(m_here), m_offset,
- m_text, m_mark, m_sizes,
- m_style.seen_through(cam()),
- true));
- }
-} // end of namespace
diff --git a/graphics/epix/label_data.h b/graphics/epix/label_data.h
deleted file mode 100644
index 53ccd0abe5..0000000000
--- a/graphics/epix/label_data.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * label_data.h -- ePiX::label_data class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 16, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * label_data comprises spatial location, screen offsets, text (contents),
- * mark type, and a label_style (q.v.). label_data can be constructed from
- * string-valued functions of position; examples are given below.
- */
-
-#ifndef EPIX_LABEL
-#define EPIX_LABEL
-
-#include <string>
-
-#include "enums.h"
-#include "triples.h"
-
-#include "pairs.h"
-
-#include "marker_style.h"
-#include "label_style.h"
-
-namespace ePiX {
-
- class Camera;
- class Color;
- class screen;
-
- class label_data {
- public:
- label_data(const P& here, const P& offset,
- const std::string& text, epix_mark_type mark=TEXT);
-
- // generate label text from user-specified function of 2 or 3 variables
- label_data(const P& here, const P& offset,
- std::string f(double,double), epix_mark_type mark=TEXT);
-
- label_data(const P& here, const P& offset,
- std::string f(double,double,double), epix_mark_type mark=TEXT);
-
- // marker; alignment affects only TICK marks
- label_data(const P& here, epix_mark_type mark, epix_label_posn align=c);
-
- // pass through to m_style
- label_data& text_color(const Color&);
- label_data& mask_color(const Color&);
- label_data& align_to(epix_label_posn);
-
- void draw() const;
-
- private:
- P m_here;
- pair m_offset;
-
- std::string m_text;
- epix_mark_type m_mark;
-
- marker_sizes m_sizes;
- label_state m_style;
-
- bool m_seen;
- }; // end of label_data class
-
-} // end of namespace
-
-#endif /* EPIX_LABEL */
diff --git a/graphics/epix/label_style.cc b/graphics/epix/label_style.cc
deleted file mode 100644
index ddd08f55ec..0000000000
--- a/graphics/epix/label_style.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * label_style.cc -- ePiX's current state for text and markers
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <string>
-
-#include "enums.h"
-#include "constants.h"
-#include "functions.h" // for snip_to
-
-#include "angle_units.h"
-
-#include "Color.h"
-#include "camera.h"
-#include "length.h"
-
-#include "label_style.h"
-
-namespace ePiX {
-
- // Users can only construct the default style, since label angles
- // are specified in current units but stored/returned in degrees.
- label_state::label_state()
- : the_text_color(Black()), the_mask_color(Neutral()),
- the_padding(length(0)), the_label_border(Xfine()),
- the_alignment(none), the_fontsize("nsz"),
- the_fontface("rm"),
- the_angle(0) { }
-
- // set
- void label_state::text_color(const Color& col)
- {
- the_text_color = col;
- }
-
- void label_state::mask_color(const Color& col)
- {
- the_mask_color = col;
- }
-
- void label_state::label_padding(const length& len)
- {
- the_padding=len;
- }
-
- void label_state::label_border(const pen_data& p)
- {
- the_label_border = p;
- }
-
- void label_state::align_to(const epix_label_posn a)
- {
- the_alignment = a;
- }
-
- void label_state::fontsize(const std::string& fs)
- {
- the_fontsize = fs;
- }
-
- void label_state::fontface(const std::string& ff)
- {
- the_fontface = ff;
- }
-
- // store label rotation angle internally in degrees
- void label_state::label_angle(double th)
- {
- the_angle = the_angle_style().to_degrees(th);
- }
-
- // get
- Color label_state::text_color() const
- {
- return the_text_color;
- }
-
- Color label_state::mask_color() const
- {
- return the_mask_color;
- }
-
- bool label_state::is_masked() const
- {
- return !the_mask_color.is_unset();
- }
-
- length label_state::label_padding() const
- {
- return the_padding;
- }
-
- pen_data label_state::label_border() const
- {
- return the_label_border;
- }
-
- epix_label_posn label_state::align_to() const
- {
- return the_alignment;
- }
-
- // e.g. "scriptsize"
- std::string label_state::fontsize() const
- {
- return the_fontsize;
- }
-
- std::string label_state::fontface() const
- {
- return the_fontface;
- }
-
- double label_state::label_angle() const
- {
- return the_angle;
- }
-
- // map us through a camera filter
- label_state label_state::seen_through(const Camera& mycam) const
- {
- return label_state(mycam(the_text_color), mycam(the_mask_color),
- the_padding, the_label_border.seen_through(mycam),
- the_alignment, the_fontsize, the_fontface,
- the_angle);
- }
-
- // private constructor, for seen_through
- label_state::label_state(const Color& text, const Color& mask,
- const length& pad, const pen_data& border,
- const epix_label_posn align,
- const std::string& fontsize,
- const std::string& fontface,
- double th)
- : the_text_color(text), the_mask_color(mask),
- the_padding(pad), the_label_border(border),
- the_alignment(align), the_fontsize(fontsize),
- the_fontface(fontface),
- the_angle(th) { }
-
-
- label_state& the_label_style()
- {
- static label_state* the_label_state(new label_state());
- return *the_label_state;
- }
-} // end of namespace
diff --git a/graphics/epix/label_style.h b/graphics/epix/label_style.h
deleted file mode 100644
index 3d3461281f..0000000000
--- a/graphics/epix/label_style.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * label_style.h -- ePiX's current state for text and markers
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file implements label_state:
- *
- * [] Text and mask color (Color x2)
- * [] Alignment (epix_label_posn)
- * [] Font face and size (strings)
- * [] Label angle (double, in degrees)
- *
- * The class in this file implements backend for user-level global
- * functions defined in state.h, which modify the_label_style().
- *
- * This header is not part of epix.h.
- */
-#ifndef EPIX_LABEL_STATE
-#define EPIX_LABEL_STATE
-
-#include <string>
-
-#include "enums.h"
-
-#include "Color.h"
-#include "length.h"
-
-#include "pen_data.h"
-
-namespace ePiX {
-
- class Camera;
-
- class label_state {
- public:
- // Clients can only construct the default state: black, unmasked,
- // unbordered, basepoint-aligned, unrotated normalsize Roman text.
- label_state();
-
- // set
- void text_color(const Color& col);
- void mask_color(const Color& col);
-
- void label_padding(const length& len);
- void label_border(const pen_data& p);
-
- void align_to(const epix_label_posn a);
-
- void fontsize(const std::string& fs);
- void fontface(const std::string& f);
-
- // store label rotation angle internally in degrees
- void label_angle(double th);
-
- // get
- Color text_color() const;
- Color mask_color() const;
-
- bool is_masked() const;
-
- length label_padding() const;
- pen_data label_border() const;
-
- epix_label_posn align_to() const;
-
- // e.g. "scriptsize"
- std::string fontsize() const;
- std::string fontface() const;
-
- // return angle in degrees
- double label_angle() const;
-
- // map us through a camera filter
- label_state seen_through(const Camera& cam) const;
-
- private:
- Color the_text_color;
- Color the_mask_color;
-
- length the_padding;
- pen_data the_label_border;
-
- epix_label_posn the_alignment;
-
- std::string the_fontsize;
- std::string the_fontface;
-
- double the_angle; // stored in degrees
-
- // text and background color, padding, border style,
- // alignment, font size and face, angle (degrees)
- label_state(const Color& text,
- const Color& mask,
- const length& pad,
- const pen_data& border,
- const epix_label_posn align,
- const std::string& fontsize,
- const std::string& fontface,
- double th);
- }; // end of label_state
-
- label_state& the_label_style();
-
-} // end of namespace
-
-#endif /* EPIX_LABEL_STATE */
diff --git a/graphics/epix/laps.1 b/graphics/epix/laps.1
deleted file mode 100644
index 4430a02037..0000000000
--- a/graphics/epix/laps.1
+++ /dev/null
@@ -1 +0,0 @@
-.so man1/epix.1
diff --git a/graphics/epix/laps.in b/graphics/epix/laps.in
deleted file mode 100644
index 8c8d8efe0f..0000000000
--- a/graphics/epix/laps.in
+++ /dev/null
@@ -1,259 +0,0 @@
-#! /bin/bash
-#
-# laps: latex to Postscript/PDF
-#
-# Options: --help for usage, --version for version and license
-#
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Andrew D. Hwang <For address, do "laps -V">
-#
-
-. "@pkglibdir@/epix-lib.sh"
-
-declare -a DVIPS_OPTS
-declare -a LAPS_FILE_LIST
-declare -i LAPS_FILE_COUNT
-
-PS2PDF="ps2pdf"
-LATEX="latex"
-LAPS_PDF=
-
-LATEX_INTERACT="batchmode"
-
-LAPS_EXTENSIONS="tex dtx ltx" # or NULL
-LAPS_DOT_EXT=".${LAPS_EXTENSIONS// /|.}" # for usage message
-LAPS_DEFAULT_EXT="tex"
-
-declare -a TMP_CMD
-
-
-function laps_help ()
-{
-cat <<"HELP"
-Options:
- -h, --help
- Show this message and exit
-
- -V, --version, --gpl
- Show version and license
-
- -v, --verbose
- Scroll output/error messages
-
- -H, --huge
- Use hugelatex (if available)
-
- -i, -int, --interactive
- Run (La)TeX interactively (implies --verbose)
-
- -n, --no-config
- Ignore $(HOME)/.dvipsrc
-
- --pdf
- Post-process ps file with ps2pdf
-
- --pdf(la)tex
- Use pdf(la)tex instead of latex.
-
- -ps, --ps, --pslatex
- Use pslatex instead of latex.
-
- -P<printer>
- dvips printer options, e.g. "-Pamz", may be given on the command
- line. They are also read from ~/.dvipsrc if this file exists.
-
- -t, --tex
- Use tex instead of latex
-
-HELP
-ePiX_bugreport
-
-} # End of laps_help
-
-
-function laps_parse_options {
-# Command-line options start with "-"
-while [ "$1" != "${1#-}" ]; do
- case "$1" in
-
- -h|--help)
- ePiX_usage laps $LAPS_DOT_EXT
- laps_help
- exit 0
- ;;
-
- -H|--huge)
- if [ $(which hugelatex 2> /dev/null) ]; then
- LATEX="hugelatex"
- else
- ePiX_warn " hugelatex not available, ignoring \"$1\" option"
- fi
- shift
- ;;
-
- -i|-int|--interactive)
- EPIX_STDOUT="$SYSTEM_STDOUT"
- LATEX_INTERACT="scrollmode"
- shift
- ;;
-
- -n|--no-config) # do not use ~/.dvipsrc
- export DVIPSRC="$SYSTEM_DEVNULL"
- shift
- ;;
-
- -pdf|--pdf)
- LATEX="${LATEX##pdf}"
- LAPS_PDF="yes"
- shift
- ;;
-
- --pdflatex)
- LATEX="pdflatex"
- LAPS_PDF=""
- shift
- ;;
-
- --pdftex)
- LATEX="pdftex"
- LAPS_PDF=""
- shift
- ;;
-
- -ps|--ps|--pslatex)
- LATEX="pslatex"
- shift
- ;;
-
- -P)
- DVIPS_OPTS=("${DVIPS_OPTS[@]}" "-P$2")
- shift 2
- ;;
-
- -P*)
- DVIPS_OPTS=("${DVIPS_OPTS[@]}" "$1")
- shift
- ;;
-
- -t|--tex)
- LATEX="tex"
- shift
- ;;
-
- -V|--version|--gpl)
- ePiX_version laps
- ePiX_license
- exit 0
- ;;
-
- -v|--verbose)
- if [ -z "$2" ]; then
- echo "Please use -V for version"
- exit 0
- fi
- EPIX_STDOUT="$SYSTEM_STDOUT"
- shift
- ;;
-
- -vv)
- echo "Discontinued option -vv; please use -v for verbose output"
- exit 0
- ;;
-
- *)
- ePiX_warn "Ignoring unknown option \"$1\""
- shift
- ;;
- esac
-done
-
-LAPS_FILE_LIST=("$@")
-} # End of laps_parse_options
-
-
-function laps_compile_files()
-{
- if [ -z "$1" ]; then ePiX_die "No input file specified"; fi
-
- # file counts
- local processed=0
- local success=0
- local failure=0
-
- for EPIX_INFILE in "${LAPS_FILE_LIST[@]}"; do
-
- # sets EPIX_INROOT, EPIX_SUFFIX, EPIX_NOTFOUND, touches EPIX_LOGFILE
- epix_parse_filename "$EPIX_INFILE" "$LAPS_EXTENSIONS"
-
- let processed=processed+1
-
- if [ "$EPIX_NOTFOUND" = "yes" ]; then
- let failure=failure+1
- continue
- fi
-
- TMP_CMD=($LATEX -interaction=$LATEX_INTERACT "$EPIX_INROOT.$EPIX_SUFFIX")
- TEMPFILES=("{TEMPFILES[@]}" "${EPIX_INROOT}.dvi" "${EPIX_INROOT}.log")
-
- # aux file out of date
- if [ "$EPIX_INROOT.$EPIX_SUFFIX" -nt "$EPIX_INROOT.aux" ]; then
- ePiX_msg "aux file out of date"
-
- ePiX_command "${TMP_CMD[@]}"
- fi
-
- ePiX_command "${TMP_CMD[@]}"
-
- if [ "${EPIX_INROOT}.$EPIX_SUFFIX" -nt "$EPIX_INROOT.dvi" ]; then
- ePiX_warn "\"${TMP_CMD[*]}\" failed"
- let failure=failure+1
- continue
- fi
-
- if [ "$LATEX" = "latex" -o "$LATEX" = "tex" ]; then
- TMP_CMD=(dvips "${DVIPS_OPTS[@]}" -f -o "$EPIX_INROOT.ps" "$EPIX_INROOT.dvi")
-
- ePiX_command "${TMP_CMD[@]}"
-
- if [ "$EPIX_INROOT.dvi" -nt "$EPIX_INROOT.ps" ]; then
- ePiX_warn "${TMP_CMD[*]} failed"
- let failure=failure+1
- continue
- fi
- fi
-
- if [ "$LAPS_PDF" = "yes" ]; then
- TMP_CMD=($PS2PDF "$EPIX_INROOT.ps")
-
- ePiX_command "${TMP_CMD[@]}"
-
- if [ "$EPIX_INROOT.ps" -nt "$EPIX_INROOT.pdf" ]; then
- ePiX_warn "${TMP_CMD[*]} failed"
- let failure=failure+1
- continue
- fi
- fi
-
- let success=success+1
- echo -e "\nTranscript written on $EPIX_LOGFILE" > "$EPIX_STDOUT"
-
- done # for EPIX_INFILE in $LAPS_INFILE_LIST
-
- if [ $processed -gt 1 ]; then
- echo "$processed files processed: $success successfully, $failure failed" > "$EPIX_STDERR"
- fi
-}
-
-### main ###
-
-if [ $# -eq 0 ]; then
- ePiX_usage laps $LAPS_DOT_EXT
- laps_help
- exit 0
-fi
-
-laps_parse_options "$@"
-
-laps_compile_files "${LAPS_FILE_LIST[@]}"
-
-exit 0
diff --git a/graphics/epix/legend.cc b/graphics/epix/legend.cc
deleted file mode 100644
index 8f9b7c2054..0000000000
--- a/graphics/epix/legend.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * legend.cc -- ePiX legend class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.1
- * Last Change: September 28, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-// #include <cmath>
-#include <string>
-#include <sstream>
-#include <list>
-
-#include "constants.h"
-
-#include "triples.h"
-
-#include "Color.h"
-
-#include "length.h"
-
-#include "camera.h"
-
-#include "curves.h"
-
-#include "screen.h"
-#include "active_screen.h"
-#include "screen_data.h"
-
-#include "label_data.h"
-#include "markers.h"
-
-#include "legend_item.h"
-#include "legend_tile.h"
-#include "legend.h"
-
-namespace ePiX {
-
- legend::legend()
- : m_backing(White()),
- m_bord(Black()), m_bord_width(PLAIN_WIDTH.magnitude()),
- m_item_bord(Black()), m_item_bord_width(0.5*PLAIN_WIDTH.magnitude()),
- m_key_size(12), m_label_skip(6) { }
-
- legend::legend(const legend& L)
- : m_backing(L.m_backing), m_bord(L.m_bord), m_bord_width(L.m_bord_width),
- m_item_bord(L.m_item_bord), m_item_bord_width(L.m_item_bord_width),
- m_key_size(L.m_key_size), m_label_skip(L.m_label_skip)
- {
- for (std::list<legend_item*>::const_iterator ip = L.m_items.begin();
- ip != L.m_items.end(); ++ip)
- m_items.push_back((*ip)->clone());
- }
-
- legend& legend::operator=(const legend& L)
- {
- if (&L != this)
- {
- std::list<legend_item*> tmp;
- for (std::list<legend_item*>::const_iterator ip = L.m_items.begin();
- ip != L.m_items.end(); ++ip)
- tmp.push_back((*ip)->clone());
-
- m_backing = L.m_backing;
- m_bord = L.m_bord;
- m_bord_width = L.m_bord_width;
-
- m_item_bord = L.m_item_bord;
- m_item_bord_width = L.m_item_bord_width;
-
- m_key_size = L.m_key_size;
- m_label_skip = L.m_label_skip;
-
- swap(m_items, tmp);
- }
-
- return *this;
- }
-
- legend::~legend()
- {
- for (std::list<legend_item*>::iterator ip = m_items.begin();
- ip != m_items.end(); ++ip)
- delete *ip;
- }
-
- // add items
- legend& legend::fill_item(const std::string& text)
- {
- m_items.push_back(new ePiX::fill_item(text));
- return *this;
- }
-
- legend& legend::path_item(const std::string& text)
- {
- m_items.push_back(new ePiX::path_item(text));
- return *this;
- }
-
- legend& legend::mark_item(epix_mark_type mark, const std::string& text)
- {
- m_items.push_back(new ePiX::mark_item(mark, text));
- return *this;
- }
-
- // decorations
- legend& legend::backing(const Color& col)
- {
- m_backing = col;
- return *this;
- }
-
- legend& legend::border(const Color& col, double len)
- {
- m_bord = col;
- m_bord_width = len;
-
- return *this;
- }
-
- legend& legend::border(double len)
- {
- m_bord = Black();
- m_bord_width = len;
-
- return *this;
- }
-
- // item attributes
- legend& legend::item_border(const Color& col, double len)
- {
- m_item_bord = col;
- m_item_bord_width = len;
-
- return *this;
- }
-
- legend& legend::item_border(double len)
- {
- m_item_bord = Black();
- m_item_bord_width = len;
-
- return *this;
- }
-
- legend& legend::key_size(double len)
- {
- m_key_size = len;
- return *this;
- }
-
- legend& legend::label_skip(double len)
- {
- m_label_skip = len;
- return *this;
- }
-
- void legend::draw(const P& loc, const P& off, epix_label_posn align) const
- {
- std::list<legend_item*>::const_iterator ip(m_items.begin());
- if (ip == m_items.end())
- return;
-
- // else
- label_state ls(the_label_style());
- ls.mask_color(m_backing);
- ls.label_border(pen_data(m_bord, length(m_bord_width)));
- ls.align_to(align);
-
- active_screen()->m_screen
- ->add_tile(legend_tile(pair(loc.x1(), loc.x2()),
- pair(off.x1(), off.x2()),
- align,
- ls.seen_through(cam()),
- pen_data(cam()(m_item_bord),
- length(m_item_bord_width)),
- m_key_size, m_label_skip, m_items));
- }
-} // end of namespace
diff --git a/graphics/epix/legend.h b/graphics/epix/legend.h
deleted file mode 100644
index ca7e096015..0000000000
--- a/graphics/epix/legend.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * legend.h -- Plot/figure legend class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.11
- * Last Change: August 16, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_LEGEND
-#define EPIX_LEGEND
-
-#include <string>
-
-#include "enums.h"
-
-#include "Color.h"
-
-namespace ePiX {
-
- class legend_item;
- class P;
-
- class legend {
- public:
- legend();
-
- legend(const legend&);
-
- legend& operator=(const legend&);
-
- ~legend();
-
- // add items; get key style from drawing state
- legend& fill_item(const std::string&); // solid color
- legend& path_item(const std::string&); // line
- legend& mark_item(epix_mark_type, const std::string&); // marker
-
- // decorations
- legend& backing(const Color&);
- legend& border(const Color&, double);
- legend& border(double); // line width in pt
-
- // item attributes
- legend& item_border(const Color&, double);
- legend& item_border(double);
-
- legend& label_skip(double); //
- legend& key_size(double); // size of legend keys in pt
-
- void draw(const P& loc, const P& offset=P(0,0),
- epix_label_posn align=tr) const;
-
- private:
- Color m_backing;
- Color m_bord;
- double m_bord_width;
-
- Color m_item_bord;
- double m_item_bord_width;
-
- double m_key_size;
- double m_label_skip;
-
- std::list<legend_item*> m_items;
- }; // end of legend class
-
-} // end of namespace
-
-#endif /* EPIX_LEGEND */
diff --git a/graphics/epix/legend_item.cc b/graphics/epix/legend_item.cc
deleted file mode 100644
index afbc5a8b65..0000000000
--- a/graphics/epix/legend_item.cc
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * legend_item.cc -- ePiX legend_item implementations
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 16, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <string>
-#include <sstream>
-
-#include "enums.h"
-#include "Color.h"
-#include "pen_data.h"
-
-#include "pairs.h"
-#include "edge_data.h"
-
-#include "camera.h"
-
-#include "format.h"
-
-#include "label_data.h"
-#include "markers.h"
-
-#include "paint_style.h"
-
-#include "screen_data.h"
-#include "glyph.h"
-#include "pen_line.h"
-
-#include "legend_item.h"
-
-namespace ePiX {
-
- // Magic numbers
- screen_data __epix_legend_key(double L)
- {
- return screen_data(pair(0, -0.075*L), pair(L, 0.925*L));
- }
-
- double legend_item::key_coord(double sz, const std::string& len) const
- {
- return sz*(length("1pt").to(len).magnitude());
- }
-
-
- // N.B. store raw fill color; "key" passes through camera
- fill_item::fill_item(const std::string& text)
- : m_fill(the_paint_style().fill_color()), m_text(text) { }
-
- fill_item* fill_item::clone() const
- {
- return new fill_item(*this);
- }
-
- std::string fill_item::value() const
- {
- return m_text;
- }
-
- std::string fill_item::key(const format& fmt, double sz,
- const pen_data& bpen,
- const std::string& len) const
- {
- const double L(legend_item::key_coord(sz, len));
-
- screen_data tmp(__epix_legend_key(L));
-
- tmp.backing(m_fill).border(bpen.color(), bpen.width().name());
-
- return tmp.print_to(fmt, len, true);
- }
-
-
- // N.B. Store pens passed through camera
- path_item::path_item(const std::string& text)
- : m_line(the_paint_style().line_pen().seen_through(cam())),
- m_base(the_paint_style().base_pen().seen_through(cam())),
- m_text(text) { }
-
- path_item* path_item::clone() const
- {
- return new path_item(*this);
- }
-
- std::string path_item::value() const
- {
- return m_text;
- }
-
- std::string path_item::key(const format& fmt, double sz,
- const pen_data& bpen,
- const std::string& len) const
- {
- const double L(legend_item::key_coord(sz, len));
-
- screen_data tmp(__epix_legend_key(L));
- tmp.border(bpen.color(), bpen.width().name());
-
- // draw a centered horizontal segment in the current line style
- // Magic numbers
- std::list<edge2d> edges;
- edges.push_back(edge2d(tmp.l(), tmp.r(), true));
-
- tmp.add_tile(pen_line(m_line, m_base, edges));
- return tmp.print_to(fmt, len, true);
- }
-
-
- // key is a marker in the current style
- mark_item::mark_item(epix_mark_type mark, const std::string& text)
- : m_mark(mark), m_style(the_label_style().seen_through(cam())),
- m_sizes(the_mark_size()), m_text(text) { }
-
- mark_item* mark_item::clone() const
- {
- return new mark_item(*this);
- }
-
- std::string mark_item::value() const
- {
- return m_text;
- }
-
- std::string mark_item::key(const format& fmt, double sz,
- const pen_data& bpen,
- const std::string& len) const
- {
- const double L(legend_item::key_coord(sz, len));
-
- screen_data tmp(__epix_legend_key(L));
- tmp.border(bpen.color(), bpen.width().name());
-
- tmp.add_tile(glyph(tmp.c(), pair(0,0), "",
- m_mark, m_sizes, m_style, true));
-
- return tmp.print_to(fmt, len, true); // encapsulate in a picture env.
- }
-} // end of namespace
diff --git a/graphics/epix/legend_item.h b/graphics/epix/legend_item.h
deleted file mode 100644
index 6250245ba3..0000000000
--- a/graphics/epix/legend_item.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * legend_item.h -- ePiX legend_item base class and implementations
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.11
- * Last Change: August 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_LEGEND_ITEM
-#define EPIX_LEGEND_ITEM
-
-#include <string>
-
-#include "enums.h"
-#include "Color.h"
-#include "pen_data.h"
-
-#include "label_data.h"
-#include "markers.h"
-
-namespace ePiX {
-
- class format;
-
- // used to represent legend items both in "space" and in the screen
- class legend_item {
- public:
- virtual ~legend_item() { }
- virtual legend_item* clone() const = 0;
-
- virtual std::string value() const = 0;
- virtual std::string key(const format& fmt, double sz,
- const pen_data& bpen,
- const std::string& len) const = 0;
-
- double key_coord(double sz, const std::string& len) const;
- }; // end of base class
-
-
- // key is a solid filled square in current color
- class fill_item : public legend_item {
- public:
- fill_item(const std::string& text);
- fill_item* clone() const;
-
- std::string value() const;
- std::string key(const format&, double,
- const pen_data&,
- const std::string& len) const;
-
- private:
- Color m_fill;
- std::string m_text;
- }; // end of class fill_item
-
-
- // key is a line segment in current line style
- class path_item : public legend_item {
- public:
- path_item(const std::string& text);
- path_item* clone() const;
-
- std::string value() const;
- std::string key(const format&, double sz, const pen_data&,
- const std::string& len) const;
-
- private:
- pen_data m_line;
- pen_data m_base;
-
- std::string m_text;
- }; // end of class path_item
-
-
- // key is a marker in the current style
- class mark_item : public legend_item {
- public:
- mark_item(epix_mark_type mark, const std::string& text);
- mark_item* clone() const;
-
- std::string value() const;
- std::string key(const format&, double sz, const pen_data&,
- const std::string& len) const;
-
- private:
- epix_mark_type m_mark;
- label_state m_style;
- marker_sizes m_sizes;
-
- std::string m_text;
- }; // end of class mark_item
-
-} // end of namespace
-
-#endif /* EPIX_LEGEND_ITEM */
diff --git a/graphics/epix/legend_tile.cc b/graphics/epix/legend_tile.cc
deleted file mode 100644
index 546cf802b0..0000000000
--- a/graphics/epix/legend_tile.cc
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * legend_tile.cc -- ePiX screen implemenation for legends
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.1
- * Last Change: September 28, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <string>
-#include <sstream>
-#include <list>
-
-#include "enums.h"
-
-#include "length.h"
-
-#include "label_style.h"
-#include "pen_data.h"
-
-#include "functions.h"
-#include "pairs.h"
-#include "affine.h"
-#include "screen_mask.h"
-
-#include "picture.h"
-#include "picture_data.h"
-
-#include "format.h"
-
-#include "legend_item.h"
-#include "legend_tile.h"
-
-namespace ePiX {
-
- // location, offsets, contents, mark type, visibility
- legend_tile::legend_tile(const pair& here, const pair& offset,
- epix_label_posn align, const label_state& style,
- const pen_data& pen,
- double key_size, double skip,
- std::list<legend_item*> items)
- : m_here(here), m_offset(offset), m_align(align), m_style(style),
- m_item_border(pen), m_key_size(key_size), m_label_skip(skip)
- {
- for (std::list<legend_item*>::const_iterator li=items.begin();
- li != items.end(); ++li)
- m_items.push_back((*li)->clone());
- }
-
- legend_tile::legend_tile(const legend_tile& L)
- : m_here(L.m_here), m_offset(L.m_offset), m_align(L.m_align),
- m_style(L.m_style), m_item_border(L.m_item_border),
- m_key_size(L.m_key_size), m_label_skip(L.m_label_skip)
- {
- for (std::list<legend_item*>::const_iterator ip = L.m_items.begin();
- ip != L.m_items.end(); ++ip)
- m_items.push_back((*ip)->clone());
- }
-
- legend_tile& legend_tile::operator=(const legend_tile& L)
- {
- if (&L != this)
- {
- std::list<legend_item*> tmp;
- for (std::list<legend_item*>::const_iterator ip = L.m_items.begin();
- ip != L.m_items.end(); ++ip)
- tmp.push_back((*ip)->clone());
-
- m_here = L.m_here;
- m_offset = L.m_offset;
-
- m_align = L.m_align;
- m_style = L.m_style;
-
- m_item_border = L.m_item_border;
-
- m_key_size = L.m_key_size;
- m_label_skip = L.m_label_skip;
-
- swap(m_items, tmp);
- }
-
- return *this;
- }
-
- legend_tile::~legend_tile()
- {
- for (std::list<legend_item*>::iterator ip = m_items.begin();
- ip != m_items.end(); ++ip)
- delete *ip;
- }
-
-
- legend_tile& legend_tile::map_by(const affine& f)
- {
- m_here = f(m_here);
- return *this;
- }
-
- // legends unaffected by cropping
- legend_tile& legend_tile::crop_to(const screen_mask& M)
- {
- /*
- if (M.crops(m_here))
- m_seen = false;
- */
- return *this;
- }
-
- legend_tile* legend_tile::clone() const
- {
- return new legend_tile(*this);
- }
-
- bool legend_tile::is_empty() const
- {
- return false;
- }
-
- std::string legend_tile::print_to(const format& fmt,
- const std::string& len) const
- {
- std::stringstream obuf, item_buf;
-
- item_buf << "%" << std::endl << "\\begin{tabular}{l}%" << std::endl;
-
- for (std::list<legend_item*>::const_iterator ip=m_items.begin();
- ip != m_items.end(); ++ip)
- item_buf << (*ip)->key(fmt, m_key_size, m_item_border, len)
- << "\\hskip " << m_label_skip << "pt "
- << fmt.print_latex_hbox(m_style, (*ip)->value())
- << " \\\\" << std::endl;
-
- item_buf << "\\end{tabular}%" << std::endl;
-
- obuf << fmt.print_text(m_here, m_offset, item_buf.str(), m_style, len);
-
- return obuf.str();
- }
-
- void legend_tile::add_to_pallet() const
- {
- the_picture().add_to_pallet(m_item_border.color())
- .add_to_pallet(m_style.text_color())
- .add_to_pallet(m_style.mask_color())
- .add_to_pallet(m_style.label_border().color());
- }
-} // end of namespace
diff --git a/graphics/epix/legend_tile.h b/graphics/epix/legend_tile.h
deleted file mode 100644
index 37c5f97440..0000000000
--- a/graphics/epix/legend_tile.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * legend_tile.h -- ePiX screen implemenation for legends
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.1
- * Last Change: September 28, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_LEGEND_TILE
-#define EPIX_LEGEND_TILE
-#include <string>
-
-#include "enums.h"
-
-#include "pairs.h"
-#include "length.h"
-#include "Color.h"
-
-#include "label_style.h"
-#include "pen_data.h"
-
-#include "tile.h"
-
-namespace ePiX {
-
- class format;
- class legend_item;
- class affine;
- class screen_mask;
-
- class legend_tile : public tile {
- public:
- legend_tile(const pair& here, const pair& offset,
- epix_label_posn align, const label_state& style,
- const pen_data& item_border, double key_size, double skip,
- std::list<legend_item*> items);
-
- legend_tile(const legend_tile&);
- legend_tile& operator= (const legend_tile&);
- ~legend_tile();
-
- legend_tile& map_by(const affine&);
- legend_tile& crop_to(const screen_mask&);
-
- legend_tile* clone() const;
-
- bool is_empty() const;
-
- std::string print_to(const format&, const std::string&) const;
- void add_to_pallet() const;
-
- private:
- pair m_here;
- pair m_offset;
-
- epix_label_posn m_align;
-
- label_state m_style;
-
- pen_data m_item_border;
-
- double m_key_size; // dims of key boxes in pt
- double m_label_skip; // \hskip between box and item value
-
- std::list<legend_item*> m_items;
- }; // end of class legend_tile
-
-} // end of namespace
-
-#endif /* EPIX_LEGEND_TILE */
diff --git a/graphics/epix/length.cc b/graphics/epix/length.cc
deleted file mode 100644
index 431874ee92..0000000000
--- a/graphics/epix/length.cc
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * length.cc -- the ePiX::length class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-#include <string>
-#include <sstream>
-
-#include "errors.h"
-#include "constants.h"
-#include "length.h"
-
-namespace ePiX {
-
- // Inviolable "private" constants: number of pts per unit
- const double IN(72.27); // the gold standard
- const double CM(28.452755905512); // 2.54 cm = 72.27 pt
- const double MM(2.8452755905512); // 25.4 mm = 72.27 pt
- const double PC(6.0225); // 12 picas = 1 inch
- const double BP(1.00375); // 72 big pt = 72.27 pt
- // const double SP(0.0000152587890625); // 65536 scaled pt = 1 pt
-
- // extract length from "double [spaces] length unit"
- length::length(std::string arg)
- {
- char* tmp_units;
- m_mag = strtod(arg.c_str(), &tmp_units);
- std::string putative_units(tmp_units);
-
- // skip spaces, get first two non-space characters
- std::string::size_type i=putative_units.find_first_not_of(" ");
-
- if (i == std::string::npos)
- {
- epix_warning("Missing units, using pt");
- m_units = "pt";
- }
- else
- m_units = putative_units.substr(i, 2);
-
- // See what we found; ugly, but not going to change...
- if (m_units == "pt")
- pts_per_unit = 1.0;
-
- else if (m_units == "in")
- pts_per_unit = IN;
-
- else if (m_units == "cm")
- pts_per_unit = CM;
-
- else if (m_units == "mm")
- pts_per_unit = MM;
-
- else if (m_units == "pc")
- pts_per_unit = PC;
-
- else if (m_units == "bp")
- pts_per_unit = BP;
- /*
- else if (m_units == "sp")
- pts_per_unit = SP;
- */
- else
- {
- std::string warn="Unrecognized units \""+m_units+"\", assuming pt";
- epix_warning(warn);
- pts_per_unit = 1.0;
- m_units = "pt";
- }
- } // end of string constructor
-
- length::length(double lgth)
- : m_mag(lgth), pts_per_unit(1.0), m_units("pt") { }
-
- length& length::operator+= (const length& increment)
- {
- m_mag += increment.m_mag*increment.pts_per_unit/pts_per_unit;
- return *this;
- }
-
- length& length::operator*= (double scale)
- {
- m_mag *= scale;
- return *this;
- }
-
- // convert to specified units
- length& length::to(std::string units)
- {
- units = units.substr(0,2);
-
- if (m_units == units)
- return *this; // null conversion
-
- if (units == "pt")
- {
- m_mag *= pts_per_unit;
- pts_per_unit = 1.0;
- m_units = units;
- }
-
- else if (units == "in")
- {
- m_mag *= pts_per_unit/IN;
- pts_per_unit = IN;
- m_units = units;
- }
-
- else if (units == "cm")
- {
- m_mag *= pts_per_unit/CM;
- pts_per_unit = CM;
- m_units = units;
- }
-
- else if (units == "mm")
- {
- m_mag *= pts_per_unit/MM;
- pts_per_unit = MM;
- m_units = units;
- }
-
- else if (units == "pc")
- {
- m_mag *= pts_per_unit/PC;
- pts_per_unit = PC;
- m_units = units;
- }
-
- else if (units == "bp")
- {
- m_mag *= pts_per_unit/BP;
- pts_per_unit = BP;
- m_units = units;
- }
-
- /*
- else if (units == "sp")
- {
- m_mag *= pts_per_unit/SP;
- pts_per_unit = SP;
- m_units = units;
- }
- */
- else
- epix_warning("Ignoring conversion to unrecognized units \""+units+"\"");
-
- return *this;
- }
-
- bool length::operator== (const length& L) const
- {
- return (fabs(m_mag*pts_per_unit - L.m_mag*L.pts_per_unit) < EPIX_EPSILON);
- }
-
- double length::magnitude() const
- {
- return m_mag;
- }
-
- std::string length::units() const
- {
- return m_units;
- }
-
- std::string length::name() const
- {
- std::stringstream buf;
- buf << m_mag << m_units;
- return buf.str();
- }
-
-
- // value-returning operators
- length operator+ (length len1, const length& len2)
- {
- return len1 += len2;
- }
-
- length operator* (double sc, length len)
- {
- return len *= sc;
- }
-
-
- bool operator< (length arg1, length arg2)
- {
- return (arg1.to("pt").magnitude()) < (arg2.to("pt").magnitude());
- }
-
- // Parse a string into two lengths.
- void get_lengths(std::string sz, length& length1, length& length2)
- {
- std::string units1;
- std::string units2;
-
- double len1(0), len2(0);
-
- // find first digit
- std::string::size_type i=sz.find_first_of("-0123456789.");
-
- if (i == std::string::npos)
- epix_warning("Invalid width in size string");
-
- else
- {
- sz.erase(0, i); // remove initial garbage
- const char* tmp = sz.c_str();
- char* arg;
- len1 = strtod(tmp, &arg);
- sz=arg;
- }
-
- // expect either unitlength or multiplication character
- i=sz.find_first_not_of(" ");
- std::string::size_type j=sz.find_first_of("Xx*");
- if (i != j)
- units1 = sz.substr(i, 2);
-
- // next digit
- i=sz.find_first_of("-0123456789.");
-
- if (i == std::string::npos)
- epix_warning("Invalid height in size string");
-
- else
- {
- sz.erase(0, i);
- const char* tmp = sz.c_str();
- char* arg;
- len2 = strtod(tmp, &arg);
- sz=arg;
- i=sz.find_first_not_of(" ");
- units2 = sz.substr(i, 2);
- }
-
- if (units1 == "") // e.g. sz = "4x6in"
- units1 = units2;
-
- // assign values
- std::stringstream buf1;
- buf1 << len1 << units1;
- length1=length(buf1.str());
-
- std::stringstream buf2;
- buf2 << len2 << units2;
- length2=length(buf2.str());
- }
-} // end of namespace
diff --git a/graphics/epix/length.h b/graphics/epix/length.h
deleted file mode 100644
index d44b86cffa..0000000000
--- a/graphics/epix/length.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * length.h -- ePiX true and LaTeX length manipulation
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0
- * Last Change: September 22, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides the length class from ePiX2:
- *
- * - length(std::string) assumes argument is "double [space(s)] unit"
- * Recognized units are pt (points), in, cm, mm, pc (picas = 1/12 in),
- * bp (big points = 1/72 in)
- *
- * Malformed strings are handled as follows:
- * Missing doubles are assumed to be 0, units are assumed to be pt
- *
- * - length(double) sets length to specified number of pt
- *
- * - operator += Increments a length, returning answer in LHS units, e.g.
- * 1cm+=2in is 6.08cm
- * 2in+=1cm is 2.3937in
- *
- * - operator *= scales a length by a double
- * - to(string) converts a length to specified units
- * - operator< compares true lengths
- * - get_lengths(string, length, length) parses a string into ht and width
- *
- * A length can be negative.
- */
-
-#ifndef EPIX_LENGTH
-#define EPIX_LENGTH
-
-#include <string>
-
-namespace ePiX {
-
- class length {
- public:
- length(std::string); // not const std::string&
- explicit length(double = 0);
-
- length& operator+= (const length&); // increment by another length
- length& operator*= (double); // scale
- length& to(std::string); // convert to specified units
-
- // compare, with units conversion
- bool operator== (const length&) const;
- bool operator!= (const length& len) const { return !((*this) == len); }
-
- // for output
- double magnitude() const;
- std::string units() const;
- std::string name() const;
-
- private:
- double m_mag;
- double pts_per_unit; // constants defined in length.cc
- std::string m_units;
- }; // end of class length
-
- // value-returning operators
- length operator+ (length, const length&);
- length operator* (double, length len);
-
- // Compare true size; must pass by value...
- bool operator< (length arg1, length arg2);
-
- /*
- * Parse a string into two lengths (width and height).
- *
- * The "sz" argument is expected to look like "4in x 10cm" or "4 x 6 in",
- * specifically a double, an optional two-letter unitlength, an "x", a
- * double, and a two-letter unitlength (defaults to pt). Spaces are
- * unimportant, as is initial or trailing garbage. Badly malformed input
- * (e.g., "4,6 in") may confuse the parsing code on some platforms.
- */
- void get_lengths(std::string sz, length& length1, length& length2);
-
-} // end of namespace
-
-#endif /* EPIX_LENGTH */
diff --git a/graphics/epix/lens.cc b/graphics/epix/lens.cc
deleted file mode 100644
index cfca6df66b..0000000000
--- a/graphics/epix/lens.cc
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * lens.cc -- ePiX::lens functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-// #include <cmath>
-
-#include "pairs.h"
-#include "triples.h"
-#include "frame.h"
-
-#include "lens.h"
-
-namespace ePiX {
-
- Lens::~Lens() { }
-
- pair Perspective::operator()
- (const P& arg, const frame& orient, const P& viewpt,
- double dist) const
- {
- P arg_vector(arg - viewpt);
-
- // get arg's location in our coordinates
- double u1(orient.sea()|arg_vector);
- double u2(orient.sky()|arg_vector);
- double u3(orient.eye()|arg_vector);
-
- return (-dist/u3)*pair(u1, u2);
- } // end of Camera::Perspective::operator()
-
- bool Perspective::is_linear() const
- {
- return true;
- }
-
- bool Perspective::needs_clip() const
- {
- return true;
- }
-
- Perspective* Perspective::clone() const
- {
- return new Perspective(*this);
- }
-
-
- pair Orthog::operator()
- (const P& arg, const frame& orient, const P& viewpt,
- double dist) const
- {
- P arg_vector(arg - viewpt);
- double u1(orient.sea()|arg_vector);
- double u2(orient.sky()|arg_vector);
-
- return pair(u1, u2);
- } // end of Camera::Orthog::operator()
-
- bool Orthog::is_linear() const
- {
- return true;
- }
-
- bool Orthog::needs_clip() const
- {
- return true;
- }
-
- Orthog* Orthog::clone() const
- {
- return new Orthog(*this);
- }
-
-
- pair Fisheye::operator()
- (const P& arg, const frame& orient, const P& viewpt,
- double dist) const
- {
- P arg_vector(arg - viewpt);
- arg_vector *= 1.0/(norm(arg_vector));
-
- double u1(orient.sea()|arg_vector);
- double u2(orient.sky()|arg_vector);
-
- // radial projection to camera sphere, then orthogonal projection
- return dist*pair(u1, u2);
- } // end of Camera::Fisheye::operator()
-
- bool Fisheye::is_linear() const
- {
- return false;
- }
-
- bool Fisheye::needs_clip() const
- {
- return false;
- }
-
- Fisheye* Fisheye::clone() const
- {
- return new Fisheye(*this);
- }
-
-
- pair Bubble::operator()
- (const P& arg, const frame& orient, const P& viewpt,
- double dist) const
- {
- P arg_vector(arg - viewpt);
- arg_vector *= 1.0/(norm(arg_vector));
-
- double u1(orient.sea()|arg_vector);
- double u2(orient.sky()|arg_vector);
- double u3(orient.eye()|arg_vector);
-
- // radial projection to camera sphere, then stereographic projection
- return (2.0*dist/(1-u3))*pair(u1, u2);
- } // end of Camera::Bubble::operator()
-
- bool Bubble::is_linear() const
- {
- return false;
- }
-
- bool Bubble::needs_clip() const
- {
- return false;
- }
-
- Bubble* Bubble::clone() const
- {
- return new Bubble(*this);
- }
-} // end of namespace
diff --git a/graphics/epix/lens.h b/graphics/epix/lens.h
deleted file mode 100644
index 99281a51cc..0000000000
--- a/graphics/epix/lens.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * lens.h -- ePiX::Lens interface ans implementations
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 22, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_LENS
-#define EPIX_LENS
-
-namespace ePiX {
-
- class frame;
- class P;
- class pair;
-
- class Lens {
- public:
- // lens map(arg, orient, viewpt, distance)
- virtual pair operator() (const P&,
- const frame&, const P&, double) const = 0;
- virtual bool is_linear() const = 0; // lens preserves lines?
- virtual bool needs_clip() const = 0; // lens needs scene pre-clipping?
- virtual ~Lens();
- virtual Lens* clone() const = 0;
- }; // end of class Lens
-
-
- // actual lenses
- class Perspective : public Lens {
- public:
- pair operator()
- (const P&, const frame&, const P&, double) const;
-
- bool is_linear() const;
- bool needs_clip() const;
- Perspective* clone() const;
- }; // end of class Perspective
-
-
- class Orthog : public Lens {
- public:
- pair operator()
- (const P&, const frame&, const P&, double) const;
-
- bool is_linear() const;
- bool needs_clip() const;
- Orthog* clone() const;
- }; // end of class Orthog
-
-
- class Fisheye : public Lens {
- public:
- pair operator()
- (const P&, const frame&, const P&, double) const;
-
- bool is_linear() const;
- bool needs_clip() const;
- Fisheye* clone() const;
- }; // end of class Fisheye
-
-
- class Bubble : public Lens {
- public:
- pair operator()
- (const P&, const frame&, const P&, double) const;
-
- bool is_linear() const;
- bool needs_clip() const;
- Bubble* clone() const;
- }; // end of class Bubble
-
-} // end of namespace
-
-#endif /* EPIX_LENS */
diff --git a/graphics/epix/make_header b/graphics/epix/make_header
deleted file mode 100644
index 0041b4a92e..0000000000
--- a/graphics/epix/make_header
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-#
-HEADER_FILE="epix.h"
-
-HEADERS="enums.h length.h interval.h triples.h functions.h pairs.h \
- affine.h Color.h state.h frame.h domain.h camera.h screen.h picture.h \
- markers.h axis.h legend.h path.h curves.h \
- circle.h plane.h segment.h sphere.h intersections.h \
- plots.h surface.h data_mask.h data_file.h data_bins.h geometry.h"
-
-# N.B. Spaces in 2nd line are properly adjusted
-cat <<HEADER_HEADER > $HEADER_FILE
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\\
- * $HEADER_FILE -- Automatically created on $(date) *
-\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include <iostream>
-#include <vector>
-#include <list>
-#include <set>
-#include <string>
-#include <sstream>
-#include <cmath>
-
-#ifndef EPIX_H
-#define EPIX_H
-
-HEADER_HEADER
-
-cat $HEADERS | grep -v "\#include" >> $HEADER_FILE
-
-echo >> $HEADER_FILE
-echo "#endif /* EPIX_H */" >> $HEADER_FILE
-
-exit 0;
diff --git a/graphics/epix/map.h b/graphics/epix/map.h
deleted file mode 100644
index c0c57a38be..0000000000
--- a/graphics/epix/map.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * map.h -- classes of map for function plotting
- *
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- *
- * Version 1.1.5
- * Last Change: June 20, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides classes that represent mappings R -> R^3 or R x R -> R^3,
- * both P-valued and assembled from double-valued components. Each class
- * provides an evaluation operator that takes 1, 2, or 3 doubles and returns
- * a P. Stubs for general coordinate systems are included.
- *
- * - path_map: R -> R^3
- * - surface_map: R x R -> R^3
- * - space_map: R x R x R -> R^3
- *
- * - column_1var: assemble R -> R^3 from components
- * - column_2var: assemble R x R -> R^3 from components
- *
- * These classes are intended primarily for internal use, allowing the
- * plot algorithms to be templated. In new code, maps should be defined
- * as P-valued, rather than assembled from components; the "column" classes
- * are provided solely for backward compatibility.
- */
-
-#ifndef EPIX_MAP
-#define EPIX_MAP
-
-#include "triples.h"
-#include "functions.h"
-
-namespace ePiX {
-
- // identity and coordinate projection functions
- template<class T>T id(T arg) { return arg; }
-
- template<class T1, class T2>T1 proj1(T1 arg1, T2 arg2) { return arg1; }
- template<class T1, class T2>T2 proj2(T1 arg1, T2 arg2) { return arg2; }
-
- // R -> R^3
- class path_map {
- private:
- P (*y)(double);
- P (*Y)(P);
-
- public:
- path_map(P f(double), P F(P) = id) : y(f), Y(F) { }
-
- P operator() (const P& arg) const
- {
- return Y(y(arg.x1()));
- }
-
- }; // end of class path_map
-
- // R x R -> R^3
- class surface_map {
- private:
- P (*y)(double, double);
- P (*Y)(P);
-
- public:
- surface_map(P f(double, double), P F(P) = id) : y(f), Y(F) { }
- P operator() (const P& arg) const
- {
- return Y(y(arg.x1(), arg.x2()));
- }
-
- }; // end of class surface_map
-
- // R x R x R -> R^3
- class space_map {
- private:
- P (*y)(double, double, double);
- P (*Y)(P);
-
- public:
- space_map(P f(double, double, double), P F(P) = id) : y(f), Y(F) { }
- P operator() (const P& arg) const
- {
- return Y(y(arg.x1(), arg.x2(), arg.x3()));
- }
-
- }; // end of class space_map
-
-
- // assemble R -> R^3 from components
- class column_1var {
- private:
- double (*y1)(double);
- double (*y2)(double);
- double (*y3)(double);
- P (*Y)(P);
-
- public:
- column_1var(double f1(double), double f2(double), double f3(double) = zero,
- P F(P) = id) : y1(f1), y2(f2), y3(f3), Y(F) { }
-
- // parameterized path from f:R -> R
- column_1var(double f(double), P F(P) = id)
- : y1(id), y2(f), y3(zero), Y(F) { }
- P operator() (const P& arg) const
- {
- double t = arg.x1();
- return Y(P(y1(t), y2(t), y3(t)));
- }
- }; // end of class column_1var
-
- // assemble R x R -> R^3 from components
- class column_2var {
- private:
- double (*y1)(double, double);
- double (*y2)(double, double);
- double (*y3)(double, double);
- P (*Y)(P);
-
- public:
- column_2var(double f1(double, double),
- double f2(double, double),
- double f3(double, double),
- P F(P) = id) : y1(f1), y2(f2), y3(f3), Y(F) { }
-
- // omitted third component defaults to zero
- column_2var(double f1(double, double),
- double f2(double, double),
- P F(P) = id) : y1(f1), y2(f2), y3(zero), Y(F) { }
-
- // parameterized surface from f:R x R -> R
- column_2var(double f(double, double), P F(P) = id)
- : y1(proj1), y2(proj2), y3(f), Y(F) { }
- P operator() (const P& arg) const
- {
- double u(arg.x1());
- double v(arg.x2());
- return Y(P(y1(u, v), y2(u, v), y3(u, v)));
- }
- }; // end of class column_2var
-} // end of namespace
-
-#endif /* EPIX_MAP */
diff --git a/graphics/epix/marker_style.cc b/graphics/epix/marker_style.cc
deleted file mode 100644
index 7134a78ac9..0000000000
--- a/graphics/epix/marker_style.cc
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * marker_style.cc -- ePiX's dot size and tick length
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 29, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include "constants.h"
-
-#include "functions.h"
-#include "marker_style.h"
-
-namespace ePiX {
-
- marker_sizes::marker_sizes()
- : the_dotsize(AVG_DOT), the_ticksize(AVG_TICK) { }
-
- marker_sizes& marker_sizes::dot_size(double diam)
- {
- if (0 < diam)
- the_dotsize = snip_to(diam, MIN_DOT, MAX_DOT);
- else
- the_dotsize = AVG_DOT;
-
- return *this;
- }
-
- marker_sizes& marker_sizes::tick_size(double len)
- {
- if (0 < len)
- the_ticksize = snip_to(len, MIN_TICK, MAX_TICK);
- else
- the_ticksize = AVG_TICK;
-
- return *this;
- }
-
- double marker_sizes::dot_size() const
- {
- return the_dotsize;
- }
-
- double marker_sizes::tick_size() const
- {
- return the_ticksize;
- }
-
- marker_sizes& the_mark_size()
- {
- static marker_sizes* the_mark_size(new marker_sizes());
- return *the_mark_size;
- }
-} // end of namespace
diff --git a/graphics/epix/marker_style.h b/graphics/epix/marker_style.h
deleted file mode 100644
index 48b03193de..0000000000
--- a/graphics/epix/marker_style.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * marker_style.h -- ePiX's dot size and tick mark length
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.19
- * Last Change: September 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_MARKER_STYLE
-#define EPIX_MARKER_STYLE
-
-namespace ePiX {
-
- class marker_sizes {
- public:
- marker_sizes();
-
- marker_sizes& dot_size(double diam);
- marker_sizes& tick_size(double len);
-
- double dot_size() const;
- double tick_size() const;
-
- private:
- double the_dotsize; // size of dots, 1 -- 36 pt
- double the_ticksize; // (half-)size of tick marks, 1 -- 8 pt
- };
-
- marker_sizes& the_mark_size();
-
-} // end of namespace
-
-#endif /* EPIX_MARKER_STYLE */
diff --git a/graphics/epix/markers.cc b/graphics/epix/markers.cc
deleted file mode 100644
index ac418f8e1f..0000000000
--- a/graphics/epix/markers.cc
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * markers.cc -- ePiX axes, grids, markers, and labels
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.19
- * Last Change: September 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "constants.h"
-
-#include "triples.h"
-#include "length.h"
-
-#include "functions.h"
-
-#include "path.h"
-#include "curves.h"
-#include "screen.h"
-#include "picture.h"
-
-#include "label_data.h"
-#include "markers.h"
-
-namespace ePiX {
-
- static void __epix_label(const P& base, const P& offset,
- const std::string& lbl,
- epix_label_posn POSN, bool masked)
- {
- label_data val(base, offset, lbl);
-
- if (masked)
- {
- // get mask color
- Color my_mask(the_label_style().mask_color());
-
- if (my_mask.is_unset())
- my_mask = White();
-
- val.mask_color(my_mask);
- }
-
- else // !masked
- val.mask_color(Neutral());
-
- val.align_to(POSN).draw();
- }
-
- // label -- put POSN-aligned string <label_text>
- // at Cartesian position <base> translated by <offset> true points.
- void label(const P& base, const P& offset, const std::string& lbl,
- epix_label_posn POSN)
- {
- __epix_label(base, offset, lbl, POSN, the_label_style().is_masked());
- }
-
- // mask color comes from global style, falls back to White()
- void masklabel(const P& base, const P& offset, const std::string& lbl,
- epix_label_posn POSN)
- {
- __epix_label(base, offset, lbl, POSN, true);
- }
-
- void label(const P& base, const P& offset, const std::string& lbl)
- {
- __epix_label(base, offset, lbl, none, the_label_style().is_masked());
- }
-
- void masklabel(const P& base, const P& offset, const std::string& lbl)
- {
- __epix_label(base, offset, lbl, none, true);
- }
-
- // centered labels
- void label(const P& base, const std::string& lbl)
- {
- __epix_label(base, P(0,0), lbl, c, the_label_style().is_masked());
- }
-
- void masklabel(const P& base, const std::string& lbl)
- {
- __epix_label(base, P(0,0), lbl, c, true);
- }
-
- // Marker aliases
- void marker(const P& arg, epix_mark_type TYPE)
- {
- label_data(arg, TYPE).draw();
- }
-
- // Markers with labels
- void circ(const P& posn, const P& offset, const std::string& label_text,
- epix_label_posn POSN)
- {
- if (label_text != "")
- label(posn, offset, label_text, POSN);
- label_data mk(posn, CIRC);
- mk.draw();
- }
-
- void ring(const P& posn, const P& offset, const std::string& label_text,
- epix_label_posn POSN)
- {
- if (label_text != "")
- label(posn, offset, label_text, POSN);
- label_data mk(posn, RING);
- mk.draw();
- }
-
- void spot(const P& posn, const P& offset, const std::string& label_text,
- epix_label_posn POSN)
- {
- if (label_text != "")
- label(posn, offset, label_text, POSN);
- label_data mk(posn, SPOT);
- mk.draw();
- }
-
- void dot(const P& posn, const P& offset, const std::string& label_text,
- epix_label_posn POSN)
- {
- if (label_text != "")
- label(posn, offset, label_text, POSN);
- label_data mk(posn, DOT);
- mk.draw();
- }
-
- void ddot(const P& posn, const P& offset, const std::string& label_text,
- epix_label_posn POSN)
- {
- if (label_text != "")
- label(posn, offset, label_text, POSN);
- label_data mk(posn, DDOT);
- mk.draw();
- }
-
- void box(const P& posn, const P& offset, const std::string& label_text,
- epix_label_posn POSN)
- {
- if (label_text != "")
- label(posn, offset, label_text, POSN);
- label_data mk(posn, BOX);
- mk.draw();
- }
-
- void bbox(const P& posn, const P& offset, const std::string& label_text,
- epix_label_posn POSN)
- {
- if (label_text != "")
- label(posn, offset, label_text, POSN);
- label_data mk(posn, BBOX);
- mk.draw();
- }
-
- // Axis ticks (h_tick = tall, thin rectangle, for a *horizontal* axis)
- void h_axis_tick(const P& arg, epix_label_posn POSN)
- {
- label_data mk(arg, HTICK, POSN);
- mk.draw();
- }
-
- void v_axis_tick(const P& arg, epix_label_posn POSN)
- {
- label_data mk(arg, VTICK, POSN);
- mk.draw();
- }
-
-
- //// Curve-like elements
- // arrow with label
- void arrow(const P& tail, const P& head, const P& offset,
- const std::string& label_text,
- epix_label_posn POSN, double scale)
- {
- arrow(tail, head, scale);
- label(tail, offset, label_text, POSN);
- }
-
- // fixed-size elements
- void right_angle(const P& loc, P leg1, P leg2, double scale)
- {
- const double norm1(norm(leg1));
- const double norm2(norm(leg2));
-
- if (norm1 < EPIX_EPSILON || norm2 < EPIX_EPSILON)
- return;
-
- //else
- const double mult(pt_to_screen(scale));
- leg1 *= mult/norm1;
- leg2 *= mult/norm2;
-
- path bd;
- bd.pt(loc + leg1).pt(loc + leg1 + leg2).pt(loc + leg2);
- bd.draw();
- }
-
- // the *acute* angle
- void arc_measure(const P& loc, P leg1, P leg2, const P& offset,
- const std::string& text, epix_label_posn align,
- double scale)
- {
- const double norm1(norm(leg1));
- const double norm2(norm(leg2));
-
- if (norm1 < EPIX_EPSILON || norm2 < EPIX_EPSILON)
- return;
-
- //else normalize
- leg1 *= 1.0/norm1;
- leg2 *= 1.0/norm2;
-
- // check for parllelity
- P perp(leg1*leg2);
- const double norm3(norm(perp));
-
- if (norm3 < EPIX_EPSILON)
- return;
-
- // else get small angle
- const double th(Acos(leg1|leg2));
-
- perp *= 1.0/norm3;
- leg1 *= pt_to_screen(scale);
-
- perp *= leg1; // perp to leg1 in plane of legs
-
- ellipse(loc, leg1, perp, 0, th);
-
- if (text != "")
- label(loc + Cos(0.5*th)*leg1 + Sin(0.5*th)*perp, offset,
- text, align);
- }
-
- void arc_measure(const P& loc, P leg1, P leg2, double scale)
- {
- arc_measure(loc, leg1, leg2, P(0,0), "", none, scale);
- }
-
- void axis_break(const P& tail, const P& head, double scale)
- {
- const P midpt(0.5*(head+tail));
-
- P dir((head-tail)%E_3); // project to (x1,x2)-plane
-
- if (norm(dir) < EPIX_EPSILON)
- return;
-
- // else
- dir *= pt_to_screen(0.25*scale)/norm(dir); // zag is scale pt long
-
- path bd;
- bd.pt(tail).pt(midpt-2*dir).pt(midpt-dir+1.5*J(dir))
- .pt(midpt+dir-1.5*J(dir)).pt(midpt+2*dir).pt(head);
-
- bd.draw();
- }
-
- void h_error_bar(const P& loc, double err, epix_mark_type mk, double ht)
- {
- const P dy(0, pt_to_screen(0.5*ht));
- const P bot(loc - P(err,0));
- const P top(loc + P(err,0));
-
- line(bot, top);
- line(bot - dy, bot + dy);
- line(top - dy, top + dy);
- marker(loc, mk);
- }
-
- void v_error_bar(const P& loc, double err, epix_mark_type mk, double wd)
- {
- const P dx(pt_to_screen(0.5*wd), 0);
- const P bot(loc - P(0,err));
- const P top(loc + P(0,err));
-
- line(bot, top);
- line(bot - dx, bot + dx);
- line(top - dx, top + dx);
- marker(loc, mk);
- }
-} // end of namespace
diff --git a/graphics/epix/markers.h b/graphics/epix/markers.h
deleted file mode 100644
index 92b80f3660..0000000000
--- a/graphics/epix/markers.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * markers.h -- ePiX markers and labels
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.16
- * Last Change: September 09, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * label -- put string constant <label_text> at Cartesian position <base>
- * translated by (offset.x1, offset.x2) true points (i.e., 3rd component
- * of <offset> is discarded).
- *
- * Accepts an optional LaTeX-style positioning argument.
- * If no offset is specified, the label is centered at the given Cartesian
- * location.
- * masklabel requires the "color" package, and places the text in
- * a white box that masks whatever is underneath and earlier in the file.
- */
-#ifndef EPIX_MARKERS
-#define EPIX_MARKERS
-
-#include <string>
-
-#include "enums.h"
-
-namespace ePiX {
-
- class P;
-
- // position, [offset], label text, [alignment]
- void label(const P&, const P&, const std::string&);
- void label(const P&, const std::string&);
- void label(const P&, const P&, const std::string&, epix_label_posn);
-
- void masklabel(const P&, const P&, const std::string&);
- void masklabel(const P&, const std::string&);
- void masklabel(const P&, const P&, const std::string&, epix_label_posn);
-
-
- // Empty and filled LaTeX circles of diameter get_dotsize() true pt
- void marker (const P&, epix_mark_type);
-
- void circ(const P& posn, const P& offset=P(0,0),
- const std::string& label_text="",
- epix_label_posn align=none); // filled white circ
-
- void ring(const P& posn, const P& offset=P(0,0),
- const std::string& label_text="",
- epix_label_posn align=none); // unfilled circ
-
- void spot(const P& posn, const P& offset=P(0,0),
- const std::string& label_text="",
- epix_label_posn align=none);
-
- void dot(const P& posn, const P& offset=P(0,0),
- const std::string& label_text="",
- epix_label_posn align=none);
-
- void ddot(const P& posn, const P& offset=P(0,0),
- const std::string& label_text="",
- epix_label_posn align=none);
-
- void box(const P& posn, const P& offset=P(0,0),
- const std::string& label_text="",
- epix_label_posn align=none);
-
- void bbox(const P& posn, const P& offset=P(0,0),
- const std::string& label_text="",
- epix_label_posn align=none);
-
- void h_axis_tick(const P& location, epix_label_posn align=c);
- void v_axis_tick(const P& location, epix_label_posn align=c);
-
- // Arrow with aligned label at tail
- void arrow(const P& tail, const P& head, const P& offset,
- const std::string& label_text,
- epix_label_posn align, double scale=1);
-
- //// Path-like glyphs ////
- // angle indicators; default args are true sizes in pt
- void right_angle(const P& loc, P leg1, P leg2, double scale=8);
- void arc_measure(const P& loc, P leg1, P leg2,
- const P& offset, const std::string&, epix_label_posn,
- double scale=8);
- void arc_measure(const P& loc, P leg1, P leg2, double scale=8);
-
- void axis_break(const P& tail, const P& head, double scale=12);
- void h_error_bar(const P& loc, double err, epix_mark_type mk, double ht=6);
- void v_error_bar(const P& loc, double err, epix_mark_type mk, double wd=6);
-} // end of namespace
-
-#endif /* EPIX_MARKERS */
diff --git a/graphics/epix/mask_diamond.cc b/graphics/epix/mask_diamond.cc
deleted file mode 100644
index da11f29b50..0000000000
--- a/graphics/epix/mask_diamond.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * mask_diamond.cc -- ePiX diamond crop mask
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August 09, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "functions.h"
-//#include "errors.h"
-
-#include "constants.h"
-
-#include "pairs.h"
-
-#include "Color.h"
-
-#include "paint_style.h"
-#include "length.h"
-
-#include "pen_line.h"
-#include "pen_fill.h"
-
-#include "edge_data.h"
-#include "screen_crop.h"
-
-#include "screen_mask.h"
-#include "mask_diamond.h"
-
-namespace ePiX {
-
- mask_diamond::mask_diamond(const pair& arg1, const pair& arg2)
- : m_hmin(min(arg1.x1(), arg2.x1())),
- m_hmax(max(arg1.x1(), arg2.x1())),
- m_vmin(min(arg1.x2(), arg2.x2())),
- m_vmax(max(arg1.x2(), arg2.x2()))
- {
- m_border.push_back(edge2d(l(), b(), true));
- m_border.push_back(edge2d(b(), r(), true));
- m_border.push_back(edge2d(r(), t(), true));
- m_border.push_back(edge2d(t(), l(), true));
- }
-
- mask_diamond* mask_diamond::clone() const
- {
- return new mask_diamond(*this);
- }
-
- // corners and midpoints
- double mask_diamond::h_min() const { return m_hmin; }
- double mask_diamond::v_min() const { return m_vmin; }
-
- double mask_diamond::h_max() const { return m_hmax; }
- double mask_diamond::v_max() const { return m_vmax; }
-
- double mask_diamond::h_avg() const { return 0.5*(m_hmin+m_hmax); }
- double mask_diamond::v_avg() const { return 0.5*(m_vmin+m_vmax); }
-
- double mask_diamond::h_size() const { return m_hmax - m_hmin; }
- double mask_diamond::v_size() const { return m_vmax - m_vmin; }
-
- // diamond-specific functions
- bool mask_diamond::crops(const pair& arg) const
- {
- const double x(fabs(arg.x1() - h_avg())/h_size());
- const double y(fabs(arg.x2() - v_avg())/v_size());
-
- return !((x + y) <= 0.5);
- }
-
- std::list<edge2d>& mask_diamond::crop_path(std::list<edge2d>& L) const
- {
- return crop_path_2nd(m_border, L);
- }
-
- std::list<edge2d>& mask_diamond::crop_loop(std::list<edge2d>& L) const
- {
- return crop_loop_2nd(m_border, L);
- }
-
- pen_line mask_diamond::border(const Color& col, const length& len) const
- {
- return pen_line(pen_data(col, len), Xfine(), m_border);
- }
-
- pen_fill mask_diamond::backing(const Color& col) const
- {
- return pen_fill(col, pen_data(col, PLAIN_WIDTH), 0, m_border);
- }
-
- pen_line mask_diamond::border() const
- {
- return pen_line(the_paint_style().line_pen(),
- the_paint_style().base_pen(), m_border);
- }
-
- pen_fill mask_diamond::backing() const
- {
- const Color& col(the_paint_style().fill_color());
- return pen_fill(col, pen_data(col, PLAIN_WIDTH), 0, m_border);
- }
-} // end of ePiX namespace
diff --git a/graphics/epix/mask_diamond.h b/graphics/epix/mask_diamond.h
deleted file mode 100644
index 8d4435f567..0000000000
--- a/graphics/epix/mask_diamond.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * mask_diamond.h -- ePiX:: rectangular screen_mask for cropping
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 05, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_MASK_DIAMOND
-#define EPIX_MASK_DIAMOND
-
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-#include "screen_mask.h"
-
-namespace ePiX {
-
- class pair;
-
- class Color;
-
- class length;
- class pen_fill;
- class pen_line;
-
- class mask_diamond : public screen_mask {
- public:
- // mask_diamond() { }
- mask_diamond(const pair& arg1, const pair& arg2);
-
- mask_diamond* clone() const;
- double h_min() const;
- double h_max() const;
- double h_size() const;
- double h_avg() const;
-
- double v_min() const;
- double v_max() const;
- double v_size() const;
- double v_avg() const;
-
- bool crops(const pair& arg) const; // false if arg visible
- std::list<edge2d>& crop_path(std::list<edge2d>&) const;
- std::list<edge2d>& crop_loop(std::list<edge2d>&) const;
-
- pen_line border(const Color&, const length&) const;
- pen_fill backing(const Color&) const;
-
- pen_line border() const;
- pen_fill backing() const;
-
- private:
- double m_hmin, m_hmax;
- double m_vmin, m_vmax;
-
- std::list<edge2d> m_border;
- }; // end of class mask_diamond
-
-} // end of namespace
-
-#endif /* EPIX_MASK_DIAMOND */
diff --git a/graphics/epix/mask_ellipse.cc b/graphics/epix/mask_ellipse.cc
deleted file mode 100644
index 0eed28f94e..0000000000
--- a/graphics/epix/mask_ellipse.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * mask_ellipse.cc -- ePiX ellipse crop mask
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August 09, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "functions.h"
-//#include "errors.h"
-
-#include "constants.h"
-
-#include "pairs.h"
-
-#include "Color.h"
-
-#include "paint_style.h"
-#include "length.h"
-
-#include "pen_line.h"
-#include "pen_fill.h"
-
-#include "edge_data.h"
-#include "screen_crop.h"
-
-#include "screen_mask.h"
-#include "mask_ellipse.h"
-
-namespace ePiX {
-
- mask_ellipse::mask_ellipse(const pair& arg1, const pair& arg2)
- : m_hmin(min(arg1.x1(), arg2.x1())),
- m_hmax(max(arg1.x1(), arg2.x1())),
- m_vmin(min(arg1.x2(), arg2.x2())),
- m_vmax(max(arg1.x2(), arg2.x2()))
- {
- const double dt(2*M_PI/EPIX_NUM_PTS);
-
- const pair ctr(0.5*(m_hmin + m_hmax), 0.5*(m_vmin + m_vmax));
-
- const double hsz(0.5*(m_hmax - m_hmin));
- const double vsz(0.5*(m_vmax - m_vmin));
-
- for (unsigned int i=0; i<EPIX_NUM_PTS; ++i)
- m_border.push_back(edge2d(ctr + pair(hsz*std::cos(i*dt),
- vsz*std::sin(i*dt)),
- ctr + pair(hsz*std::cos((i+1)*dt),
- vsz*std::sin((i+1)*dt)), true));
- }
-
- mask_ellipse* mask_ellipse::clone() const
- {
- return new mask_ellipse(*this);
- }
-
- // corners and midpoints
- double mask_ellipse::h_min() const { return m_hmin; }
- double mask_ellipse::v_min() const { return m_vmin; }
-
- double mask_ellipse::h_max() const { return m_hmax; }
- double mask_ellipse::v_max() const { return m_vmax; }
-
- double mask_ellipse::h_avg() const { return 0.5*(m_hmin+m_hmax); }
- double mask_ellipse::v_avg() const { return 0.5*(m_vmin+m_vmax); }
-
- double mask_ellipse::h_size() const { return m_hmax - m_hmin; }
- double mask_ellipse::v_size() const { return m_vmax - m_vmin; }
-
- // ellipse-specific functions
- bool mask_ellipse::crops(const pair& arg) const
- {
- const double dx((arg.x1() - h_avg())/h_size());
- const double dy((arg.x2() - v_avg())/v_size());
- return !(dx*dx + dy*dy <= 0.25);
- }
-
- std::list<edge2d>& mask_ellipse::crop_path(std::list<edge2d>& L) const
- {
- return crop_path_2nd(m_border, L);
- }
-
- std::list<edge2d>& mask_ellipse::crop_loop(std::list<edge2d>& L) const
- {
- return crop_loop_2nd(m_border, L);
- }
-
- pen_line mask_ellipse::border(const Color& col, const length& len) const
- {
- return pen_line(pen_data(col, len), Xfine(), m_border);
- }
-
- pen_fill mask_ellipse::backing(const Color& col) const
- {
- return pen_fill(col, pen_data(col, PLAIN_WIDTH), 0, m_border);
- }
-
- pen_line mask_ellipse::border() const
- {
- return pen_line(the_paint_style().line_pen(),
- the_paint_style().base_pen(), m_border);
- }
-
- pen_fill mask_ellipse::backing() const
- {
- const Color col(the_paint_style().fill_color());
- return pen_fill(col, pen_data(col, PLAIN_WIDTH), 0, m_border);
- }
-} // end of ePiX namespace
diff --git a/graphics/epix/mask_ellipse.h b/graphics/epix/mask_ellipse.h
deleted file mode 100644
index 09279ba0f6..0000000000
--- a/graphics/epix/mask_ellipse.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * mask_ellipse.h -- ePiX:: elliptical screen_mask for cropping
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 05, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_MASK_ELLIPSE
-#define EPIX_MASK_ELLIPSE
-
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-#include "screen_mask.h"
-
-namespace ePiX {
-
- class pair;
-
- class Color;
-
- class length;
- class pen_fill;
- class pen_line;
-
- class mask_ellipse : public screen_mask {
- public:
- // mask_ellipse() { }
- mask_ellipse(const pair& arg1, const pair& arg2);
-
- mask_ellipse* clone() const;
- double h_min() const;
- double h_max() const;
- double h_size() const;
- double h_avg() const;
-
- double v_min() const;
- double v_max() const;
- double v_size() const;
- double v_avg() const;
-
- bool crops(const pair& arg) const; // false if arg visible
- std::list<edge2d>& crop_path(std::list<edge2d>&) const;
- std::list<edge2d>& crop_loop(std::list<edge2d>&) const;
-
- pen_line border(const Color&, const length&) const;
- pen_fill backing(const Color&) const;
-
- pen_line border() const;
- pen_fill backing() const;
-
- private:
- double m_hmin, m_hmax;
- double m_vmin, m_vmax;
-
- std::list<edge2d> m_border;
- }; // end of class mask_ellipse
-
-} // end of namespace
-
-#endif /* EPIX_MASK_ELLIPSE */
diff --git a/graphics/epix/mask_rectangle.cc b/graphics/epix/mask_rectangle.cc
deleted file mode 100644
index d54e934cee..0000000000
--- a/graphics/epix/mask_rectangle.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * mask_rectangle.cc -- ePiX rectangle crop mask
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August 09, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "functions.h"
-//#include "errors.h"
-
-#include "constants.h"
-
-#include "pairs.h"
-
-#include "Color.h"
-
-#include "paint_style.h"
-#include "length.h"
-
-#include "pen_line.h"
-#include "pen_fill.h"
-
-#include "edge_data.h"
-#include "screen_crop.h"
-
-#include "screen_mask.h"
-#include "mask_rectangle.h"
-
-namespace ePiX {
-
- mask_rectangle::mask_rectangle(const pair& arg1, const pair& arg2)
- : m_hmin(min(arg1.x1(), arg2.x1())),
- m_hmax(max(arg1.x1(), arg2.x1())),
- m_vmin(min(arg1.x2(), arg2.x2())),
- m_vmax(max(arg1.x2(), arg2.x2()))
- {
- m_border.push_back(edge2d(br(), tr(), true));
- m_border.push_back(edge2d(tr(), tl(), true));
- m_border.push_back(edge2d(tl(), bl(), true));
- m_border.push_back(edge2d(bl(), br(), true));
- }
-
- mask_rectangle* mask_rectangle::clone() const
- {
- return new mask_rectangle(*this);
- }
-
- // corners and midpoints
- double mask_rectangle::h_min() const { return m_hmin; }
- double mask_rectangle::v_min() const { return m_vmin; }
-
- double mask_rectangle::h_max() const { return m_hmax; }
- double mask_rectangle::v_max() const { return m_vmax; }
-
- double mask_rectangle::h_avg() const { return 0.5*(m_hmin+m_hmax); }
- double mask_rectangle::v_avg() const { return 0.5*(m_vmin+m_vmax); }
-
- double mask_rectangle::h_size() const { return m_hmax - m_hmin; }
- double mask_rectangle::v_size() const { return m_vmax - m_vmin; }
-
- // rectangle-specific functions
- bool mask_rectangle::crops(const pair& arg) const
- {
- const double x(arg.x1());
- const double y(arg.x2());
- return !( (m_hmin <= x) && (x <= m_hmax)
- && (m_vmin <= y) && (y <= m_vmax));
- }
-
- std::list<edge2d>& mask_rectangle::crop_path(std::list<edge2d>& L) const
- {
- return crop_path_2nd(m_border, L);
- }
-
- std::list<edge2d>& mask_rectangle::crop_loop(std::list<edge2d>& L) const
- {
- return crop_loop_2nd(m_border, L);
- }
-
- pen_line mask_rectangle::border(const Color& col, const length& len) const
- {
- return pen_line(pen_data(col, len), Xfine(), m_border);
- }
-
- pen_fill mask_rectangle::backing(const Color& col) const
- {
- return pen_fill(col, pen_data(col, PLAIN_WIDTH), 0, m_border);
- }
-
- pen_line mask_rectangle::border() const
- {
- return pen_line(the_paint_style().line_pen(),
- the_paint_style().base_pen(), m_border);
- }
-
- pen_fill mask_rectangle::backing() const
- {
- const Color& col(the_paint_style().fill_color());
- return pen_fill(col, pen_data(col, PLAIN_WIDTH), 0, m_border);
- }
-} // end of ePiX namespace
diff --git a/graphics/epix/mask_rectangle.h b/graphics/epix/mask_rectangle.h
deleted file mode 100644
index 13d23e4f28..0000000000
--- a/graphics/epix/mask_rectangle.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * mask_rectangle.h -- ePiX:: rectangular screen_mask for cropping
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 05, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_MASK_RECTANGLE
-#define EPIX_MASK_RECTANGLE
-
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-#include "screen_mask.h"
-
-namespace ePiX {
-
- class pair;
-
- class Color;
-
- class length;
- class pen_fill;
- class pen_line;
-
- class mask_rectangle : public screen_mask {
- public:
- // mask_rectangle() { }
- mask_rectangle(const pair& arg1, const pair& arg2);
-
- mask_rectangle* clone() const;
- double h_min() const;
- double h_max() const;
- double h_size() const;
- double h_avg() const;
-
- double v_min() const;
- double v_max() const;
- double v_size() const;
- double v_avg() const;
-
- bool crops(const pair& arg) const; // false if arg visible
- std::list<edge2d>& crop_path(std::list<edge2d>&) const;
- std::list<edge2d>& crop_loop(std::list<edge2d>&) const;
-
- pen_line border(const Color&, const length&) const;
- pen_fill backing(const Color&) const;
-
- pen_line border() const;
- pen_fill backing() const;
-
- private:
- double m_hmin, m_hmax;
- double m_vmin, m_vmax;
-
- std::list<edge2d> m_border;
- }; // end of class mask_rectangle
-
-} // end of namespace
-
-#endif /* EPIX_MASK_RECTANGLE */
diff --git a/graphics/epix/missing b/graphics/epix/missing
deleted file mode 100644
index 894e786e16..0000000000
--- a/graphics/epix/missing
+++ /dev/null
@@ -1,360 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2005-06-08.21
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
-fi
-
-run=:
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case "$1" in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- # Exit code 63 means version mismatch. This often happens
- # when the user try to use an ancient version of a tool on
- # a file that requires a minimum version. In this case we
- # we should proceed has if the program had been absent, or
- # if --run hadn't been passed.
- if test $? = 63; then
- run=:
- msg="probably too old"
- fi
- ;;
-
- -h|--h|--he|--hel|--help)
- echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
- -h, --help display this help and exit
- -v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Send bug reports to <bug-automake@gnu.org>."
- exit $?
- ;;
-
- -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing $scriptversion (GNU Automake)"
- exit $?
- ;;
-
- -*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
- ;;
-
-esac
-
-# Now exit if we have it, but it failed. Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).
-case "$1" in
- lex|yacc)
- # Not GNU programs, they don't have --version.
- ;;
-
- tar)
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- exit 1
- fi
- ;;
-
- *)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- # Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
- # $TOOL exists and not knowing $TOOL uses missing.
- exit 1
- fi
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
- aclocal*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case "$f" in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te)
- echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
- You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison|yacc)
- echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if [ ! -f y.tab.h ]; then
- echo >y.tab.h
- fi
- if [ ! -f y.tab.c ]; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex|flex)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if [ ! -f lex.yy.c ]; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
- fi
- if [ -f "$file" ]; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit 1
- fi
- ;;
-
- makeinfo)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- # The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- # ... or it is the one specified with @setfilename ...
- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
- # ... or it is derived from the source name (dir/f.texi becomes f.info)
- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
- fi
- # If the file does not exist, the user really needs makeinfo;
- # let's fail without touching anything.
- test -f $file || exit 1
- touch $file
- ;;
-
- tar)
- shift
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case "$firstarg" in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case "$firstarg" in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
- You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/graphics/epix/mkinstalldirs b/graphics/epix/mkinstalldirs
deleted file mode 100644
index 259dbfcd35..0000000000
--- a/graphics/epix/mkinstalldirs
+++ /dev/null
@@ -1,158 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-
-scriptversion=2005-06-29.22
-
-# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-errstatus=0
-dirmode=
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake@gnu.org>."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage"
- exit $?
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --version)
- echo "$0 $scriptversion"
- exit $?
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error. This is a problem when calling mkinstalldirs
-# from a parallel make. We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
-case $dirmode in
- '')
- if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- else
- # On NextStep and OpenStep, the `mkdir' command does not
- # recognize any option. It will interpret all options as
- # directories to create, and then abort because `.' already
- # exists.
- test -d ./-p && rmdir ./-p
- test -d ./--version && rmdir ./--version
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
- test ! -d ./--version; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- else
- # Clean up after NextStep and OpenStep mkdir.
- for d in ./-m ./-p ./--version "./$dirmode";
- do
- test -d $d && rmdir $d
- done
- fi
- ;;
-esac
-
-for file
-do
- case $file in
- /*) pathcomp=/ ;;
- *) pathcomp= ;;
- esac
- oIFS=$IFS
- IFS=/
- set fnord $file
- shift
- IFS=$oIFS
-
- for d
- do
- test "x$d" = x && continue
-
- pathcomp=$pathcomp$d
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp=$pathcomp/
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/graphics/epix/paint_style.cc b/graphics/epix/paint_style.cc
deleted file mode 100644
index 56ac9e7129..0000000000
--- a/graphics/epix/paint_style.cc
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * paint_style.cc -- ePiX's current line and fill style.
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 22, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include "camera.h"
-#include "length.h"
-#include "pen_data.h"
-#include "paint_style.h"
-
-namespace ePiX {
-
- // Magic numbers: initialization constants
- paint_state::paint_state()
- : m_line(pen_data()), m_base(Xfine()),
- m_tint(Neutral()), m_filling(false) { }
-
- paint_state* paint_state::clone() const
- {
- return new paint_state(*this);
- }
-
- // set
- void paint_state::line_pen(const pen_data& pen)
- {
- m_line = pen;
- }
-
- void paint_state::line_color(const Color& col)
- {
- m_line.color(col);
- }
-
- void paint_state::line_width(const length& len)
- {
- m_line.width(len);
- }
-
- void paint_state::base_pen(const pen_data& pen)
- {
- m_base = pen;
- }
-
- void paint_state::base_color(const Color& col)
- {
- m_base.color(col);
- }
-
- void paint_state::base_width(const length& len)
- {
- m_base.width(len);
- }
-
- void paint_state::fill_color(const Color& col)
- {
- m_tint = col;
- }
-
- void paint_state::fill_flag(bool fill)
- {
- m_filling = fill;
- }
-
-
- // get
- pen_data paint_state::line_pen() const
- {
- return m_line;
- }
- Color paint_state::line_color() const
- {
- return m_line.color();
- }
- length paint_state::line_width() const
- {
- return m_line.width();
- }
-
- pen_data paint_state::base_pen() const
- {
- return m_base;
- }
- Color paint_state::base_color() const
- {
- return m_base.color();
- }
- length paint_state::base_width() const
- {
- return m_base.width();
- }
-
- Color paint_state::fill_color() const
- {
- return m_tint;
- }
- bool paint_state::fill_flag() const
- {
- return m_filling;
- }
-
- paint_state paint_state::seen_through(const Camera& mycam) const
- {
- return paint_state(m_line.seen_through(mycam), m_base.seen_through(mycam),
- mycam(m_tint), m_filling);
- }
-
- paint_state::paint_state(const pen_data& lp, const pen_data& bp,
- const Color& fc, bool ff)
- : m_line(lp), m_base(bp), m_tint(fc), m_filling(ff) { }
-
-
- paint_state& the_paint_style()
- {
- static paint_state* the_paint_state(new paint_state());
- return *the_paint_state;
- }
-} // end of namespace
diff --git a/graphics/epix/paint_style.h b/graphics/epix/paint_style.h
deleted file mode 100644
index 95678f1706..0000000000
--- a/graphics/epix/paint_style.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * paint_style.h -- ePiX's current line and fill style.
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.3
- * Last Change: March 04, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file implements ePiX's "paint" style:
- *
- * [] Front pen, base pen (Color and width x2)
- * [] Filling and fill color (bool, Color)
- *
- * The class in this file implements backend for user-level global
- * functions defined in state.h, which modify the_paint_style().
- *
- * This header is not part of epix.h.
- */
-#ifndef EPIX_PAINT_STYLE
-#define EPIX_PAINT_STYLE
-
-#include "Color.h"
-#include "pen_data.h"
-
-namespace ePiX {
-
- class Camera;
- class length;
-
- class paint_state {
- public:
- paint_state();
-
- paint_state* clone() const;
-
- // set
- void line_pen(const pen_data& pen);
- void line_color(const Color& col);
- void line_width(const length& len);
-
- void base_pen(const pen_data& pen);
- void base_color(const Color& col);
- void base_width(const length& len);
-
- void fill_color(const Color& col);
- void fill_flag(bool fill);
-
- // get
- pen_data line_pen() const;
- Color line_color() const;
- length line_width() const;
-
- pen_data base_pen() const;
- Color base_color() const;
- length base_width() const;
-
- Color fill_color() const;
- bool fill_flag() const;
-
- paint_state seen_through(const Camera& cam) const;
-
- private:
- pen_data m_line;
- pen_data m_base;
-
- Color m_tint;
- bool m_filling;
-
- paint_state(const pen_data&, const pen_data&, const Color&, bool fill);
- }; // end of class paint_state
-
- paint_state& the_paint_style();
-
-} // end of namespace
-
-#endif /* EPIX_PAINT_STYLE */
diff --git a/graphics/epix/pairs.cc b/graphics/epix/pairs.cc
deleted file mode 100644
index a2cf174825..0000000000
--- a/graphics/epix/pairs.cc
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * pairs.cc -- ePiX pair:: class and mathematical operators
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August 04, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-
-#include "constants.h"
-#include "triples.h"
-#include "pairs.h"
-
-namespace ePiX {
- pair::pair(const P& arg)
- {
- m_x1 = arg.x1();
- m_x2 = arg.x2();
- }
-
- // unary increment operators
- pair& pair::operator += (const pair& arg)
- {
- m_x1 += arg.m_x1;
- m_x2 += arg.m_x2;
-
- return *this;
- }
-
- pair& pair::operator -= (const pair& arg)
- {
- m_x1 -= arg.m_x1;
- m_x2 -= arg.m_x2;
-
- return *this;
- }
-
- pair& pair::operator *= (double c)
- {
- m_x1 *= c;
- m_x2 *= c;
-
- return *this;
- }
-
- // complex multiplication and division
- pair& pair::operator *= (const pair& arg)
- {
- double temp(m_x1);
- m_x1 = temp * arg.m_x1 - m_x2 * arg.m_x2;
- m_x2 = temp * arg.m_x2 + m_x2 * arg.m_x1;
-
- return *this;
- }
-
- pair& pair::operator /= (const pair& arg)
- {
- double denom = (arg.m_x1)*(arg.m_x1)+(arg.m_x2)*(arg.m_x2);
-
- double temp(m_x1);
- m_x1 = (temp * arg.m_x1 + m_x2 * arg.m_x2)/denom;
- m_x2 = (m_x2 * arg.m_x1 - temp * arg.m_x2)/denom;
-
- return *this;
- }
-
- bool pair::operator== (const pair& u) const
- {
- return ( fabs(m_x1-u.m_x1) < EPIX_EPSILON
- && fabs(m_x2-u.m_x2) < EPIX_EPSILON );
- }
-
- bool pair::operator!= (const pair& u) const
- {
- return !((*this) == u);
- }
-
- // non-member functions
- pair operator- (pair u)
- {
- return u *= -1;
- }
-
- pair operator+ (pair u, const pair& v)
- {
- return u += v;
- }
-
- pair operator- (pair u, const pair& v)
- {
- return u -= v;
- }
-
- pair operator* (double c, pair u)
- {
- return u *= c;
- }
-
- // complex arithmetic
- pair J(pair p)
- {
- return p *= pair(0,1);
- }
-
- pair operator* (pair u, const pair& v)
- {
- return u *= v;
- }
-
- pair operator/ (pair u, const pair& v)
- {
- return u /= v;
- }
-
- // dot product
- double operator| (const pair& u, const pair& v)
- {
- return u.x1()*v.x1() + u.x2()*v.x2();
- }
-
- double norm (const pair& u)
- {
- return sqrt(u|u);
- }
-
- // componentwise product (a,b)&(x,y)=(ax,by)
- pair operator& (const pair& u, const pair& v)
- {
- return pair(u.x1()*v.x1(), u.x2()*v.x2());
- }
-
-} // end of namespace
diff --git a/graphics/epix/pairs.h b/graphics/epix/pairs.h
deleted file mode 100644
index cfbfd27c1a..0000000000
--- a/graphics/epix/pairs.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * pairs.h -- ePiX pair:: class and mathematical operators
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August 04, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_PAIRS
-#define EPIX_PAIRS
-
-namespace ePiX {
-
- class P;
-
- class pair {
- public:
- pair(double arg1=0, double arg2=0)
- : m_x1(arg1), m_x2(arg2) { }
-
- pair(const P& arg); // take first two coordinates
-
- double x1() const { return m_x1; }
- double x2() const { return m_x2; }
-
- // unary increment operators
- pair& operator += (const pair& arg);
- pair& operator -= (const pair& arg);
- pair& operator *= (double c);
-
- // complex multiplication and division
- pair& operator *= (const pair& arg);
- pair& operator /= (const pair& arg);
- bool operator== (const pair& u) const;
- bool operator!= (const pair& u) const;
-
- private:
- double m_x1;
- double m_x2;
-
- }; // end of class pair
-
- pair operator- (pair u);
- pair operator+ (pair u, const pair& v);
- pair operator- (pair u, const pair& v);
- pair operator* (double c, pair u);
-
- // complex arithmetic
- pair J(pair p);
- pair operator* (pair u, const pair& v);
- pair operator/ (pair u, const pair& v);
-
- // dot product
- double operator| (const pair& u, const pair& v);
- double norm (const pair& u);
-
- // componentwise product (a,b)&(x,y)=(ax,by)
- pair operator& (const pair& u, const pair& v);
-
-} // end of namespace
-
-#endif /* EPIX_PAIRS */
diff --git a/graphics/epix/path.cc b/graphics/epix/path.cc
deleted file mode 100644
index c786485670..0000000000
--- a/graphics/epix/path.cc
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * path.cc -- ePiX user class for polygons and paths
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 25, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <vector>
-#include <cmath>
-
-#include "errors.h"
-#include "triples.h"
-#include "constants.h"
-
-#include "functions.h"
-
-#include "Color.h"
-#include "pen_data.h"
-#include "state.h"
-
-#include "camera.h"
-#include "active_screen.h"
-
-#include "spline_data.h"
-#include "path_data.h"
-
-#include "path.h"
-
-namespace ePiX {
-
- class screen;
- class Sphere;
-
- path::path(const path& C)
- : m_segments(C.m_segments->clone()) { }
-
- path& path::operator= (const path& C)
- {
- if (this != &C)
- {
- path_data* tmp_segs(C.m_segments->clone());
-
- delete m_segments;
-
- m_segments=tmp_segs;
- }
-
- return *this;
- }
-
- path::~path()
- {
- delete m_segments;
- }
-
-
- path::path()
- : m_segments(new path_data()) { }
-
- path::path(const std::vector<P>& data, bool closed, bool filled)
- : m_segments(new path_data(data, closed, filled)) { }
-
-
- // path constructors *do not* close/fill; this must be done by client code
-
- // lines, without and with specified number of points
- path::path(const P& tail, const P& head, double expand)
- : m_segments(new path_data())
- {
- double c(expm1(M_LN2*expand/100.0)); // 2^{expand/100} - 1
- P dir(head - tail);
-
- m_segments->pt(tail - (0.5*c)*dir);
- m_segments->pt(head + (0.5*c)*dir);
- } // end of line constructor
-
-
- path::path(const P& tail, const P& head,
- double expand, unsigned int num_pts)
- : m_segments(new path_data())
- {
- if (num_pts < 1)
- num_pts=1;
-
- double c(expm1(M_LN2*expand/100.0)); // 2^{expand/100} - 1
-
- // direction and starting location
- P dir(head - tail);
- P start(tail - (0.5*c)*dir);
-
- dir *= ((1+c)/num_pts);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- m_segments->pt(start+i*dir);
-
- } // end of line constructor
-
-
- // ellipse drawn with N edges
- path::path(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max,
- unsigned int N)
- : m_segments(new path_data())
- {
- double T_MAX(t_max);
- if (full_turn() < fabs(t_max-t_min))
- {
- epix_warning("Angle bounds in ellipse span more than one turn");
- T_MAX = t_min + full_turn();
- }
-
- const unsigned int num_pts(1 < N ? N : 1);
- const double dt((T_MAX - t_min)/num_pts);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- {
- double t(t_min + i*dt);
- m_segments->pt(center + ((Cos(t)*axis1)+(Sin(t)*axis2)));
- }
- } // end of ellipse constructor
-
- // ellipse with default number of points
- path::path(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max)
- : m_segments(new path_data())
- {
- double frac(min(fabs(t_max-t_min)/full_turn(), 1));
- unsigned int num_pts((unsigned int) max(2, ceil(frac*EPIX_NUM_PTS)));
-
- const double dt((t_max - t_min)/num_pts);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- {
- double t(t_min + i*dt);
- m_segments->pt(center + ((Cos(t)*axis1)+(Sin(t)*axis2)));
- }
- } // end of ellipse EPIX_NUM_PTS constructor
-
-
- // Splines
- path::path(const P& p1, const P& p2, const P& p3, unsigned int num_pts)
- : m_segments(new path_data())
- {
- if (num_pts < 2)
- num_pts=2; // draw at least V
-
- const double dt(1.0/num_pts);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- m_segments->pt(spl_pt(p1, p2, p3, i*dt));
- }
-
-
- path::path(const P& p1, const P& p2, const P& p3)
- : m_segments(new path_data())
- {
- const double dt(1.0/EPIX_NUM_PTS);
-
- for (unsigned int i=0; i <= EPIX_NUM_PTS; ++i)
- m_segments->pt(spl_pt(p1, p2, p3, i*dt));
- }
-
-
- path::path(const P& p1, const P& p2, const P& p3, const P& p4,
- unsigned int num_pts)
- : m_segments(new path_data())
- {
- if (num_pts < 3)
- num_pts=3; // draw at least N
-
- const double dt(1.0/num_pts);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- m_segments->pt(spl_pt(p1, p2, p3, p4, i*dt));
- }
-
-
- path::path(const P& p1, const P& p2, const P& p3, const P& p4)
- : m_segments(new path_data())
- {
- const double dt(1.0/EPIX_NUM_PTS);
-
- for (unsigned int i=0; i <= EPIX_NUM_PTS; ++i)
- m_segments->pt(spl_pt(p1, p2, p3, p4, i*dt));
- }
-
-
- // parametrized path
- path::path(P f(double), double t_min, double t_max, unsigned int num_pts)
- : m_segments(new path_data())
- {
- if (num_pts < 2)
- num_pts = 2;
-
- const double dt((t_max - t_min)/num_pts);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- m_segments->pt(f(t_min + i*dt));
- }
-
- // with default number of points
- path::path(P f(double), double t_min, double t_max)
- : m_segments(new path_data())
- {
- const double dt((t_max - t_min)/EPIX_NUM_PTS);
-
- for (unsigned int i=0; i <= EPIX_NUM_PTS; ++i)
- m_segments->pt(f(t_min + i*dt));
- }
-
-
- // graphs
- path::path(double f(double), double t_min, double t_max,
- unsigned int num_pts)
- : m_segments(new path_data())
- {
- if (num_pts < 2)
- num_pts = 2;
-
- const double dt((t_max - t_min)/num_pts);
-
- for (unsigned int i=0; i <= num_pts; ++i)
- {
- double t(t_min + i*dt);
- m_segments->pt(P(t, f(t)));
- }
- }
-
- path::path(double f(double), double t_min, double t_max)
- : m_segments(new path_data())
- {
- const double dt((t_max - t_min)/EPIX_NUM_PTS);
-
- for (unsigned int i=0; i <= EPIX_NUM_PTS; ++i)
- {
- double t(t_min + i*dt);
- m_segments->pt(P(t, f(t)));
- }
- }
-
-
- // append a point
- path& path::pt(double x, double y, double z)
- {
- m_segments->pt(P(x, y, z));
- return *this;
- }
-
- path& path::pt(const P& loc)
- {
- m_segments->pt(loc);
- return *this;
- }
-
-
- // concatenate
- path& path::operator+= (const path& data)
- {
- *m_segments += *(data.m_segments);
-
- return *this;
- }
-
- path& path::operator-= (const path& data)
- {
- *m_segments -= *(data.m_segments);
-
- return *this;
- }
-
- path& path::close()
- {
- m_segments->close();
- return *this;
- }
- path& path::fill(const bool arg)
- {
- m_segments->fill(arg);
- return *this;
- }
-
-
- void path::clip()
- {
- m_segments->clip();
- }
-
- void path::clip_to(const Sphere& S, const P& viewpt, bool back)
- {
- m_segments->clip_to(S, viewpt, back);
- }
-
- void path::draw() const
- {
- m_segments->draw();
- }
-
- void path::draw(const Color& col, const pen_data& pen) const
- {
- m_segments->photo(*active_screen(), cam(), col, pen, Xfine());
- }
-} // end of namespace
diff --git a/graphics/epix/path.h b/graphics/epix/path.h
deleted file mode 100644
index 9816eed383..0000000000
--- a/graphics/epix/path.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * path.h -- ePiX user class for polygons and paths
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.3
- * Last Change: March 04, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_PATHS
-#define EPIX_PATHS
-
-#include <vector>
-
-namespace ePiX {
-
- class Camera;
- class Color;
- class P;
- class path_data;
- class pen_data;
- class screen;
- class Sphere;
-
- class path {
- friend class facet;
- public:
-
- // path was visible to users, but is now implemented as a p_impl.
- path(const path&);
- path& operator= (const path&);
- ~path();
-
- // Interface dictated by backward compatibility
- path(const std::vector<P>& data, bool closed, bool filled);
- path();
-
- // line constructors
- path(const P& tail, const P& head, double expand=0);
- path(const P&, const P&, double expand, unsigned int num_pts);
-
-
- // Constructors that specify the number of points have two prototypes
- // rather than accepting a default argument. This hides the global
- // (but user-inaccessible) default number of points (see constants.h).
-
- // ellipse
- path(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max,
- unsigned int num_pts);
-
- path(const P& center, const P& axis1, const P& axis2,
- double t_min, double t_max);
-
-
- // spline
- path(const P& p1, const P& p2, const P& p3, unsigned int n);
- path(const P& p1, const P& p2, const P& p3);
-
- path(const P& p1, const P& p2, const P& p3, const P& p4, unsigned int n);
- path(const P& p1, const P& p2, const P& p3, const P& p4);
-
-
- // parametric path
- path(P f(double), double t_min, double t_max, unsigned int num_pts);
- path(P f(double), double t_min, double t_max);
-
- // function graph
- path(double f(double), double t_min, double t_max, unsigned int num_pts);
- path(double f(double), double t_min, double t_max);
-
- // append a point
- path& pt(double, double, double=0);
- path& pt(const P&);
-
- // concatenate path segments
- path& operator+= (const path&);
- // concatenate, reversing second sequence
- path& operator-= (const path&);
-
- bool is_closed() const;
- bool is_filled() const;
-
- // set attributes
- path& close();
- path& fill(const bool arg=true);
-
-
- void clip();
-
- // assumes path lies on sphere
- void clip_to(const Sphere&, const P& viewpt, bool back=false);
-
- void draw() const;
- void draw(const Color&, const pen_data&) const;
-
- private:
- path_data* m_segments;
-
- }; // end of class path
-
- /*
- Slated for removal
- // polygon/polyline with variable number of vertices
- path polygon(unsigned int num_pts ...);
- path polyline(unsigned int num_pts ...);
- */
-
-} // end of namespace
-
-#endif /* EPIX_PATHS */
diff --git a/graphics/epix/path_data.cc b/graphics/epix/path_data.cc
deleted file mode 100644
index e4359ee030..0000000000
--- a/graphics/epix/path_data.cc
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * path_data.cc -- ePiX implementation classes for polygons and paths
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.21
- * Last Change: September 22, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <list>
-#include <algorithm>
-
-#include "errors.h"
-#include "constants.h"
-
-#include "triples.h"
-#include "camera.h"
-#include "sphere.h"
-
-#include "edge_data.h"
-#include "active_screen.h"
-#include "clipping.h"
-
-#include "paint_style.h"
-
-#include "halfspace.h"
-#include "pen_line.h"
-#include "pen_fill.h"
-
-#include "screen_data.h"
-#include "screen.h"
-
-#include "path_data.h"
-
-namespace ePiX {
-
- path_data::path_data() : m_closed(false), m_filled(false) { }
-
- path_data::path_data(const std::vector<P>& pv, bool closed, bool filled)
- : m_closed(closed), m_filled(closed && filled)
- {
- if (pv.size() == 1)
- m_data.push_back(edge3d(pv.at(0), pv.at(0), true)); // will delete later
-
- else
- for (unsigned int i=0; i<pv.size()-1; ++i)
- m_data.push_back(edge3d(pv.at(i), pv.at(i+1), true));
- }
-
- path_data::path_data(const std::list<edge3d>& data, bool closed, bool filled)
- : m_closed(closed), m_filled(closed && filled), m_data(data) { }
-
-
- path_data* path_data::clone() const
- {
- return new path_data(*this);
- }
-
-
- // join to arg; no effect if we're closed
- path_data& path_data::pt(const P& arg)
- {
- if (0 < m_data.size())
- {
- const P hd((--m_data.end())->head()); // terminal point
- m_data.push_back(edge3d(hd, arg, true));
- }
-
- else
- m_data.push_back(edge3d(arg, arg, true));
-
- return *this;
- }
-
-
- // concatenate path_data segments
- path_data& path_data::operator+= (path_data pd)
- {
- if (!m_closed)
- m_data.splice(m_data.end(), pd.m_data);
-
- return *this;
- }
-
- // concatenate, reversing second sequence
- path_data& path_data::operator-= (path_data pd)
- {
- if (!m_closed)
- {
- for (std::list<edge3d>::iterator ep=pd.m_data.begin();
- ep != pd.m_data.end(); ++ep)
- (*ep).reverse(); // swap tails and heads
-
- pd.m_data.reverse(); // reverse list order
- m_data.splice(m_data.end(), pd.m_data);
- }
-
- return *this;
- }
-
- bool path_data::is_closed() const
- {
- return m_closed;
- }
-
- bool path_data::is_filled() const
- {
- return m_filled;
- }
-
-
- // set flag and close up if necessary
- path_data& path_data::close()
- {
- if (0 < m_data.size())
- {
- m_closed=true;
-
- const P tail_pt((m_data.begin())->tail());
- const P head_pt((--m_data.end())->head());
-
- if (tail_pt != head_pt)
- m_data.push_back(edge3d(head_pt, tail_pt, true));
- }
-
- return *this;
- }
-
- // no action unless we're closed
- path_data& path_data::fill(const bool arg)
- {
- if (m_closed)
- m_filled=arg;
- return *this;
- }
-
-
- path_data& path_data::clip()
- {
- if (m_closed)
- the_clip_box().clip_loop(m_data);
-
- else
- the_clip_box().clip_path(m_data);
-
- return *this;
- }
-
- path_data& path_data::clip_to(const halfspace& knife)
- {
- if (m_closed)
- knife.clip_loop(m_data);
- else
- knife.clip_path(m_data);
- return *this;
- }
-
-
- path_data& path_data::clip_to(const Sphere& S, const P& viewpt,
- bool back)
- {
- const double rad(S.radius());
-
- P dir(S.center() - viewpt);
- const double dist(norm(dir));
-
- if (rad < dist) // viewpt is outside
- {
- dir *= 1/dist; // unit vector from center to viewpt
- double x(rad*rad/dist);
-
- halfspace knife(S.center() - x*dir, dir);
-
- if (back)
- knife.reverse();
-
- clip_to(knife);
- }
-
- else
- epix_warning("Can't clip path to sphere from interior viewpoint");
-
- return *this;
- }
-
-
- void path_data::photo(screen& scr, const Camera& mycam, const Color& fill,
- const pen_data& line, const pen_data& base) const
- {
- path_data tmp_data(*this);
-
- tmp_data.clip(); // clip_box
- if (mycam.needs_clip())
- tmp_data.clip_to(mycam.clip_plane());
-
- std::list<edge2d> edges;
- unsigned int edge_ct(0); // don't print filled unless >= 3 non-null edges
-
- for (std::list<edge3d>::const_iterator p=tmp_data.m_data.begin();
- p != tmp_data.m_data.end(); ++p)
- {
- edge2d tmp(mycam((*p).tail()), mycam((*p).head()), (*p).is_seen());
-
- if (!tmp.is_null()) // endpoints not equal
- {
- ++edge_ct;
- edges.push_back(tmp);
- }
- }
-
- // draw fill bordered by base, then re-draw border with line/base pens
- if (m_filled && 3 <= edge_ct)
- {
- scr.m_screen->add_tile(pen_fill(mycam(fill),
- line.seen_through(mycam), edges));
- if (line.width() < base.width())
- scr.m_screen->add_tile(pen_line(line.seen_through(mycam),
- base.seen_through(mycam), edges));
- }
-
- else if (1 <= edge_ct)
- {
- // print edges in groups
- std::list<edge2d>::iterator p(edges.begin());
- std::list<edge2d> path_buf;
-
- int count(0);
- while (p != edges.end())
- {
- path_buf.push_back(*p);
- p = edges.erase(p);
-
- if (++count == 250 || p == edges.end()) // Magic number
- {
- scr.m_screen->add_tile(pen_line(line.seen_through(mycam),
- base.seen_through(mycam),
- path_buf));
- path_buf.clear();
- count = 0;
- }
- }
- }
- }
-
- void path_data::draw() const
- {
- photo(*active_screen(), cam(), the_paint_style().fill_color(),
- the_paint_style().line_pen(), the_paint_style().base_pen());
- }
-
- void path_data::draw(const Color& col, const pen_data& pen) const
- {
- photo(*active_screen(), cam(), col, pen, Xfine());
- }
-} // end of namespace
diff --git a/graphics/epix/path_data.h b/graphics/epix/path_data.h
deleted file mode 100644
index fa7803f976..0000000000
--- a/graphics/epix/path_data.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * path_data.h -- ePiX implementation classes for polygons and paths
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 14, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_PATH_DATA
-#define EPIX_PATH_DATA
-
-#include <list>
-#include <vector>
-
-#include "triples.h"
-#include "edge_data.h"
-
-namespace ePiX {
-
- class Camera;
- class Color;
- class halfspace;
- class pen_data;
- class screen;
- class Sphere;
-
- // sequence of vertices
- class path_data {
- public:
- path_data();
- path_data(const std::vector<P>&, bool closed=false, bool filled=false);
- path_data(const std::list<edge3d>&, bool closed=false, bool filled=false);
-
- path_data* clone() const;
-
- // add points
- path_data& pt(const P&);
-
- // concatenate path_data segments
- path_data& operator+= (path_data);
-
- // concatenate, reversing second sequence
- path_data& operator-= (path_data);
-
- bool is_closed() const;
- bool is_filled() const;
-
- // make loop and prevent subsequent additions of points
- path_data& close();
-
- // (un)set fill flag if closed
- path_data& fill(const bool arg=true);
-
- path_data& clip();
- path_data& clip_to(const halfspace&);
-
- // assumes path already lies on sphere
- path_data& clip_to(const Sphere&, const P& viewpt, bool back=false);
-
- void photo(screen&, const Camera&, const Color& fill,
- const pen_data& line, const pen_data& base) const;
-
- void draw() const;
- void draw(const Color&, const pen_data&) const;
-
- private:
- bool m_closed;
- bool m_filled;
-
- std::list<edge3d> m_data;
-
- }; // end of class path_data
-
-} // end of namespace
-
-#endif /* EPIX_PATH_DATA */
diff --git a/graphics/epix/path_style.cc b/graphics/epix/path_style.cc
deleted file mode 100644
index 43b93681a4..0000000000
--- a/graphics/epix/path_style.cc
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * path_style.cc -- ePiX's class for path styles.
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 15, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <cmath>
-#include <string>
-#include <vector>
-
-#include "constants.h"
-
-#include "functions.h" // for snip_to
-#include "utils.h" // for get_chars
-#include "path_style.h"
-
-namespace ePiX {
-
- // true if arg is a string of ch
- static bool __epix_all_one_char(const std::string& arg, const char ch)
- {
- return arg.find_first_not_of(ch) == std::string::npos;
- }
-
- // convert string of dashes, spaces, and periods to a vector of breakpoints
- static std::vector<double> __epix_get_breakpts(const std::string& pattern)
- {
- std::vector<double> value;
-
- // Assume solid on anomalous input
- if (pattern.size() == 0
- || __epix_all_one_char(pattern, '-')
- || __epix_all_one_char(pattern, ' '))
- {
- value.push_back(0);
- value.push_back(1);
-
- return value;
- }
-
- // else
- const unsigned int sz(pattern.size()); // not zero
- const double dt(1.0/sz);
-
- for (unsigned int i=0; i<sz; ++i)
- {
- if (pattern.at(i) == '-')
- {
- // previous element was a dash; extend instead of adding breaks
- if (0 < value.size()
- && fabs(value.at(value.size()-1) - i*dt) < 0.25*dt)
- value.at(value.size()-1) = (i+1)*dt;
-
- else
- {
- value.push_back(i*dt);
- value.push_back((i+1)*dt);
- }
- }
-
- else if (pattern.at(i) == '.')
- {
- value.push_back((i+0.5)*dt);
- value.push_back((i+0.5)*dt); // same value twice
- }
- // spaces have no breakpoints, just increment i
- }
-
- return value;
- } // end of __epix_get_breakpts
-
-
- path_state::path_state()
- : m_separation(AVG_SEP), m_natural_length(1), m_solid(true)
- {
- m_breakpoints.push_back(0);
- m_breakpoints.push_back(1);
- }
-
- path_state::path_state(std::string arg)
- : m_separation(AVG_SEP), m_solid(false)
- {
- // strip out everything but dash, space, period.
- const std::string pattern(get_chars(arg, "- ."));
- m_breakpoints = __epix_get_breakpts(pattern); // ok even if pattern=""
-
- m_natural_length = pattern.size();
-
- if (m_breakpoints.at(0) == 0 && m_breakpoints.at(1) == 1)
- {
- m_solid = true;
- m_natural_length = 1;
- }
- }
-
- path_state& path_state::separation(double len)
- {
- if (0 < len)
- m_separation = snip_to(len, MIN_SEP, MAX_SEP);
-
- else
- m_separation = AVG_SEP;
-
- return *this;
- }
-
- double path_state::separation() const
- {
- return m_separation;
- }
-
- unsigned int path_state::natural_length() const
- {
- return m_natural_length;
- }
-
- std::vector<double> path_state::breakpts() const
- {
- return m_breakpoints;
- }
-
- bool path_state::is_solid() const
- {
- return m_solid;
- }
-
-
- path_state& the_path_style()
- {
- static path_state* the_path_state(new path_state());
- return *the_path_state;
- }
-} // end of namespace
diff --git a/graphics/epix/path_style.h b/graphics/epix/path_style.h
deleted file mode 100644
index 988847660e..0000000000
--- a/graphics/epix/path_style.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * path_style.h -- ePiX's class for solid/dashed/dotted paths
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.7
- * Last Change: July 13, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file implements ePiX's styles for dashed and dotted paths. The
- * data are a string containing dashes (-), spaces ( ), and dots (.),
- * each of which represents a fixed portion of a path segment, e.g.
- *
- * Solid: "-"
- * Dashed: "- -"
- * Dotted: " . "
- * Custom: "- . -- . -", etc.
- *
- * The class in this file implements backend for user-level global
- * functions defined in state.h.
- *
- * This header is not part of epix.h.
- */
-#ifndef EPIX_PATH_STYLE
-#define EPIX_PATH_STYLE
-
-#include <string>
-#include <vector>
-
-namespace ePiX {
-
- class path_state {
- public:
- path_state();
- path_state(std::string);
-
- path_state& separation(double len); // dist in pt between adjacent elements
-
- double separation() const;
- unsigned int natural_length() const;
- std::vector<double> breakpts() const;
-
- bool is_solid() const;
-
- private:
- double m_separation; // true length of pattern
- std::vector<double> m_breakpoints; // subdivision of [0,1]
-
- unsigned int m_natural_length; // number of chars in defining string
- bool m_solid;
- }; // end of class path_state
-
- path_state& the_path_style();
-
-} // end of namespace
-
-#endif /* EPIX_PATH_STYLE */
diff --git a/graphics/epix/pen_arrow.cc b/graphics/epix/pen_arrow.cc
deleted file mode 100644
index e39dbd906c..0000000000
--- a/graphics/epix/pen_arrow.cc
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * pen_arrow.cc -- ePiX::pen_arrow class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-#include <list> // for arrow shaft cropping
-
-#include "pairs.h"
-#include "affine.h"
-#include "screen_mask.h"
-
-#include "length.h"
-
-#include "edge_data.h"
-
-#include "Color.h"
-#include "arrow_style.h"
-#include "label_style.h"
-#include "marker_style.h" // for bbox marker
-
-#include "format.h"
-#include "picture_data.h"
-#include "picture.h"
-
-#include "tile.h"
-#include "pen_arrow.h"
-
-namespace ePiX {
- pen_arrow::pen_arrow(const pair& tail, const pair& head,
- const pen_data& line, const pen_data& base,
- double scale, double sin_th, bool head_seen)
- : m_shaft(tail, head, true), m_line(line), m_base(base),
- m_scale(scale), m_shorten(sin_th), m_head_seen(head_seen),
- m_style(the_arrowhead_style()) { }
-
- pen_arrow* pen_arrow::clone() const
- {
- return new pen_arrow(*this);
- }
-
- pen_arrow& pen_arrow::map_by(const affine& f)
- {
- m_shaft = edge2d(f(m_shaft.tail()), f(m_shaft.head()), m_shaft.is_seen());
-
- return *this;
- }
-
-
- pen_arrow& pen_arrow::crop_to(const screen_mask& M)
- {
- // update head visibility; never re-mark as visible
- if (M.crops(m_shaft.head()))
- m_head_seen = false;
-
- // screen masks are convex, so we're cropped iff an end is cropped
- if (M.crops(m_shaft.head()) || M.crops(m_shaft.tail()))
- {
- std::list<edge2d> shaft;
- shaft.push_back(m_shaft);
- M.crop_path(shaft);
-
- // search for visible segment; will find no more than one
- bool still_seen(false);
-
- for (std::list<edge2d>::const_iterator ep = shaft.begin();
- ep != shaft.end(); ++ep)
- if ((*ep).is_seen())
- {
- still_seen = true;
- m_shaft = *ep;
- }
-
- if (!still_seen)
- {
- m_head_seen = false;
- m_shaft.seen(false);
- }
- }
-
- return *this;
- }
-
- bool pen_arrow::is_empty() const
- {
- return !(m_head_seen && m_shaft.is_seen()) || m_line.color().is_unset();
- }
-
-
- /*
- *
- * 1: base, 2: foot, 3: tip, 4: ear_right, 5: ear_left
- *
- 5
- ...
- ......... .....
- .........1 2.....3
- ......... .....
- ...
- 4
- * <-height->
- *
- * <--> inset (fraction of height)
- *
- */
- std::string pen_arrow::print_to(const format& fmt,
- const std::string& len) const
- {
- if (is_empty())
- return "";
-
- // else
- std::stringstream obuf;
-
- if (m_shaft.tail() == m_shaft.head()) // draw a ddot
- {
- label_state my_state(the_label_style());
- my_state.text_color(m_line.color());
-
- obuf << fmt.print_mark(m_shaft.tail(), pair(0,0),
- DDOT, the_mark_size(), my_state, len);
- }
-
- else
- {
- const pair head(m_shaft.head());
- const double stretch(length("1pt").to(len).magnitude());
-
- pair dir(head - m_shaft.tail());
- double dist(norm(dir));
-
- const pair unit_dir((stretch/dist)*dir);
- const pair unit_perp(J(unit_dir));
-
- const double wd(m_scale*m_style.width());
- const double ht(m_style.ratio()*wd*m_shorten);
-
- const pair base(head - ht*unit_dir);
- const pair foot(head - (1-m_style.inset())*ht*unit_dir);
-
- const pair ear_left(base + wd*unit_perp);
- const pair ear_right(base - wd*unit_perp);
-
- std::list<edge2d> bd;
- bd.push_back(edge2d(foot, ear_right, true));
- bd.push_back(edge2d(ear_right, head, true));
- bd.push_back(edge2d(head, ear_left, true));
- bd.push_back(edge2d(ear_left, foot, true));
-
- obuf << fmt.print_fill(bd, pair(0,0), m_line.color(), m_line, len);
- }
-
- return obuf.str();
- }
-
- void pen_arrow::add_to_pallet() const
- {
- if (!is_empty())
- the_picture().add_to_pallet(m_line.color())
- .add_to_pallet(m_base.color());
- }
-} // end of namespace
diff --git a/graphics/epix/pen_arrow.h b/graphics/epix/pen_arrow.h
deleted file mode 100644
index 09f65e8a42..0000000000
--- a/graphics/epix/pen_arrow.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * pen_arrow.cc -- ePiX::pen_arrow class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.8
- * Last Change: July 19, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_PEN_ARROW
-#define EPIX_PEN_ARROW
-
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-#include "pen_data.h"
-#include "tile.h"
-
-namespace ePiX {
-
- class affine;
- class screen_mask;
-
- // arrowhead tile class
- class pen_arrow : public tile {
- public:
- pen_arrow(const pair& tail, const pair& head,
- const pen_data& line, const pen_data& base,
- double scale, double sin_th, bool head_seen);
-
- pen_arrow* clone() const;
-
- pen_arrow& map_by(const affine&);
- pen_arrow& crop_to(const screen_mask&);
-
- bool is_empty() const;
-
- std::string print_to(const format&, const std::string&) const;
- void add_to_pallet() const;
-
- private:
- edge2d m_shaft;
-
- pen_data m_line;
- pen_data m_base;
-
- double m_scale; // overall scale of head
- double m_shorten; // foreshortening factor
-
- bool m_head_seen;
-
- arrowhead_state m_style;
- }; // end of class pen_arrow
-
-} // end of namespace
-
-#endif /* EPIX_PEN_ARROW */
diff --git a/graphics/epix/pen_data.cc b/graphics/epix/pen_data.cc
deleted file mode 100644
index 95bcef0ec2..0000000000
--- a/graphics/epix/pen_data.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * pen_data.cc -- ePiX's pen class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.20
- * Last Change: September 19, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "constants.h"
-
-#include "camera.h"
-#include "pen_data.h"
-
-namespace ePiX {
-
- pen_data::pen_data(const Color& col, const length& wid)
- : m_color(col), m_width(wid) { }
-
- pen_data::pen_data(const Color& col)
- : m_color(col), m_width(PLAIN_WIDTH) { }
-
- // set
- void pen_data::color(const Color& col) { m_color = col; }
- void pen_data::width(const length& len) { m_width = len; }
-
- // get
- Color pen_data::color() const { return m_color; }
- length pen_data::width() const { return m_width; }
-
- bool pen_data::operator== (const pen_data& pen) const
- {
- return ((m_color == pen.m_color) && (m_width == pen.m_width));
- }
-
- bool pen_data::operator!= (const pen_data& pen) const
- {
- return !(*this == pen);
- }
-
- pen_data pen_data::seen_through(const Camera& mycam) const
- {
- Color col(m_color);
- if (!col.is_unset())
- col = mycam(col);
-
- return pen_data(col, m_width);
- }
-
- bool pen_data::is_unset() const
- {
- return m_color.is_unset() || (m_width < length(EPIX_EPSILON));
- }
-
- // undrawn
- const pen_data& Xfine()
- {
- static const pen_data*
- const xfine_pen(new pen_data(Neutral(), length(0)));
-
- return *xfine_pen;
- }
-} // end of namespace
diff --git a/graphics/epix/pen_data.h b/graphics/epix/pen_data.h
deleted file mode 100644
index 643e7161fe..0000000000
--- a/graphics/epix/pen_data.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * pen_data.h -- Color and width
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.20
- * Last Change: September 19, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file defines ePiX's concept of a pen (Color and length)
- *
- * This header is not part of epix.h.
- */
-#ifndef EPIX_PEN_DATA
-#define EPIX_PEN_DATA
-
-#include "Color.h"
-#include "length.h"
-
-namespace ePiX {
-
- class Camera;
-
- class pen_data {
- public:
- // plain black
- pen_data(const Color& col, const length& wid);
- pen_data(const Color& col=Black());
-
- // set
- void color(const Color& col);
- void width(const length& len);
-
- // get
- Color color() const;
- length width() const;
-
- bool operator== (const pen_data& pen) const;
- bool operator!= (const pen_data& pen) const;
-
- pen_data seen_through(const Camera& cam) const;
-
- bool is_unset() const;
-
- private:
- Color m_color;
- length m_width;
- }; // end of class pen_data
-
-
- // undrawn
- const pen_data& Xfine();
-
-} // end of namespace
-
-#endif /* EPIX_PEN_DATA */
diff --git a/graphics/epix/pen_fill.cc b/graphics/epix/pen_fill.cc
deleted file mode 100644
index 5da5de647b..0000000000
--- a/graphics/epix/pen_fill.cc
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * pen_fill.cc -- ePiX::pen_fill class, for filled screen elements
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.20
- * Last Change: September 19, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <string>
-
-#include "functions.h"
-
-#include "pairs.h"
-#include "affine.h"
-#include "screen_mask.h"
-
-#include "length.h"
-
-#include "pen_data.h"
-#include "path_style.h"
-
-#include "format.h"
-#include "picture_data.h"
-#include "picture.h"
-
-#include "edge_data.h"
-
-#include "tile.h"
-#include "pen_fill.h"
-
-namespace ePiX {
-
- typedef std::list<edge2d>::const_iterator ep2;
-
- pen_fill::pen_fill()
- : m_tint(Neutral()), m_line(Xfine()), m_style(the_path_style()) { }
-
- pen_fill::pen_fill(const Color& fill, const pen_data& line,
- const std::list<edge2d>& data)
- : m_tint(fill), m_line(line),
- m_style(the_path_style()), m_border(data), m_edges(data) { }
-
- pen_fill::pen_fill(const Color& fill, const pen_data& line, double th,
- const std::list<edge2d>& data)
- : m_tint(fill), m_line(line),
- m_style(the_path_style()), m_border(data), m_edges(data) { }
-
-
- pen_fill* pen_fill::clone() const
- {
- return new pen_fill(*this);
- }
-
-
- pen_fill& pen_fill::map_by(const affine& f)
- {
- if (m_border.size() == 0)
- return *this;
-
- // else map border
- std::list<edge2d> bord;
-
- for (ep2 p=m_border.begin(); p!=m_border.end(); ++p)
- bord.push_back(edge2d(f(p->tail()), f(p->head()), (*p).is_seen()));
-
- swap(m_border, bord);
-
- // and edges
- std::list<edge2d> edges;
-
- for (ep2 p=m_edges.begin(); p!=m_edges.end(); ++p)
- edges.push_back(edge2d(f(p->tail()), f(p->head()), (*p).is_seen()));
-
- swap(m_edges, edges);
- return *this;
- }
-
-
- pen_fill& pen_fill::crop_to(const screen_mask& M)
- {
- m_border = M.crop_loop(m_border);
- m_edges = M.crop_path(m_edges);
- return *this;
- }
-
- bool pen_fill::is_empty() const
- {
- return (m_border.size() == 0
- || (m_tint.is_unset() && m_line.is_unset()));
- }
-
-
- std::string pen_fill::print_to(const format& fmt,
- const std::string& len) const
- {
- if (is_empty())
- return "";
-
- // else at least one is true
- bool filled(!m_tint.is_unset());
- bool edged(!m_line.is_unset());
-
- // if solid bd, try to draw/fill in one step
- if (m_style.is_solid() && filled && edged)
- return fmt.print_fill(m_border, pair(0,0), m_tint, m_line, len);
-
- // else draw fill, border separately
- std::string val;
-
- if (filled)
- val += fmt.print_fill(m_border, pair(0,0), m_tint,
- pen_data(m_tint, m_line.width()), len);
-
- if (edged)
- val += fmt.print_line(m_edges, pair(0,0), m_line, Xfine(),
- m_style, len);
-
- return val;
- }
-
- void pen_fill::add_to_pallet() const
- {
- the_picture().add_to_pallet(m_tint).add_to_pallet(m_line.color());
- }
-} // end of namespace
diff --git a/graphics/epix/pen_fill.h b/graphics/epix/pen_fill.h
deleted file mode 100644
index 12abe4707e..0000000000
--- a/graphics/epix/pen_fill.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * pen_fill.cc -- ePiX::pen_fill class, for filled screen elements
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.11
- * Last Change: August 12, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_PEN_FILL
-#define EPIX_PEN_FILL
-
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-
-#include "Color.h"
-#include "path_style.h"
-#include "tile.h"
-
-namespace ePiX {
-
- class length;
- class screen_mask;
-
- class pen_fill : public tile {
- public:
- pen_fill();
-
- pen_fill(const Color&, const pen_data&, const std::list<edge2d>&);
-
- pen_fill(const Color&, const pen_data&, double theta,
- const std::list<edge2d>&);
-
- pen_fill* clone() const;
-
- pen_fill& map_by(const affine&);
- pen_fill& crop_to(const screen_mask&);
-
- bool is_empty() const;
-
- std::string print_to(const format&, const std::string&) const;
- void add_to_pallet() const;
-
- private:
- Color m_tint;
- pen_data m_line;
-
- path_state m_style;
-
- std::list<edge2d> m_border; // filled boundary (loop)
- std::list<edge2d> m_edges; // visible boundary (path)
- }; // end of class pen_fill
-
-} // end of namespace
-
-#endif /* EPIX_PEN_FILL */
diff --git a/graphics/epix/pen_line.cc b/graphics/epix/pen_line.cc
deleted file mode 100644
index 9ce7621a4d..0000000000
--- a/graphics/epix/pen_line.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * pen_line.cc -- ePiX::pen_line class, for line-like objects
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.20
- * Last Change: September 19, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include "functions.h"
-
-#include "pairs.h"
-#include "affine.h"
-#include "screen_mask.h"
-
-#include "length.h"
-
-#include "pen_data.h"
-#include "paint_style.h"
-
-#include "format.h"
-#include "picture_data.h" // for add_to_pallet()
-#include "picture.h" // for the_picture()
-
-#include "edge_data.h"
-
-#include "tile.h"
-#include "pen_line.h"
-
-namespace ePiX {
-
- typedef std::list<edge2d>::const_iterator ep2;
-
- pen_line::pen_line()
- : m_line(the_paint_style().line_pen()),
- m_base(the_paint_style().base_pen()), m_style(the_path_style()) { }
-
- pen_line::pen_line(const pen_data& line, const pen_data& base,
- const std::list<edge2d>& data)
- : m_line(line), m_base(base), m_style(the_path_style()), m_border(data) { }
-
-
- pen_line* pen_line::clone() const
- {
- return new pen_line(*this);
- }
-
-
- pen_line& pen_line::map_by(const affine& f)
- {
- if (m_border.size() == 0)
- return *this;
-
- std::list<edge2d> bord;
-
- for (ep2 p=m_border.begin(); p!=m_border.end(); ++p)
- bord.push_back(edge2d(f(p->tail()), f(p->head()), (*p).is_seen()));
-
- swap(m_border, bord);
- return *this;
- }
-
-
- pen_line& pen_line::crop_to(const screen_mask& M)
- {
- m_border = M.crop_path(m_border);
- return *this;
- }
-
-
- bool pen_line::is_empty() const
- {
- // N.B. line trumps base, even if base is otherwise visible
- return (m_border.size() == 0 ||
- m_line.color().is_unset() ||
- m_line.width() == length(0));
- }
-
-
- std::string pen_line::print_to(const format& fmt,
- const std::string& len) const
- {
- if (is_empty())
- return "";
-
- // else
- return fmt.print_line(m_border, pair(0,0), m_line, m_base, m_style, len);
- }
-
- void pen_line::add_to_pallet() const
- {
- // add_to_pallet checks for unset
- the_picture().add_to_pallet(m_line.color())
- .add_to_pallet(m_base.color());
- }
-
- void pen_line::add(const edge2d& E)
- {
- m_border.push_back(E);
- }
-} // end of namespace
-
diff --git a/graphics/epix/pen_line.h b/graphics/epix/pen_line.h
deleted file mode 100644
index 6713b5de74..0000000000
--- a/graphics/epix/pen_line.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * pen_line.h -- ePiX::pen_line class, for line-like objects
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.3
- * Last Change: March 04, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_PEN_LINE
-#define EPIX_PEN_LINE
-
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-#include "pen_data.h"
-#include "path_style.h"
-#include "tile.h"
-
-namespace ePiX {
-
- class length;
- class affine;
- class screen_mask;
-
- class pen_line : public tile {
- public:
- pen_line();
- pen_line(const pen_data&, const pen_data&, const std::list<edge2d>&);
-
- pen_line* clone() const;
-
- pen_line& map_by(const affine&);
- pen_line& crop_to(const screen_mask&);
-
- bool is_empty() const;
-
- std::string print_to(const format&, const std::string&) const;
- void add_to_pallet() const;
-
- void add(const edge2d&);
-
- private:
- pen_data m_line;
- pen_data m_base;
-
- path_state m_style;
-
- std::list<edge2d> m_border;
-
- }; // end of class pen_line
-
-} // end of namespace
-
-#endif /* EPIX_PEN_LINE */
diff --git a/graphics/epix/picture.cc b/graphics/epix/picture.cc
deleted file mode 100644
index d194edf5f4..0000000000
--- a/graphics/epix/picture.cc
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * picture.cc -- ePiX::epix_picture class, and global functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-
-#include "triples.h"
-#include "errors.h"
-
-#include "functions.h"
-#include "length.h"
-
-#include "verbatim.h"
-#include "screen_data.h"
-
-#include "screen_mask.h"
-
-#include "screen.h"
-#include "active_screen.h"
-
-#include "eepic.h"
-#include "pst.h"
-#include "tikz.h"
-
-#include "picture_data.h"
-#include "picture.h"
-
-namespace ePiX {
-
- // static objects
- picture_data& the_picture()
- {
- static picture_data* the_root_picture(new picture_data());
- return *the_root_picture;
- }
-
- double& xmin()
- {
- static double* the_x_min(new double);
- return *the_x_min;
- }
-
- double& xmax()
- {
- static double* the_x_max(new double);
- return *the_x_max;
- }
-
- double& xsize()
- {
- static double* the_x_size(new double);
- return *the_x_size;
- }
-
- double& ymin()
- {
- static double* the_y_min(new double);
- return *the_y_min;
- }
-
- double& ymax()
- {
- static double* the_y_max(new double);
- return *the_y_max;
- }
-
- double& ysize()
- {
- static double* the_y_size(new double);
- return *the_y_size;
- }
-
-
- double & tix()
- {
- static double* the_tix(new double);
- return *the_tix;
- }
-
-
- void bounding_box(const P& arg1, const P& arg2)
- {
- xmin()=min(arg1.x1(), arg2.x1());
- xmax()=max(arg1.x1(), arg2.x1());
-
- ymin()=min(arg1.x2(), arg2.x2());
- ymax()=max(arg1.x2(), arg2.x2());
-
- xsize() = xmax() - xmin();
- if (xsize() == 0)
- epix_error("Bounding box has width zero!");
-
- ysize() = ymax() - ymin();
- if (ysize() == 0)
- epix_error("Bounding box has height zero!");
-
- // else
- the_picture().the_canvas
- = screen(P(xmin(), ymin()), P(xmax(), ymax()));
- }
-
-
- // one-line initializer
- void picture(const P& arg1, const P& arg2, std::string sz)
- {
- // bounding_box()
- the_picture().the_canvas
- = screen(P(arg1.x1(), arg1.x2()), P(arg2.x1(), arg2.x2()));
-
- xmin() = the_picture().the_canvas.h_min();
- xmax() = the_picture().the_canvas.h_max();
- xsize() = the_picture().the_canvas.h_size();
-
- ymin() = the_picture().the_canvas.v_min();
- ymax() = the_picture().the_canvas.v_max();
- ysize() = the_picture().the_canvas.v_size();
-
-
- // parse size string
- length pic_hsize, pic_vsize;
- get_lengths(sz, pic_hsize, pic_vsize);
-
- // width units take precedence
- std::string u(pic_hsize.units());
- pic_vsize.to(u);
- the_picture().the_hoffset.to(u);
- the_picture().the_voffset.to(u);
-
- // unitlength()
- the_picture().the_unitlength = length("1"+u);
-
- // offset()
- the_picture().the_hoffset = length("0"+u);
- the_picture().the_voffset = length("0"+u);
-
- // picture()
- the_picture().the_page
- = screen(P(0,0), P(pic_hsize.magnitude(), pic_vsize.magnitude()));
-
- if (xsize() == 0 || pic_hsize.magnitude() == 0)
- epix_error("Picture has width zero!");
-
- if (ysize() == 0 || pic_vsize.magnitude() == 0)
- epix_error("Picture has height zero!");
- }
-
- // old initializers
- void picture(double horiz, double vert)
- {
- if (horiz == 0)
- epix_error("Picture has width zero!");
-
- if (vert == 0)
- epix_error("Picture has height zero!");
-
- the_picture().the_page = screen(P(0,0), P(horiz, vert));
- }
-
- void picture(const P& arg)
- {
- picture(arg.x1(), arg.x2());
- }
-
- // same syntax as for picture dimensions
- void offset(std::string sz)
- {
- length hoff, voff;
- std::string units(the_picture().the_unitlength.units());
-
- get_lengths(sz, hoff, voff);
-
- the_picture().the_hoffset=hoff.to(units);
- the_picture().the_voffset=voff.to(units);
- }
-
- void offset(double hoff, double voff)
- {
- std::string u(the_picture().the_unitlength.units());
-
- std::stringstream hbuf, vbuf;
- hbuf << hoff << u;
- vbuf << voff << u;
-
- the_picture().the_hoffset = length(hbuf.str());
- the_picture().the_voffset = length(vbuf.str());
- }
-
- void offset(const P& arg)
- {
- offset(arg.x1(), arg.x2());
- }
-
- void unitlength(const std::string& units)
- {
- the_picture().the_unitlength = length(units);
- }
-
-
- void begin()
- {
- const double mult(the_picture().the_unitlength.magnitude());
- if (mult != 1) // someone called unitlength(); must adjust size, offsets
- {
- const P TR(the_picture().the_page.tr());
- the_picture().the_page = screen(P(0,0), mult*TR);
-
- the_picture().the_hoffset *= mult;
- the_picture().the_voffset *= mult;
- }
-
- // If we've seen bounding_box or equivalent, this properly initializes.
- // Otherwise we'll segfault momentarily... :(
- active_screen();
- }
-
- void end_picture()
- {
- the_picture().print();
- }
-
- screen& canvas()
- {
- return the_picture().the_canvas;
- }
-
- void activate(screen& scr)
- {
- the_screen_stack().push(scr);
- }
-
- void deactivate(screen& scr)
- {
- const screen* active(the_screen_stack().pop());
-
- if (active != &scr)
- epix_warning("Deactivation requested for non-active screen");
- }
-
- // page layout
- void import()
- {
- if (&(the_picture().the_canvas) != active_screen())
- the_picture().the_canvas.paste(*active_screen());
- }
-
- void inset(const P& sw, const P& ne)
- {
- if (&(the_picture().the_canvas) != active_screen())
- the_picture().the_canvas.paste(*active_screen(), sw, ne);
- }
-
-
- void import(const screen& child)
- {
- the_picture().the_canvas.paste(child);
- }
-
- void inset(const screen& child, const P& sw, const P& ne)
- {
- the_picture().the_canvas.paste(child, sw, ne);
- }
-
- void inset(const screen& child)
- {
- the_picture().the_canvas.paste(child, child.bl(), child.tr());
- }
-
- void inlay(const screen& child, const P& loc)
- {
- const std::string units(the_picture().the_unitlength.units());
- const double scale(length("1pt").to(units).magnitude());
- double H(active_screen()->h_size()/the_picture().the_page.h_size());
- double V(active_screen()->v_size()/the_picture().the_page.v_size());
-
- active_screen()->paste(child,
- loc + H*scale*child.bl(),
- loc + V*scale*child.tr());
- }
-
- // interpret stated coord as true pt, the other as Cartesian
- void inlay_vertical(const screen& child, const P& loc)
- {
- const std::string units(the_picture().the_unitlength.units());
- const double scale(length("1pt").to(units).magnitude());
- double V(active_screen()->v_size()/the_picture().the_page.v_size());
-
- active_screen()->paste(child,
- loc + child.l() + V*scale*child.b(),
- loc + child.r() + V*scale*child.t());
- }
-
- void inlay_horizontal(const screen& child, const P& loc)
- {
- const std::string units(the_picture().the_unitlength.units());
- const double scale(length("1pt").to(units).magnitude());
- double H(active_screen()->h_size()/the_picture().the_page.h_size());
-
- active_screen()->paste(child,
- loc + child.b() + H*scale*child.l(),
- loc + child.t() + H*scale*child.r());
- }
-
- void backing(const Color& col)
- {
- active_screen()->backing(col);
- }
-
- void border(const Color& col, double len)
- {
- active_screen()->border(col, len);
- }
-
- void border(const Color& col, const std::string& len)
- {
- active_screen()->border(col, len);
- }
-
- void backing()
- {
- active_screen()->backing();
- }
-
- void border()
- {
- active_screen()->border();
- }
-
- void write(const std::string& text)
- {
- active_screen()->m_screen->add_tile(verbatim(text));
- }
-
- void pre_write(const std::string& text)
- {
- the_picture().pre_write(text);
- }
-
- void post_write(const std::string& text)
- {
- the_picture().post_write(text);
- }
-
- void eepic_format()
- {
- the_picture().set_format(eepic());
- }
-
- void tikz_format()
- {
- the_picture().set_format(tikz());
- }
-
- void pst_format()
- {
- the_picture().set_format(pst());
- }
-
-
- // write in specified format to named output file
- void print_eepic(const std::string& filename)
- {
- the_picture().print_to(filename, eepic());
- }
-
- void print_tikz(const std::string& filename)
- {
- the_picture().print_to(filename, tikz());
- }
-
- void print_pst(const std::string& filename)
- {
- the_picture().print_to(filename, pst());
- }
-
-
- double pic_units_per_pt()
- {
- return length("1pt").to(the_picture().the_unitlength.units()).magnitude();
- }
-
- // approximate, but correct at true aspect ratio
- double units_per_pic_unit()
- {
- const double H(active_screen()->h_size()/the_picture().the_page.h_size());
- const double V(active_screen()->v_size()/the_picture().the_page.v_size());
-
- return 0.5*(H+V);
- }
-
- double pt_to_screen(double arg)
- {
- return arg*units_per_pic_unit()*pic_units_per_pt();
- }
-
- // initialize deprecated globals
- double x_min(xmin()), x_max(xmax()), x_size(xsize());
- double y_min(ymin()), y_max(ymax()), y_size(ysize());
-
-} // end of namespace
diff --git a/graphics/epix/picture.h b/graphics/epix/picture.h
deleted file mode 100644
index 38258fc02c..0000000000
--- a/graphics/epix/picture.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * picture.h -- ePiX globals functions for picture interface
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.16
- * Last Change: September 11, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_PICTURE
-#define EPIX_PICTURE
-
-#include <string>
-
-namespace ePiX {
-
- class Color;
- class P;
- class picture_data;
- class screen;
-
- // "global" references
- picture_data& the_picture();
-
- double& xmin();
- double& xmax();
- double& xsize();
-
- double& ymin();
- double& ymax();
- double& ysize();
-
- double& tix();
-
- // preferred initialization functions
- // corners and dimensions, e.g. "4in x 15cm" or "4 x 6in"
- // (width units take precedence, dimension string must be passed by value)
- void picture(const P& arg1, const P& arg2, std::string);
-
- // same syntax as for picture dimensions
- void offset(std::string);
-
- //// Old global functions for manipulating the page markup region ////
- void bounding_box(const P&, const P&);
-
- void picture(double, double);
- void picture(const P&);
-
- void offset(double hoff, double voff);
- void offset(const P& arg);
-
- void unitlength(const std::string& units);
-
- // activate default screen
- void begin();
- // write the output file
- void end_picture();
-
- //// New global functions ////
- // the_picture().the_canvas
- screen& canvas();
-
- // specify active screen; pass non-const ref only to assign/compare pointer
- void activate(screen&);
- void deactivate(screen&);
-
- // add active or specified screen to the_picture
- void import();
- void inset(const P& sw, const P& ne);
-
- void import(const screen& child);
- void inset(const screen& child, const P& sw, const P& ne);
-
- void inset(const screen& child); // use child's corners
-
- // interpret child's coordinates as true pt on the page,
- // place origin at P
- void inlay(const screen& child, const P& loc);
-
- // interpret stated coord as true pt, the other as Cartesian
- void inlay_vertical(const screen& child, const P& loc);
- void inlay_horizontal(const screen& child, const P& loc);
-
- // set decorations on active screen
- void backing(const Color&);
- void border(const Color&, double); // width in pt
- void border(const Color&, const std::string&);
-
- void backing(); // use current fill style
- void border(); // use current line pen
-
- // write verbatim string to output file
- void write(const std::string&);
-
- void pre_write(const std::string&); // before picture header
- void post_write(const std::string&); // after picture footer
-
- // set output format
- void eepic_format();
- // void mp_format();
- void tikz_format();
- void pst_format();
-
- // write in specified format to named output file
- void print_eepic(const std::string& filename);
- // void print_mp(const std::string& filename);
- void print_tikz(const std::string& filename);
- void print_pst(const std::string& filename);
-
- // allow user to override in-file format request on the command line
- inline void end()
- {
-#ifdef EPIX_FMT_PSTRICKS
- pst_format();
-#else
-#ifdef EPIX_FMT_TIKZ
- tikz_format();
-#else
-#ifdef EPIX_FMT_EEPIC
- eepic_format();
-#endif /* EPIX_FMT_EEPIC */
-#endif /* EPIX_FMT_TIKZ */
-#endif /* EPIX_FMT_PSTRICKS */
- end_picture();
- }
-
- // for implementors of true-size elements
- double pic_units_per_pt(); // exact
- double units_per_pic_unit(); // approximate, exact at true aspect ratio
- double pt_to_screen(double); // true length to screen length
-
- ////////////////////////////////////////////////////////////////
- //// ////
- //// DEPRECATED global variables required for backward ////
- //// compatibility. Will be removed in a future release. ////
- //// Use reference functions xmin() et. al. ////
- //// ////
- ////////////////////////////////////////////////////////////////
-
- // bounding_box corners and dimensions
- extern double x_min, x_max, x_size, y_min, y_max, y_size;
-
-} // end of namespace
-
-#endif /* EPIX_PICTURE */
diff --git a/graphics/epix/picture_data.cc b/graphics/epix/picture_data.cc
deleted file mode 100644
index a16c0552b8..0000000000
--- a/graphics/epix/picture_data.cc
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * picture_data.cc -- ePiX::picture implementation class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 14, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <iostream>
-#include <fstream>
-#include <sstream>
-
-#include "errors.h"
-#include "utils.h"
-#include "Color.h"
-
-#include "verbatim.h"
-
-#include "format.h"
-#include "eepic.h" // default format
-#include "picture.h"
-
-#include "screen_data.h"
-#include "picture_data.h"
-
-namespace ePiX {
-
- picture_data::picture_data()
- : m_format(new eepic()), m_pallet() { }
-
-
- picture_data::picture_data(const picture_data& pd)
- : the_unitlength(pd.the_unitlength),
- the_hoffset(pd.the_hoffset), the_voffset(pd.the_voffset),
- the_canvas(pd.the_canvas), the_page(pd.the_page),
- m_format(pd.m_format->clone()), m_pallet(pd.m_pallet),
- m_pre_writes(pd.m_pre_writes), m_post_writes(pd.m_post_writes) { }
-
-
- picture_data& picture_data::operator= (const picture_data& pd)
- {
- if (this != &pd)
- {
- format* tmp_fmt(pd.m_format->clone());
-
- // okay, safe to muck with our data
- the_unitlength = pd.the_unitlength;
- the_hoffset = pd.the_hoffset;
- the_voffset = pd.the_voffset;
-
- the_canvas = pd.the_canvas;
- the_page = pd.the_page;
-
- delete m_format;
- m_format = tmp_fmt;
-
- m_pallet = pd.m_pallet;
-
- m_pre_writes = pd.m_pre_writes;
- m_post_writes = pd.m_post_writes;
- }
-
- return *this;
- } // end of copy assignment
-
- picture_data::~picture_data()
- {
- delete m_format;
- }
-
-
- picture_data& picture_data::add_to_pallet(const Color& col)
- {
- if (!col.is_unset())
- m_pallet.insert(col);
- return *this;
- }
-
- void picture_data::set_format(const format& fmt)
- {
- m_format = fmt.clone();
- }
-
- void picture_data::print()
- {
- print_to(*m_format);
- }
-
- void picture_data::print_to(const format& fmt)
- {
- the_page.clear();
- the_page.paste(the_canvas);
-
- const pair offset(the_hoffset.magnitude(), the_voffset.magnitude());
-
- std::cout << fmt.file_comments(the_unitlength.units(),
- the_hoffset, the_voffset,
- xmin(), xmax(), ymin(), ymax(),
- the_page.h_size(), the_page.v_size());
-
- for (std::list<verbatim>::const_iterator p = m_pre_writes.begin();
- p != m_pre_writes.end(); ++p)
- std::cout << (*p).print_to(fmt, the_unitlength.units());
-
- // the_page.br() = (0,0), so tr() is size
- std::cout << fmt.pic_header(the_page.tr(), offset,
- m_pallet, the_unitlength.units())
-
- << the_page.m_screen->print_to(fmt, the_unitlength)
-
- << fmt.pic_footer();
-
- for (std::list<verbatim>::const_iterator p = m_post_writes.begin();
- p != m_post_writes.end(); ++p)
- std::cout << (*p).print_to(fmt, the_unitlength.units());
- }
-
- void picture_data::print_to(const std::string& filename, const format& fmt)
- {
- const char* fn(filename.c_str());
-
- std::ofstream output(fn);
- if (!output)
- {
- epix_warning("Cannot open file " + filename);
- return;
- }
-
- // else
- the_page.clear();
- the_page.paste(the_canvas);
-
- const pair offset(the_hoffset.magnitude(), the_voffset.magnitude());
-
- output << fmt.file_comments(the_unitlength.units(),
- the_hoffset, the_voffset,
- xmin(), xmax(), ymin(), ymax(),
- the_page.h_size(), the_page.v_size());
-
- for (std::list<verbatim>::const_iterator p = m_pre_writes.begin();
- p != m_pre_writes.end(); ++p)
- output << (*p).print_to(fmt, the_unitlength.units());
-
- // the_page.br() = (0,0), so tr() is size
- output << fmt.pic_header(the_page.tr(), offset,
- m_pallet, the_unitlength.units())
-
- << the_page.m_screen->print_to(fmt, the_unitlength)
-
- << fmt.pic_footer();
-
- for (std::list<verbatim>::const_iterator p = m_post_writes.begin();
- p != m_post_writes.end(); ++p)
- output << (*p).print_to(fmt, the_unitlength.units());
-
- output.close();
- }
-
- void picture_data::pre_write(const std::string& text)
- {
- m_pre_writes.push_back(verbatim(text));
- }
-
- void picture_data::post_write(const std::string& text)
- {
- m_post_writes.push_back(verbatim(text));
- }
-} // end of namespace
diff --git a/graphics/epix/picture_data.h b/graphics/epix/picture_data.h
deleted file mode 100644
index 518dbb966b..0000000000
--- a/graphics/epix/picture_data.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * picture_data.h -- ePiX::picture implementation class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.7
- * Last Change: July 14, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * The picture_data class was designed with three primary goals:
- *
- * (i) Encapsulate state data formerly scattered (and inconsistently
- * structured) through multiple files,
- *
- * (ii) Provide some of the flexibility of building a scene in memory
- * instead of writing data immediately to the output,
- *
- * (iii) Ensure compatibility with existing syntax.
- *
- * A picture_data comprises two screens (canvas -- the bounding_box, and
- * page -- the picture box), unitlength and offsets, state data
- * (clip_box; angle units; styles for labels, painting, and arrowheads),
- * and a set of colors so that color dclarations in the output file can
- * be made using named colors.
- *
- * Dozens of global and member functions need to access and modify
- * the_picture(). Instead of making these functions friends, our data
- * (except for the color pallet) are public. Under the circumstances,
- * this seemed the Path of Least Evil.
- */
-#ifndef EPIX_PICTURE_DATA
-#define EPIX_PICTURE_DATA
-
-#include <string>
-#include <list>
-#include <set>
-
-#include "verbatim.h"
-
-#include "length.h"
-#include "Color.h"
-#include "screen.h"
-
-namespace ePiX {
-
- class format;
-
- class picture_data {
- public:
- // rely on members' default constructors
- picture_data();
-
- picture_data(const picture_data&);
- picture_data& operator= (const picture_data&);
- ~picture_data();
-
- picture_data& add_to_pallet(const Color&);
-
- void set_format(const format&);
-
- // output requires knowledge of unitlength; all other ops handled by data
- void print();
- void print_to(const format&);
- void print_to(const std::string& filename, const format&);
-
- void pre_write(const std::string&);
- void post_write(const std::string&);
-
- //// public data (true size, offsets, and screens) ////
- length the_unitlength;
- length the_hoffset, the_voffset;
-
- screen the_canvas;
- screen the_page;
-
-
- private:
- format* m_format;
- std::set<Color> m_pallet;
- // user-specified strings to be written before/after start of picture
- std::list<verbatim> m_pre_writes;
- std::list<verbatim> m_post_writes;
- }; // end of class picture_data
-
-} // end of namespace
-
-#endif /* EPIX_PICTURE_DATA */
diff --git a/graphics/epix/plane.cc b/graphics/epix/plane.cc
deleted file mode 100644
index 148e81a7e0..0000000000
--- a/graphics/epix/plane.cc
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * plane.cc -- ePiX::Plane class and mathematical operators
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "constants.h"
-#include "errors.h"
-
-#include "curves.h" // for draw()
-
-#include "plane.h"
-
-namespace ePiX {
-
- const double INF(2*EPIX_INFTY);
-
- Plane::Plane(const P& pt, const P& perp)
- : m_pt(pt), m_perp(perp), m_malformed(false)
- {
- double temp(norm(perp));
-
- if (temp < EPIX_EPSILON)
- {
- epix_warning("Degenerate plane normal, using (0,0,1)");
- m_perp=E_3;
- }
-
- else
- m_perp *= 1.0/temp;
- }
-
- Plane::Plane(const P& p1, const P& p2, const P& p3)
- : m_pt(p1), m_malformed(false)
- {
- P perp((p3-p1)*(p2-p1));
- double norm_perp(norm(perp));
-
- if (norm_perp < EPIX_EPSILON)
- {
- epix_warning("Collinear points in Plane constructor");
- m_malformed = true;
- }
-
- else
- m_perp = (1/norm_perp)*perp;
- }
-
-
- P Plane::pt() const
- {
- return m_pt;
- }
-
- P Plane::perp() const
- {
- return m_perp;
- }
-
- bool Plane::malformed() const
- {
- return m_malformed;
- }
-
- // translate
- Plane& Plane::shift(const P& arg)
- {
- if (!m_malformed)
- m_pt += arg;
- return *this;
- }
-
- Plane& Plane::move_to(const P& arg)
- {
- if (!m_malformed)
- m_pt = arg;
- return *this;
- }
-
- void Plane::draw() const
- {
- if (m_malformed)
- return;
-
- // else
- const P ctr((m_pt|m_perp)*m_perp); // closest point to origin
-
- // construct an orthonormal basis
- P e1(m_perp*E_1);
-
- if (norm(e1) < 0.7) // ~sqrt(0.5)
- e1 = m_perp*E_2;
-
- e1 *= 1.0/norm(e1);
- P e2(m_perp*e1);
-
- // very large rectangle
- quad(ctr + INF*( e1 + e2), ctr + INF*(-e1 + e2),
- ctr + INF*(-e1 - e2), ctr + INF*( e1 - e2));
- }
-
-
- //// global functions ////
- void plane(const P& point, const P& normal)
- {
- Plane pl(point, normal);
- pl.draw();
- }
-
- void plane(const P& p1, const P& p2, const P& p3)
- {
- Plane pl(p1, p2, p3);
- pl.draw();
- }
-} // end of namespace
diff --git a/graphics/epix/plane.h b/graphics/epix/plane.h
deleted file mode 100644
index 637e3e8240..0000000000
--- a/graphics/epix/plane.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * plane.h -- ePiX::Plane class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.17
- * Last Change: September 13, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_PLANE
-#define EPIX_PLANE
-
-#include "triples.h"
-
-namespace ePiX {
-
- class Circle;
- class Plane;
- class Segment;
- class Sphere;
-
- class Plane {
- public:
- Plane(const P& pt=P(0,0,0), const P& perp=E_3);
- Plane(const P&, const P&, const P&);
-
- P pt() const;
- P perp() const;
- bool malformed() const;
-
- // affine operations
- Plane& shift(const P&);
- Plane& move_to(const P&);
-
- void draw() const;
-
- private:
- P m_pt;
- P m_perp; // unit normal
-
- bool m_malformed;
- }; // end of Plane class
-
- void plane(const P& pt=P(0,0,0), const P& perp=E_3);
- void plane(const P&, const P&, const P&);
-
-} // end of namespace
-
-#endif /* EPIX_PLANE */
diff --git a/graphics/epix/plot_algorithms.h b/graphics/epix/plot_algorithms.h
deleted file mode 100644
index 3566915f09..0000000000
--- a/graphics/epix/plot_algorithms.h
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * plot_algorithms.h -- plot function templates, for build use only
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- *
- * Version 1.1.9
- * Last Change: August 01, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides plotting templates, with T a class
- *
- * void plot_map_dom(const T&, const domain&)
- * void plot_map_domlist(const T&, const domain_list&)
- * void plot_function(const T&, double, double, int)
- * void euler_plot(const T&, const P&, double, double, int)
- * P euler_flow(const T&, P start, double, int)
- */
-
-#ifndef EPIX_PLOT_ALGO
-#define EPIX_PLOT_ALGO
-
-#include <cmath>
-#include <list>
-
-#include "constants.h"
-
-#include "triples.h"
-#include "functions.h"
-
-#include "edge_data.h"
-
-#include "paint_style.h"
-
-#include "domain.h"
-#include "path_data.h"
-
-namespace ePiX {
-
- typedef std::list<domain>::const_iterator dolci;
-
- const double INF(EPIX_INFTY);
-
- // Are args endpoints of a plottable edge?
- static bool is_valid(const P& tail, const P& head)
- {
- return tail.is_valid() && head.is_valid();
- }
-
- template<class T> void plot_map_dom(const T& map, const domain& R)
- {
- // only attempt to fill if plotting a curve
- const bool is_curve(R.dim() == 1);
- const bool filling(is_curve && the_paint_style().fill_flag());
-
- // max summation indices
- unsigned int i_max((R.dx1() > 0) ? R.coarse_n1() : 0);
- unsigned int j_max((R.dx2() > 0) ? R.coarse_n2() : 0);
- unsigned int k_max((R.dx3() > 0) ? R.coarse_n3() : 0);
-
- if (R.dx1() > 0) // there's something to draw
- {
- // number of intervals in subdivision
- unsigned int count1(R.fine_n1());
-
- const double st1(R.dx1());
- const double st2(R.step2());
- const double st3(R.step3());
-
- for (unsigned int j=0; j <= j_max; ++j)
- for (unsigned int k=0; k <= k_max; ++k)
- {
- std::list<edge3d> data1;
- const P init(R.corner1() + (j*st2)*E_2 + (k*st3)*E_3);
-
- for (unsigned int i=0; i < count1; ++i)
- {
- P curr(map(init + P(i*st1,0,0)));
- P next(map(init + P((i+1)*st1,0,0)));
- data1.push_back(edge3d(curr, next, is_valid(curr, next)));
- }
-
- // close path if initial and terminal points coincide
- bool closed(is_curve &&
- map(init) == map(init + P(count1*st1,0,0)));
-
- path_data path1(data1, closed && filling, filling);
- path1.draw();
- }
- }
-
- if (R.dx2() > 0)
- {
- unsigned int count2(R.fine_n2());
-
- const double st1(R.step1());
- const double st2(R.dx2());
- const double st3(R.step3());
-
- for (unsigned int i=0; i <= i_max; ++i)
- for (unsigned int k=0; k <= k_max; ++k)
- {
- std::list<edge3d> data2;
- const P init(R.corner1() + (i*st1)*E_1 + (k*st3)*E_3);
-
- for (unsigned int j=0; j < count2; ++j)
- {
- P curr(map(init + P(0,j*st2,0)));
- P next(map(init + P(0,(j+1)*st2,0)));
- data2.push_back(edge3d(curr, next, is_valid(curr, next)));
- }
-
- // close path if initial and terminal points coincide
- bool closed(is_curve &&
- map(init) == map(init + P(0,count2*st2,0)));
-
- path_data path2(data2, closed && filling, filling);
- path2.draw();
- }
- }
-
- if (R.dx3() > 0)
- {
- unsigned int count3(R.fine_n3());
-
- const double st1(R.step1());
- const double st2(R.step2());
- const double st3(R.dx3());
-
- for (unsigned int i=0; i <= i_max; ++i)
- for (unsigned int j=0; j <= j_max; ++j)
- {
- std::list<edge3d> data3;
- const P init(R.corner1() + (i*st1)*E_1 + (j*st2)*E_2);
-
- for (unsigned int k=0; k < count3; ++k)
- {
- P curr(map(init + P(0,0,k*st3)));
- P next(map(init + P(0,0,(k+1)*st3)));
- data3.push_back(edge3d(curr, next, is_valid(curr, next)));
- }
-
- // close path if initial and terminal points coincide
- bool closed(is_curve &&
- map(init) == map(init + P(0,0,count3*st3)));
-
- path_data path3(data3, closed && filling, filling);
- path3.draw();
- }
- }
- }; // end of plot_map_dom
-
- // plot over a list of domains
- template<class T> void plot_map_domlist(const T& map, const domain_list& R)
- {
- for (dolci p=R.m_list.begin(); p != R.m_list.end(); ++p)
- plot_map_dom(map, *p);
- }
-
- // paths
- template<class T>void plot_function(const T& f, double t1, double t2,
- unsigned int n)
- {
- plot_map_dom(f, domain(t1, t2, n));
- }
-
-
- // Solutions of ODE systems
- template<class VF> void euler_plot(const VF& field, P curr,
- double t_min, double t_max,
- unsigned int num_pts)
- {
- std::list<edge3d> data;
-
- const double dt(t_max/(num_pts*EPIX_ITERATIONS));
- const double dseek(t_min/(num_pts*EPIX_ITERATIONS));
-
- if (fabs(t_min/num_pts) > EPIX_EPSILON) // seek beginning of path
- for (unsigned int i=0; i <= num_pts*EPIX_ITERATIONS; ++i)
- curr += dseek*field(curr);
-
- // curr = "start, flowed by t_min"
- P next(curr);
-
- for (unsigned int i=0; i <= num_pts*EPIX_ITERATIONS; ++i)
- {
- next += dt*field(next); // Euler's method
-
- if (i%EPIX_ITERATIONS == 0)
- {
- data.push_back(edge3d(curr, next, is_valid(curr, next)));
- curr = next;
- }
- }
-
- path_data temp(data, false, false);
-
- temp.draw();
- } // end of euler_plot
-
-
- // flow x0 under field for specified time; pass x0 by value
- template<class VF> P euler_flow(const VF& field, P x0,
- double t_max, unsigned int num_pts=0)
- {
- if (num_pts == 0) // use "sensible" default; hardwired constant 4
- num_pts = 4*(1 + (unsigned int)ceil(fabs(t_max)));
-
- const double dt(t_max/(num_pts*EPIX_ITERATIONS));
-
- for (unsigned int i=0; i <= num_pts*EPIX_ITERATIONS; ++i)
- x0 += dt*field(x0);
-
- return x0;
- }
-} // end of namespace
-
-#endif /* EPIX_PLOT_ALGO */
diff --git a/graphics/epix/plots.cc b/graphics/epix/plots.cc
deleted file mode 100644
index 5f619dbe40..0000000000
--- a/graphics/epix/plots.cc
+++ /dev/null
@@ -1,613 +0,0 @@
-/*
- * plots.cc: Plotting functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.0-2
- * Last Change: September 26, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "constants.h"
-#include "errors.h"
-
-#include "triples.h"
-#include "functions.h"
-
-#include "camera.h"
-#include "map.h"
-#include "domain.h"
-
-#include "path.h"
-
-#include "markers.h"
-#include "curves.h"
-
-#include "deriv.h"
-#include "plot_algorithms.h"
-#include "plots.h"
-
-namespace ePiX {
-
- typedef std::list<domain>::const_iterator dolci;
-
- // f:R -> R^3
- void plot(P f(double), double t_min, double t_max, unsigned int num_pts)
- {
- plot_map_dom(path_map(f), domain(t_min, t_max, num_pts));
- }
-
- // f:R -> R x R x R
- void plot(double f1(double), double f2(double), double f3(double),
- double t_min, double t_max, unsigned int num_pts)
- {
- plot_map_dom(column_1var(f1,f2,f3), domain(t_min, t_max, num_pts));
- }
-
- // f:R -> R
- void plot(double f(double), double t_min, double t_max, unsigned int num_pts)
- {
- plot(id, f, zero, t_min, t_max, num_pts);
- }
-
- void plot(const Deriv& f, double t_min, double t_max, unsigned int num_pts)
- {
- plot_map_dom(f, domain(t_min, t_max, num_pts));
- }
-
- void plot(const Integral& f, double t_min, double t_max,
- unsigned int num_pts)
- {
- plot_map_dom(f, domain(t_min, t_max, num_pts));
- }
-
- // f: R -> R x R
- void plot(double f1(double), double f2(double),
- double t_min, double t_max, unsigned int num_pts)
- {
- plot(f1, f2, zero, t_min, t_max, num_pts);
- }
-
- void polarplot (double f(double), double t_min, double t_max,
- unsigned int num_pts)
- {
- plot_map_dom(column_1var(f, id, zero, cylindrical),
- domain(t_min, t_max, num_pts));
- }
-
- // surfaces
- // f:R^2 -> R x R x R
- void plot(double f1(double u1, double u2),
- double f2(double u1, double u2),
- double f3(double u1, double u2),
- const P& min, const P& max, const mesh& coarse, const mesh& fine)
- {
- plot_map_dom(column_2var(f1,f2,f3), domain(min, max, coarse, fine));
- }
-
- void plot(double f1(double u1, double u2),
- double f2(double u1, double u2),
- double f3(double u1, double u2),
- const domain& R)
- {
- plot_map_dom(column_2var(f1,f2,f3), R);
- }
-
- // f:R^2 -> R
- void plot(double f(double u1, double u2),
- const P& p1, const P& p2, const mesh& coarse, const mesh& fine)
- {
- plot(proj1, proj2, f, p1, p2, coarse, fine);
- }
-
- // f:R^2 -> R^3
- void plot(P f(double u1, double u2), const domain& R)
- {
- plot_map_dom(surface_map(f), R);
- }
-
- void plot(P f(double u1, double u2), const domain_list& R)
- {
- surface_map phi(f);
-
- for (dolci p=R.m_list.begin(); p != R.m_list.end(); ++p)
- plot_map_dom(phi, *p);
- }
-
-
- // f:R^3 -> R^3
- void plot(P f(double, double, double), const domain& R)
- {
- plot_map_dom(space_map(f), R);
- }
-
- void plot(P f(double, double, double), const domain_list& R)
- {
- space_map phi(f);
-
- for (dolci p=R.m_list.begin(); p != R.m_list.end(); ++p)
- plot_map_dom(phi, *p);
- }
-
-
- // Derivatives and integrals
- void plot_deriv(double f(double t), double a, double b,
- unsigned int num_pts)
- {
- plot_function(Deriv(f), a, b, num_pts);
- }
-
- void plot_int(double f(double), double a, double b,
- unsigned int num_pts)
- {
- plot_function(Integral(f, a), a, b, num_pts);
- }
-
- void plot_int(double f(double), double x0, double a, double b,
- unsigned int num_pts)
- {
- plot_function(Integral(f, x0), a, b, num_pts);
- }
-
- // tuples of real-valued plot arguments
- void tan_line(double f1(double t), double f2(double t), double t0)
- {
- Line(P(f1(t0), f2(t0)),
- P(f1(t0), f2(t0)) + P(deriv(f1, t0), deriv(f2, t0)));
- }
-
- void tan_line(double f(double t), double t0)
- {
- Line(P(t0, f(t0)), P(t0, f(t0)) + P(1, deriv(f, t0)));
- }
-
- void envelope(double f1(double t), double f2(double t),
- double t_min, double t_max, unsigned int num_pts)
- {
- const double step((t_max - t_min)/num_pts);
- double t(t_min);
-
- for (unsigned int i=0; i <= num_pts; ++i, t += step)
- Line(P(f1(t), f2(t)),
- P(f1(t), f2(t)) + P(deriv(f1, t), deriv(f2, t)));
- }
-
- void envelope(double f(double t), double t_min, double t_max,
- unsigned int num_pts)
- {
- const double step((t_max - t_min)/num_pts);
- double t(t_min);
-
- for (unsigned int i=0; i <= num_pts; ++i, t += step)
- Line(P(t, f(t)), P(t, f(t)) + P(1, deriv(f, t)));
- }
-
- // P-valued plot argument
- void tan_line(P f(double t), double t0)
- {
- Line(f(t0), f(t0) + deriv(f, t0));
- }
-
- void envelope(P f(double t), double t_min, double t_max,
- unsigned int num_pts)
- {
- const double step((t_max - t_min)/num_pts);
- double t(t_min);
-
- for (unsigned int i=0; i <= num_pts; ++i, t += step)
- Line(f(t), f(t) + deriv(f, t));
- }
-
- // Tangent field along parametrized path
- void tan_field(double f1(double), double f2(double), double t_min,
- double t_max, unsigned int num_pts)
- {
- const double step((t_max - t_min)/num_pts);
- double t(t_min);
-
- for (unsigned int i=0; i <= num_pts; ++i, t += step)
- arrow(P(f1(t), f2(t)), P(f1(t), f2(t)) +
- step*P(deriv(f1, t), deriv(f2, t)));
- }
-
- // P-valued plot argument
- void tan_field(P f(double), double t_min, double t_max,
- unsigned int num_pts)
- {
- const double step((t_max - t_min)/num_pts);
- double t(t_min);
-
- for (unsigned int i=0; i <= num_pts; ++i, t += step)
- arrow(f(t), f(t) + step*deriv(f, t));
- }
-
- // Slope, dart, and vector fields
-
- // utility functions
- // vector, dart, and slope fields
- void field_element(const P& tail, const P& head, epix_field_type TYPE,
- double head_scale=1.0)
- {
- switch(TYPE) {
-
- case VECTOR:
- arrow(tail, head, head_scale);
- break;
-
- case DART:
- dart(tail, head);
- break;
-
- case SLOPE:
- line(tail, head, 0, 1);
- break;
-
- default:
- ; // do nothing
- } // end of switch(TYPE)
- } // end of field_element
-
-
- void draw_field(P F(double, double, double), P p, P q,
- unsigned int n1, unsigned int n2,
- epix_field_type TYPE, double scale)
- {
- P diagonal(q-p);
- int perp_count(0);
- P jump1, jump2;
-
- if (fabs(diagonal|E_1) < EPIX_EPSILON)
- {
- ++perp_count;
- jump1 = E_2&diagonal;
- jump2 = E_3&diagonal;
-
- }
- if (fabs(diagonal|E_2) < EPIX_EPSILON)
- {
- ++perp_count;
- jump1 = E_3&diagonal;
- jump2 = E_1&diagonal;
- }
- if (fabs(diagonal|E_3) < EPIX_EPSILON)
- {
- ++perp_count;
- jump1 = E_1&diagonal;
- jump2 = E_2&diagonal;
- }
-
- if (perp_count == 0)
- {
- epix_warning("Projecting corners of vector field plot");
- jump1 = E_1&diagonal;
- jump2 = E_2&diagonal;
- p %= E_3; // project corners to (x1, x2)-plane
- q %= E_3;
- }
-
- // grid line spacing
- jump1 *= 1.0/n1;
- jump2 *= 1.0/n2;
-
- const double d1(norm(jump1));
- const double d2(norm(jump2));
-
- for (unsigned int i=0; i <= n1; ++i)
- for (unsigned int j=0; j <= n2; ++j)
- {
- P base(p + (i*jump1 + j*jump2));
- P vect(F(base.x1(), base.x2(), base.x3()));
-
- if (norm(camera(base+vect) - camera(base)) < EPIX_EPSILON)
- marker(base, BBOX);
-
- else if (TYPE == VECTOR)
- field_element(base, base + vect, VECTOR, scale);
-
- else
- {
- // N.B. May not work if page export bolloxes aspect ratio
- double object_len(norm(camera(base+vect)-camera(base)));
- pair dX(pair(d1, d2));
-
- // Hardwired constant 0.4: Segment 80% of shorter grid length
- double minimum((dX.x1() > dX.x2()) ? 0.4*dX.x2() : 0.4*dX.x1());
-
- if ( object_len > EPIX_EPSILON) // not projected to zero
- vect *= minimum/object_len;
-
- // scale affects length of element, not head size
- field_element(base - scale*vect, base + scale*vect, TYPE);
- }
- }
- } // end of draw_field F(x, y, z)
-
-
- void draw_field(P F(double, double), P p, P q,
- unsigned int n1, unsigned int n2,
- epix_field_type TYPE, double scale)
- {
- P diagonal(q-p);
- P jump1(E_1&diagonal);
- P jump2(E_2&diagonal);
- p %= E_3; // project corners to (x1, x2)-plane
- q %= E_3;
-
- // grid line spacing
- jump1 *= 1.0/n1;
- jump2 *= 1.0/n2;
-
- const double d1(norm(jump1));
- const double d2(norm(jump2));
-
- for (unsigned int i=0; i <= n1; ++i)
- for (unsigned int j=0; j <= n2; ++j)
- {
- P base(p + (i*jump1 + j*jump2));
- P vect(F(base.x1(), base.x2()));
-
- if (norm(camera(base+vect) - camera(base)) < EPIX_EPSILON)
- marker(base, BBOX);
-
- // scale affects head size
- else if (TYPE == VECTOR)
- field_element(base, base + vect, VECTOR, scale);
-
- else
- {
- // see caution above
- double object_len(norm(camera(base+vect)-camera(base)));
- pair dX(pair(d1, d2));
- // Hardwired constant 0.4: Segment 80% of shorter grid length
- double minimum((dX.x1() > dX.x2()) ? 0.4*dX.x2() : 0.4*dX.x1());
- if ( object_len > EPIX_EPSILON) // not projected to zero
- vect *= minimum/object_len;
-
- // scale affects length of element, not head size
- field_element(base - scale*vect, base + scale*vect, TYPE);
- }
- }
- } // end of draw_field F(x, y)
-
-
- // planar fields
- void slope_field(P F(double, double), const P& p, const P& q,
- unsigned int n1, unsigned int n2, double scale)
- {
- draw_field(F, p, q, n1, n2, SLOPE, scale);
- }
-
- void dart_field(P F(double, double), const P& p, const P& q,
- unsigned int n1, unsigned int n2, double scale)
- {
- draw_field(F, p, q, n1, n2, DART, scale);
- }
-
- void vector_field(P F(double, double), const P& p, const P& q,
- unsigned int n1, unsigned int n2, double scale)
- {
- draw_field(F, p, q, n1, n2, VECTOR, scale);
- }
-
- void slope_field(P F(double, double), const domain& R, double scale)
- {
- draw_field(F, R.corner1(), R.corner2(),
- R.coarse_n1(), R.coarse_n2(),
- SLOPE, scale);
- }
-
- void dart_field(P F(double, double), const domain& R, double scale)
- {
- draw_field(F, R.corner1(), R.corner2(),
- R.coarse_n1(), R.coarse_n2(),
- DART, scale);
- }
-
- void vector_field(P F(double, double), const domain& R, double scale)
- {
- draw_field(F, R.corner1(), R.corner2(),
- R.coarse_n1(), R.coarse_n2(),
- VECTOR, scale);
- }
-
- // spatial fields
- void slope_field(P F(double, double, double), const P& p, const P& q,
- unsigned int n1, unsigned int n2, double scale)
- {
- draw_field(F, p, q, n1, n2, SLOPE, scale);
- }
-
- void dart_field(P F(double, double, double), const P& p, const P& q,
- unsigned int n1, unsigned int n2, double scale)
- {
- draw_field(F, p, q, n1, n2, DART, scale);
- }
-
- void vector_field(P F(double, double, double), const P& p, const P& q,
- unsigned int n1, unsigned int n2, double scale)
- {
- draw_field(F, p, q, n1, n2, VECTOR, scale);
- }
-
- // spatial fields over a domain
- void slope_field(P F(double, double, double), const domain& R,
- double scale)
- {
- P p(R.corner1()), q(R.corner2());
- double height(q.x3() - p.x3());
- q -= height*E_3; // p.x3() == q.x3()
-
- // horizontal/vertical subdivisions
- unsigned int i_max(R.coarse_n1()), j_max(R.coarse_n2());
- unsigned int k_max((R.dx3() > 0) ? R.coarse_n3() : 0);
- for (unsigned int k = 0; k <= k_max; ++k)
- draw_field(F, p + (k*R.step3())*E_3, q + (k*R.step3())*E_3,
- i_max, j_max, SLOPE, scale);
- }
-
- void dart_field(P F(double, double, double), const domain& R,
- double scale)
- {
- P p(R.corner1()), q(R.corner2());
- double height(q.x3() - p.x3());
- q -= height*E_3; // p.x3() == q.x3()
-
- unsigned int i_max(R.coarse_n1()), j_max(R.coarse_n2());
- unsigned int k_max((R.dx3() > 0) ? R.coarse_n3() : 0);
-
- for (unsigned int k = 0; k <= k_max; ++k)
- draw_field(F, p + (k*R.step3())*E_3, q + (k*R.step3())*E_3,
- i_max, j_max, DART, scale);
- }
-
- void vector_field(P F(double, double, double), const domain& R,
- double scale)
- {
- P p(R.corner1()), q(R.corner2());
- double height(q.x3() - p.x3());
- q -= height*E_3; // p.x3() == q.x3()
-
- unsigned int i_max(R.coarse_n1()), j_max(R.coarse_n2());
- unsigned int k_max((R.dx3() > 0) ? R.coarse_n3() : 0);
-
- for (unsigned int k = 0; k <= k_max; ++k)
- draw_field(F, p + (k*R.step3())*E_3, q + (k*R.step3())*E_3,
- i_max, j_max, VECTOR, scale);
- }
-
- // Solutions of ODE systems
- // start at time 0
- void ode_plot (P F(double, double), const P& start,
- double t_max, unsigned int n)
- {
- euler_plot(surface_map(F), start, 0, t_max, n);
- }
-
- void ode_plot (P F(double, double, double), const P& start,
- double t_max, unsigned int num_pts)
- {
- euler_plot(space_map(F), start, 0, t_max, num_pts);
- }
-
- // arbitrary start time
- void ode_plot (P F(double, double), const P& start,
- double t_min, double t_max, unsigned int num_pts)
- {
- euler_plot(surface_map(F), start, t_min, t_max, num_pts);
- }
-
- void ode_plot (P F(double, double, double), const P& start,
- double t_min, double t_max, unsigned int num_pts)
- {
- euler_plot(space_map(F), start, t_min, t_max, num_pts);
- }
-
-
- // flow x0 under field for specified time
- P flow (P F(double, double), const P& start, double t_max,
- unsigned int n)
- {
- return euler_flow(surface_map(F), start, t_max, n);
- }
-
- P flow (P F(double, double, double), const P& start, double t_max,
- unsigned int n)
- {
- return euler_flow(space_map(F), start, t_max, n);
- }
-
-
- void riemann_sum(double f(double), double a, double b,
- unsigned int n, epix_integral_type TYPE)
- {
- const double dx((b-a)/n);
-
- for (unsigned int i=0; i < n; ++i)
- {
- double x(a + i*dx);
-
- switch (TYPE) {
-
- case LEFT:
- rect(P(x, f(x)), P(x+dx,0));
- break;
-
- case RIGHT:
- rect(P(x, 0), P(x+dx, f(x+dx)));
- break;
-
- case UPPER:
- rect(P(x, 0), P(x+dx, sup(f, x, x+dx)));
- break;
-
- case LOWER:
- rect(P(x, 0), P(x+dx, inf(f, x, x+dx)));
- break;
-
- case TRAP:
- quad(P(x, 0), P(x+dx, 0), P(x+dx, f(x+dx)), P(x, f(x)));
- break;
-
- case MIDPT:
- rect(P(x, 0), P(x+dx, f(x+0.5*dx)));
- break;
-
- default:
- ;
-
- } // end of switch(TYPE)
- }
- } // end of riemann_sum()
-
-
- // Jay Belanger's shaded plotting functions -- December 1, 2002
- // Re-implemented using paths, July 16, 2004
- // " for Version 1.2, June 2007
- void shadeplot(double f1(double), double f2(double),
- double t_min, double t_max, unsigned int num_pts)
- {
- // build contour
- path boundary(f1, t_min, t_max, num_pts);
- path graph2(f2, t_min, t_max, num_pts);
-
- path right_edge(P(t_max, f1(t_max)), P(t_max, f2(t_max)));
- path left_edge(P(t_min, f2(t_min)), P(t_min, f1(t_min)));
-
- boundary += right_edge;
- boundary -= graph2;
- boundary += left_edge;
-
- boundary.close().fill();
- boundary.draw();
- } // end of shadeplot
-
- void shadeplot(double f(double), double t_min, double t_max,
- unsigned int num_pts)
- {
- shadeplot(f, zero, t_min, t_max, num_pts);
- }
-} // end of namespace
diff --git a/graphics/epix/plots.h b/graphics/epix/plots.h
deleted file mode 100644
index 05069c838b..0000000000
--- a/graphics/epix/plots.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * plots.h -- parametrized plotting algorithms
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- *
- * Version 1.0.23
- * Last Change: January 13, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_PLOTS
-#define EPIX_PLOTS
-
-#include "enums.h"
-
-namespace ePiX {
-
- class domain;
- class domain_list;
- class Deriv;
- class Integral;
- class P;
-
- //// paths ////
- // f:R -> R^3
- void plot (P f(double), double t_min, double t_max, unsigned int n);
-
- // f:R -> R x R x R
- void plot (double f1(double), double f2(double), double f3(double),
- double t_min, double t_max, unsigned int n);
-
- // f:R -> R
- void plot (double f(double), double t_min, double t_max, unsigned int n);
- void plot (const Deriv&, double t_min, double t_max, unsigned int n);
- void plot (const Integral&, double t_min, double t_max, unsigned int n);
-
- // f: R -> R x R
- void plot (double f1(double), double f2(double),
- double t_min, double t_max, unsigned int n);
-
- void polarplot (double f(double), double t_min, double t_max, unsigned int);
-
- //// surfaces ////
- // f:R^2 -> R x R x R
- void plot(double f1(double u1, double u2),
- double f2(double u1, double u2),
- double f3(double u1, double u2),
- const P& min, const P& max, const mesh& coarse, const mesh& fine);
-
- void plot(double f1(double u1, double u2),
- double f2(double u1, double u2),
- double f3(double u1, double u2),
- const domain& R);
-
- // f:R^2 -> R
- void plot(double f(double u1, double u2),
- const P& p1, const P& p2, const mesh& coarse, const mesh& fine);
-
- // f:R^2 -> R^3
- void plot(P f(double, double), const domain&);
- void plot(P f(double, double), const domain_list&);
-
- // f:R^3 -> R^3
- void plot(P f(double, double, double), const domain&);
- void plot(P f(double, double, double), const domain_list&);
-
-
- // Derivatives and integrals
- void plot_deriv(double f(double), double a, double b, unsigned int n);
-
- void plot_int(double f(double), double a, double b, unsigned int n);
-
- void plot_int(double f(double), double x0, double a, double b, unsigned int);
-
- void tan_line(double f1(double), double f2(double), double t0);
- void tan_line(double f(double), double t0);
- void tan_line(P f(double), double t0);
-
- void envelope(double f1(double), double f2(double),
- double, double, unsigned int);
- void envelope(double f(double), double, double, unsigned int);
- void envelope(P f(double), double, double, unsigned int);
-
- void tan_field(double f1(double), double f2(double), double, double,
- unsigned int);
- void tan_field(P f(double), double, double, unsigned int);
-
-
- // Slope, dart, and vector fields
- // For slope and dart fields, the optional scale argument affects the
- // (constant) drawn length of field elements. For vector fields, elements
- // are drawn at true length, and "scale" affects the arrowhead size.
-
- // planar fields
- void slope_field(P F(double, double), const P& p, const P& q,
- unsigned int, unsigned int, double scale=1.0);
- void dart_field(P F(double, double), const P& p, const P& q,
- unsigned int, unsigned int, double scale=1.0);
- void vector_field(P F(double, double), const P& p, const P& q,
- unsigned int, unsigned int, double scale=1.0);
-
- void slope_field(P F(double, double), const domain& R,
- double scale=1.0);
- void dart_field(P F(double, double), const domain& R,
- double scale=1.0);
- void vector_field(P F(double, double), const domain& R,
- double scale=1.0);
-
- // spatial fields
- void slope_field(P F(double, double, double), const P&, const P&,
- unsigned int, unsigned int, double scale=1.0);
- void dart_field(P F(double, double, double), const P&, const P&,
- unsigned int, unsigned int, double scale=1.0);
- void vector_field(P F(double, double, double), const P&, const P&,
- unsigned int, unsigned int, double scale=1.0);
-
- // spatial fields over a (3-D) domain
- void slope_field(P F(double, double, double), const domain&,
- double scale=1.0);
- void dart_field(P F(double, double, double), const domain&,
- double scale=1.0);
- void vector_field(P F(double, double, double), const domain&,
- double scale=1.0);
-
-
- // Solutions of ODE systems
-
- // start at time 0
- void ode_plot (P F(double, double),
- const P& start, double t_max, unsigned int);
-
- void ode_plot (P F(double, double, double),
- const P& start, double t_max, unsigned int);
-
- // arbitrary start time
- void ode_plot (P F(double, double),
- const P& start, double t_min, double t_max, unsigned int);
-
- void ode_plot (P F(double, double, double),
- const P& start, double t_min, double t_max, unsigned int);
-
- // flow x0 under field for specified time
- P flow (P F(double, double), const P& start, double t_max, unsigned int n=0);
- P flow (P F(double, double, double),
- const P& start, double t_max, unsigned int n = 0);
-
- void riemann_sum(double f(double), double a, double b,
- unsigned int n, epix_integral_type TYPE);
-
-
- // Jay Belanger's shaded plot functions -- December 1, 2002
- void shadeplot(double f1(double), double f2(double), double, double,
- unsigned int);
- void shadeplot(double f(double), double t_min, double t_max, unsigned int);
-
- void blackplot(double f1(double), double f2(double),
- double t_min, double t_max, unsigned int);
-
- void blackplot(double f(double), double t_min, double t_max, unsigned int);
-
- void whiteplot(double f1(double), double f2(double),
- double t_min, double t_max, unsigned int);
-
- void whiteplot(double f(double), double t_min, double t_max, unsigned int);
-
-
- // wiremesh surface plotting
- void plot(P Phi(double, double),
- const P&, const P&, const mesh& N, const mesh& num_pts);
-
- /*
- void clipplot(P Phi(double, double),
- const P&, const P&, const mesh& N, const mesh& num_pts);
-
- void cropplot(P Phi(double, double),
- const P&, const P&, const mesh& N, const mesh& num_pts);
- */
-
-} // end of namespace
-
-#endif /* EPIX_PLOTS */
diff --git a/graphics/epix/pst.cc b/graphics/epix/pst.cc
deleted file mode 100644
index c10c6ec08b..0000000000
--- a/graphics/epix/pst.cc
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * pst.cc -- ePiX's pstricks output format
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.20
- * Last Change: September 19, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <list>
-
-#include <string>
-#include <sstream>
-
-#include <set>
-
-#include "constants.h"
-
-#include "functions.h"
-
-#include "pairs.h"
-#include "edge_data.h"
-
-#include "Color.h"
-
-#include "path_style.h"
-#include "pen_data.h"
-
-#include "format.h"
-#include "pst.h"
-
-namespace ePiX {
-
- pst::pst()
- : m_fill(Neutral()), m_line(Black()), m_base(Neutral()),
- m_lwidth(PLAIN_WIDTH), m_bwidth("0pt") { }
-
- pst* pst::clone() const
- {
- return new pst(*this);
- }
-
- std::string pst::print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fc,
- const pen_data& line,
- const std::string& len) const
- {
- std::stringstream obuf;
-
- // compute attribute string
- std::string attribs("[fillstyle=");
-
- if (fc.is_unset())
- attribs += "none";
- else
- attribs += "solid";
-
- attribs += "]";
-
- obuf << set_fill_state(fc) << set_pen_state(line); // side effects
- obuf << print_paths(edges, offset, attribs, len);
-
- return obuf.str();
- }
-
-
- std::string pst::print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line,
- const pen_data& base,
- const path_state& style,
- const std::string& len) const
- {
- std::stringstream value, obuf;
-
- obuf << set_pen_state(line);
-
- // update base
- m_base = base.color();
- m_bwidth = base.width();
-
- std::string attribs;
-
- // Generate string to pass as third argument to print_paths if need border
- if (m_lwidth < m_bwidth && !m_base.is_unset())
- {
- length tmp_b(m_bwidth), tmp_l(m_lwidth);
- tmp_b += (tmp_l *= -1);
- tmp_b *= 0.5;
-
- std::stringstream bordbuf;
- bordbuf << "[border=" << print(tmp_b)
- << ",bordercolor=" << m_base.name() << "]";
-
- attribs = bordbuf.str();
- }
-
- if (style.is_solid())
- obuf << print_paths(edges, offset, attribs, len);
-
- else // not solid
- {
- // Use base to draw solid underlayer, line to draw top layer.
- // Attempt to adjust PST pen alignment; m_bwidth too large.
- if (m_lwidth < m_bwidth && !base.color().is_unset())
- obuf << set_pen_state(pen_data(base.color(),
- 0.5*(m_bwidth + m_lwidth)))
- << print_paths(edges, offset, attribs, len);
-
- obuf << format::print_line(edges, offset, line, style, "", len);
- }
-
- return obuf.str();
- }
-
-
- std::string pst::print_color(const std::string& model,
- const std::string& name,
- double d1, double d2,
- double d3) const
- {
- // PSTricks declaration
- std::stringstream obuf;
- obuf << "\\new" << model;
- if (model == "cmy")
- obuf << "k";
-
- obuf << "color{" << name << "}";
-
- if (model == "cmy")
- {
- double bk(min(min(d1,d2),d3));
-
- obuf << "{"
- << d1-bk << " " << d2-bk << " " << d3-bk << " " << bk
- << "}%" << std::endl;
- }
-
- else
- obuf << "{"
- << d1 << " " << d2 << " " << d3
- << "}%" << std::endl;
-
- return obuf.str();
- }
-
- std::string pst::print_color(const std::string& model,
- const std::string& name,
- double d1, double d2,
- double d3, double d4) const
- {
- // model presumably "cmyk"
- std::stringstream obuf;
- obuf << "\\newcmykcolor{" << name << "}{"
- << d1 << " " << d2 << " " << d3 << " " << d4 << "}%"
- << std::endl;
-
- return obuf.str();
- }
-
-
- std::string pst::print_comment(const std::string& msg) const
- {
- std::stringstream obuf;
- obuf << "%% " << msg << std::endl;
-
- return obuf.str();
- }
-
- // verbatim text, %-protected newline
- std::string pst::print_verbatim(const std::string& msg) const
- {
- std::stringstream obuf;
- obuf << msg << "%" << std::endl;
-
- return obuf.str();
- }
-
- void pst::reset_state() const
- {
- m_fill = Neutral();
- m_line = Neutral();
- m_base = Neutral();
-
- m_lwidth = length(0);
- m_bwidth = length(0);
- }
-
-
- //// private member functions ////
- std::string pst::start_picture(const pair& sz, const pair& offset) const
- {
- std::stringstream obuf;
- obuf << "\\begin{pspicture}"
- << format::print(sz) << format::print(-offset) << "%" << std::endl;
-
- return obuf.str();
- }
-
- std::string pst::end_picture() const
- {
- std::stringstream obuf;
- obuf << "\\end{pspicture}%" << std::endl;
- return obuf.str();
- }
-
- std::string pst::set_unitlength(const std::string& len) const
- {
- std::stringstream obuf;
-
- obuf << "\\psset{unit=1" << len
- << ",linewidth=" << print(length(PLAIN_WIDTH)) << "}%"
- << std::endl;
-
- return obuf.str();
- }
-
-
- std::string pst::usepackages() const
- {
- return "usepackages pstricks";
- }
-
- std::string pst::start_open_path(const std::string& attribs) const
- {
- return "\\psline" + attribs;
- }
-
- std::string pst::end_open_path(const std::string& attribs) const
- {
- std::stringstream obuf;
- obuf << std::endl;
- return obuf.str();
- }
-
- std::string pst::start_closed_path(const std::string& attribs) const
- {
- return "\\pspolygon" + attribs;
- }
-
- std::string pst::end_closed_path(const std::string& attribs) const
- {
- std::stringstream obuf;
- obuf << std::endl;
- return obuf.str();
- }
-
- std::string pst::set_fill_state(const Color& col) const
- {
- if (m_fill == col)
- return "";
-
- // else
- m_fill = col;
-
- std::stringstream obuf;
- obuf << "\\psset{";
-
- // filled paths set fillstyle
- if (m_fill.is_unset())
- obuf << "fillstyle=none";
-
- else
- obuf << "fillcolor=" << m_fill.name();
-
- obuf << "}%" << std::endl;
-
- return obuf.str();
- }
-
- std::string pst::set_pen_state(const pen_data& pen) const
- {
- std::stringstream obuf;
-
- if (pen.color().is_unset())
- {
- m_lwidth=length(0);
- return "\\psset{linewidth=0pt}";
- }
-
- // else
- bool change_width(m_lwidth != pen.width());
- bool change_color(m_line != pen.color());
-
- if (change_width || change_color)
- {
- obuf << "\\psset{";
-
- if (change_width)
- {
- m_lwidth = pen.width();
- obuf << "linewidth=" << m_lwidth.name();
-
- if (change_color) // both true, need separator
- obuf << ",";
- }
-
- if (change_color)
- {
- m_line = pen.color();
- obuf << "linecolor=" << m_line.name();
- }
-
- obuf << "}%" << std::endl;
- }
-
- return obuf.str();
- }
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- std::string pst::put_box(const pair& loc, const std::string& msg) const
- {
- std::stringstream obuf;
- obuf << "\\rput" << print(loc) << "{" << msg << "}" << std::endl;
-
- return obuf.str();
- }
-
- std::string pst::print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const
- {
- std::stringstream obuf;
- obuf << "\\pscircle";
-
- if (fill)
- obuf << "*";
-
- obuf << "[linecolor=" << print(color) << "]" << print(here)
- << "{" << 0.5*diam << "}%" << std::endl;
-
- return obuf.str();
- }
-} // end of namespace
diff --git a/graphics/epix/pst.h b/graphics/epix/pst.h
deleted file mode 100644
index 342bce9573..0000000000
--- a/graphics/epix/pst.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * pst.h -- ePiX's pstricks output format
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 07, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_PST
-#define EPIX_PST
-
-#include <string>
-#include <list>
-#include <set>
-
-#include "Color.h"
-#include "length.h"
-
-#include "edge_data.h"
-#include "format.h"
-
-namespace ePiX {
-
- class path_state;
- class pen_data;
-
- class pst : public format {
- public:
- pst();
-
- pst* clone() const;
-
- std::string print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fill,
- const pen_data& line,
- const std::string& len) const;
-
- std::string print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line,
- const pen_data& base,
- const path_state& style,
- const std::string& len) const;
-
-
- // model, name, densities
- std::string print_color(const std::string&, const std::string&,
- double, double,
- double) const;
-
- std::string print_color(const std::string&, const std::string&,
- double, double,
- double, double) const;
-
-
- // output file comment
- std::string print_comment(const std::string&) const;
-
- std::string print_verbatim(const std::string&) const;
-
- void reset_state() const;
-
- private:
- mutable Color m_fill;
- mutable Color m_line;
- mutable Color m_base;
-
- mutable length m_lwidth;
- mutable length m_bwidth;
-
- // start, end pspicture, set unit and default linewidth
- std::string start_picture(const pair&, const pair&) const;
- std::string end_picture() const;
-
- std::string set_unitlength(const std::string& len) const;
-
- std::string usepackages() const;
-
- // string argument for passing attributes local to this path/loop
- std::string start_open_path(const std::string&) const;
- std::string end_open_path(const std::string&) const;
-
- std::string start_closed_path(const std::string&) const;
- std::string end_closed_path(const std::string&) const;
-
- // print declarations to set state of output format
- std::string set_fill_state(const Color&) const;
- std::string set_pen_state(const pen_data&) const;
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- std::string put_box(const pair&, const std::string&) const;
-
- std::string print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const;
- }; // end of class pst
-} // end of namespace
-
-#endif /* EPIX_PST */
diff --git a/graphics/epix/samples/Makefile.am b/graphics/epix/samples/Makefile.am
deleted file mode 100644
index 46aea1a065..0000000000
--- a/graphics/epix/samples/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-# Makefile.am for ePiX v1.x "samples" directory
-#
-
-XPS := $(wildcard *.xp)
-FLX := $(wildcard *.flx)
-
-CLEANFILES = *~ *.eepic *.eps sample_src.tar sample_src.tar.gz sample-stamp
-
-## Targets ##
-doc_DATA = sample_src.tar.gz
-
-
-# tar up tex, xp, and eepic files
-sample-stamp: $(XPS) $(FLX)
- touch sample-stamp
-
-sample_src.tar.gz: sample-stamp
- tar -cf sample_src.tar $(XPS) $(FLX) \
- README binom.cc lighting.h std_F.cc std_F.h
- gzip -9 sample_src.tar
diff --git a/graphics/epix/samples/Makefile.in b/graphics/epix/samples/Makefile.in
deleted file mode 100644
index 759cd4259f..0000000000
--- a/graphics/epix/samples/Makefile.in
+++ /dev/null
@@ -1,340 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# Makefile.am for ePiX v1.x "samples" directory
-#
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = samples
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(docdir)"
-docDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(doc_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BASH_PATH = @BASH_PATH@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENABLE_EPIX_EL_FALSE = @ENABLE_EPIX_EL_FALSE@
-ENABLE_EPIX_EL_TRUE = @ENABLE_EPIX_EL_TRUE@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-RUNTIME_COMPILER = @RUNTIME_COMPILER@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-XPS := $(wildcard *.xp)
-FLX := $(wildcard *.flx)
-CLEANFILES = *~ *.eepic *.eps sample_src.tar sample_src.tar.gz sample-stamp
-doc_DATA = sample_src.tar.gz
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu samples/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu samples/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-uninstall-info-am:
-install-docDATA: $(doc_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- @list='$(doc_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
- $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- done
-
-uninstall-docDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(doc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
- rm -f "$(DESTDIR)$(docdir)/$$f"; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(docdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-docDATA
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-docDATA uninstall-info-am
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am \
- install-docDATA install-exec install-exec-am install-info \
- install-info-am install-man install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
- pdf-am ps ps-am uninstall uninstall-am uninstall-docDATA \
- uninstall-info-am
-
-
-# tar up tex, xp, and eepic files
-sample-stamp: $(XPS) $(FLX)
- touch sample-stamp
-
-sample_src.tar.gz: sample-stamp
- tar -cf sample_src.tar $(XPS) $(FLX) \
- README binom.cc lighting.h std_F.cc std_F.h
- gzip -9 sample_src.tar
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/graphics/epix/samples/README b/graphics/epix/samples/README
deleted file mode 100644
index b51bd10d3c..0000000000
--- a/graphics/epix/samples/README
+++ /dev/null
@@ -1,258 +0,0 @@
-ePiX -- samples/README
-
-Last Change: September 22, 2007
-
-This directory contains sample files. Files with extension ".flx" may
-be compiled like xp files with epix or elaps, or converted to gif or
-mng animations with flix.
-
-
-artifacts.xp
- Interaction between coarse and fine meshes in shade surface plotting.
-
-binom.cc:
- Generates pseudo-random data for histogram.xp
-
-bowl.xp:
- Quasi-realistic colored surface shading.
-
-butterfly.xp:
- A Thom catastrophe graph.
-
-calculus.xp:
- Plotting derivatives and definite integrals.
-
-clipping.xp:
- Clipping, shaded surfaces, and fake transparency.
-
-color_sep.xp:
- Color separation.
-
-conic.xp:
- Envelopes and tangent lines; projective equivalence of a parabola
- with a circle.
-
-contour.xp:
- Building a path from sub-paths.
-
-coord_tricks.xp:
- Using page layout to achieve broken axes.
-
-cropplot.xp
- Graphing functions with singularities.
-
-cube.flx:
- Stereoscopic (3-D glasses) movie of a rotating cube.
-
-dataplot.xp:
- Scatter plots, histograms, and page layout.
-
-decorate.xp:
- Decorated shaded surface (see file for compiling).
-
-demoivre.xp:
- Loops; a geometric proof of deMoivre's formula.
-
-densityplot.xp:
- A gray-shaded interference pattern.
-
-dipole.xp:
- Plotting flow lines and isobars.
-
-denom.xp:
- Loops and gcd; Thomae's function with discontinuity set Q.
-
-extract.xp:
- A magnified inset using screen::extract; an unexpected tangent line.
-
-geomsum.xp:
- Loops and color filling.
-
-golden_rect.xp:
- Simple use of variables; constructing a golden rectangle.
-
-helicoid.flx:
- Isometric deformation of a catenoid to a helicoid.
-
-hello.xp:
- My First Figure, from the manual.
-
-histogram.xp:
- Histograms of simulated coin tosses (data from binom.cc).
-
-house.flx:
- Color semantics; sun setting on a simple house.
-
-hyperboloid.xp:
- Clipping, shaded surfaces; two families of rulings on a hyperboloid.
-
-inverse.xp:
- Screen affine operations; inverse functions.
-
-koch.xp:
- The von Koch snowflake fractal.
-
-label_debug.xp:
- Format debugging tests for labels, draws 32 attribute combinations.
-
-layout2.xp:
- Page layout; flow lines of a planar vector field.
-
-layout.xp:
- Page layout; six views of the square root Riemann surface.
-
-legend.xp:
- Axes and legends; Taylor polynomials of sin x.
-
-levelset.xp:
- Clipping and plotting; manual level curves on a saddle.
-
-levelset2.xp:
- "Advanced" clipping; level bands on a monkey saddle.
-
-levelset3.xp:
- Clipping and legends; flat-shaded level bands wth matching legend.
-
-lissajous.xp:
- A Lissajous figure with arrows.
-
-lighting.h: Classes for lighting effects and color-shaded surfaces.
- (lighting.flx illustrates use.)
-
-line_debug.xp:
- Format debugging tests for paths, draws 32 attribute combinations.
-
-log.xp:
- Object hiding with paths and surfaces; the Riemann surface of log.
-
-lorenz.xp:
- Page layout, ode_plot; the Lorenz attractor and its 3-D vector field.
-
-medians.xp:
- Euclidean geometry; medians and altitudes of a triangle.
-
-minkowski.xp:
- A longitudinal slice of Minkowski space R^{2,1}.
-
-mirrorball.flx:
- The circle class and intersections; 3-D stereographic movie.
-
-newton.xp:
- Loops; root location by Newton's method.
-
-objects.xp:
- Simple geometric objects; 2-D landscape.
-
-oscillator.xp:
- Graphing, user-defined elements, and page layout.
-
-parabola.xp:
- A basic plot.
-
-pascal.xp:
- Intersection operators; Pascal's theorem in projective geometry.
-
-pendulum.flx:
- Phase diagram of an undamped pendulum.
-
-planes.xp:
- Manipulating objects, clipping; a stack of plane sections of a cube.
-
-plotting2.xp:
- Surface plotting in PSTricks; from the manual.
-
-plotting3.xp:
- Loops and color control; from the manual.
-
-plotting.xp:
- A basic plot; from the manual.
-
-polar.xp:
- Polar plotting.
-
-pole.xp:
- Clipping a plot; the real part of a first-order pole.
-
-polyhedra.xp:
- Spherical regular polyhedra. Compilation controlled with
- pre-processor flags, e.g., "epix -DCOLOR -DDODECA polyhedra.xp".
-
-R_demo.xp:
- Gaussians from the R demo.
-
-riemann.flx:
- Rotating the Riemann surface of sqrt(z) in R^4.
-
-S2_harmonics.xp:
- Domain-dependent surface shading (color function depends on two
- variables), page layout; the spherical harmonic Y_3^0. (Compile with
- "epix -DY20 S2_harmonics.xp" for Y_2^0.)
-
-saddle.xp:
- A quadratic saddle using "surface" capabilities.
-
-semicirc.xp:
- A simple figure using variables and a function for organization.
-
-shadeplot.xp:
- Shading regions enclosed by graphs; the fundamental theorem of calculus.
-
-slopefield.xp:
- A slope field and flow lines.
-
-sphere.xp:
- Plotting curves and latitudes/longitudes; loxodromes.
-
-spherical.xp:
- Scenery (multiple shaded surfaces); spherical coordinates.
-
-sqrt.xp:
- Domains and selective plotting; the Riemann surface of sqrt(z).
-
-sqrt2.xp:
- Domains, selective plotting, and change of style in a single plot.
-
-std_F.cc, std_F.h:
- Extensively-commented library code for depicting 2-D affine maps.
-
-std_F.xp:
- Sample file illustrating the use of external libraries. Contains
- instructions on building a library from std_F.cc.
-
-steiner.flx:
- Steiner's Roman surface, rotating.
-
-steiner2.flx:
- Steiner's Roman surface sliced, with slice direction rotating.
-
-surface_shade.xp:
- Position-dependent surface shading. (Color function depends on three
- variables.)
-
-symmetries.xp:
- Affine maps and layout; the symmetry group S_3 acting on a regular
- hexagon.
-
-tori.xp:
- Clipping and cropping, page layout.
-
-torus.xp:
- Domains and selective plotting.
-
-trig.flx:
- Trigonometric functions.
-
-twisted_cubic.xp:
- Page layout; a crossed-eyes stereogram of the twisted cubic.
-
-uppersum.xp:
- Riemann sums.
-
-vfield.xp:
- 3-D vector field plotting.
-
-weierstrass.xp:
- Loops; a Weierstrass nowhere-differentiable function.
-
-wheel.xp:
- Page layout; a cycloid at successive times.
diff --git a/graphics/epix/samples/R_demo.xp b/graphics/epix/samples/R_demo.xp
deleted file mode 100644
index 183f74b988..0000000000
--- a/graphics/epix/samples/R_demo.xp
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double mult(1.0/sqrt(M_PI));
-
-double f(double x)
-{
- return 0.4*exp(-mult*x*x);
-}
-
-double g(double x)
-{
- return f(x-3);
-}
-
-double PAD_X(0.4), PAD_Y(0.01);
-
-int main() {
- picture(P(-3-PAD_X, -PAD_Y), P(8+PAD_X, 0.4+PAD_Y), "5 x 3.5in");
-
- begin();
- border();
-
- legend L;
- L.border(0);
-
- fill(Black(0.2));
- shadeplot(g, 1.96, xmax(), 120);
- L.fill_item("$P(|Z|>1.96, H_1) = 0.85$");
-
- fill(Black(0.8));
- shadeplot(f, xmin(), -1.96, 20);
- shadeplot(f, 1.96, 4, 40);
- L.fill_item("$P(|Z|>1.96, H_0) = 0.05$");
-
- plot(f, xmin(), xmax(), 240);
- plot(g, xmin(), xmax(), 240);
-
- font_size("scriptsize");
- L.draw(P(4,0.35), P(0,0), tr);
-
- label(P(0, 0.15), P(0,2), "$H_0$: $\\mu_1=\\mu_2$", t);
- label(P(2, 0.15), P(2,2), "$H_1$: $\\mu_1=\\mu_2+\\delta$", tr);
-
- font_size("footnotesize");
- axis Ax(P(-2, ymin()), P(8, ymin()), 5, P(0,-8), b);
- Ax.align(b).draw();
-
- label(P(2, ymin()), P(0,-18),
- "$Z=\\displaystyle\\frac{\\mu_1-\\mu_2}{\\sigma/\\sqrt{\\pi}}$", b);
-
- degrees();
- label_angle(90);
-
-#ifdef OLD_GCC
- axis Ay(P(-3.4, 0), P(xmin(), 0.4), 4, P(-8,0), l);
-#else
- // may not compile under gcc <= 3.3
- axis Ay(P(xmin(), 0), P(xmin(), 0.4), 4, P(-8,0), l);
-#endif
-
- Ay.align(l).draw();
-
- label(P(xmin(), 0.2), P(-18,0), "Density", l);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/S2_harmonics.xp b/graphics/epix/samples/S2_harmonics.xp
deleted file mode 100644
index d1ed709165..0000000000
--- a/graphics/epix/samples/S2_harmonics.xp
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double P_n(double z)
-{
-#ifdef Y20
- return 0.5*(3*z*z - 1);
-#else
- // Y_3^0
- return 0.5*z*(5*z*z - 3);
-#endif
-}
-
-double rho(double th, double phi)
-{
- return P_n(Sin(phi));
-}
-
-P color(double x, double y)
-{
- return P(rho(x,y), 0, -rho(x,y));
-}
-
-P orbital(double u, double v)
-{
- return sph(fabs(rho(u,v)), u, v);
-}
-
-int main()
-{
- picture(P(-1,-1), P(1,1.5), "4x5in");
-
- begin();
-
- backing(Black());
-
- set_crop();
- revolutions();
- fill();
-
- // back 3/4
- domain Bk(P(0.25, -0.25), P(1, 0.25), mesh(24,96), mesh(48,96));
-
- plain(RGB(1, 0.8, 0.2) *= 0.8);
-
- camera.at(sph(10, 0.06, 0.05));
-
- // color-shaded surface
- surface(orbital, Bk, color);
-
- // draw boundary with "tube-like" green pen
- nofill();
- plain(Green(1.6));
- base(Green(0.6), "2pt");
- plot(orbital, Bk.slice1(0.25));
- plot(orbital, Bk.slice1(1));
-
- // set color for axes and labels
- rgb(0.9,0.7,1);
- base(RGB(0.8, 0, 1), "1pt");
-
- arrow(P(0,0,0), P(1,0,0));
- arrow(P(0,0,0), P(0,0.75,0));
- arrow(P(0,0,0), P(0,0,1.25));
-
- label(P(1,0,0), P(-2,-2), "$x$", bl);
- label(P(0,0.75,0), P(4,-2), "$y$", r);
- label(P(0,0,1.25), P(0,4), "$z$", t);
-
- // "unset" base pen
- base(Neutral());
-
- // inset graph of Legendre polynomial
- screen graph(P(-1,-1), P(1,1));
- activate(graph);
-
- camera.at(P(0,0,10000));
- plain(Green(0.6));
- grid(P(-1,-1), P(1,1), 8, 8);
- bold(Yellow());
- h_axis(8);
- v_axis(8);
-
- bold(Green());
- plot(P_n, -1, 1, 60);
-
- font_size("footnotesize");
- label_color(Green(0.6));
- label_mask(RGB(1, 0.8,0.2));
-
-#ifdef Y20
- label(P(0,-1), P(0,-4), "$P(z)=\\frac{1}{2}(3z^2-1)$", b);
-#else
- // Y30
- label(P(0,-1), P(0,-4), "$P(z)=\\frac{1}{2}(5z^2-3)$", b);
-#endif
-
- inset(P(-1,0.875), P(-0.375,1.5));
- deactivate(graph); // a good habit, but not strictly necessary
-
- tikz_format();
- end();
-}
diff --git a/graphics/epix/samples/artifacts.xp b/graphics/epix/samples/artifacts.xp
deleted file mode 100644
index bd20166717..0000000000
--- a/graphics/epix/samples/artifacts.xp
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double MAX(1);
-
-P F(double u, double v)
-{
- return sph(1, u, v);
-}
-
-int main()
-{
- picture(P(0,0),P(5,1), "5 x 1in");
-
- begin();
-
- pst_format();
- domain coarse(P(0,0), P(0.5, 1), mesh(6,12), mesh(60,60));
- domain fine(P(0,0), P(0.5, 1), mesh(15,30), mesh(60,60));
-
- revolutions();
- camera.at(P(5, 4, 3));
-
- fill(White());
-
- nofill(); // fill color set -> flat shading
- screen scr1(P(-1,-1), P(1,1));
- activate(scr1);
- surface(F, coarse);
-
- screen scr2(P(-1,-1), P(1,1));
- activate(scr2);
- surface(F, fine);
-
- fill();
- screen scr3(P(-1,-1), P(1,1));
- activate(scr3);
- surface(F, coarse);
-
- screen scr4(P(-1,-1), P(1,1));
- activate(scr4);
- surface(F, fine);
-
- inset(scr1, P(0,0), P(1,1));
- inset(scr2, P(1.25,0), P(2.25,1));
- inset(scr3, P(2.5,0), P(3.5,1));
- inset(scr4, P(3.75,0), P(4.75,1));
-
- end();
-}
diff --git a/graphics/epix/samples/binom.cc b/graphics/epix/samples/binom.cc
deleted file mode 100644
index 1dc068fcd6..0000000000
--- a/graphics/epix/samples/binom.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <iostream>
-#include <cmath>
-// Generate pseudo-random outcomes of tossing a biased coin 100 times.
-// Compile with, e.g.
-//
-// g++ -o binom binom.cc && ./binom > binom.dat
-
-const int trials=100000; // amount of data to collect
-
-int flip(double wt=0.5) // 0 < wt < 1
-{
- if (rand() < (1-wt)*RAND_MAX)
- return 0;
- else
- return 1;
-}
-
-void toss(unsigned int tosses, double wt=0.5)
-{
- int count=0;
- for (int i=0; i < tosses; ++i)
- count += flip(wt);
-
- std::cout << count << "\t";
-}
-
-int main()
-{
- for (int j=0; j < trials; ++j)
- {
- toss(100, 0.05);
- toss(100, 0.1);
- toss(100, 0.3);
- toss(100);
- std::cout << "\n";
- }
-}
diff --git a/graphics/epix/samples/bowl.xp b/graphics/epix/samples/bowl.xp
deleted file mode 100644
index fe3921b6db..0000000000
--- a/graphics/epix/samples/bowl.xp
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P f(double u, double v)
-{
- return u*P(Cos(v), Sin(v), u);
-}
-
-int main()
-{
- picture(P(-2,-1),P(2,2), "6x4.5in");
-
- begin();
-
- backing(Black());
-
- white();
- label(P(0, ymax()), P(0,-2), "\\LARGE$z=x^2+y^2$", b);
-
- revolutions();
- camera.at(P(3,2,2.5));
-
- red();
- polar_grid(1, 8, 36);
-
- arrow(P(0,0,0), P(1.25,0,0));
- arrow(P(0,0,0), P(0,1.25,0));
- label(P(1.25,0,0), P(-2,-2), "$x$", bl);
- label(P(0,1.25,0), P(2,-1), "$y$", br);
-
- fill();
- rgb(1,0.8,0.2);
- domain R(P(0,0), P(1,1), mesh(12,180), mesh(12,180));
-
- scenery my(f, R);
-
- my.draw(1); // cull front-pointing facets
-
- red();
- arrow(P(0,0,0), P(0,0,1));
-
- pen(Blue(1.6), "0.5pt");
- fill(Blue(1.4));
- scenery my2(f, R);
- my2.draw(-1); // cull back-pointing facets
-
- nofill();
- bold(Green());
- base(Green(0.6), "1.5pt");
- plot(f, R.slice1(1));
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/butterfly.xp b/graphics/epix/samples/butterfly.xp
deleted file mode 100644
index 2ec303d780..0000000000
--- a/graphics/epix/samples/butterfly.xp
+++ /dev/null
@@ -1,136 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const P VIEWPT(20, 0, 8);
-
-const double tmin(2/sqrt(3));
-
-const Color light(Blue(1.6));
-const Color dark(Red(0.8));
-const Color lt_gray(Black(0.2));
-const Color net_color(Yellow(0.1));
-
-void label_tag(P loc, P head, std::string txt, epix_label_posn align)
-{
- dart(loc, head);
- masklabel(loc, P(0,0), txt, align);
-}
-
-domain R(P(-2,-2), P(2,2), mesh(20, 20), mesh(40,40));
-domain edge(P(-2,-2), P(2,2), mesh(1,1), mesh(40,40));
-
-// surface
-P Phi(double u, double v)
-{
- return P(4*v, 0.75*(u*u-2*v)*u, 2*u);
-}
-
-P cubic(double t) { return Phi(t, 1.5*t*t); }
-
-// cubic projections to background planes
-P Phi12(double t)
-{
- P temp(cubic(t));
- return P(temp.x1(), temp.x2(), -8);
-}
-
-P Phi13(double t)
-{
- P temp(cubic(t));
- return P(temp.x1(), -8, temp.x3());
-}
-
-P Phi23(double t)
-{
- P temp(cubic(t));
- return P(-8, temp.x2(), temp.x3());
-}
-
-
-int main() {
- picture(P(-14,-15), P(10,9), "6x6in");
-
- begin();
- set_crop();
- camera.at(VIEWPT);
-
- // background grids
- pen(lt_gray);
- grid(P(-8, -8, -8), P(8, 8, -8), 8,8);
- grid(P(-8, -8, -8), P(8, -8, 6), 7,8); // n.b. (z,x) divisions
- grid(P(-8, -8, -8), P(-8, 8, 6), 8,7);
-
- // background coordinate axes
- pen(Black());
- line(P(0, -8, -8), P(0, 8, -8));
- line(P(-8, 0, -8), P(8, 0, -8));
-
- line(P(0, -8, -8), P(0, -8, 6));
- line(P(-8, -8, 0), P(8, -8, 0));
-
- line(P(-8, 0, -8), P(-8, 0, 6));
- line(P(-8, -8, 0), P(-8, 8, 0));
-
- // projections of cubic
- bold(dark);
- plot(Phi12, -tmin, tmin, 80);
- plot(Phi13, -tmin, tmin, 80);
- plot(Phi23, -tmin, tmin, 80);
-
- // surface
- plain(net_color);
- fill(lt_gray);
- surface(Phi, R.resize1(-2,0)); // bottom half
-
- // and cubic curve
- bold(dark);
- plot(cubic, -tmin, 0, 80);
-
- plain(net_color);
- surface(Phi, R.resize1(0,2)); // top half
-
- bold(dark);
- plot(cubic, 0, tmin, 80);
-
- // surface boundary
- bold(Yellow());
- plot(Phi, edge);
-
- // guide lines to cusp projection
- plain(light);
- dashed();
- line(cubic( tmin), Phi12( tmin));
- line(cubic(-tmin), Phi12(-tmin));
-
- /*
- // guide lines to other projections
- line(cubic( tmin), Phi13( tmin));
- line(cubic(-tmin), Phi13(-tmin));
-
- line(cubic( tmin), Phi23( tmin));
- line(cubic(-tmin), Phi23(-tmin));
- */
-
- // fake transparency
- plain(dark);
- plot(Phi12, -tmin, tmin, 20); // cusp
- // plot(Phi13, -tmin, tmin, 20);
- // plot(Phi23, -tmin, tmin, 20);
-
- label_color(Black());
- label(P(8,0,-8), P(0,-4), "$x$", b);
- label(P(0,8,-8), P(4,0), "$y$", r);
-
- pen(light);
- label_border(light, "0.4pt");
- solid();
- label_tag(Phi(-2,-2)+P(0,2,6), Phi(-1.75,-1.75),
- "$y=\\frac{3}{32}(z^3-2xz)$", t);
-
- label_tag(cubic(-1)+P(0,2,3), cubic(-1),
- "$(x,y,z)=(6t^2, -\\frac{3}{2}t^3, 2t)$", t);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/calculus.xp b/graphics/epix/samples/calculus.xp
deleted file mode 100644
index c5aa0efe0b..0000000000
--- a/graphics/epix/samples/calculus.xp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double MAX(2*M_PI);
-double f(double t)
-{
- return t*Sin(t);
-}
-
-int main()
-{
- picture(P(-MAX,-MAX), P(MAX,MAX), "240x240pt");
-
- begin();
-
- // Coordinate axes and labels
- pen(Black(0.3));
- grid(8,8);
-
- font_size("scriptsize");
- // trigonometric axis labels
- bottom_axis(4, P(0,-4)).trig().draw_labels();
- left_axis(4, P(-4,0)).trig().draw_labels();
-
- legend L;
- L.item_border(0).border(Red(), 0.4);
-
- bold(Black());
- plot(f, xmin(), xmax(), 90);
- L.path_item("$y=x\\sin x$");
-
- pen(Green());
- plot(Deriv(f), xmin(), xmax(), 90);
- L.path_item("$y=\\frac{d}{dx}(x\\sin x)$");
-
- pen(Blue());
- plot(Integral(f, 0), xmin(), xmax(), 90); // definite integral from 0
- L.path_item("$y=\\int_0^x t\\sin t\\,dt$");
-
- L.draw(P(0,2*M_PI), P(2,-2), br);
- end();
-}
diff --git a/graphics/epix/samples/clipping.xp b/graphics/epix/samples/clipping.xp
deleted file mode 100644
index 0df86eb85b..0000000000
--- a/graphics/epix/samples/clipping.xp
+++ /dev/null
@@ -1,233 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-/*
- * This file, a monkey saddle sliced by two vertical planes showing
- * the definition and geometric meaning of partial derivatives,
- * contains a high degree of manual object ordering. Coordinate grids
- * in the back come first. The surface itself is broken into pieces
- * interspersed with axes and cutting planes. Figure parameters
- * (color, the size and fineness of the domain, locations of cutting
- * planes, and camera location) are defined in the preamble. The
- * figure's appearance can then be adjusted visually at leisure to
- * obtain the desired effect.
- *
- * Compile with
- *
- * epix -DDISSECT clipping.xp
- *
- * to create frames showing stages of the construction.
- */
-
-// Style parameters
-// camera location (in spherical coordinates); must be in first orthant
-const P VIEWPT(sph(4, M_PI/6, M_PI/6));
-
-// colors
-void color_coord()
-{
- // fill(RGB(1, 0.9, 0.5));
- // plain(RGB(1, 0.5, 0.2));
- plain(RGB(1, 0.9, 0.7));
-}
-
-void color_axis()
-{
- rgb(0.8, 0.2, 0.9);
-}
-
-// graph and mesh
-void color_surf()
-{
- plain(RGB(1, 0.5, 0));
- fill(RGB(1, 0.8, 0.2));
-}
-
-// slicing plane and border
-void color_xslice()
-{
- red();
-}
-
-void fill_xslice()
-{
- // black(0.1);
- rgb(0.8, 0.5, 0.1);
-}
-
-void color_yslice()
-{
- blue();
-}
-
-void fill_yslice()
-{
- // black(0.3);
- rgb(0.6, 0.3,0);
-}
-
-const int MESH(12); // number of coordinate grid squares
-
-// location of tangency point
-const double x_0(7.0/MESH);
-const double y_0(6.0/MESH);
-const double z_0(0.25); // height of top of slicing planes
-
-const int MAX(1); // maximum coordinate
-
-const double sqrt3(sqrt(3));
-
-// function to be graphed
-P f(double x, double y)
-{
- return P(x, y, 0.75*y*(y-sqrt3*x)*(y+sqrt3*x));
-}
-
-int main()
-{
- picture(P(-2,-2), P(2,1.5), "6 x 5.25in");
-
- begin();
-
- // "legend"
- masklabel(P(xmax(), ymax()), P(-2,-2),
- "$z=\\displaystyle\\frac{1}{2}(y^3-3x^2y)$", bl);
-
- font_size("scriptsize");
- camera.at(VIEWPT);
- border(Green(0.6), "1pt");
-
- domain R(P(-MAX,-MAX), P(MAX,MAX),
- mesh(4*MESH, 4*MESH), mesh(8*MESH, 8*MESH));
-
- // coordinate grids
- color_coord();
- grid(P(-MAX,-MAX,-MAX), P(-MAX, MAX, MAX), MESH, MESH);
- grid(P(-MAX,-MAX,-MAX), P( MAX,-MAX, MAX), MESH, MESH);
- grid(P(-MAX,-MAX,-MAX), P( MAX, MAX,-MAX), MESH, MESH);
-
-#ifdef DISSECT
- print_pst("clipping01.eepic");
-#endif
-
- clip_box(P(-2, -2, -1), P(2, 2, 1));
-
- // back half and front left quarter
- color_surf();
- surface(f, R.resize1(-MAX,0));
-#ifdef DISSECT
- print_pst("clipping02.eepic");
-#endif
-
- surface(f, R.resize1(0,MAX).resize2(-MAX,0));
-#ifdef DISSECT
- print_pst("clipping03.eepic");
-#endif
-
- // coordinate axes
- color_axis();
- bold();
-
- clip_box(P(-2, -2, -1), P(2, 2, 2));
-
- dart(P(-MAX,0,0), P(0.25+MAX,0,0));
- dart(P(0,-MAX,0), P(0,0.25+MAX,0));
- dart(P(0,0,0), P(0,0,0.25+MAX));
-
- label(P(0.25+MAX,0,0), P(-2,-2), "$x$", bl);
- label(P(0,0.25+MAX,0), P( 4,-2), "$y$", r);
- label(P(0,0,0.25+MAX), P( 0, 4), "$z$", t);
-
-#ifdef DISSECT
- print_pst("clipping04.eepic");
-#endif
-
- // front quarter of surface; chop into four pieces
- color_surf();
- surface(f, R.resize1(0, x_0).resize2(0,y_0)); // behind both planes
-
-#ifdef DISSECT
- print_pst("clipping05.eepic");
-#endif
-
- fill_xslice();
- rect(P(x_0, 0, -MAX), P(x_0, y_0, z_0)); // left part of plane x = x_0
-
-#ifdef DISSECT
- print_pst("clipping06.eepic");
-#endif
-
- pen(3);
- color_xslice();
- plot(f, R.slice1(x_0).resize2(0, y_0));
-
-#ifdef DISSECT
- print_pst("clipping07.eepic");
-#endif
-
- color_surf();
- surface(f, R.resize1(x_0, MAX).resize2(0,y_0)); // back right piece
-
-#ifdef DISSECT
- print_pst("clipping08.eepic");
-#endif
-
- fill_yslice();
- rect(P(0, y_0, -MAX), P(MAX, y_0, z_0)); // plane y = y_0
-
-#ifdef DISSECT
- print_pst("clipping09.eepic");
-#endif
-
- pen(3);
- color_yslice();
- plot(f, R.slice2(y_0).resize1(0, MAX));
-
-#ifdef DISSECT
- print_pst("clipping11.eepic");
-#endif
-
- color_surf();
- surface(f, R.resize1(0, x_0).resize2(y_0, MAX)); // front left piece
-
-#ifdef DISSECT
- print_pst("clipping12.eepic");
-#endif
-
- fill_xslice();
- rect(P(x_0, y_0, -MAX), P(x_0, MAX, z_0)); // right part of plane x = x_0
-
-#ifdef DISSECT
- print_pst("clipping13.eepic");
-#endif
-
- pen(3);
- color_xslice();
- plot(f, R.slice1(x_0).resize2(y_0, MAX));
-
-#ifdef DISSECT
- print_pst("clipping14.eepic");
-#endif
-
- color_surf();
- surface(f, R.resize1(x_0, MAX).resize2(y_0, MAX)); // front right piece
-
- clip_box(P(-MAX,-MAX,-2), P(MAX,MAX,2));
-
- // labels and graph slices
- color_yslice();
- label(f(MAX, y_0), P(-4,0),
- "$\\displaystyle\\frac{\\partial f}{\\partial x}$: $y$ constant", l);
-
- color_xslice();
- label(f(x_0, MAX), P(4,0),
- "$\\displaystyle\\frac{\\partial f}{\\partial y}$: $x$ constant", br);
-
-#ifdef DISSECT
- print_pst("clipping15.eepic");
-#endif
-
- pst_format();
- end();
-}
-
diff --git a/graphics/epix/samples/color_sep.xp b/graphics/epix/samples/color_sep.xp
deleted file mode 100644
index 5ba4df4fc9..0000000000
--- a/graphics/epix/samples/color_sep.xp
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// re cos(u+iv)
-P f(double u, double v)
-{
- return P(u, v, 2*cosh(u)*Cos(v));
-}
-
-domain R(P(-1,-1), P(1,1), mesh(16,16));
-
-// RGB densities
-P color(double x, double y, double z)
-{
- return P(Sin(x), -Sin(y), -Sin(x));
-}
-
-int main()
-{
- picture(P(0,0), P(5,1), "5x1in");
-
- begin();
-
- camera.filter(CMYK_Neutral()); // convert colors to CMYK in output
- grid(5,1);
- camera.at(4,3,1);
-
- plain(Red(1.6));
-
- // Original
- screen all(P(-1.5,0.5), P(1.5,3.5));
- activate(all);
- set_crop();
-
- surface(f, R, color);
- inset(all, P(0,0), P(1,1));
-
- // Cyan
- screen cyn(P(-1.5,0.5), P(1.5,3.5));
- activate(cyn);
- set_crop();
- camera.filter(C_Process()); // get cyan layer
-
- surface(f, R, color);
- inset(cyn, P(1,0), P(2,1));
-
- // Magenta
- screen mgn(P(-1.5,0.5), P(1.5,3.5));
- activate(mgn);
- set_crop();
- camera.filter(M_Process());
-
- surface(f, R, color);
- inset(mgn, P(2,0), P(3,1));
-
- // Yellow
- screen ylw(P(-1.5,0.5), P(1.5,3.5));
- activate(ylw);
- set_crop();
- camera.filter(Y_Process());
-
- surface(f, R, color);
- inset(ylw, P(3,0), P(4,1));
-
- // Black
- screen blk(P(-1.5,0.5), P(1.5,3.5));
- activate(blk);
- set_crop();
- camera.filter(K_Process());
-
- surface(f, R, color);
- inset(blk, P(4,0), P(5,1));
-
- end();
-}
diff --git a/graphics/epix/samples/conic.xp b/graphics/epix/samples/conic.xp
deleted file mode 100644
index 394a326394..0000000000
--- a/graphics/epix/samples/conic.xp
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const int MAX(24);
-const double x0(4);
-const double ht(3); // camera height
-const double INFTY(100000);
-
-P f(double t)
-{
- return P(t, t*t, 0);
-}
-
-int main()
-{
- picture(P(-3,-3),P(3,3), "4x4in");
-
- begin();
-
- border();
- set_crop();
-
- viewpoint(0,-ht*ht, ht);
- camera.look_at(P(0,0,1));
-
- pen(Black(0.3), "0.1pt");
- grid(P(-MAX,0), P(MAX, MAX*MAX), MAX, MAX*MAX/8);
- grid(P(-MAX, 0, 2*ht), P(MAX, MAX*MAX, 2*ht), MAX, MAX*MAX/8);
-
- pen(Blue(1.4));
- envelope(f, -MAX/2, MAX/2, 20); // envelope of tangent lines
-
-
- bbold(Blue());
- Line(P(-100, INFTY, 0), P(100, INFTY, 0));
-
- masklabel(P(0,0), P(0,2), "$(0,0)$", t);
- label(P(0,INFTY), P(0,-2), "$(0,\\infty)$", b);
- label(P(-0.25*INFTY,INFTY), P(0, 2), "Horizon", t);
-
- masklabel(P(x0, x0*x0), P(-4,0), "$y=x^2$", l);
-
- box(P(0,0));
- box(P(0,INFTY));
-
- pen(1);
- plot(f, -MAX, MAX, 240);
-
- camera.at(0,0,1000);
- masklabel(P(0, ymin()), P(0,0),
- "Projective equivalence of a parabola and a circle", t);
-
- end();
-}
diff --git a/graphics/epix/samples/contour.xp b/graphics/epix/samples/contour.xp
deleted file mode 100644
index 2a0b093b5b..0000000000
--- a/graphics/epix/samples/contour.xp
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// arc arrow extent
-const double theta(60);
-
-// arc radii
-const double rad(0.25);
-const double Rad(4.5);
-
-// half-width of slit
-const double ht(0.0625);
-
-int main()
-{
- // old-style size declarations
- bounding_box(P(-5, -5), P(5,5));
- picture(160, 160);
- unitlength("0.35mm");
-
- begin();
- degrees();
- tikz_format();
-
- // "start" angles of arcs; must come after degrees()
- const double theta1(Asin(ht/rad));
- const double theta2(Asin(ht/Rad));
-
- fill(Black(0.1)); // light gray
-
- // build keyhole in pieces; += concatenates
- path contour(P(0,0), Rad*E_1, Rad*E_2, theta2, 360-theta2); // outer arc
- contour += path(polar(Rad,-theta2), polar(rad,-theta1)); // lower slit
- contour += path(P(0,0), rad*E_1, rad*E_2, 360-theta1, theta1); // inner arc
- contour += path(polar(rad, theta1), polar(Rad, theta2)); // upper slit
-
- contour.close().fill().draw();
-
- dot(P(0,0)); // the origin
-
- // plain(Black());
- arrow_width(2);
- arrow_inset(0.25);
-
- arrow(P(Rad/4, 0.1*Rad), P(3*Rad/4, 0.1*Rad)); // arrow ends in terms of Rad
- arrow(P(3*Rad/4, -0.1*Rad), P(Rad/4, -0.1*Rad));
-
- arc_arrow(P(0,0), 0.9*Rad, 180-theta, 180+theta);
-
- label(P(Rad,ht), P(2,4), "$R\\to\\infty$", tr);
- label(P(0,rad), P(0,4), "$\\delta\\to0$", tl);
- label(polar(Rad, 45), P(0,0), "$\\gamma$", tr);
-
- end();
-}
diff --git a/graphics/epix/samples/coord_tricks.xp b/graphics/epix/samples/coord_tricks.xp
deleted file mode 100644
index 06cf009037..0000000000
--- a/graphics/epix/samples/coord_tricks.xp
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double gap(0.15); // distance between graph portions
-
-Color GRAY(Black(0.5));
-
-int main()
-{
- picture(P(0,0),P(2+gap,2+gap), "4x4in");
-
- begin();
-
- plain(GRAY);
- // draw in global coordinates
- axis_break(P(1,0), P(1+gap,0));
- axis_break(P(0,1), P(0,1+gap));
-
- // portion adjacent to origin
- screen scr1(P(0,0), P(4,4));
- activate(scr1);
-
- set_crop();
- grid(8,8);
-
- h_axis_labels(4, P(0,-4), b);
- v_axis_labels(4, P(-4,0), l);
-
- bold(Red());
- plot(recip, 0, 4, 120);
-
- inset(P(0,0), P(1,1));
-
- // right portion
- screen scr2(P(10,0), P(14,4));
- activate(scr2);
-
- set_crop();
- plain(GRAY);
- grid(8,8);
-
- h_axis_labels(4, P(0,-4), b);
-
- bold(Red());
- plot(recip, 10, 14, 20);
-
- inset(P(1+gap,0), P(2+gap,1));
-
- // top portion
- screen scr3(P(0,10), P(4,14));
- activate(scr3);
-
- set_crop();
- plain(GRAY);
- grid(8,8);
-
- v_axis_labels(4, P(-4,0), l);
-
- bold(Red());
- plot(recip, 0.05, 0.1, 10);
-
- inset(P(0,1+gap), P(1,2+gap));
-
- end();
-}
diff --git a/graphics/epix/samples/cropplot.xp b/graphics/epix/samples/cropplot.xp
deleted file mode 100644
index b470d90497..0000000000
--- a/graphics/epix/samples/cropplot.xp
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double f(double t) { return 2*t*(1-t)*(1-t); }
-double g(double t) { return 1/(1-t*t); }
-
-int main()
-{
- picture(P(-2,-4), P(2,4), "200x200pt");
-
- begin();
-
- set_crop();
- // Vertical asymptotes
- dashed();
- line(P(-1, ymin()), P(-1, ymax()));
- line(P( 1, ymin()), P( 1, ymax()));
- solid();
-
- // Axes
- h_axis(8);
- v_axis(8);
-
- h_axis_labels(4, P(-1, 2), tl); // align top-left
- v_axis_labels(4, P(-1, 2), tl);
-
- // Graphs
- plot(f, xmin(), xmax(), 80);
-
- bold();
- plot(g, xmin(), xmax(), 80); // N.B. poles are sample points
-
- end();
-}
diff --git a/graphics/epix/samples/cube.flx b/graphics/epix/samples/cube.flx
deleted file mode 100644
index c2d1df2505..0000000000
--- a/graphics/epix/samples/cube.flx
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
-
- picture(P(-4,-4), P(4,4), "5 x 5in");
-
- begin();
- revolutions();
-
- grid(1,1);
-
- P ctr(3.25,-3.25); // "clock" center
- bold();
- ellipse(ctr, P(0.5,0.5)); // clock face
-
- line(ctr, ctr+polar(0.4,tix())); // hands
- label_angle(tix()-0.25);
- label(ctr+polar(0.6,tix()), "$\\theta$");
-
- // a cube :)
- domain R(P(-2,-2,-2), P(2,2,2), mesh(1,1,1));
-
- camera.at(sph(10,tix(),-0.05));
- plain(Cyan());
- plot(xyz, R); // draw cube; xyz = Cartesian pt constructor
-
- camera.at(sph(10,0.01 + tix(),-0.05)); // 3.6 degrees away
- red(1.4); // slightly lightened red
- plot(xyz, R);
-
- end();
-}
diff --git a/graphics/epix/samples/dataplot.xp b/graphics/epix/samples/dataplot.xp
deleted file mode 100644
index 221c33a73c..0000000000
--- a/graphics/epix/samples/dataplot.xp
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P F(double x, double y)
-{
- return P((x-y)*(x+y), 2*x*y);
-}
-
-int main()
-{
- picture(P(-1,0),P(1,20), "6x6in");
-
- begin();
-
- // create a 2-column data file with 121 rows
- data_file DF(Cos, Sin, 0, M_PI, 120);
-
- legend L;
- plain(Black());
- fill(Blue(1.8));
-
- // act on first two columns; result doubles angles
- DF.transform(F);
-
- data_bins db(-1.05, 1.05, 21); // bins centered on -1, -0.9, ..., 0.9, 1
- db.read(DF.column(1)); // read col1
- db.bar_chart(db.pop()); // and plot, scaling to population
-
- L.fill_item("Population count"); // add a filled legend item
-
- label_color(Blue(1.2));
- v_axis_labels(P(xmin(), ymin()), P(xmin(), ymax()), 0.5*ysize(), P(-4,0), l);
- // superimpose plot of raw data
- screen raw(P(-1,-1), P(1,1));
- activate(raw);
- label_color(Red());
- DF.plot(DDOT); // scatter plot
- L.mark_item(DDOT, "Data points");
-
- nofill();
- plain(Black(0.3));
- grid(1,10);
-
- v_axis_labels(P(1,-1), P(1,1), 4, P(4,0), r);
-
- // DF.write("circle.dat"); // write to a disk file
- inset(P(-1,0), P(1,20));
- deactivate(raw); // polite but unnecessary
-
- L.draw(canvas().c(), P(0,0), c);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/decorate.xp b/graphics/epix/samples/decorate.xp
deleted file mode 100644
index 5b6d9cf32c..0000000000
--- a/graphics/epix/samples/decorate.xp
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-/*
- * Compile with, e.g. elaps -DNORMAL --huge decorate.xp
- */
-
-#define LINEFIELD
-// #define NORMAL
-
-const int N1(24); // latitudes
-const int N2(48); // longitudes
-
-const double du(1.0/N1);
-const double dv(1.0/N2);
-
-const P VIEWPT(6, 3, 4);
-
-const double r_0(0.95); // minor radius
-const double R_0(2); // major radius
-double g(double u)
-{
- return R_0 + r_0*Cos(u);
-}
-
-P F(double u, double v)
-{
- return polar(g(u), v) + P(0,0,r_0*Sin(u));
-}
-
-namespace ePiX {
- // a facet-like class that can be drawn with extra decorations, e.g.,
- // normal vectors, diagonals, orientation-dependent colors...
- class mesh_quad {
- private:
- P pt1, pt2, pt3, pt4, center;
- double distance;
-
- public:
- mesh_quad(P f(double u, double v), double u0, double v0)
- : pt1(f(u0,v0)), pt2(f(u0+du,v0)), pt3(f(u0+du,v0+dv)), pt4(f(u0,v0+dv)),
- center(0.25*(pt1 + pt2 + pt3 + pt4)),
- distance(norm(center-camera.viewpt())) { }
-
- double how_far() const { return distance; }
-
- void draw() const
- {
- P direction(center-camera.viewpt());
- P normal((pt2 - pt1)*(pt4 - pt1));
- normal *= 1/norm(normal);
-
- blue(0.75*(normal|(recip(distance)*direction)));
-
-#ifdef NORMAL
- if ((normal|direction) < 0)
- {
- plain(Green(0.6));
- arrow(center, center-0.5*normal, 0.5);
- }
-#endif
- fill();
- ePiX::quad(pt1, pt2, pt3, pt4);
- fill(false);
-
-#ifdef LINEFIELD
- if ((normal|direction) > 0)
- bbold(Blue(1.8));
- else
- bold(Red());
-
- line(pt1, 0.5*(pt3+pt4));
- line(0.5*(pt1+pt2), pt3);
-#endif
-
-#ifdef NORMAL
- if ((normal|direction) > 0)
- {
- plain(Green(0.6));
- arrow(center, center-0.5*normal, 0.5);
- }
-#endif
- }
- };
-
- class by_distance {
- public:
- bool operator() (const mesh_quad& arg1, const mesh_quad& arg2)
- { return arg1.how_far() > arg2.how_far(); }
- };
-} // end of namespace
-
-int main() {
- picture(P(-3,-3),P(3,3), "4x4in");
-
- begin();
- revolutions();
-
- viewpoint(VIEWPT);
- camera.range(10);
-
- // chop off the front
- clip_face(P(R_0, 0, r_0), P(-0.25,-0.25,-1));
-
- // build and draw a torus
- std::vector<mesh_quad> mesh;
-
- for (int i=0; i<N1; ++i)
- for (int j=0; j<N2; ++j)
- mesh.push_back(mesh_quad(F, i*du, j*dv));
-
- sort(mesh.begin(), mesh.end(), by_distance());
-
- // arrow_fill(1);
- for (unsigned int i=0; i<mesh.size(); ++i)
- mesh.at(i).draw();
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/demoivre.xp b/graphics/epix/samples/demoivre.xp
deleted file mode 100644
index 1225906a12..0000000000
--- a/graphics/epix/samples/demoivre.xp
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const int N(24);
-const double theta(0.875*M_PI);
-const pair alpha(1, theta/N);
-
-// pairs implement complex arithmetic, but need P to draw
-P pair2P(pair arg)
-{
- return P(arg.x1(), arg.x2());
-}
-
-int main()
-{
- picture(P(-1.5,0), P(1,1.25), "200 x 100pt");
-
- begin();
-
- pair power(1,0);
-
- for(int i=0; i<N; ++i)
- {
- line(P(0,0), pair2P(alpha*power)); // draw two sides
- line(pair2P(power), pair2P(alpha*power)); // of triangle
- power *= alpha; // and increment power
- }
-
- label(pair2P(alpha), P(2,0), "$\\alpha=1+\\frac{i\\theta}{n}$", r);
- label_angle(theta-M_PI);
- ddot(pair2P(power), P(2,4), "$\\alpha^n\\approx e^{i\\theta}$", b);
-
- plain(Black(0.3));
- arc(P(0,0), 1, 0, theta);
- ddot(cis(theta), P(0,-4), "$$", b);
-
- bold(Red());
- triangle(P(0, 0), P(1, 0), pair2P(alpha));
-
- end();
-}
diff --git a/graphics/epix/samples/denom.xp b/graphics/epix/samples/denom.xp
deleted file mode 100644
index 015f29bb4a..0000000000
--- a/graphics/epix/samples/denom.xp
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int N(30); // maximum denominator plotted
-
-int main()
-{
- picture(P(-2,0), P(2,1), "4x1in");
-
- begin();
- tikz_format();
-
- axis Ax(P(-2,0), P(2,0), 8, P(0,-6), b);
- Ax.subdivide(6).frac().draw();
-
- v_axis(2);
-
- dot_size(2);
- for (int i=1; i< N; ++i)
- for (int j=i*xmin(); j <= i*xmax(); ++j)
- if (gcd(i, j) == 1)
- ddot(P(j*1.0/i, 1.0/i));
-
- font_size("scriptsize");
-
- // The long label text can be written in one string, but using a
- // stringstream allows the input to be formatted more readably.
- std::stringstream buf;
- buf << "$f(x)=\\begin{cases}%" << std::endl
- << " \\frac{1}{q} & "
- << "\\text{ $x=\\frac{p}{q}$ in lowest terms} \\\\" << std::endl
- << " 0 & \\text{ $x$ irrational}%" << std::endl
- << "\\end{cases}$";
-
- label(P(0,0.75), P(2,0), buf.str(), r);
- end();
-}
-
diff --git a/graphics/epix/samples/densityplot.xp b/graphics/epix/samples/densityplot.xp
deleted file mode 100644
index 51ef671cc6..0000000000
--- a/graphics/epix/samples/densityplot.xp
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*-ePiX-*- */
-#include <epix.h>
-using namespace ePiX;
-
-const int MAX(18);
-
-// basic circular wave
-double ripple(double u, double v)
-{
- return pow(Cos(0.5*sqrt(u*u+v*v)),2);
-}
-
-// superposition
-double f(double u, double v)
-{
- return 0.25*(1+ripple(u, v-10) + ripple(u, v+10));
-}
-
-// f as a parametric surface
-P F(double u, double v)
-{
- return P(u, v, f(u,v));
-}
-
-// height-dependent coloring
-P color(double u, double v, double w)
-{
- return P(0.2+0.8*w, 0.3, 0.8 - 0.6*w);
-}
-
-domain R(P(-MAX,-MAX), P(MAX,MAX), mesh(2*MAX, 2*MAX));
-
-int main()
-{
- picture(P(-MAX,-MAX), P(MAX,MAX), "3x3in");
-
- begin();
-
- pen(Magenta(1.4), 0.2);
- surface(F, R, color);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/dipole.xp b/graphics/epix/samples/dipole.xp
deleted file mode 100644
index da17229481..0000000000
--- a/graphics/epix/samples/dipole.xp
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// number of field lines per charge
-const int N(13);
-
-// charge magnitudes and locations
-const int charge1(1);
-const int charge2(1);
-
-const P Q1( 1,0);
-const P Q2(-1,0);
-
-// inverse-square electric field from a point charge at the origin
-P unit_charge(const P& arg)
-{
- return recip(arg|arg)*arg;
-}
-
-// electric field simulated by superimposing individual fields, then
-// re-scaling so that field -> 0 near the charge location (improves
-// plot quality:)
-P E(double x, double y)
-{
- P temp(x,y);
- // superposition of charge fields
- P E_temp(charge1*unit_charge(temp-Q1) + charge2*unit_charge(temp-Q2));
-
- // re-scale
- return (1.0/(E_temp|E_temp))*E_temp;
-}
-
-P potential(double x, double y)
-{
- // J rotates a vector by 1/4 turn; parallel to equipotentials
- return J(E(x,y));
-}
-
-const double MAX(3);
-
-int main()
-{
- picture(P(-MAX,-MAX), P(MAX,MAX), "4x4in");
-
- begin();
- set_crop();
- degrees(); // change angle mode
-
- // plot field lines
- blue();
- for (int i=0; i < N; ++i)
- {
- // initial points trace a small circle about Q1 or Q2,
- ode_plot(E, Q1+polar(0.05, i*360.0/N), 10, 120);
- ode_plot(E, Q2-polar(0.05, i*360.0/N), 10, 120);
-
- // location of arrowhead
- P pt(flow(E, Q2-polar(0.05, i*360.0/N), 3, 12));
- }
-
- green();
- for (int i=-10; i < 10; ++i)
- {
- ode_plot(potential, Q1+polar(0.25*pow(0.8, i), 0), 2*M_PI, 120);
- ode_plot(potential, Q2-polar(0.25*pow(0.8, i), 0), 2*M_PI, 120);
- }
-
- dot_size(6);
- circ(Q1);
- circ(Q2);
-
- magenta();
- label(Q1, "$+$");
- label(Q2, "$+$");
-
- blue();
- for (int i=0; i < N; ++i)
- {
- P pt(flow(E, Q2-polar(0.05, i*360.0/N), 3.5, 12));
- arrow(pt, pt+0.01*E(pt.x1(), pt.x2()));
- arrow(-pt, -pt+0.01*E(-pt.x1(), -pt.x2()));
- }
-
- end();
-}
diff --git a/graphics/epix/samples/extract.xp b/graphics/epix/samples/extract.xp
deleted file mode 100644
index b061df18db..0000000000
--- a/graphics/epix/samples/extract.xp
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// a benign function
-double phi(double x)
-{
- return x*x;
-}
-
-// and its derivative
-Deriv dphi(phi);
-
-// parameters defining an arbitrary line ell
-const double slope(-2);
-const double beta(0.5);
-
-const double ht(phi(beta));
-const double alpha(slope-dphi.eval(beta));
-
-const double eps(0.02); // size of extraction
-
-// a small perturbation to adjust the derivative
-double f(double x)
-{
- return x/(1+16384*x*x);
-}
-
-double gn(double x)
-{
- return f(alpha*(x-beta));
-}
-
-// phi's Evil Twin
-double psi(double x)
-{
- return phi(x) + gn(x);
-}
-
-// inset parameters
-const P mag_ctr(P(0.75, 0.2));
-const double mag_sz(0.125);
-
-int main()
-{
- picture(P(0,0), P(1,0.75), "4x3in");
-
- begin();
- set_crop();
-
- // two nearly-equal graphs, and the tangent to one of them
- plain(Blue());
- plot(psi, xmin(), beta-eps, 60);
- plot(psi, beta+eps, xmax(), 60);
- plot(psi, beta-eps, beta+eps, 60);
-
- pen(Green(0.6));
- Line(P(beta,phi(beta)), slope);
-
- bold(Red());
- plot(phi, xmin(), xmax(), 60);
- plain();
-
- // cut out a small neighborhood and magnify it
- screen mag(canvas().extract_ellipse(P(beta-eps, psi(beta)-eps),
- P(beta+eps, psi(beta)+eps)));
- mag.backing(Yellow(0.05));
- mag.border(Black(), "0.4pt");
-
- inset(mag, mag_ctr - mag_sz*P(1,1), mag_ctr + mag_sz*P(1,1));
-
- pen(Black());
- // axes
- line(P(xmin(),0), P(xmax(),0));
- line(P(0,ymin()), P(0,ymax()));
-
- // indicators
- line(P(beta,0), P(beta,phi(beta)), -20); // shorten slightly
- line(P(0,phi(beta)), P(beta,phi(beta)), -10);
-
- // zoom lines
- line(P(beta, phi(beta)), mag_ctr + polar(mag_sz, 2*M_PI/3), -20);
- line(P(beta, phi(beta)), mag_ctr + polar(mag_sz, 5*M_PI_4), -20);
-
- font_size("footnotesize");
- label(P(beta,0), P(0,-4), "$\\beta$", b);
- label(P(0,phi(beta)), P(-4,0), "$b$", l);
-
- // use mag_ctr to place inset labels
- red();
- label(P(beta+0.1,phi(beta+0.1)), P(-2,2), "$\\varphi$",tl);
- label(mag_ctr, P(0,6), "$\\varphi$",tr);
-
- blue();
- label(P(beta+0.1,psi(beta+0.1)), P(2,-2), "$\\psi$",br);
- label(mag_ctr, P(8,-2), "$\\psi$",br);
-
- green(0.6);
- label(P(beta-0.1,ht-0.1*slope), P(2,2), "$\\ell$",tr);
- label(mag_ctr, P(-12,20), "$\\ell$", bl);
-
- black();
- // a large label
- label_border(Blue(), "0.2pt");
- masklabel(P(0.5*(xmin()+xmax()), ymax()), P(0,0),
- "\\begin{minipage}{2.25in}A graph with unexpected tangent line\\end{minipage}", b);
-
- end();
-}
diff --git a/graphics/epix/samples/geomsum.xp b/graphics/epix/samples/geomsum.xp
deleted file mode 100644
index 665b1568e8..0000000000
--- a/graphics/epix/samples/geomsum.xp
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*-ePiX-*- */
-/* geomsum.c -- July 16, 2001 */
-#include "epix.h"
-using namespace ePiX;
-
-const int N(8);
-
-int main()
-{
- picture(P(0,0), P(1,1), "2.5x2.5in");
- begin();
-
- pen(White(), "0.8pt");
- fill(White(0.9));
- rect(P(0,0), P(1,1));
-
- black();
- label(P(1.0/4, 1.0/2), "$\\frac{1}{2}$");
- label(P(5.0/8, 3.0/4), "$\\frac{1}{8}$");
- label(P(13.0/16, 7.0/8), "$\\frac{1}{32}$");
-
- white();
- fill(Blue());
- double t(0.5);
-
- for(int i=0; i<N; ++i, t *= 0.5)
- {
- rect(P(1-t, 1-2*t), P(1, 1-t));
- line(P(1-t, 1-2*t), P(1-t, 1));
- }
-
- label(P(3.0/4, 1.0/4), "$\\mathbf{\\frac{1}{4}}$");
- label(P(7.0/8, 5.0/8), "$\\mathbf{\\frac{1}{16}}$");
- label(P(15.0/16, 13.0/16), "$\\mathbf{\\frac{1}{64}}$");
-
- end();
-}
diff --git a/graphics/epix/samples/golden_rect.xp b/graphics/epix/samples/golden_rect.xp
deleted file mode 100644
index f6fc6d54a1..0000000000
--- a/graphics/epix/samples/golden_rect.xp
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double tau((1+sqrt(5))/2);
-
-int main()
-{
- bounding_box(P(0,0), P(tau,1));
- picture(100*(1+tau), 100*tau);
- unitlength("0.0125in");
-
- begin();
-
- dashed();
- line(P(0.5,0), P(0.5,1));
-
- solid();
- line(P(1,0), P(1,1));
- line(P(0.5,0), P(1,1));
-
- arc(P(0.5,0), tau-0.5, 0, Atan(2.0));
-
- bold();
- rect(P(0,0), P(tau, 1));
-
- end();
-}
-
diff --git a/graphics/epix/samples/helicoid.flx b/graphics/epix/samples/helicoid.flx
deleted file mode 100644
index fdf68fc7ad..0000000000
--- a/graphics/epix/samples/helicoid.flx
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*-flix-*- */
-/*
- * Animation depicting the local isometric deformation of a
- * catenoid to a helicoid through minimal immersions
- */
-#include "epix.h"
-using namespace ePiX;
-
-// number of meridians and latitudes
-int N1(72);
-int N2(24);
-
-P VIEWPT(4, 3, 4);
-
-// locations of "lights"; see mesh::draw() below for implementation
-P LIGHT_R(10,0,10);
-P LIGHT_G(0,10,10);
-P LIGHT_B(0,-10,10);
-
-// internal constants
-double r_0(1.0);
-double EPS(0.0); // fact shrink factor
-double du(2.0/N1), dv(4.0/N2);
-
-// parametrized surfaces
-P helicoid(double u, double v)
-{
- return P(sinh(v)*Cos(M_PI*u), sinh(v)*Sin(M_PI*u), 2*M_PI*u);
-}
-
-P catenoid(double u, double v)
-{
- return P(cosh(v)*Sin(M_PI*u), -cosh(v)*Cos(M_PI*u), -v);
-}
-
-P morph(double u, double v)
-{
- return Cos(2*M_PI*tix())*helicoid(u,v) + Sin(2*M_PI*tix())*catenoid(u,v);
-}
-
-// facet-like class with spot reflection
-class element
-{
-private:
- P pt1;
- P pt2;
- P pt3;
- P pt4;
-
- double distance;
-
-public:
- element(P f(double u, double v), double u0, double v0)
- : pt1(f(u0+EPS,v0+EPS)), pt2(f(u0+du-EPS,v0+EPS)),
- pt3(f(u0+du-EPS,v0+dv-EPS)), pt4(f(u0+EPS,v0+dv-EPS))
- {
- P center(0.25*(pt1 + (pt2 + (pt3 + pt4))));
- P temp(camera.viewpt());
-
- distance = norm(center-temp);
- }
-
- double how_far() const { return distance; }
-
- void draw()
- {
- P normal((pt2 - pt1)*(pt4 - pt1));
- normal *= 1/norm(normal);
-
- double dens_r(0.75*(pow(normal|LIGHT_R, 2)/(LIGHT_R|LIGHT_R)));
- double dens_g(0.75*(pow(normal|LIGHT_G, 2)/(LIGHT_G|LIGHT_G)));
- double dens_b(0.75*(pow(normal|LIGHT_B, 2)/(LIGHT_B|LIGHT_B)));
-
- fill(RGB(dens_r, dens_g, dens_b));
- ePiX::quad(pt1, pt2, pt3, pt4);
- }
-
-};
-
-class By_distance {
-public:
- bool operator() (const element& arg1, const element& arg2)
- {
- return arg1.how_far() > arg2.how_far();
- }
-};
-
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
-
- double MAX(8);
- picture(P(-MAX,-MAX),P(MAX,MAX), "5x5in");
-
- begin();
- pen(Neutral(), 0); // no grid lines
-
- // draw bounding square for uniform frame size
- backing(Black());
- viewpoint(VIEWPT);
-
- /* rotating lights
- LIGHT_R=cis(2*M_PI*tix());
- LIGHT_G=cis(2*M_PI*(tix()+0.25));
- LIGHT_B=P(-2,-2,6);
- */
-
- camera.range(20);
-
- // build surface
- std::vector<element> mesh;
-
- for (int i=0; i<N1; ++i)
- for (int j=0; j<N2; ++j)
- mesh.push_back(element(morph, -1+du*i, -2+dv*j));
-
- sort(mesh.begin(), mesh.end(), By_distance());
-
- for (unsigned int i=0; i<mesh.size(); ++i)
- mesh.at(i).draw();
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/hello.xp b/graphics/epix/samples/hello.xp
deleted file mode 100644
index 812529f654..0000000000
--- a/graphics/epix/samples/hello.xp
+++ /dev/null
@@ -1,20 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(-1,-1), P(1,1), "2x1in");
-
- begin();
-
- // uncomment and permute these lines
- // crop_ellipse();
- // backing(Cyan());
- border(Black(), "1pt");
-
- font_size("Huge");
- label(P(0,0), "Hello, world!");
-
- end();
-}
diff --git a/graphics/epix/samples/histogram.xp b/graphics/epix/samples/histogram.xp
deleted file mode 100644
index 47e704fba2..0000000000
--- a/graphics/epix/samples/histogram.xp
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// See binom.cc for instructions on creating data file binom.dat
-
-double erf(double x)
-{
- return 100*exp(-0.02*(x-50)*(x-50))/sqrt(50*M_PI);
-}
-
-int main()
-{
- picture(P(0,0),P(100,20), "6 x 6in");
-
- begin();
-
- grid(1,10);
-
- // read disk file
- data_file binom("binom.dat");
-
- // create "bins" for bar chart
- data_bins db05(-0.5, 100.5, 101); // 5% biased coin
- data_bins db10(-0.5, 100.5, 101); // 10%
- data_bins db30(-0.5, 100.5, 101); // 30%
- data_bins db50(-0.5, 100.5, 101); // 50%
-
- db05.read(binom.column(1));
- db10.read(binom.column(2));
- db30.read(binom.column(3));
- db50.read(binom.column(4));
-
- legend L;
-
- fill();
- gray(0.6);
- db05.bar_chart(100);
- L.fill_item("5\\%");
-
- gray(0.4);
- db10.bar_chart(100);
- L.fill_item("10\\%");
-
- gray(0.2);
- db30.bar_chart(100);
- L.fill_item("30\\%");
-
- gray(0);
- db50.bar_chart(100);
- L.fill_item("50\\%");
-
- nofill();
-
- font_size("footnotesize");
- tick_size(1);
- bottom_axis(10, P(0,-4), b).draw();
-
- left_axis(10, P(-4,0), l).subdivide(2).draw();
-
- bold(Red());
- plot(erf, xmin(), xmax(), 240);
- L.path_item("Normal");
-
- font_size("LARGE");
- L.key_size(18);
- L.draw(P(50, 12.5), P(2,2), tr);
-
- font_face("sc");
- label(P(0.5*(xmin()+xmax()), ymax()), P(0,12),
- "Tossing a Biased Coin, 100,000 Trials", t);
-
- font_size(); // reset to default
- label(P(0.5*(xmin()+xmax()), ymin()), P(0,-18),
- "Number of Heads (100 Tosses per Trial)", b);
-
- degrees();
- label_angle(90);
- label(P(xmin(), 0.5*(ymin()+ymax())), P(-18,0), "Percentage of Trials", l);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/house.flx b/graphics/epix/samples/house.flx
deleted file mode 100644
index 7f4d683849..0000000000
--- a/graphics/epix/samples/house.flx
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*-flix-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double DY(0.1);
-const int N(200);
-const double dN(1.0/N);
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
-
- picture(P(0,0), P(5,3), "5 x 3in");
-
- begin();
- set_crop();
- // sky
- bbold();
- for (int i=0; i<2*N; ++i)
- {
- // fade blue gradient to black
- rgb((1-0.6*tix())*(0.5-0.25*dN*i),
- (1-0.6*tix())*(0.5-0.25*dN*i),
- (1-0.6*tix())*(1-0.2*dN*i));
-
- line(P(0,1+i*dN), P(5,1+i*dN));
- }
-
- // sun
- pen(4);
- revolutions();
- for (int i=1; i<=10; ++i)
- {
- // redden as tix() -> 1
- rgb((1-0.25*tix())*(1-0.01*i), (1-tix())*(1-0.015*i), 0);
- circle(P(3+0.5*tix(), 2.5 - 2*tix()), 0.025*i);
- }
-
- // roof
- red(0.6*(1-0.6*tix()));
- line(P(0.9,1.5), P(1.5,1.8));
- line(P(2.1,1.5), P(1.5,1.8));
-
- // lawn
- bbold();
- for (int i=0; i<N; ++i)
- {
- // fade green gradient to black
- green((1-0.6*tix())*0.4*(1+i*dN));
-
- line(P(0,i*dN), P(5,i*dN));
- }
-
- plain();
- fill();
- gray(0.2+0.8*tix());
-
- path house;
- house.pt(P(1,1-DY)).pt(P(2,1-DY)).pt(P(2, 1.5)).pt(P(1.5,1.75)).pt(P(1,1.5));
- house.close().fill();
- house.draw();
-
- gray(0.1+0.4*tix());
-
- rect(P(1.2,1.1), P(1.4, 1.3)); // window
-
- pen(2);
- dot_size(1);
- rgb(0.8*(1-tix()), 0.8*(1-tix()), 0);
- ring(P(1.65, 1.15)); // doorknob
-
- fill(false);
- plain(Black());
- rect(P(1.6, 1-DY), P(1.85, 1.4)); // door frame
-
- bold(RGB((1-tix())*(0.6),(1-tix())*(0.4),(1-tix())*(0.2)));
- grid(P(1.2,1.1), P(1.4, 1.3), 2, 2); // panes
-
- end();
-}
diff --git a/graphics/epix/samples/hyperboloid.xp b/graphics/epix/samples/hyperboloid.xp
deleted file mode 100644
index 6ea45c9192..0000000000
--- a/graphics/epix/samples/hyperboloid.xp
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*-ePiX-*- */
-// A circular hyperboloid of one sheet and its two families of rulings
-#include "epix.h"
-using namespace ePiX;
-
-const int NUM_LINES(64);
-const double dt(1.0/NUM_LINES);
-
-int main()
-{
- picture(P(-3, -3), P(3, 3), "6x6in");
-
- begin();
- revolutions();
-
- cam().at(20, 0, 5);
-
- clip_box(P(4, 4, 2));
-
- fill(Black(0.8));
-
- // hyperboloid
- surface_rev(sinh, cosh, domain(P(-2,0), P(2,1), mesh(24,36)),
- frame(E_3, E_2, E_1));
-
- // clip to {x>0}
- clip_box(P(0, -4, -2), P(4, 4, 2));
-
- // rulings
- for (int i=-0.5*NUM_LINES; i <= 0.5*NUM_LINES; ++i)
- {
- const double t(i*dt);
- rgb(0,0.5,1);
- Line(P(Cos(t), Sin(t), 0), P(Cos(t) + Sin(t), Sin(t) - Cos(t), 1));
-
- red();
- Line(P(Cos(t), Sin(t), 0), P(Cos(t) - Sin(t), Sin(t) + Cos(t), 1));
- }
-
- // emphatic rulings
- bbold(RGB(0.1,0.6,0.9));
- Line(P(1,0,0), P(1,-1,1));
-
- pen(Red(1.2));
- Line(P(1,0,0), P(1,1,1));
- Line(P(0,1,0), P(-1,1,1));
-
- clip_box();
- // font_size("footnotesize");
- black();
- label(P(1,0,0)-P(0,-2,2), P(2,-2), "$\\ell_0^-$", br);
- label(P(1,0,0)+P(0, 2,2), P(18,2), "$\\ell_0^+$", t);
- label(P(0,1,0)-P(-2,0,2), P(0,-4), "$\\ell_{\\pi/2}^+$",b);
-
- label(P(0,0,-3), P(0,-24),
- "$\\ell_\\theta^-(t)=(\\cos\\theta, \\sin\\theta, 0) + t(\\sin\\theta, -\\cos\\theta, 1)$", b);
-
- label(P(0,0,-3), P(0,-12),
- "$\\ell_\\theta^+(t)=(\\cos\\theta, \\sin\\theta, 0) + t(-\\sin\\theta, \\cos\\theta, 1)$", b);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/inverse.xp b/graphics/epix/samples/inverse.xp
deleted file mode 100644
index d336b67b31..0000000000
--- a/graphics/epix/samples/inverse.xp
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// parameters and an odd cubic
-const double x0(0.4); // critical point
-const double sqrt3(sqrt(3));
-
-double f(double x)
-{
- return 2*x*(x-sqrt3*x0)*(x+sqrt3*x0);
-}
-
-int main()
-{
- picture(P(-2,-1), P(2,1), "6 x 3in");
-
- begin();
-
- degrees();
-
- // draw "ordinary" graph
- screen tmp(P(-1,-1), P(1,1));
- activate(tmp);
-
- // diagonal
- pen(Black(0.1));
- line(P(-1,-1), P(1,1));
-
- // two-headed arrow
- pen(Black(0.3));
- aarrow(P(0.4,0.6), P(0.6,0.4), 0.5);
-
- // axes and labels
- pen(Black());
- font_size("footnotesize");
-
- h_axis(8);
- v_axis(8);
-
- masklabel(P(1,0), "$x$");
- masklabel(P(0,1), "$y$");
-
- label(P(0.5,-0.5), "$y=f(x)$");
-
- label_angle(-90);
- label(P(-0.5,0.5), "$x=f^{-1}(y)$");
-
- // crop remaining elements
- tmp.set_crop();
-
- // a horizontal tangent line
- plain(Blue(1.4));
- tan_line(f, x0);
-
- // graphs that will be inverse branches
- plain(Red(1.4));
- plot(f, -1, -x0, 20);
-
- bold(Red());
- plot(f, -x0, x0, 20);
-
- plain(Red(1.4));
- plot(f, x0, 1, 20);
-
- inset(tmp, P(-2,-1), P(0,1));
-
- // flip plane over diagonal
- affine af;
- af.reflect(45).shift(P(0.25,0)); // compose affine maps
- inset(tmp.apply(af), P(0,-1), P(2,1));
-
- end();
-}
diff --git a/graphics/epix/samples/koch.xp b/graphics/epix/samples/koch.xp
deleted file mode 100644
index 8a9683715c..0000000000
--- a/graphics/epix/samples/koch.xp
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*-ePiX-*- */
-/* koch.c -- May 29, 2002 */
-#include "epix.h"
-using namespace ePiX;
-
-const int koch_seed[] = {6, 4, 0, 1, -1, 0};
-
-int main()
-{
- picture(P(0,0), P(4, 1), "6 x 1.5in");
-
- begin();
- degrees();
-
- for (int i=1; i <= 4; ++i)
- {
- // draw von Koch curve at "depth" i
- screen tmp(P(-1,-1), P(1,1));
- activate(tmp);
-
- if (i==1)
- {
- bold(Red());
- fractal(cis(150), cis(30), i, koch_seed);
- plain(Black());
- }
- else
- fractal(cis(150), cis( 30), i, koch_seed);
-
- fractal(cis( 30), cis(-90), i, koch_seed);
- fractal(cis(-90), cis(150), i, koch_seed);
-
- inset(tmp, P(i-1,0), P(i,1));
- deactivate(tmp);
- }
- end();
-}
-
diff --git a/graphics/epix/samples/label_debug.xp b/graphics/epix/samples/label_debug.xp
deleted file mode 100644
index 0ca0462d74..0000000000
--- a/graphics/epix/samples/label_debug.xp
+++ /dev/null
@@ -1,132 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-/*
- * Font tests; draws all 32 combinations of five attributes:
- *
- * label_color: (Neutral: cols 1, 3; Red, cols 2, 4)
- * label_mask: (Neutral: cols 1, 2; Yellow: cols 3, 4)
- *
- * label_border color: (Neutral: odd rows, Blue otherwise)
- * label_border width: (0pt: rows 1-2, 5-6, 1pt otherwise)
- *
- * pad: (0pt: rows 1-4, 1pt otherwise)
- */
-
-// test objects
-void objs()
-{
- label(P(-0.5,0), "The");
- masklabel(P(0.5,0), "The");
-}
-
-// attribute-setting commands on bool flags
-void label_color(bool arg)
-{
- if (arg)
- label_color(Red());
-
- else
- label_color(Neutral());
-}
-
-void label_mask(bool arg)
-{
- if (arg)
- label_mask(Yellow(0.3));
- else
- label_mask(Neutral());
-}
-
-void set_border(bool col, std::string len)
-{
- if (col)
- label_border(Blue(1.2), len);
-
- else
- label_border(Neutral(), len);
-}
-
-void label_border(bool col, bool wid)
-{
- if (wid)
- set_border(col, "1pt");
-
- else
- set_border(col, "0pt");
-}
-
-void pad(bool arg)
-{
- if (arg)
- label_pad("6pt");
-
- else
- label_pad("0pt");
-}
-
-// we'll use 0, 1 as loop indices; convert to bool
-bool tf(int i)
-{
- return i == 0 ? false : true;
-}
-
-// where to position the result of a test
-P loc(int i0, int i1, int i2, int i3, int i4)
-{
- double horiz(0), vert(7);
- if (tf(i0))
- horiz += 1;
-
- if (tf(i1))
- horiz += 2;
-
- if (tf(i2))
- vert -= 1;
-
- if(tf(i3))
- vert -= 2;
-
- if (tf(i4))
- vert -= 4;
-
- return P(horiz, vert);
-}
-
-int main()
-{
- picture(P(0,0), P(4,8), "6 x 9in");
-
- begin();
-
- // the tests proper
- for (int i0=0; i0<2; ++i0)
- for (int i1=0; i1<2; ++i1)
- for (int i2=0; i2<2; ++i2)
- for (int i3=0; i3<2; ++i3)
- for (int i4=0; i4<2; ++i4)
- {
- screen scr(P(-1,-1), P(1,1));
- activate(scr);
-
- solid(); // may need to reset line style
- border(Green(0.6), "0.1pt");
-
- backing(Black(0.1));
- pen(Black(0.3));
- grid(8,8);
-
- label_color(tf(i0));
- label_mask(tf(i1));
- label_border(tf(i2),tf(i3));
- pad(tf(i4));
-
- objs();
-
- scr.scale(0.9);
- inset(loc(i0,i1,i2,i3,i4), loc(i0,i1,i2,i3,i4) + P(1,1));
- deactivate(scr);
- }
- end();
-}
diff --git a/graphics/epix/samples/layout.xp b/graphics/epix/samples/layout.xp
deleted file mode 100644
index 0967af53e2..0000000000
--- a/graphics/epix/samples/layout.xp
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*-ePiX-*- */
-/* layout.xp -- June 27, 2007 */
-#include "epix.h"
-using namespace ePiX;
-
-P f(double u, double v)
-{
- return P((u-v)*(u+v), 2*u*v, u);
-}
-
-int main()
-{
- picture(P(0,0), P(2,3), "5x7.5in");
-
- begin();
-
- domain R(P(-1,-1), P(1,1), mesh(12,12), mesh(24,24));
-
- for (int i=0; i<2; ++i)
- for (int j=0; j<3; ++j)
- {
- screen my(P(-3,-3), P(3,3));
- activate(my);
- border(Red(0.6), "1pt");
- camera.at(sph(10, (2*j+i+1)*M_PI/8, M_PI/6));
-
- plot(f, R);
- arrow(P(0,0,0), 2*E_1);
- arrow(P(0,0,0), 2*E_2);
- inset(P(i+0.05,2.05-j), P(i+0.95,2.95-j));
- deactivate(my);
- }
-
- end();
-}
-
diff --git a/graphics/epix/samples/layout2.xp b/graphics/epix/samples/layout2.xp
deleted file mode 100644
index f2203a2a84..0000000000
--- a/graphics/epix/samples/layout2.xp
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*-ePiX-*- */
-/* layout.xp -- June 27, 2007 */
-#include "epix.h"
-using namespace ePiX;
-
-P F(double s, double t)
-{
- return P(0.1*s, 0.025*t) + (1/(0.01+s*s+t*t))*P(-t, s);
-}
-
-int main()
-{
- picture(P(0,0), P(2,3), "5x7in");
-
- begin();
-
- for (int k=0; k<3; ++k)
- for (int j=0; j<2; ++j)
- {
- screen my(P(-4, -3), P(2,2));
- activate(my);
-
- border(Red(0.6), "1pt");
- set_crop();
- plain(Blue(1.8));
- dart_field(F, P(-4, -3), P(2, 2), 12, 10);
-
- bold();
- for (int i=0; i<7; ++i)
- {
- pen(RGB(0.05*(7-i), 1 - 0.1*i, 0.15*i));
- ode_plot(F, P(-0.9-0.025*i,0), 4*(3*j+k+0.5), 30*(3*j+k+0.5));
- }
-
- inset(P(j+0.05,1.05-k), P(j+0.95,1.95-k));
-
- deactivate(my);
- }
-
- end();
-}
-
diff --git a/graphics/epix/samples/legend.xp b/graphics/epix/samples/legend.xp
deleted file mode 100644
index a6be848bc9..0000000000
--- a/graphics/epix/samples/legend.xp
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P sin_n(double x, double n) // Taylor polynomial of sin x
-{
- const int N((int) floor(n)); // convert y to an index bound
- const double sqx(-pow(x, 2)); // store -x^2 for efficiency
- double val(x), summand(x); // places to store results of evaluation
-
- // step through odd numbers from 1 to 2N+1
- for (int i=1; i <= 2*N+1; i += 2)
- {
- summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)!
- val += summand;
- }
-
- return P(x, val);
-}
-
-int main()
-{
- picture(P(0,-2.5),P(6*M_PI, 1), "5x3.5in");
-
- begin();
-
- camera.filter(CMY_Neutral());
- set_crop();
- plain(Black(0.5));
- grid(12, 7);
-
- // coordinate axis
- axis Ax(P(0,0), P(6*M_PI,0), 12, P(0,-4), b);
- Ax.trig().subdivide(4);
-
- axis Ay(P(0,ymin()), P(0,ymax()), 7, P(-4,0), l);
- Ay.frac().draw_labels();
-
- // define a legend and set global attributes
- legend L;
- L.backing(Yellow(0.1)).border(Blue(), 1).item_border(0);
-
- bbold(Green());
- plot(Sin, 0, xmax(), 120);
-
- // add a legend item
- L.path_item("$y=\\sin x$");
-
- domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(240, 40));
-
- // print in descending degree so paths overlap better
- for (int i=3; 0 <= i; --i)
- {
- pen(RGB(0.25*i, 0, 1-0.25*i));
- plot(sin_n, R.slice2(5*i+1));
-
- // add a legend item; key set automatically
- std::stringstream buf;
- buf << "$y=p_{" << 10*i+5 << "}(x)$";
- L.path_item(buf.str());
- }
-
- plain(Black());
- label_mask(White());
- Ax.draw();
-
- // place at bottom left
- L.draw(canvas().bl(), P(2,2), tr);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/levelset.xp b/graphics/epix/samples/levelset.xp
deleted file mode 100644
index c802f5dc52..0000000000
--- a/graphics/epix/samples/levelset.xp
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*-ePiX-*- */
-/* levelset.xp -- level sets */
-#include "epix.h"
-using namespace ePiX;
-
-const int MAX(3);
-const double k(0.25);
-
-P Fp(double u, double v)
-{
- double r(sqrt(fabs(v)));
- if (v>=0)
- return P(r*cosh(u), r*sinh(u), k*v);
-
- else
- return P(-r*sinh(u), -r*cosh(u), k*v);
-
-}
-
-P Fm(double u, double v)
-{
- double r(sqrt(fabs(v)));
- if (v>=0)
- return P(-r*cosh(u), r*sinh(u), k*v);
-
- else
- return P(-r*sinh(u), r*cosh(u), k*v);
-
-}
-
-double f(double x, double y)
-{
- return k*(x-y)*(x+y);
-}
-
-int main()
-{
- picture(P(-MAX,-MAX), P(MAX, MAX), "2x2in");
-
- begin();
-
- camera.at(P(1,-3,5));
- camera.range(40);
-
- clip_box(P(MAX,MAX,2*MAX));
- clip();
-
- red();
- plot(f, P(-MAX,-MAX), P(MAX, MAX), mesh(4,4), mesh(40,40));
-
- domain R(P(-4,-9), P(4,9), mesh(1,12), mesh(90,1));
-
- bold(); rgb(0.5,0.5,1);
- line(P(MAX,-MAX,0), P(-MAX, MAX,0));
- line(P(MAX, MAX,0), P(-MAX,-MAX,0));
- plot(Fp, R.slices2());
- plot(Fm, R.slices2());
-
- end();
-}
diff --git a/graphics/epix/samples/levelset2.xp b/graphics/epix/samples/levelset2.xp
deleted file mode 100644
index ab1a605069..0000000000
--- a/graphics/epix/samples/levelset2.xp
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// Style parameters
-const int MAX(1); // maximum coordinate
-
-domain R(P(-MAX,-MAX), P(MAX, MAX), (24, 24), mesh(72,72));
-
-const double sqrt3(sqrt(3));
-
-// function to be graphed
-P f(double x, double y)
-{
- return P(x, y, 0.75*y*(y-sqrt3*x)*(y+sqrt3*x));
-}
-
-P color(double u, double v, double w)
-{
- return P(-0.5*w, 0.25*w, 0.95*w);
-}
-
-int main()
-{
- picture(P(-2*MAX,-2*MAX), P(2*MAX,2*MAX), "6 x 6in");
-
- begin();
-
- border(Green(0.6), "1pt");
- backing(Black());
-
- camera.at(sph(4*MAX, M_PI/6, M_PI/6));
-
- // positioned for viewpt in first orthant
- yellow();
- grid(P(-MAX,-MAX,-MAX), P(MAX,MAX,-MAX), 4, 4);
- grid(P(-MAX,-MAX,-MAX), P(MAX,-MAX,MAX), 4, 4);
- grid(P(-MAX,-MAX,-MAX), P(-MAX,MAX,MAX), 4, 4);
-
- axis Ax(P(-MAX,-MAX,MAX), P(MAX,-MAX,MAX), 4, P(0,6), t);
- axis Ay(P(MAX,-MAX,-MAX), P(MAX,MAX,-MAX), 4, P(-2,-2), bl);
- axis Az(P(MAX,-MAX,-MAX), P(MAX,-MAX,MAX), 4, P(-2,-2), bl);
-
- Ax.frac().draw();
- Ay.frac().draw();
- Az.frac().draw();
-
- clip_box(P(MAX,MAX,MAX));
-
- // wire mesh surface
- plain(Green());
- plot(f, R);
-
- // level bands
- plain(Red());
-
- for (int i=-5; i <=5; ++i)
- {
- clip_slice(P(0,0,0.2*i), P(0,0,1), 0.1);
-#ifdef FLATFILL
- fill(RGB(0.25+0.1*i, 0, -0.1*i)); // index-dependent coloring
- surface(f, R);
-#else
- surface(f, R, color); // domain- or position-dependent coloring
-#endif
- clip_restore(); // remove temporary slicing planes, keep clip box
- }
-
- pst_format();
- end();
-}
-
diff --git a/graphics/epix/samples/levelset3.xp b/graphics/epix/samples/levelset3.xp
deleted file mode 100644
index aab13bec4f..0000000000
--- a/graphics/epix/samples/levelset3.xp
+++ /dev/null
@@ -1,89 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// Style parameters
-const int MESH(12); // number of coordinate grid squares
-const int MAX(3); // maximum coordinate
-
-// camera location (in spherical coordinates); must be in first orthant
-const P VIEWPT(sph(4*MAX, M_PI/6, M_PI/6));
-
-const double sqrt3(sqrt(3));
-
-// function to be graphed
-P f(double x, double y)
-{
- // return P(x, y, 0.75*y*(y-sqrt3*x)*(y+sqrt3*x));
- return P(x,y, 0.9*MAX*exp(-0.5*(x*x+y*y))*x*y);
- // return P(x, y, 0.25*(x-y*y)*(x-3*y*y));
-}
-
-P color(double u, double v, double w)
-{
- return P(-0.5*w, 0.25*w, 0.5*w);
-}
-
-Color Bk(Green(0.7));
-
-int main()
-{
- // picture(P(-2*MAX,-2*MAX), P(2*MAX,2*MAX), "6 x 6in");
- picture(P(-MAX,-MAX), P(MAX,MAX), "6 x 6in");
-
- begin();
- backing(Bk);
-
- camera.at(0,-10,4);
-
- border(Green(0.6), "1pt");
-
- clip_box(P(MAX,MAX,MAX));
-
- domain R(P(-MAX,-MAX), P(MAX, MAX), (6*MESH, 6*MESH), mesh(6*MESH, 6*MESH));
-
- legend L1, L2, L3;
- L1.backing(Bk);
- L2.backing(Bk);
- L3.backing(Bk);
-
- // pen(RGB(1, 0.8, 0.2), 0.1);
- for (int i=-10; i <=10; ++i)
- {
- clip_slice(P(0,0,0.1*i), P(0,0,1), 0.1);
- // fill(RGB(0.25+0.1*i, 0, -0.1*i));
- rgb(0.25+0.1*i, 0, -0.1*i);
-
- std::stringstream buf;
- buf << "$" << 0.1*i - 0.05
- << "\\leq z \\leq " << 0.1*i + 0.05 << "$";
-
- if (i <-3)
- L1.fill_item(buf.str());
-
- else if(i<4)
- L2.fill_item(buf.str());
-
- else
- L3.fill_item(buf.str());
-
- nofill();
- surface(f, R);
- clip_restore();
- }
-
- camera.at(0,0,1000);
- font_size("scriptsize");
- label_color(Black());
- L1.border(0);
- L2.border(0);
- L3.border(0);
-
- L1.draw(canvas().bl(), P(2,2), tr);
- L2.draw(canvas().bl()+P(2,0), P(2,2), tr);
- L3.draw(canvas().bl()+P(4,0), P(2,2), tr);
-
- pst_format();
- end();
-}
-
diff --git a/graphics/epix/samples/lighting.flx b/graphics/epix/samples/lighting.flx
deleted file mode 100644
index 80997bebeb..0000000000
--- a/graphics/epix/samples/lighting.flx
+++ /dev/null
@@ -1,132 +0,0 @@
-/* -*-flix-*- */
-// compile with flix -I. [-DAXES] lighting.flx
-// in a directory containing lighting.h
-#include "epix.h"
-#include "lighting.h"
-using namespace ePiX;
-
-// mesh intervals for torus
-int N1(36), N2(12);
-
-// torus
-P F(double x, double y)
-{
- double R(5-2*Sin(M_PI*y/N2));
- return P(R*Cos(2*M_PI*x/N1), R*Sin(2*M_PI*x/N1), 2*Cos(M_PI*y/N2));
-}
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
- picture(P(-10,-10),P(10,10), "4x4in");
-
- begin();
- set_crop();
-
- backing(Black());
-
- domain R(P(0,N2), P(N1,2*N2), mesh(N1,N2), mesh(2*N1,2*N2));
-
- // manual layering below may require adjustment if the camera is moved
- camera.at(P(4,6,4));
- camera.range(16);
-
-#ifdef AXES
- yellow();
- label(P(8,0,0), P(-2,-2), "$\\mathbf{x}$", bl);
- label(P(0,8,0), P( 2,-2), "$\\mathbf{y}$", br);
- label(P(0,0,8), P( 0, 4), "$\\mathbf{z}$", t);
-#endif
-
- // draw grid only
- pen(Green(), 0.15);
- plot(F, R);
-
- // axes (with solid arrowheads) and shaded surface
-#ifdef AXES
- arrow(P(0,0,0), P(8,0,0));
- arrow(P(0,0,0), P(0,8,0));
- arrow(P(0,0,0), P(0,0,8));
-#endif
-
- rgb(0.8, 0.4, 0);
- fill();
- Color chip_color(White()); // true color of torus
- Color ambient(RGB(1,0.75,0)); // ambient light
-
- Fog fog(White(), 0.0125);
-
- // spot light location
- P spot_at(sph(10, M_PI_4, 2*M_PI*tix())); // traverses a longitude
-
- // P spot_b=P(5,0,0)+cyl(10, 2*M_PI*tix(), 5); // or latitude
- // P spot_b(5,-5,10); // or stays put
- Spot spot(Blue(), spot_at);
-
- std::vector<Chip> surf_mesh;
- // torus, surface reflectivity .75
- for (int i=0; i<N1; ++i)
- for (int j=0; j<N2; ++j)
- surf_mesh.push_back(Chip(F(i,j), F(i+1,j), F(i+1,j+1), F(i,j+1),
- 0.75, chip_color));
-
- sort(surf_mesh.begin(), surf_mesh.end(), chip_distance());
-
-#ifdef SHOW_SPOT
- // mark spot light's location
- if (spot_at.x2() <= 0)
- {
- blue();
- box(spot.m_loc);
- }
-#endif
-
- // draw shaded surface mesh
- for (unsigned int i=0; i<surf_mesh.size(); ++i)
- surf_mesh.at(i).draw(fog, spot, ambient);
-
-#ifdef SHOW_SPOT
- if (spot_at.x2() > 0)
- {
- blue();
- box(spot.m_loc);
- }
-#endif
-
-#ifdef AXES
- // re-draw hidden portions
- green();
- line(P(3,0,0), P(8,0,0));
- line(P(0,3,0), P(0,8,0));
- line(P(0,0,0), P(0,0,8));
-#endif
-
- fill(false);
- // redraw front portion of mesh partially covered by solid surface
- pen(Green(), 0.15);
- plot(F, R.resize1(0, 0.25*N1));
-
- // labels
- base(White(), 1);
- line(P(3,0,6), F(0,0.25*N2));
- line(P(6,0,4), F(0,-0.25*N2));
-
- label_border(Green(0.6), "0.5pt");
- label_color(Black());
- label_mask(RGB(1,0.8,0.2));
-
- font_size("footnotesize");
- masklabel(P(3,0,6), P(0,0), "Total curvature $-\\pi$", t);
- masklabel(P(6,0,4), P(0,0), "Total curvature $\\pi$", t);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/lighting.h b/graphics/epix/samples/lighting.h
deleted file mode 100644
index 6493332a95..0000000000
--- a/graphics/epix/samples/lighting.h
+++ /dev/null
@@ -1,114 +0,0 @@
-double clip_0_1(double t)
-{
- return (t<0) ? 0 : (t>1 ? 1 : t);
-}
-
-double trunc(double t)
-{
- if (fabs(t) < 0.0001)
- t=0;
-
- return t;
-}
-
-namespace ePiX {
-
- class Spot {
- public:
- Spot(const Color& col, const P& loc) : m_tint(col), m_loc(loc) { }
-
- Color m_tint;
- P m_loc;
- };
-
- class Fog {
- public:
- Fog(const Color& c, const double k) : m_tint(c), m_dens(k) { }
-
- Color apply_to(const Color& col, const double dist) const
- {
- Color me(m_tint);
- return me.blend(col, exp(-dist*m_dens));
- }
-
- private:
- Color m_tint;
- double m_dens;
- };
-
- // cf. facet class in facet.h
- class Chip {
- public:
- Chip(const P& p1, const P& p2, const P& p3, const P& p4, const double s,
- const Color& c)
- : pt1(p1), pt2(p2), pt3(p3), pt4(p4), m_shine(s), m_tint(c)
- {
- m_ctr = 0.25*(p1+p2+p3+p4);
- P n = (p2-p1)*(p4-p1);
- n *= recip(norm(n));
- m_perp=n;
- }
-
- double how_far() const { return norm(camera.viewpt()-m_ctr); }
-
- void draw(const ePiX::Fog& fog,
- const ePiX::Spot& spot,
- const ePiX::Color& ambient) const
- {
- fill(appearance(camera.viewpt(), fog, spot, ambient));
- ePiX::quad(pt1, pt2, pt3, pt4);
- }
-
- private:
- P pt1, pt2, pt3, pt4; // vertices
- double m_shine; // shininess
- Color m_tint; // out color
-
- P m_ctr; // our location
- P m_perp; // unit normal
-
- Color appearance(const P& viewer, const Fog& fog,
- const Spot& spot, Color ambient) const
- {
- P spot_dir(spot.m_loc - m_ctr);
- double spot_dist(norm(spot_dir));
- spot_dir *= recip(spot_dist);
-
- P view_dir(viewer - m_ctr);
- double view_dist(norm(view_dir));
- view_dir *= recip(view_dist);
-
- // calculate relative intensities
- //double I_ambt = pow((m_perp|view_dir), 2); // cos^2 of normal angle
- double I_ambt(fabs(m_perp|view_dir)); // |cos| of normal angle
-
- // crude but fairly effective
- //double I_spot = 0.5*(1+((spot_dir*m_perp)|(m_perp*view_dir)));
-
- // reflect spot_dir across m_perp in the plane they span,
- // then take (cos(angle to viewer)^4)
- P refl_dir(-spot_dir + 2*(spot_dir|m_perp)*m_perp);
- double I_spot(pow((refl_dir|view_dir), 2));
-
-
- // light from spot that reaches our location and is reflected to viewer
- Color spot_refl(I_spot*(fog.apply_to(spot.m_tint, spot_dist)));
-
- // not shiny -> reflect mostly ambient
- Color refl(I_ambt*ambient.blend(spot_refl, m_shine));
-
- // Color we reflect toward viewer
- Color source(m_tint.filter(refl));
- return fog.apply_to(source, view_dist);
- }
- };
-
- class chip_distance {
- public:
- bool operator() (const Chip& arg1, const Chip& arg2)
- {
- return arg1.how_far() > arg2.how_far();
- }
- };
-} // end of namespace
-
diff --git a/graphics/epix/samples/line_debug.xp b/graphics/epix/samples/line_debug.xp
deleted file mode 100644
index 13af932c78..0000000000
--- a/graphics/epix/samples/line_debug.xp
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-/*
- * Line and fill style test; draws all 32 combinations of five attributes:
- *
- * line color: (Neutral: cols 1, 3; Red, cols 2, 4)
- * line style: (Solid: cols 1, 2; dashed: cols 3, 4)
- *
- * base color: (Neutral: odd rows, Blue otherwise)
- * base width: (1pt: rows 1-2, 5-6, 4pt otherwise)
- *
- * fill color: (Neutral: rows 1-4, Yellow otherwise)
- */
-
-// test objects
-void objs()
-{
- rect(P(0,0), P(1,1));
- line(P(-1,-1), P(1,-1));
-}
-
-// attribute-setting commands on bool flags
-void line_color(bool arg)
-{
- if (arg)
- pen(Red(), 2);
-
- else
- pen(Neutral(), 2);
-}
-
-void line_style(bool arg)
-{
- if (arg)
- dashed();
-}
-
-void base_color(bool col, double wid)
-{
- if (col)
- base(Blue(1.2), wid);
-
- else
- base(Neutral(), wid);
-}
-
-void base_pen(bool col, bool wid)
-{
- if (wid)
- base_color(col, 4);
-
- else
- base_color(col, 1);
-}
-
-void fill_color(bool arg)
-{
- if (arg)
- fill(Yellow());
-
- else
- fill(Neutral());
-}
-
-// we'll use 0, 1 as loop indices; convert to bool
-bool tf(int i)
-{
- return i == 0 ? false : true;
-}
-
-// where to position the result of a test
-P loc(int i0, int i1, int i2, int i3, int i4)
-{
- double horiz(0), vert(7);
- if (tf(i0))
- horiz += 1;
-
- if (tf(i1))
- horiz += 2;
-
- if (tf(i2))
- vert -= 1;
-
- if(tf(i3))
- vert -= 2;
-
- if (tf(i4))
- vert -= 4;
-
- return P(horiz, vert);
-}
-
-int main()
-{
- picture(P(0,0), P(4,8), "6 x 9in");
-
- begin();
-
- // the tests proper
- for (int i0=0; i0<2; ++i0)
- for (int i1=0; i1<2; ++i1)
- for (int i2=0; i2<2; ++i2)
- for (int i3=0; i3<2; ++i3)
- for (int i4=0; i4<2; ++i4)
- {
- screen scr(P(-1,-1), P(1,1));
- activate(scr);
-
- solid(); // may need to reset line style
- border(Green(0.6), "0.1pt");
-
- line_color(tf(i0));
- line_style(tf(i1));
- base_pen(tf(i2),tf(i3));
- fill_color(tf(i4));
-
- objs();
-
- scr.scale(0.9);
- inset(loc(i0,i1,i2,i3,i4), loc(i0,i1,i2,i3,i4) + P(1,1));
- deactivate(scr);
- }
- end();
-}
diff --git a/graphics/epix/samples/lissajous.xp b/graphics/epix/samples/lissajous.xp
deleted file mode 100644
index c713d760bb..0000000000
--- a/graphics/epix/samples/lissajous.xp
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P f(double t)
-{
- return P(Sin(3*t), Sin(4*t));
-}
-
-int main()
-{
- picture(P(-1,-1), P(1,1), "2 x 2in");
-
- begin();
- revolutions();
-
- bold(Red());
- plot(f, 0, 1, 200);
-
- arrow_inset(0.2);
- arrow_width(1.5);
-
- plain(Blue());
- tan_field(f, 0, 1, 81);
-
- end();
-}
-
diff --git a/graphics/epix/samples/log.xp b/graphics/epix/samples/log.xp
deleted file mode 100644
index 4f16921cdf..0000000000
--- a/graphics/epix/samples/log.xp
+++ /dev/null
@@ -1,217 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// October 28, 2006
-//
-// This file depicts two sheets of the Riemann surface of log, together
-// with the log function over the unit circle. Surface and path elements
-// must be drawn together. However, path-like mesh elements must be drawn
-// after surface elements that lie at the same location in the scene,
-// since otherwise surface elements' edges occlude the path.
-//
-// A mesh_elt class stores the necessary P data as well as a flag marking
-// the element as a segment or a surface patch. Elements are stored in a
-// std::vector (global to the scene) and sorted by distance. To ensure that
-// surface patches are printed first, their true distance is increased by a
-// "fudge" amount (0.25), making the By_distance class see them as farther
-// than they really are.
-//
-// Path elements are drawn in green; surface patches are shaded gray
-// according to the angle between the incoming light (from a point source)
-// and the surface normal.
-//
-// Surface patches are drawn as octagons to make the mesh appear smoother
-// than a quadrilateral mesh. The vertices of a patch are the images of the
-// corners and midpoints of a coordinate quadrilateral, "retracted" inward
-// by a small "gap" EPS (possibly zero). A positive gap simulates surface
-// transparency.
-//
-// (u,v+dv) (u+0.5*du,v+dv) (u+du,v+dv)
-// +----------------------+-----------------------+
-// | *--------------------*---------------------* |
-// | | | |
-// | | | |
-// | | | |
-// + * (u+EPS,v+0.5*dv) * + (u+du,v+0.5*dv)
-// | | | |
-// | | | |
-// | | (u+EPS,v+EPS) | |
-// | *--------------------*---------------------* |
-// +----------------------+-----------------------+
-// (u,v) (u+0.5*du,v) (u+du,v)
-
-
-const P LIGHT(2, 2, 0); // location of light, for shading
-const P VIEWPT(15,-10,6);
-
-// surface and path mesh fineness
-const int N1(18);
-const int N2(80);
-
-const int N3(120);
-
-const double du(4.5/N1);
-const double dv(6.0/N2);
-
-const double dt(4.0/N3);
-
-// "gap size" between surface mesh elements
-const double EPS(0); // (0.002);
-
-// visual styles
-void path_color() { green(0.8); }
-void label_color() { yellow(0.5); }
-void dot_color() { red(); }
-void path_width() { pen(1.5); }
-
-// class can represent either a surface element or a path element
-class mesh_elt {
-private:
- P pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, center;
-
- double fudge; // artificial increment to distance
- static bool last_was_seg;
- bool is_segment;
-
-public:
- double how_far() const
- {
- return fudge + norm(center - camera.viewpt());
- }
-
- mesh_elt(P f(double u, double v), double u0, double v0)
- : pt1(f(u0+EPS,v0+EPS)), pt2(f(u0+0.5*du,v0+EPS)),
- pt3(f(u0+du-EPS,v0+EPS)), pt4(f(u0+du-EPS,v0+0.5*dv)),
- pt5(f(u0+du-EPS,v0+dv-EPS)), pt6(f(u0+0.5*du,v0+dv-EPS)),
- pt7(f(u0+EPS,v0+dv-EPS)), pt8(f(u0+EPS,v0+0.5*dv)),
- center(0.25*(pt1 + (pt3 + (pt5 + pt7)))),
- fudge(0.25), is_segment(false) { }
-
- mesh_elt(P f(double), double t0)
- : pt1(f(t0)), pt2(f(t0+0.25*dt)), pt3(f(t0+0.5*dt)),
- pt4(f(t0+0.75*dt)), pt5(f(t0+dt)), pt6(), pt7(), pt8(),
- center(0.333*(pt1 + (pt3 + pt5))),
- fudge(0), is_segment(true) { }
-
- void draw() const
- {
- if (!is_segment) {
- P normal((pt2 - pt1)*(pt4 - pt1));
- normal *= 1/norm(normal);
-
- double dens(0.5*(1-((normal|LIGHT)/norm(LIGHT))));
-
- if (mesh_elt::last_was_seg)
- {
- mesh_elt::last_was_seg=false;
- plain(); // reset pen width
- }
-
- black();
- gray(dens);
-
- std::vector<P> bd;
- bd.push_back(pt1);
- bd.push_back(pt2);
- bd.push_back(pt3);
- bd.push_back(pt4);
- bd.push_back(pt5);
- bd.push_back(pt6);
- bd.push_back(pt7);
- bd.push_back(pt8);
-
- path temp(bd, true, true); // closed and filled
- temp.draw();
- }
- else { // segment
- if (!mesh_elt::last_was_seg)
- {
- mesh_elt::last_was_seg=true;
- path_width();
- path_color();
- }
-
- std::vector<P> bd;
- bd.push_back(pt1);
- bd.push_back(pt2);
- bd.push_back(pt3);
- bd.push_back(pt4);
- bd.push_back(pt5);
-
- path temp(bd, false, false);
- temp.draw();
- }
-
- } // end of mesh_elt::draw()
-
-}; // end of class mesh_elt
-
-// initialize static data
-bool mesh_elt::last_was_seg = false;
-
-class By_distance {
-public:
- bool operator() (const mesh_elt arg1, const mesh_elt arg2)
- {
- return (arg1.how_far()) > (arg2.how_far());
- }
-};
-
-// the maps to be plotted
-P C_log(double u, double v)
-{
- return polar(exp(u), M_PI*v) + P(0, 0, u+M_PI*v);
-}
-
-P C_log1(double t)
-{
- return C_log(0,t);
-}
-
-int main() {
- bounding_box(P(-6, -12),P(6,12));
- unitlength("1in");
- picture(P(4,8));
-
- begin();
- fill();
-
- degrees();
- // label_angle(90);
- label(P(0, ymin()), P(0,4),
- "$z=\\mathrm{Re}\\,\\log(x+iy) + \\mathrm{Im}\\,\\log(x+iy)$", t);
- radians();
- // label_angle(0);
-
- viewpoint(VIEWPT);
- camera.range(20);
-
- std::vector<mesh_elt> mesh_data;
-
- // surface elements
- for (int i=0; i<N1; ++i)
- for (int j=0; j<N2; ++j)
- mesh_data.push_back(mesh_elt(C_log, -3+du*i, -3+dv*j));
-
- // path elements
- for (int i=0; i<N3; ++i)
- mesh_data.push_back(mesh_elt(C_log1, -2+i*dt));
-
- stable_sort(mesh_data.begin(), mesh_data.end(), By_distance());
-
- for (int i=0; i<mesh_data.size(); ++i)
- mesh_data.at(i).draw();
-
- dot_color();
- marker(C_log(0,-2), BOX);
- marker(C_log(0, 0), BOX);
- marker(C_log(0, 2), BOX);
-
- label_color();
- label(C_log(0,-2), P(6, 0), "$-2\\pi i$", r);
- label(C_log(0, 0), P(6, 0), "$0$", r);
- label(C_log(0, 2), P(-6, 0), "$2\\pi i$", l);
-
- end();
-}
diff --git a/graphics/epix/samples/lorenz.xp b/graphics/epix/samples/lorenz.xp
deleted file mode 100644
index 6b2afae3cf..0000000000
--- a/graphics/epix/samples/lorenz.xp
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// ODE parameters
-const double A1(10);
-const double A2(28);
-const double A3(2.6666);
-
-// parameter box
-const double MAX(30);
-
-// bounding box (set in screens)
-const double XMAX(50);
-
-// flow time
-const double TMAX(2000);
-
-P F(double x, double y, double z)
-{
- return 0.01*P(A1*(y-x), x*(A2-z)-y, x*y-A3*z);
-}
-
-domain R(P(-MAX,-MAX,0), P(MAX,MAX,2*MAX), mesh(6, 6, 6));
-
-void draw_frame()
-{
- dart_field(F, R.resize1(0,MAX), 0.5);
-
- bold(Red());
- ode_plot(F, P(10,0,0), 0, TMAX, TMAX);
-
- pen(Blue());
- // nearby start points, but trajectories not close
- ode_plot(F, P(10.5,0,0), 0, TMAX, TMAX);
-
- plain(Black());
- dart_field(F, R.resize1(-MAX,0), 0.5);
-}
-
-// initialize the camera
-void init_cam(const P& arg)
-{
- camera.at(arg);
- camera.look_at(P(0,0,MAX));
- camera.range(500);
-}
-
-int main()
-{
- picture(P(-1,0), P(1,1), "6x3in");
-
- begin();
-
- screen left_eye(P(-XMAX,-XMAX), P(XMAX,XMAX));
- activate(left_eye);
- init_cam(P(-100, 90, 63));
- draw_frame();
-
- screen right_eye(P(-XMAX,-XMAX), P(XMAX,XMAX));
- activate(right_eye);
- init_cam(P(-100, 80, 63));
- draw_frame();
-
- // page layout
- inset(left_eye, P(0,0), P(1,1));
- inset(right_eye, P(-1,0), P(0,1));
-
- end();
-}
diff --git a/graphics/epix/samples/medians.xp b/graphics/epix/samples/medians.xp
deleted file mode 100644
index e1e8bf910a..0000000000
--- a/graphics/epix/samples/medians.xp
+++ /dev/null
@@ -1,134 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const P pt1(2,-1);
-const P pt2(1,2);
-const P pt3(-2,0);
-
-void altitude_color()
-{
- blue(1.4);
-}
-
-#ifdef BISECTORS
-void bisector_color()
-{
- green(1.4);
-}
-#endif
-
-// project arg to line through tail, head
-P drop_perp(const P& arg, const P& tail, const P& head)
-{
- return arg - ((arg - tail)%(head - tail)); // % = orthogonalization
-}
-
-#ifdef BISECTORS
-P bisector(const P& arg, const P& tail, const P& head)
-{
- P dir_tl(tail - arg);
- dir_tl *= 1.0/norm(dir_tl);
-
- P dir_hd(head - arg);
- dir_hd *= 1.0/norm(dir_hd);
-
- Segment bisect(arg, arg + 0.5*(dir_tl + dir_hd));
-
- return Segment(tail, head)*bisect;
-}
-#endif
-
-void rangle(const P& arg, const P& tail, const P& head)
-{
- const P dir(head - tail);
- const P loc(arg - ((arg - tail)%dir));
-
- right_angle(loc, dir, J(dir));
-}
-
-const P q1(drop_perp(pt1, pt2, pt3));
-const P q2(drop_perp(pt2, pt3, pt1));
-const P q3(drop_perp(pt3, pt1, pt2));
-
-#ifdef BISECTORS
-const P r1(bisector(pt1, pt2, pt3));
-const P r2(bisector(pt2, pt3, pt1));
-const P r3(bisector(pt3, pt1, pt2));
-#endif
-
-int main()
-{
- picture(P(-3,-3), P(3,3), "4x4in");
-
- begin();
- set_crop();
-
- // sides
- Segment side1(pt2, pt3);
- Segment side2(pt3, pt1);
- Segment side3(pt1, pt2);
-
- // medians
- Segment med1(pt1, side1.midpoint());
- Segment med2(pt2, side2.midpoint());
- Segment med3(pt3, side3.midpoint());
-
- // altitudes
- Segment alt1(pt1, q1);
- Segment alt2(pt2, q2);
- Segment alt3(pt3, q3);
-
-#ifdef BISECTORS
- // bisectors
- Segment bis1(pt1, r1);
- Segment bis2(pt2, r2);
- Segment bis3(pt3, r3);
-#endif
-
- med1.draw();
- med2.draw();
- med3.draw();
-
- bold();
- side1.draw();
- side2.draw();
- side3.draw();
- plain();
-
- altitude_color();
- alt1.draw();
- alt2.draw();
- alt3.draw();
-
- rangle(q1, pt2, pt3);
- rangle(q2, pt3, pt1);
- rangle(q3, pt1, pt2);
-
- circle(q1, q2, q3);
-
- label(q1, P(-2,4), "$a_1$", t);
- label(q2, P(-2,-4), "$a_2$", b);
- label(q3, P(4,0), "$a_3$", r);
-
-#ifdef BISECTORS
- bisector_color();
- bis1.draw();
- bis2.draw();
- bis3.draw();
-
- // circle(r1, r2, r3);
-#endif
-
- black();
- font_size("footnotesize");
- label(pt1, P(2,-2), "$p_1$", br);
- label(pt2, P(2,2), "$p_2$", tr);
- label(pt3, P(-4,-2), "$p_3$", l);
-
- label(side1*med1, P(-4,2), "$m_1$", tl);
- label(side2*med2, P(-2,-4), "$m_2$", b);
- label(side3*med3, P(4,0), "$m_3$", r);
-
- end();
-}
diff --git a/graphics/epix/samples/minkowski.xp b/graphics/epix/samples/minkowski.xp
deleted file mode 100644
index c9e841730b..0000000000
--- a/graphics/epix/samples/minkowski.xp
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double MAX(3);
-
-// hyperboloid of one sheet/spacelike cone
-P Fp(double x, double y, double z)
-{
- return P(z*cosh(x)*Cos(y), z*cosh(x)*Sin(y), z*sinh(x));
-}
-
-// hyperboloid of two sheets/timelike cone
-P Fm(double x, double y, double z)
-{
- return P(z*sinh(x)*Cos(y), z*sinh(x)*Sin(y), z*cosh(x));
-}
-
-// light cone
-P Fz(double x, double y)
-{
- return fabs(sinh(x))*P(Cos(y), Sin(y), sgn(x));
-}
-
-// hyperbolic lines
-P hl1(double t)
-{
- return cosh(t)*P(-sqrt(1.25),0,1.5) + sinh(t)*E_2;
-}
-
-P hl2(double t)
-{
- return cosh(t)*P(-1,0.5,1.5) + (sqrt(0.4)*sinh(t))*P(0.5, 1, 0);
-}
-
-int main()
-{
- bounding_box(P(-MAX,-MAX),P(MAX,MAX));
- unitlength("1in");
- picture(6,6);
-
- begin();
- camera.at(10,-3,4);
- // camera.range(40);
-
- revolutions();
-
- domain R(P(-1.5,0.25,-1), P(1.5,0.75,1), mesh(18, 12, 4), mesh(36, 48, 12));
-
- fill(White());
-
- // assemble surfaces as a single object
- scenery hyp(Fp, R.slice3(1));
- hyp.add(Fm, R.resize1(0,1.5).slice3(1));
- hyp.add(Fm, R.resize1(-1.5,0).slice3(-1));
- hyp.add(Fz, R.slice3(1));
-
- hyp.draw();
- nofill();
-
- // Draw cuts of intersection with (y,z)-plane.
- // Simulated 3-D/tube pen: light color drawn over darker shade
- base(Red(0.6), "3pt");
- bold(Red());
-
- plot(Fp, R.slice2(0.25).slice3(1));
- plot(Fp, R.slice2(0.25).slice3(-1));
-
- plot(Fm, R.slice2(0.25).slice3(1));
- plot(Fm, R.slice2(0.25).slice3(-1));
-
- plot(Fz, R.slice2(0.25).slice3(1));
- plot(Fz, R.slice2(0.75).slice3(-1));
-
- // to clip lines
- clip_box(P(-10,-10,-cosh(1.5)), P(10,10,cosh(1.5)));
-
- base(Green(0.6), "3pt");
- bold(Green());
-
- plot(hl1, -1.5, 1.5, 120);
- plot(hl2, -1.5, 1.5, 120);
-
- // Labels with "overlay" arrows
- font_size("scriptsize");
-
- black();
- camera.at(P(0,0,10000));
- label(P(1.5,0), P(4,16), "Future timelike unit vectors", r);
- label(P(1.5,0), P(4,0), "Unit spacelike vectors", r);
- label(P(1.5,0), P(4,-16), "Lightlike vectors", r);
- label(P(1.5,0), P(4,-32), "Past timelike unit vectors", r);
-
- base(White(), "2pt");
- bold(Black());
- arrow(P(1.5,0), P(1,0), 0.5);
- arrow(P(1.5, 0.25), P(1,1.35), 0.5);
- arrow(P(1.5,-0.25), P(1,-0.75), 0.5);
- arrow(P(1.5,-0.5), P(1,-1.05), 0.5);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/mirrorball.flx b/graphics/epix/samples/mirrorball.flx
deleted file mode 100644
index 858ee4e904..0000000000
--- a/graphics/epix/samples/mirrorball.flx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double r_0(1); //0.75;
-const double golden(0.5*(1+sqrt(5)));
-
-Sphere S0(P(0,0,0), sqrt(3));
-
-Sphere S1(P( 1, golden, 0), r_0);
-Sphere S2(P(-1, golden, 0), r_0);
-Sphere S3(P( 1,-golden, 0), r_0);
-Sphere S4(P(-1,-golden, 0), r_0);
-
-Sphere S5(P( 0, 1, golden), r_0);
-Sphere S6(P( 0,-1, golden), r_0);
-Sphere S7(P( 0, 1,-golden), r_0);
-Sphere S8(P( 0,-1,-golden), r_0);
-
-Sphere S9(P( golden, 0, 1), r_0);
-Sphere Sa(P( golden, 0,-1), r_0);
-Sphere Sb(P(-golden, 0, 1), r_0);
-Sphere Sc(P(-golden, 0,-1), r_0);
-
-Circle C1(S0*S1);
-Circle C2(S0*S2);
-Circle C3(S0*S3);
-Circle C4(S0*S4);
-Circle C5(S0*S5);
-Circle C6(S0*S6);
-Circle C7(S0*S7);
-Circle C8(S0*S8);
-Circle C9(S0*S9);
-Circle Ca(S0*Sa);
-Circle Cb(S0*Sb);
-Circle Cc(S0*Sc);
-
-// bold circle if facing camera, otherwise plain
-void sphere_draw(const Circle& C)
-{
- if ((C.center()|camera.viewpt()) >= 0)
- bold();
- else plain();
-
- C.draw();
-}
-
-void icosa()
-{
- // S0.draw();
- sphere_draw(C1);
- sphere_draw(C2);
- sphere_draw(C3);
- sphere_draw(C4);
- sphere_draw(C5);
- sphere_draw(C6);
- sphere_draw(C7);
- sphere_draw(C8);
- sphere_draw(C9);
- sphere_draw(Ca);
- sphere_draw(Cb);
- sphere_draw(Cc);
-}
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
-
- picture(P(-2,-2),P(2,2), "6x6in");
-
- begin();
- set_crop();
- revolutions();
-
- // draw frames
- camera.at(sph(12, 0.5*tix(), 0.05));
- red(-1.4); // nearly cyan
- icosa();
-
- camera.at(sph(12, 0.01+0.5*tix(), 0.05));
- red(1.4);
- icosa();
-
- end();
-}
diff --git a/graphics/epix/samples/newton.xp b/graphics/epix/samples/newton.xp
deleted file mode 100644
index d9af0b087f..0000000000
--- a/graphics/epix/samples/newton.xp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double f(double t)
-{
- return 1 + t*(-3 + t*t);
-}
-
-double df(double t)
-{
- return Deriv(f)(t).x2();
-}
-
-int main()
-{
- picture(P(1.5,0), P(2,3), "2.5 x 2.5in");
-
- begin();
- h_axis(2);
-
- double x0(2), x1(x0-f(x0)/df(x0));
- label(P(x0,0), P(0,-4), "$x_i$", b);
-
- for (int i=0; i < 3; ++i)
- {
- dashed();
- line(P(x0,0), P(x0,f(x0)));
- solid();
- line(P(x0,f(x0)), P(x0-f(x0)/df(x0),0));
-
- x0 -= f(x0)/df(x0); // Newton's method
- }
-
- bold();
- plot(f, xmin(), xmax()+0.05, 60);
-
- label(P(1.75, f(1.75)), P(-2,2), "$y=f(x)$", tl);
- label(P(x1,0), P(0,-4), "$x_{i+1}$", b);
- label(P(1.75, df(2)*(1.75-x1)), P(0,-4), "Slope $= f'(x_i)$", br);
-
- end();
-}
diff --git a/graphics/epix/samples/objects.xp b/graphics/epix/samples/objects.xp
deleted file mode 100644
index ddf38cbee1..0000000000
--- a/graphics/epix/samples/objects.xp
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(0,0), P(5,2), "3.75 x 1.5in");
-
- begin();
-
- // roof
- triangle(P(0.9, 1), P(3.1, 1), P(2, 1.5)); // vertices
-
- // sun
- circle(P(4,1.5), 0.25); // center and radius
-
- // house
- rect(P(1,0), P(3,1)); // opposite corners
- // grid(P(1,0), P(3,1), 1, 10); // corners, numbers of subdivisions
-
- // door
- fill(Black(0.1));
- rect(P(2.3,0), P(2.7,0.8)); // corners
-
- fill(White());
- // window
- bold();
- grid(P(1.4,0.2), P(2, 0.6), 2, 2);
-
- line(P(xmin(),0), P(xmax(),0));
- end();
-}
diff --git a/graphics/epix/samples/oscillator.xp b/graphics/epix/samples/oscillator.xp
deleted file mode 100644
index c174613cb0..0000000000
--- a/graphics/epix/samples/oscillator.xp
+++ /dev/null
@@ -1,89 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double f(double t, double a) { return 2*exp(-0.5*t)*Sin(a*t); }
-
-// Completely fabricated data
-// "Predicted"
-double f1(double t)
-{
- return f(t,2);
-}
-
-// "Observed"
-double f2(double t)
-{
- return f1(t)+0.1*Cos(3*t);
-}
-
-//"error"
-double err(double t)
-{
- return 0.125*(1+fabs(f1(t)));
-}
-
-// Number of error bars
-const int samples(8);
-
-// Half-size of bounding box
-const int N(2);
-
-int main()
-{
- picture(P(0,-N),P(2*N,N), "2.5 x 2.5in");
-
- begin();
-
- // displacement for miscellaneous labels/objects
- const double delta(0.0625*xsize());
-
- // graph paper
- pen(Black(0.25));
- grid(5*N*(int)xsize(),5*N*ysize());
-
- pen(Black());
- grid(N*(int)xsize(), N*(int)ysize());
-
- // axes, names, and labels
- bold();
- dart(P(xmin(),0), P(xmax()+delta,0));
- dart(P(0,ymin()), P(0,ymax()+delta));
-
- font_size("scriptsize");
- h_axis_masklabels(P(xmin()+1,0), P(xmax(),0), xsize()-1, P(0,2), c);
- v_axis_labels(P(0,ymin()), P(0,ymax()), ysize(), P(-2, 0), l);
-
- font_size("footnotesize");
- label(P(xmax()+delta,0), P(2,0), "Time (sec)", r);
- label_angle(M_PI_2);
- label(P(0,0), P(-8,0), "Displacement (cm)",l);
- label_angle(0);
-
- legend L;
- L.item_border(0);
-
- // "Predicted" curve
- pen(RGB(0.2, 0.7, 0.8));
- plot(f1, xmin(), xmax(), 120);
- L.path_item("Predicted");
-
- // "error bars"
- red();
- L.mark_item(CIRC, "Measured");
-
- for (int i=1; i < samples; ++i)
- {
- double t(xmin() + i*xsize()/samples);
- v_error_bar(P(t, f2(t)), err(t), CIRC, 4); // 4 pt wide
- }
-
- black();
- L.draw(canvas().br(), P(-2,2), tl);
-
- font_face("sc");
- label(P(0.5*(xmin()+xmax()), ymax()), P(0,2),
- "A damped harmonic oscillator", t);
-
- end();
-}
diff --git a/graphics/epix/samples/parabola.xp b/graphics/epix/samples/parabola.xp
deleted file mode 100644
index 474a89c132..0000000000
--- a/graphics/epix/samples/parabola.xp
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// the function to be plotted
-double f(double x)
-{
- return x*x;
-}
-
-int main()
-{
- picture(P(-2,0), P(2,4), "2.5x2.5in");
-
- begin();
-
- pen(Black(0.3));
- grid(8,8); // and coarse
-
- pen(Black());
- axis Ax(P(xmin(),0), P(xmax(),0), 4, P(0,-4), b);
- axis Ay(P(0,ymin()), P(0,ymax()), 4, P(4, 0), r);
-
- font_size("scriptsize");
- Ax.draw();
- Ay.unmark(0).draw();
-
- bold(Red());
- plot(f, xmin(), xmax(), 40);
-
- end();
-}
diff --git a/graphics/epix/samples/pascal.xp b/graphics/epix/samples/pascal.xp
deleted file mode 100644
index 7c597077a0..0000000000
--- a/graphics/epix/samples/pascal.xp
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-int main()
-{
- picture(P(-2,-2),P(2,2), "3 x 3in");
-
- begin();
- set_crop();
-
- P V(2,-0.25), W(3,1);
- P P1(-1.5,-1), P2(P1 + V), P3(P1 + 1.5*V); // points
- P Q1(-1,1), Q2(Q1 + 0.5*W), Q3(Q1 + W);
-
- Segment L12(P1, Q2), L13(P1, Q3);
- Segment L21(P2, Q1), L23(P2, Q3);
- Segment L31(P3, Q1), L32(P3, Q2);
-
- // points of intersection
- P R1(L12*L21), R2(L13*L31), R3(L32*L23);
-
- dot(P1, P(0,-2), "$P_1$", b);
- dot(P2, P(0,-2), "$P_2$", b);
- dot(P3, P(0,-2), "$P_3$", b);
-
- dot(Q1, P(0,2), "$Q_1$", t);
- dot(Q2, P(0,2), "$Q_2$", t);
- dot(Q3, P(0,2), "$Q_3$", t);
-
- red();
- L12.draw();
- L21.draw();
- L13.draw();
-
- L31.draw();
- L32.draw();
- L23.draw();
-
- green();
- Line(P1,P3);
- Line(Q1,Q3);
-
- blue();
- dot(R1, P(4,2), "$p_1$", r);
- dot(R2, P(4,2), "$p_2$", r);
- dot(R3, P(4,2), "$p_3$", r);
-
- dashed();
- Line(R1,R3);
-
- end();
-}
diff --git a/graphics/epix/samples/pendulum.flx b/graphics/epix/samples/pendulum.flx
deleted file mode 100644
index ac0751d435..0000000000
--- a/graphics/epix/samples/pendulum.flx
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*-flix-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P F(double u, double v)
-{
- return P(v, -Sin(u));
-}
-
-double theta0(-5*M_PI/6);
-double EPS(0.01); // to avoid singularity of f at theta0
-
-P posn0(theta0, 0);
-
-P pivot(0,5.5);
-double ell(3);
-
-double K(-Cos(theta0));
-
-double f(double t)
-{
- return 1.0/sqrt(2*(K+Cos(t)));
-}
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
- picture(P(-6.5,-2.5), P(6.5, 8.5), "6.5 x 5.5in");
-
- begin();
-
- // calculate period, avoiding singularity at theta0
- double period(4*(sqrt(2*EPS/(-Sin(theta0)))+Integral(f).eval(-theta0-EPS)));
-
- border(Black(0.1), "1pt");
-
- P posn(flow(F, posn0, period*tix(), 120*tix())); // phase position
- double x_t(-Sin(posn.x1()));
- double y_t( Cos(posn.x1()));
-
- slope_field(F, P(-2*M_PI,-2), P(2*M_PI,2), 48, 12);
-
- bold();
- line(pivot, pivot-ell*P(x_t, y_t));
-
- red();
- ode_plot(F, posn0, period, 120);
-
- blue();
- box(posn);
- box(pivot-ell*P(x_t, y_t));
-
- end();
-}
diff --git a/graphics/epix/samples/planes.xp b/graphics/epix/samples/planes.xp
deleted file mode 100644
index 385a32194e..0000000000
--- a/graphics/epix/samples/planes.xp
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const int N(20);
-
-int main()
-{
- picture(P(-2,-2), P(2,2), "6x6in");
-
- begin();
-
- border();
- fill();
-
- camera.at(P(10,-6,4));
- clip_box(P(-1,-1,-1), P(1,1,1));
-
- Plane C(P(-1,-1,-1), P(1,1,1));
- for (int i=1; i<N; ++i)
- {
- rgb(i*1.0/N, 0.2, 1-i*1.0/N);
- C.shift((2.0/N)*P(1,1,1));
- C.draw();
- }
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/plotting.xp b/graphics/epix/samples/plotting.xp
deleted file mode 100644
index ad310f7b02..0000000000
--- a/graphics/epix/samples/plotting.xp
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double f(double x)
-{
- return 0.75*Sin(x) - 0.25*Sin(2*x);
-}
-
-int main()
-{
- picture(P(-2,-1),P(2,1), "5x1in");
-
- begin();
-
- h_axis(16);
- v_axis(4);
-
- h_axis_labels(4, P(0,-4), b); // shift labels down 4pt, align below
-
- revolutions(); // set angle units
- red();
- plot(f, xmin(), xmax(), 120); // use 120 intervals
-
- end();
-}
diff --git a/graphics/epix/samples/plotting2.xp b/graphics/epix/samples/plotting2.xp
deleted file mode 100644
index 41891142f5..0000000000
--- a/graphics/epix/samples/plotting2.xp
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P f(double r, double th)
-{
- return P(r*Cos(th), r*Sin(th), pow(r, 3)*Cos(3*th));
-}
-
-int main()
-{
- picture(P(-1,-1),P(1,1), "2x1in");
-
- begin();
-
- domain R(P(0,0), P(1, 2*M_PI), mesh(8,40), mesh(16,120));
-
- camera.at(3,1,2); // set the viewpoint
-
- arrow(P(0,0,0), P(1.25,0,0));
- arrow(P(0,0,0), P(0,1.25,0));
-
- plain(Blue(1.2));
- fill(Yellow()); // shade
- surface(f, R);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/plotting3.xp b/graphics/epix/samples/plotting3.xp
deleted file mode 100644
index bd095e722c..0000000000
--- a/graphics/epix/samples/plotting3.xp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P sin_n(double x, double n) // Taylor polynomial of sin x
-{
- const int N((int) floor(n)); // convert y to an index bound
- const double sqx(-pow(x, 2)); // store -x^2 for efficiency
- double val(x), summand(x); // places to store results of evaluation
-
- // step through odd numbers from 1 to 2N+1
- for (int i=1; i <= 2*N+1; i += 2)
- {
- summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)!
- val += summand;
- }
-
- return P(x, val);
-}
-
-int main()
-{
- picture(P(0,-1), P(6*M_PI, 1), "5x1in");
-
- begin();
-
- set_crop();
- h_axis(4);
- v_axis(1);
-
- bold();
- green();
- plot(Sin, 0, xmax(), 120);
-
- domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(120, 40));
- for (int i=0; i<4; ++i)
- {
- pen(RGB(0.25*i, 0, 1-0.25*i));
- plot(sin_n, R.slice2(5*i+1)); // plot with 2nd var = 5i+1
- }
-
- end();
-}
diff --git a/graphics/epix/samples/polar.xp b/graphics/epix/samples/polar.xp
deleted file mode 100644
index d2c1934552..0000000000
--- a/graphics/epix/samples/polar.xp
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double f(double t)
-{
- return 2*Cos(3*t);
-}
-
-int main()
-{
- picture(P(-2,-2), P(2,2), "2x2in");
-
- begin();
- degrees();
-
- black(0.3);
- polar_grid(2, 4, 24); // radius, rings, sectors
-
- black();
- bottom_axis(4, P(0,-4)).subdivide(2).draw();
- left_axis(4, P(-4,0)).subdivide(2).draw();
-
- bold();
- polarplot(f, 0, 180, 120); // plot over [0, 180] using 120 intervals
-
- end();
-}
-
diff --git a/graphics/epix/samples/pole.xp b/graphics/epix/samples/pole.xp
deleted file mode 100644
index 435c258a68..0000000000
--- a/graphics/epix/samples/pole.xp
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const int M(8);
-double MAX(1.5), Bd(2);
-
-P F(double x, double y) // fake pole
-{
- return P(x, y, x/(0.01+x*x+y*y));
-}
-
-P pt1(-MAX,-MAX), pt2(MAX, MAX);
-domain R(pt1, pt2, mesh(2*M,2*M), mesh(6*M,6*M));
-
-int main()
-{
- picture(P(-Bd,-Bd), P(Bd,Bd), "2.5x2.5in");
-
- begin();
-
- label(P(xmax(), 2.5), P(-2,-2),
- "$z=\\mathrm{Re}\\,\\displaystyle\\frac{1}{x+iy}$", bl);
-
- camera.at(P(6,8,5));
-
- clip_box(P(-Bd,-Bd,-Bd), P(Bd,Bd,0));
-
- plain(Magenta());
- fill(White());
- surface(F, R); // bottom half
-
- grid(pt1, pt2, M, M); // axes
-
- pen(White(0.75), "0.15pt");
- plot(F,R); // simulate transparency
-
- clip_box(P(-Bd,-Bd,-Bd), P(Bd,Bd,2*Bd));
- plain(Magenta());
-
- // axes and labels
- arrow(P(-Bd,0,0), P(Bd,0,0));
- label(P(Bd,0), P(-4,-2), "$x$", l);
-
- arrow(P(0,-Bd,0), P(0,Bd,0));
- label(P(0,Bd), P( 2,-2), "$y$", br);
-
- arrow(P(0, 0, 0), P(0,0,2.5));
- label(P(0,0,2.5), P(0,4), "$z$", t);
-
- clip_box(P(-Bd,-Bd,0),P(Bd,Bd,Bd));
-
- surface(F,R); // top half
-
- bbold(Red());
- plot(F, R.resize1(0.25,MAX).slice2(0));
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/polyhedra.xp b/graphics/epix/samples/polyhedra.xp
deleted file mode 100644
index c2a788986e..0000000000
--- a/graphics/epix/samples/polyhedra.xp
+++ /dev/null
@@ -1,129 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// compile with, e.g., elaps -DALL polyhedra.xp
-
-const double MAX(1.25);
-
-#define A5
-
-// draw everyone
-#ifdef ALL
-#define A4
-#define A5
-#endif /* ALL */
-
-// draw three polyhedra with A4 symmetry
-#ifdef A4
-#define COLOR
-#define TETRA
-#define CUBE
-#define OCTA
-#endif /* A4 */
-
-// draw two polyhedra with A5 symmetry
-#ifdef A5
-#ifndef COLOR
-#define COLOR
-#endif /* ndef COLOR */
-#define DODECA
-#define ICOSA
-#endif /* A5 */
-
-int main()
-{
- picture(P(-MAX,-MAX),P(MAX,MAX), "6 x 6in");
-
- begin();
- const double gam(0.5*(1+sqrt(5)));
-
- grid();
- camera.at(P(8,3,2));
- camera.range(20);
-
- Sphere S;
- frame f;
- frame f2(E_2, E_1, E_3);
-
-#ifdef TETRA
-#ifdef COLOR
- rgb(1,0.7,0.7);
-#endif /* COLOR */
- back_tetra(S, f);
- back_tetra(S, f2);
-#endif
-
-#ifdef CUBE
-#ifdef COLOR
- rgb(0.7,0.7,1);
-#endif /* COLOR */
- back_cube(S, f);
-#endif
-
-#ifdef OCTA
-#ifdef COLOR
- rgb(0.7,1,0.7);
-#endif /* COLOR */
- back_octa(S, f);
-#endif
-
-#ifdef DODECA
-#ifdef COLOR
- rgb(0.7,1,1);
-#endif /* COLOR */
- back_dodeca(S, f);
-#endif
-
-#ifdef ICOSA
-#ifdef COLOR
- rgb(1,1,0.7);
-#endif /* COLOR */
- back_icosa(S, f);
-#endif
-
- bold();
-
-#ifdef TETRA
-#ifdef COLOR
- red();
-#endif /* COLOR */
- front_tetra(S, f);
- front_tetra(S, f2);
-#endif
-
-#ifdef CUBE
-#ifdef COLOR
- blue();
-#endif /* COLOR */
- front_cube(S, f);
-#endif
-
-#ifdef OCTA
-#ifdef COLOR
- green(0.6);
-#endif /* COLOR */
- front_octa(S, f);
-#endif
-
-#ifdef DODECA
-#ifdef COLOR
- rgb(0, 0.7, 0.7);
-#endif /* COLOR */
- front_dodeca(S, f);
-#endif
-
-#ifdef ICOSA
-#ifdef COLOR
- rgb(1, 0.9, 0);
-#endif /* COLOR */
- front_icosa(S, f);
-#endif
-
-#ifdef COLOR
- green(0.8);
-#endif
- S.draw();
-
- end();
-}
diff --git a/graphics/epix/samples/riemann.flx b/graphics/epix/samples/riemann.flx
deleted file mode 100644
index f7e4b47161..0000000000
--- a/graphics/epix/samples/riemann.flx
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P F(double t, double r, double theta)
-{
- return P(r*r*Cos(2*theta),
- r*r*Cos(t)*Sin(2*theta) + r*Sin(t)*Sin(theta),
- r*Cos(theta));
-}
-
-domain R(P(0,0,0), P(1, 1.5, 1), mesh(24, 8, 32), mesh(24, 40, 80));
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
-
- domain R1(R.slice1(tix()));
-
- picture(P(-4,-4),P(4,4), "5x5in");
-
- begin();
- revolutions();
-
- grid(1,1);
-
- const P ctr(3.25,-3.25); // "clock" center
- bold();
- circle(ctr, 0.5); // clock face
-
- line(ctr, ctr+polar(0.4, tix())); // hands
- label(ctr+polar(0.6, tix()), "$y$");
-
- line(ctr, ctr+polar(0.4, tix()+0.25));
- label(ctr+polar(0.6, tix()+0.25), "$w$");
-
- viewpoint(4,5,3);
- camera.range(20);
-
- line(P(0,0,0), P(3,0,0));
- line(P(0,0,0), P(0,3,0));
- line(P(0,0,0), P(0,0,2));
-
- plain(Red());
- plot(F, R1.resize3(0, 0.5));
-
- blue();
- plot(F, R1.resize3(0.5, 1));
-
- bold(Magenta());
- plot(F, R.slice3(0));
- plot(F, R.slice3(0.5));
-
- black();
- masklabel(P(3,0,0), "$x$");
- masklabel(P(0,3,0), "$y$");
- masklabel(P(0,0,2), P(-4,0), "$z=\\textrm{Re}\\,\\sqrt{x+iy}$", tr);
-
- end();
-}
diff --git a/graphics/epix/samples/saddle.xp b/graphics/epix/samples/saddle.xp
deleted file mode 100644
index b486cc4c9e..0000000000
--- a/graphics/epix/samples/saddle.xp
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*-ePiX-*- */
-// fake 3D by layering
-#include "epix.h"
-using namespace ePiX;
-
-// function to plot
-P F(double u, double v)
-{
- return P(u, v, 0.25*(u+v)*(u-v));
-}
-
-P TF(double u, double v)
-{
- return P(u, v);
-}
-
-int main()
-{
- picture(P(-3,-2),P(3,2), "6x4in");
-
- begin();
- backing(Black());
-
- label_color(White());
- label(P(0, ymax()), P(0,-4),
- "\\textbf{A quadratic saddle cut by a tangent plane}", b);
-
- camera.at(P(6,12,8));
- camera.look_at(P(0,0,-0.25));
-
- domain R(P(-2,-2), P(2,2), mesh(24,24), mesh(48,48));
-
- // clip to lower half space
- clip_face(P(0,0,0), -E_3); // 2nd arg is inward normal vector
-
- // draw shaded saddle
- fill();
- surface(F, R);
-
- // and re-draw the wiremesh in color
- bold();
- green(); // change label color as well
- plot(F, R);
- label(F(0,2), P(0,-4), "$\\mathbf{z<0}$", b);
-
- // (x,y)-plane
- red();
- plot(TF, R);
- label(P(2,0,0), P(-4,-2), "$\\mathbf{z=0}$", bl);
-
- clip_restore(); // remove old restriction
- clip_face(P(0,0,0), E_3); // and set new one
-
- fill(Blue()); // set pen and fill colors
- surface(F, R);
-
- // fake transparency: re-draw (x,y)-plane lightly
- pen(Red(), 0.2);
- plot(TF, R);
-
- // and plot top half of wiremesh in color
- bold(Blue());
- plot(F, R);
-
- rgb(0.5,0.5,1);
- label(F(-2,0), P(4,4), "$\\mathbf{z>0}$", tr);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/semicirc.xp b/graphics/epix/samples/semicirc.xp
deleted file mode 100644
index 8cac63ae9d..0000000000
--- a/graphics/epix/samples/semicirc.xp
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-double f(double x)
-{
- return sqrt(1-x*x);
-}
-
-double width(0.6), height(f(width)), posn(0.5), y_posn(f(posn));
-
-int main()
-{
- picture(P(-1, 0), P(1, 1), "2.5 x 1.25in");
-
- begin();
-
- h_axis(4);
- v_axis(2);
- h_axis_labels(xsize(), P(0, -4), b);
-
- arc(P(0,0), 1, 0, M_PI);
- bold();
- rect(P(-width,0), P(width, height));
-
- label(P(posn, y_posn), P(2,4), "$y=\\sqrt{1-x^2}$", tr);
-
- end();
-}
diff --git a/graphics/epix/samples/shadeplot.xp b/graphics/epix/samples/shadeplot.xp
deleted file mode 100644
index 7beb97e87f..0000000000
--- a/graphics/epix/samples/shadeplot.xp
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-double k(4); // change width of hump
-double dx(0.05); // width of thin shaded region
-double x(1/sqrt(k)); // position of thin shaded region
-
-const double dy(0.5);
-
-double f(double t)
-{
- return sqrt(fabs(k)/(2*M_PI))*exp(-k*t*t);
-}
-
-P pt1(x, f(x)+2*dy);
-P pt2(x+dx,f(x)+dy);
-P pt3(x+3*dx,f(x));
-
-Color shade1(Black(0.1));
-Color shade2(Black(0.4));
-Color shade3(Black(0.6));
-
-int main()
-{
- picture(P(0,0), P(1,1), "150x150pt");
-
- begin();
- legend L;
- L.backing(Neutral());
-
- fill(shade1);
- shadeplot(f, xmin(), x, 90);
- L.fill_item("$=\\displaystyle\\int_a^x f(t)\\,dt$");
-
- fill(shade2);
- rect(P(x,0), P(x+dx, f(x)));
- L.fill_item("= $f(x)\\,dx\\vphantom{\\Bigg|}$");
-
- fill(shade3);
- shadeplot(f, x, x+dx, 10);
- L.fill_item("= $F(x+dx)-F(x)$");
-
- bold();
- plot(f, xmin(), xmax(), 120);
-
- plain();
- h_axis(4);
- v_axis(4);
-
- font_size("scriptsize");
- L.draw(canvas().tr(), P(-2,-2), bl);
-
- font_size("footnotesize");
- label(P(xmin(),0), P(0,-5), "$a$", b);
- label(P(x,0), P(0,-5), "$x$", b);
- label(P(x+dx,0), P(0,-2), "$x+dx$", br);
-
- pst_format();
-
- end();
-}
diff --git a/graphics/epix/samples/slopefield.xp b/graphics/epix/samples/slopefield.xp
deleted file mode 100644
index 5ecfd597c1..0000000000
--- a/graphics/epix/samples/slopefield.xp
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P F(double s, double t)
-{
- return P(0.1*s, 0.025*t) + (1/(0.01+s*s+t*t))*P(-t, s);
-}
-
-int main()
-{
- picture(P(-4, -3), P(2,2), "3x2.5in");
-
- begin();
-
- blue(1.8);
- dart_field(F, P(xmin(), ymin()), P(xmax(), ymax()), 4*xsize(), 4*ysize());
- set_crop();
-
- bold();
- for (int i=0; i<7; ++i)
- {
- rgb(0.05*(7-i), 1 - 0.1*i, 0.15*i);
- ode_plot(F, P(-0.9-0.025*i,0), 20, 200);
- }
-
- end();
-}
-
diff --git a/graphics/epix/samples/sphere.xp b/graphics/epix/samples/sphere.xp
deleted file mode 100644
index dfff26e1e4..0000000000
--- a/graphics/epix/samples/sphere.xp
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double k(2*M_PI/(360*sqrt(3))); // assume "degrees" mode
-
-double exp_cos(double t) { return exp(k*t)*Cos(t); }
-double exp_sin(double t) { return exp(k*t)*Sin(t); }
-double minus_exp_cos(double t) { return -exp_cos(t); }
-double minus_exp_sin(double t) { return -exp_sin(t); }
-
-int main()
-{
- picture(P(-1,-1), P(1,1), "2.5 x 2.5in");
-
- begin();
- degrees(); // set angle units
- camera.at(P(1, 2.5, 3));
-
- sphere(); // draw unit sphere's horizon
-
- pen(Blue(1.6)); // hidden portions of loxodromes
- backplot_N(exp_cos, exp_sin, -540, 540, 180);
- backplot_N(minus_exp_cos, minus_exp_sin, -540, 540, 180);
-
- pen(Red(1.6));
- backplot_N(exp_sin, minus_exp_cos, -540, 540, 180);
- backplot_N(minus_exp_sin, exp_cos, -540, 540, 180);
-
- pen(Black(0.3)); // coordinate grid
-
- for (int i=0; i<=12; ++i) {
- latitude(90-15*i, 0, 360);
- longitude(30*i, 0, 360);
- }
-
- bold(Blue()); // visible portions of loxodromes
- frontplot_N(exp_cos, exp_sin, -540, 540, 360);
- frontplot_N(minus_exp_cos, minus_exp_sin, -540, 540, 360);
-
- pen(Red());
- frontplot_N(exp_sin, minus_exp_cos, -540, 540, 360);
- frontplot_N(minus_exp_sin, exp_cos, -540, 540, 360);
-
- end();
-}
diff --git a/graphics/epix/samples/spherical.xp b/graphics/epix/samples/spherical.xp
deleted file mode 100644
index c40b897e8f..0000000000
--- a/graphics/epix/samples/spherical.xp
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double MAX(3);
-
-int main()
-{
- picture(P(-MAX,-MAX),P(MAX,MAX), "6x6in");
-
- begin();
- camera.at(30,5,20);
-
-#ifdef GRAY
- camera.filter(Gray_Neutral());
-#endif
- revolutions();
-
- domain R(P(0,0,-0.25), P(3,1,0.25), mesh(12, 48, 24), mesh(12, 96, 120));
-
- std::list<domain> cuts;
-
- double Phi(7.0/48), Theta(7.0/48);
-
- cuts.push_back(R.slice1(2));
- cuts.push_back(R.slice2(0));
- cuts.push_back(R.slice2(Theta));
- cuts.push_back(R.slice3(0));
- cuts.push_back(R.slice3(Phi));
-
- plain(Black(0.5));
- fill(Red(1.9));
- scenery coords(sph, R.slice1(2)); // rho = 2
-
- fill(Yellow(0.35));
- coords.add(sph, R.slice2(0)).add(sph, R.slice2(Theta)); // theta = 0, Theta
-
- fill(Blue(1.9));
- coords.add(sph, R.slice3(0)).add(sph, R.slice3(Phi)); // phi = 0, Phi
-
- coords.draw();
- // surface(sph, cuts);
- fill(false);
-
- pen(Black());
- base(White(), "1.2pt");
- arrow_fill(1);
- arrow(P(3,0,0), P(3.5,0,0));
- label(P(3.5,0,0), P(-2,-2), "$x$", bl);
-
- arrow(P(0,3,0), P(0,3.5,0));
- label(P(0,3.5,0), P(2,-2), "$y$", br);
-
- arrow(P(0,0,3), P(0,0,3.5));
- label(P(0,0,3.5), P(0,4), "$z$", t);
-
- bold();
- arc_arrow(P(0,0,0), 2, 0.5*Theta, Theta);
- arc_arrow(P(0,0,0), 2, 0.5*Theta, 0);
-
- aarrow(P(0,0,0), sph(2, Theta, Phi));
-
- label(sph(2, 0.5*Theta, 0), P(2,2), "$\\theta$", t);
- label(sph(2, Theta, 0.5*Phi), P(-2,0), "$\\phi$", l);
- label(sph(1, Theta, Phi), P(2,-2), "$\\rho$", br);
-
- base(Neutral(), 0);
- dashed();
- plain();
- line(P(0,0,0), P(2,0,0));
- line(P(0,0,0), sph(2, Theta, 0));
- line(P(0,0,0), sph(2, Theta, Phi));
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/sqrt.xp b/graphics/epix/samples/sqrt.xp
deleted file mode 100644
index ffc5335c99..0000000000
--- a/graphics/epix/samples/sqrt.xp
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P f(double x, double y)
-{
- pair z(x,y);
- pair temp(z*z);
- return P(temp.x1(), temp.x2(), x);
-}
-
-P F(double r, double t)
-{
- return f(r*Cos(t), r*Sin(t));
-}
-
-P g(double t)
-{
- return t*P(t,0,1);
-}
-
-domain R(P(0,0), P(1.25,0.5), mesh(6,24), mesh(12,60));
-
-int main()
-{
- picture(P(-1.5, -1.5), P(1.5, 1.5), "2.5x2.5in");
-
- begin();
- revolutions();
- camera.at(P(4,-2,3));
-
- pen(Blue(1.7));
- plot(F, R);
-
- pen(Blue());
- plot(F, R.resize2(0.5,1));
-
- pen(Black());
- arrow(P(0,0,0), 2*E_1);
- arrow(P(0,0,0), 2*E_2);
- arrow(P(0,0,0), 1.5*E_3);
-
- masklabel(2*E_1, P(0,0), "$\\mathrm{Re}\\,z$", r);
- label(2*E_2, P(0,0), "$\\mathrm{Im}\\,z$", r);
- label(1.5*E_3, P(2,0), "$\\mathrm{Re}\\,\\sqrt{z}$", r);
-
- bold(Red());
- plot(g, -1.25, 1.25, 40);
-
- end();
-}
diff --git a/graphics/epix/samples/sqrt2.xp b/graphics/epix/samples/sqrt2.xp
deleted file mode 100644
index 8bfcfcfab4..0000000000
--- a/graphics/epix/samples/sqrt2.xp
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// MAX^2 = radius of plot
-const double MAX(1.5);
-
-// complex square root in polar coordinates
-P f(double u, double v)
-{
- return P(u*u*Cos(v), u*u*Sin(v), u*Cos(0.5*v));
-}
-
-// restrictions of sqrt to real axis, unit circle
-P sqrt_re(double t) { return f(t,0); }
-P sqrt_im(double t) { return f(1,t); }
-
-int main() {
- picture(P(-4, -4), P(4, 2), "4x3in");
-
- begin();
-
- camera.filter(RGB_Neutral());
-
- backing(Magenta(0.1));
- set_crop();
-
- revolutions();
- label(P(xmin(), ymax()), P(2,-2), "Branches of $\\sqrt{z}$", br);
-
- camera.at(6, -2, 2);
- camera.range(4);
- domain R(P(0,0), P(MAX,2), mesh(16, 80), mesh(16, 160));
-
- // transparent branch
- pen(Green(0.7), "0.15pt");
- scenery surf(f, R.resize2(1,2));
-
- fill(White(0.7));
- pen(Black());
- // opaque branch
- surf.add(f, R.resize2(0,1));
-
- surf.draw();
- nofill();
- // boundary curve, unit circle, axes, grid, labels
- bbold(Red());
-
- plot(sqrt_re, -MAX, 0, 30);
-
- bold(Blue());
- arrow(P(0,0,0), P(2,0,0));
- arrow(P(0,0,0), P(0,2,0));
-
- label_color(Blue());
- label(P(2,0,0), P(0,-4), "$\\mathrm{Re}\\,z$", b);
- label(P(0,2,0), P(4, 0), "$\\mathrm{Im}\\,z$", r);
-
- bbold(Yellow());
- plot(sqrt_re, 0, MAX, 30);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/std_F.cc b/graphics/epix/samples/std_F.cc
deleted file mode 100644
index 9ccd7b90c6..0000000000
--- a/graphics/epix/samples/std_F.cc
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * std_F.cc -- The std_F class definitions
- *
- * Last Change: September 23, 2007
- */
-// Include only the headers we need; burdensome, but generally more
-// efficient for larger projects with many dependencies.
-#ifdef MINIMAL
-#include "epix/affine.h"
-#include "epix/Color.h"
-#include "epix/curves.h"
-#include "epix/pairs.h"
-#include "epix/path.h"
-#include "epix/state.h"
-#include "epix/triples.h"
-
-#else
-#include "epix.h"
-#endif
-
-#include "epix/paint_style.h"
-#include "std_F.h"
-
-namespace ePiX {
-
- // The constructor initializes the class data, ensuring objects are
- // well-formed. For efficiency, we use "initialization" instead of
- // assignment (the "=" operator); this way, data members get their
- // actual values immediately. The constructor body is empty, since
- // this class requires no further initialization.
-
- // All class member function definitions must be qualified with the
- // class name, here "std_F::"
- std_F::std_F()
- : m_loc(0,0), m_e1(1,0), m_e2(0,1),
- m_fore(Black()), m_back(White()),
- m_edge(Black()), m_edge_width(0.4) { }
-
- // Apply the affine map af; return a reference to this object so
- // calls can be daisy-chained. Note the efficiency of storing only
- // the bare minimum data to specify an affine map rather than
- // holding and manipulating the shape of an F.
- std_F& std_F::map_by(const affine& af)
- {
- m_loc = af(m_loc); // affines map locations, so this works
- m_e1 = af(m_e1);
- m_e2 = af(m_e2);
-
- return *this;
- }
-
- // Set the background and foreground colors. Arguments' names chosen
- // to indicate their purpose.
- std_F& std_F::backing(const Color& back)
- {
- m_back = back;
- return *this;
- }
-
- std_F& std_F::fill(const Color& fore)
- {
- m_fore = fore;
- return *this;
- }
-
- // Set outline parameters.
- std_F& std_F::border(const Color& edge, double wid)
- {
- m_edge = edge;
- m_edge_width = wid;
- return *this;
- }
-
- // Draw in the active screen. Most of the "real work" is done here.
- void std_F::draw() const
- {
- // Get global drawing state, so we can restore before returning.
- // Not particularly elegant, but it's what we have to work with.
- Color old_fill(the_paint_style().fill_color());
- bool old_flag(the_paint_style().fill_flag());
-
- Color old_line(the_paint_style().line_color());
- length old_line_width(the_paint_style().line_width());
-
- // now we can draw
- const double r(1.0/6.0);
-
- path F;
-
- // pr converts coords in [0,1] x [0,1] to our coords
- F .pt(pr(r, 0.75*r)).pt(pr(2*r, 0.75*r)).pt(pr(2*r, 2.25*r))
- .pt(pr(4*r, 2.25*r)).pt(pr(4*r, 3.25*r)).pt(pr(2*r, 3.25*r))
- .pt(pr(2*r, 4.25*r)).pt(pr(5*r, 4.25*r)).pt(pr(5*r, 5.25*r))
- .pt(pr( r, 5.25*r));
-
- F.close().fill();
-
- // Set global drawing state. We have a member function named fill,
- // so the call must be explicitly qualified with "ePiX::".
- ePiX::fill(m_back);
- ePiX::pen(m_edge, m_edge_width);
-
- // Bounding parallelogram
- ePiX::quad(pr(0,0), pr(1,0), pr(1,1), pr(0,1));
-
- ePiX::fill(m_fore);
- F.draw();
- // Restore global fill state.
- the_paint_style().fill_color(old_fill);
- the_paint_style().fill_flag(old_flag);
-
- the_paint_style().line_color(old_line);
- the_paint_style().line_width(old_line_width);
- }
-
- // private; convert (x,y) to a location usable in path construction
- // "Privacy" is enforced by the compiler from reading the header;
- // the definition requires no special syntax.
- P std_F::pr(double x, double y) const
- {
- pair loc((1 - x -y)*m_loc + x*m_e1 + y*m_e2);
- return P(loc.x1(), loc.x2());
- }
-} // end of namespace
diff --git a/graphics/epix/samples/std_F.h b/graphics/epix/samples/std_F.h
deleted file mode 100644
index 961fc984e4..0000000000
--- a/graphics/epix/samples/std_F.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * std_F.h -- A class to draw the action of an affine transformation.
- *
- * This file is a C++ class tutorial (illustrating basic features), as
- * well as sample code for a small library, and style guide to writing
- * external modules for ePiX.
- *
- * Last Change: September 23, 2007
- */
-
-/*
- * This file provides the "std_F" class, which draws the image of an "F"
- * (the first roman letter having no symmetries) under an affine map.
- *
- * std_F(); // An F in the unit square [0,1] x [0,1].
- * map_by(af); // Apply the affine map af
- *
- * // Set the background, foreground, border style
- * backing(color);
- * fill(folor);
- * border(color, width);
- *
- * draw(); // Draw in the active screen
- *
- * The file affine.xp illustrates use.
- */
-// "MINIMAL" compilation works, and entails fewer dependencies,
-// but places a larger burdern on the programer
-#ifdef MINIMAL
-#include "epix/pairs.h"
-#include "epix/Color.h"
-#else
-
-#include "epix.h"
-#endif
-
-namespace ePiX {
-
- // forward declarations if we don't include epix.h
-#ifdef MINIMAL
- class affine;
- class P;
-#endif
-
- // declare a new class "std_F"
- class std_F {
- // The "public" part of a class declaration specifies the interface:
- public:
- // A "constructor"; creates the standard F in the unit square
- std_F();
-
- // apply the affine map af; return a reference to this object so
- // calls can be daisy-chained
- std_F& map_by(const affine& af);
-
- // set the background and foreground colors
- std_F& backing(const Color&);
- std_F& fill(const Color&);
-
- // set outline pen
- std_F& border(const Color&, double);
-
- void draw() const; // draw in the active screen
-
- // The private section contains implementation data, etc. The
- // shape of the F is not stored in the class data, but generated
- // at runtime by draw().
- private:
- pair m_loc; // lower left corner
- pair m_e1; // lower right corner
- pair m_e2; // upper left corner
-
- Color m_fore;
- Color m_back;
- Color m_edge;
-
- double m_edge_width;
-
- // for internal use; convert (x,y) in [0,1] x [0,1] to a location
- P pr(double x, double y) const;
- }; // end of std_F; class declarations must end with a semicolon
-
-} // end of namespace
diff --git a/graphics/epix/samples/std_F.xp b/graphics/epix/samples/std_F.xp
deleted file mode 100644
index e2ae794d5d..0000000000
--- a/graphics/epix/samples/std_F.xp
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-#include "std_F.h" // include the custom header
-using namespace ePiX;
-
-// September 23, 2007
-//
-// The instructions below assume you've copied this file and the
-// sample files std_F.cc and std_F.h into a directory where you
-// have write permission.
-//
-// To build std_F.cc, you'll need to run commands similar to
-//
-// g++ -I. -c std_F.cc
-// ar -ru libaff.a std_F.o
-// ranlib libaff.a
-//
-// Respectively, these compile std_F.cc into an object file, std_F.o;
-// create a static library named libaff.a containing the object code;
-// and create an index in libaff.a for the linker, so the library can
-// be used in external programs, such as the one built from this
-// source file. (On Mac OSX, you may need to run ranlib *after* moving
-// the library file to its permanent home.)
-//
-// You may give the library a different name, but it MUST begin "lib"
-// and have the extension ".a": "libblug.a" and "libaff-1.0.a" are all
-// right, but "mylib.a" or "libaff.test" are not. You refer to the
-// library by its name with "lib" and ".a" removed, as in "blug" or
-// "aff-1.0".
-//
-// To compile this source file (the one you're reading now), build
-// libaff.a as described above, then run the command
-//
-// epix -I. -L. -laff std_F.xp
-//
-// Files (such as this one) that use an external library cannot be
-// compiled from emacs, since there is no way to pass the required
-// options; they must be compiled at a shell prompt.
-//
-// Please consult the gcc documentation ("g++ --help") for information on
-// what each option does.
-
-
-// About this file:
-//
-// "F" is the first letter of the Roman alphabet that has no non-trivial
-// symmetries.
-//
-// std_F is a class for representing plane affine maps; please consult
-// the manual for general information of ePiX's plane affine map class.
-//
-
-int main()
-{
- picture(P(0,0), P(6,6), "4x4in");
-
- begin();
- degrees();
-
- grid(6,6);
-
- std_F F1; // the standard F
- affine af1; // the identity map
-
- F1.draw();
-
- // stretch along the main diagonal
- af1.rotate(45).v_scale(3).h_scale(0.75).rotate(-45);
-
- // flip over the main diagonal and translate
- af1.reflect(45).shift(pair(3,2));
-
- // apply af, set style, and draw
- F1.map_by(af1).fill(Black(0.6)).backing(Blue(1.8)).draw();
-
- std_F F2;
- affine af2;
- af2.rotate(60).scale(1.5).shift(pair(5,0));
- F2.map_by(af2).backing(RGB(1,0.8,0.2)).fill(Green(0.6)).draw();
-
- std_F F3;
- // define af3 by images of e1, e2, origin
- affine af3(pair(2-sqrt(3), 6), pair(2,3), pair(2,5));
- F3.map_by(af3).backing(Black(0.4)).fill(White()).draw();
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/steiner.flx b/graphics/epix/samples/steiner.flx
deleted file mode 100644
index a7d4953097..0000000000
--- a/graphics/epix/samples/steiner.flx
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*-flix-*- */
-// Steiner's Roman surface, using "surface" plots
-// May 19, 2006
-#include "epix.h"
-
-using namespace ePiX;
-
-double MAX(2.5), rad(0.8*MAX);
-
-P F(double u, double v)
-{
- double x(rad*Cos(u)*Cos(v)), y(rad*Cos(u)*Sin(v)), z(rad*Sin(u));
- return P(y*z, x*z, x*y);
-}
-
-P color(double x, double y)
-{
-#ifdef COLORSHADE
- return P(0.5*Sin(x), -0.5*Sin(x), Cos(y));
-#else
- return P(1,1,1); // white
-#endif
-}
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
- picture(P(-MAX,-MAX),P(MAX,MAX), "4x4in");
-
- begin();
-
- backing(RGB(0.7, 0.9, 1));
-
- fill();
- revolutions();
- camera.at(cyl(10, 0.5*tix(), 2)); // exploit 2-fold symmetry
-
- surface(F, domain(P(-0.25, 0), P(0.25, 0.5), mesh(32,32), mesh(64,64)), color);
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/steiner2.flx b/graphics/epix/samples/steiner2.flx
deleted file mode 100644
index 37a8199825..0000000000
--- a/graphics/epix/samples/steiner2.flx
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*-flix-*- */
-#include "epix.h"
-using namespace ePiX;
-
-double MAX(2.5), rad(0.8*MAX);
-
-int N(6); // slices
-
-P F(double u, double v)
-{
- double x(rad*Cos(u)*Cos(v)), y(rad*Cos(u)*Sin(v)), z(rad*Sin(u));
- return P(y*z, x*z, x*y);
-}
-
-/*
-P color(double x, double y)
-{
-#ifdef COLORSHADE
- return P(0.5*Sin(x), -0.5*Sin(x), Cos(y));
-#else
- return P(1,1,1); // white
-#endif
-}
-*/
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1(strtod(argv[1], &arg)), temp2(strtod(argv[2], &arg));
-
- tix()=temp1/temp2;
- }
-
- picture(P(-MAX,-MAX),P(MAX,MAX), "4x4in");
-
- begin();
-
- backing(RGB(0.7, 0.9, 1));
-
- fill();
- revolutions();
- camera.at(cyl(10, 0.25, 4));
-
- P perp(sph(1, 0.125, tix()));
-
- domain R(P(-0.25, 0), P(0.25, 0.5), mesh(32,32), mesh(64,64));
-#ifdef SHOWGRID
- plain(Red());
- plot(F, R);
-#endif
-
- int mult(1);
- // reverse slice order if necessary
- if ((perp | camera.eye()) < 0)
- mult=-1;
-
- for (int i=-mult*N; i != mult*N; i += mult)
- {
- clip_slice((MAX*i*1.0/N)*perp, perp, 0.1);
- rgb(0.25+0.1*i, 0, -0.1*i);
-
- surface(F, R);
- clip_restore();
- }
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/surface_shade.xp b/graphics/epix/samples/surface_shade.xp
deleted file mode 100644
index d2676190c8..0000000000
--- a/graphics/epix/samples/surface_shade.xp
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// surface to plot (a dog saddle)
-P f(double u, double v)
-{
- return P(u, v, 0.5*u*v*(u-v)*(u+v));
-}
-
-// position-dependent color function
-P color(double x, double y, double z)
-{
-#ifdef LAUREL_BURCH
- return P(-Sin(0.25*x), 0.2, -Cos(0.25*x)); // Laurel Burch colors
-#else
- return P(-tanh(z), 0, tanh(z)); // Quasi-geographic 70s colors
-#endif
-}
-
-int main()
-{
- picture(P(-3,-3), P(3,3), "6x6in");
-
- begin();
-
- // Set creation attributes,
- revolutions();
- set_crop();
- fill();
-
- // style attributes,
- backing(Black());
- plain(Yellow());
-
- // and viewpoint.
- camera.at(P(8, -8, 4));
-
- // Add scenery
- domain R(P(-2,-2), P(2, 2), mesh(36, 36), mesh(72, 72));
- surface(f, R, color);
-
- // and print
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/symmetries.xp b/graphics/epix/samples/symmetries.xp
deleted file mode 100644
index bda649bdbf..0000000000
--- a/graphics/epix/samples/symmetries.xp
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// draw a regular n-gon with labeled vertices
-void polygon(int n, double th_0 = 0)
-{
- const double d_th(full_turn()/n);
- path poly;
- for (int i=0; i<n; ++i)
- {
- // i-th vertex
- double th(th_0 + i*d_th);
- const P vtx(cis(th));
- poly.pt(vtx);
-
- // set label angle
- label_angle(th + 0.25*full_turn());
-
- // draw label
- std::stringstream buf;
- buf << "$" << i << "$";
- dot(vtx, -8*vtx, buf.str());
- }
-
- poly.close().draw();
-}
-
-int main()
-{
- picture(P(0,0), P(2,3), "4 x 6in");
-
- begin();
-
- border();
-
- // draw one hexagon in a screen
- screen scr(P(-1,-1), P(1,1));
- activate(scr);
-
- polygon(6);
-
- // marks to distinguish a vertex and orientation
- spot(P(1,0));
- black(0.3);
- line(P(-0.75,0), P(0.75,0));
-
- black();
- arc_arrow(P(0,0), 0.75, 0, M_PI/3);
- arc_arrow(P(0,0), 0.75, 2*M_PI/3, M_PI);
- arc_arrow(P(0,0), 0.75, 4*M_PI/3, 5*M_PI/3);
- scr.scale(0.9);
-
- // use layout and affine maps to draw symmetries
- inset(P(0,2), P(1,3));
-
- scr.rotate(2*M_PI/3);
- inset(P(0,1), P(1,2));
-
- scr.rotate(2*M_PI/3);
- inset(P(0,0), P(1,1));
-
- scr.rotate(2*M_PI/3).reflect(0);
- inset(P(1,2), P(2,3));
-
- scr.rotate(2*M_PI/3);
- inset(P(1,1), P(2,2));
-
- scr.rotate(2*M_PI/3);
- inset(P(1,0), P(2,1));
-
- deactivate(scr);
-
- // label insets
- font_size("LARGE");
- label_angle(0);
- masklabel(P(0.5, 2.5), "$e$");
- masklabel(P(0.5, 1.5), "$\\alpha$");
- masklabel(P(0.5, 0.5), "$\\alpha^2$");
-
- masklabel(P(1.5, 2.5), "$\\beta$");
- masklabel(P(1.5, 1.5), "$\\beta\\alpha^2$");
- masklabel(P(1.5, 0.5), "$\\beta\\alpha$");
-
- pst_format();
- end();
-}
diff --git a/graphics/epix/samples/tori.xp b/graphics/epix/samples/tori.xp
deleted file mode 100644
index aa925845d6..0000000000
--- a/graphics/epix/samples/tori.xp
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*-ePiX-*- */
-/* tori.xp -- May 09, 2005 */
-// compile tutorial torus meshes at once
-#include "epix.h"
-using namespace ePiX;
-
-// torus
-P F(double u, double v)
-{
- return polar(2.25+Cos(u), v) + P(0,0,Sin(u));
-}
-
-int main()
-{
- picture(P(0,0), P(4,1), "6 x 1.5in");
-
- begin();
-
- domain R(P(0,0), P(1,1), mesh(12,30), mesh(24, 60));
-
- revolutions();
- camera.at(10,7,5);
-
- // unclipped/cropped
- screen scr1(P(-3,-3), P(3,3));
- activate(scr1);
- fill(White());
- surface(F, R);
- inset(P(0,0), P(1,1));
- deactivate(scr1);
-
- // cropped
- screen scr2(P(-3,-3), P(3,3));
- activate(scr2);
- set_crop();
- border();
- surface(F, R);
- inset(P(1.5,0), P(2.5,1));
- deactivate(scr2);
-
- // clipped
- screen scr3(P(-3,-3), P(3,3));
- activate(scr3);
- clip_box(P(3.5, 2, 1.5));
-
- // box, sides layered manually
- nofill();
- rect(P(-3.5, -2, -1.5), P(-3.5, 2, 1.5));
- rect(P(-3.5, -2, -1.5), P( 3.5, -2, 1.5));
-
- fill();
- surface(F, R);
- nofill();
- rect(P( 3.5, -2, -1.5), P( 3.5, 2, 1.5));
- rect(P(-3.5, 2, -1.5), P( 3.5, 2, 1.5));
-
- inset(P(3,0), P(4,1));
- deactivate(scr3);
-
- pst_format();
- end();
-}
-
diff --git a/graphics/epix/samples/torus.xp b/graphics/epix/samples/torus.xp
deleted file mode 100644
index dbcfe31906..0000000000
--- a/graphics/epix/samples/torus.xp
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*-ePiX-*- */
-/* torus.xp -- July 6, 2004 */
-#include "epix.h"
-using namespace ePiX;
-
-const int N(8);
-
-P F(double t1, double t2)
-{
- return polar(2+Sin(t2), t1) + Cos(t2)*E_3;
-}
-
-domain R(P(0,0), P(1,1), mesh(4*N, 2*N), mesh(12*N, 6*N));
-
-int main()
-{
- picture(P(-3,-3), P(3,3), "2x2in");
-
- begin();
- revolutions();
- camera.at(1.7,-1, 0.75);
- camera.range(8);
-
- rgb(0.2, 0.5, 0.7);
-
- plot(F, R.resize1(0,0.875));
-
- bold();
- rgb(0.5, 0.3, 0.9);
- plot(F, R.resize2(-0.375,0).resize1(0,0.125));
-
- red();
- dashed();
- plot(F, R.slice1(0));
- plot(F, R.slice2(0));
-
- end();
-}
-
diff --git a/graphics/epix/samples/trig.flx b/graphics/epix/samples/trig.flx
deleted file mode 100644
index f07763f4d4..0000000000
--- a/graphics/epix/samples/trig.flx
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P f(double x, double t)
-{
- return P(x, Sin(x+t));
-}
-
-domain R(P(0,0), P(1,1), mesh(60,24), mesh(120, 72));
-
-int main(int argc, char* argv[])
-{
- if (argc == 3)
- {
- char* arg;
- double temp1, temp2;
- temp1=strtod(argv[1], &arg);
- temp2=strtod(argv[2], &arg);
-
- tix()=temp1/temp2;
- }
-
- picture(P(0,0), P(5,2), "5x2in");
-
- begin();
- revolutions();
-
- border();
- set_crop();
-
- screen rolling(P(-1,-1), P(1,1));
- screen waving(P(0,-1), P(1,1));
-
- activate(rolling);
-
- P ctr(polar(0.5, tix()));
- P rim(polar(0.5, tix()) + polar(0.5, -tix()));
- P rim2(polar(0.5, tix()) + polar(0.5, 0.5-tix()));
-
- circle(ctr, 0.5); // small wheel
-
- bold();
- circle(P(0,0), 1); // big wheel
-
- green();
- line(P(1,0), P(-1,0));
-
- blue();
- line(P(0,1), P(0,-1));
-
- red();
- line(ctr, rim);
- line(ctr, rim2);
-
- ddot(rim);
- ddot(rim2);
- deactivate(rolling);
-
- activate(waving);
- set_crop();
- blue();
- plot(f, R.slice2(tix()));
- deactivate(waving);
-
- inset(rolling, P(0,0), P(2,2));
- inset(waving, P(3,0), P(5,2));
-
- dashed();
- pen(Blue(1.6), 0.15);
- line(P(1,1+Sin(tix())), P(3,1) + f(0, tix()));
-
- end();
-}
diff --git a/graphics/epix/samples/twisted_cubic.xp b/graphics/epix/samples/twisted_cubic.xp
deleted file mode 100644
index 8e9ec5d4b7..0000000000
--- a/graphics/epix/samples/twisted_cubic.xp
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const double MAX(2.5);
-
-const double XMIN(-2);
-
-// twisted cubic
-P cubic(double t)
-{
- return t*P(1, t, t*t);
-}
-
-// projections to coordinate planes
-P cubic12(double t)
-{
- const P arg(cubic(t));
- return P(arg.x1(), arg.x2(), XMIN);
-}
-
-P cubic13(double t)
-{
- const P arg(cubic(t));
- return P(arg.x1(), XMIN, arg.x3());
-}
-
-P cubic23(double t)
-{
- const P arg(cubic(t));
- return P(XMIN, arg.x2(), arg.x3());
-}
-
-// draw lines from one path to another
-void bars(P f1(double), P f2(double))
-{
- for (int i=0; i<=20; ++i)
- line(f1(-1+0.1*i), f2(-1+0.1*i));
-}
-
-// code to draw entire figure
-void draw_frame()
-{
- // (x,z)-plane
- blue();
- bbold();
- plot(cubic13, -1, 1, 60);
- plain();
- bars(cubic13, cubic);
- label(cubic13(1), P(0,2), "$x$-$z$", t);
-
- // (y,z)-plane
- green(0.6);
- bbold();
- plot(cubic23, -1, 1, 60);
- plain();
- bars(cubic23, cubic);
- label(cubic23(1), P(0,2), "$y$-$z$", t);
-
- // (x,y)-plane
- magenta();
- bbold();
- plot(cubic12, -1, 1, 60);
- plain();
- bars(cubic12, cubic);
- label(cubic12(1), P(2,0), "$x$-$y$",r);
-
- // the cubic
- bold(Red(1.6));
- base(Red(0.6), "2pt");
- plot(cubic, -1, 1, 60);
-}
-
-int main()
-{
- picture(P(-1,0), P(1.25,1), "4.5 x 2in");
-
- begin();
-
- screen scr_left(P(-MAX,-MAX), P(MAX,MAX));
- activate(scr_left);
-
- border(Black(), "1pt");
-
- camera.at(sph(10, 0.8, 0.5));
- camera.look_at(P(0,0,-0.25));
-
- draw_frame();
- base(Neutral());
-
- screen scr_right(P(-MAX,-MAX), P(MAX,MAX));
- activate(scr_right);
-
- border(Black(), "1pt");
-
- camera.at(sph(10, 0.9, 0.5));
- camera.look_at(P(0,0,-0.25));
-
- draw_frame();
-
- inset(scr_left, P(0.25,0), P(1.25,1));
- inset(scr_right, P(-1,0), P(0,1));
-
- end();
-}
-
diff --git a/graphics/epix/samples/uppersum.xp b/graphics/epix/samples/uppersum.xp
deleted file mode 100644
index d1ff6ac2b0..0000000000
--- a/graphics/epix/samples/uppersum.xp
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const int N(12); // Number of rectangles
-
-// gather references to integrand
-double f(double t)
-{
- return Sin(t);
-}
-
-int main()
-{
- picture(P(0,0), P(3,1), "3x1in");
-
- begin();
-
- const double dx(xsize()/N);
-
- riemann_sum(f, xmin(), xmax(), N, UPPER);
-
- fill(Black(0.1));
- riemann_sum(f, xmin(), xmax(), N, LOWER);
- nofill();
-
- h_axis(xsize());
- v_axis(2*ysize());
-
- h_axis_labels(xsize(), P(0,-4), b);
- label(P(2, f(2)), P(4,2), "$y=\\sin x$", tr);
-
- bold(Blue());
- plot(f, xmin(), xmax(), 40);
-
- end();
-}
diff --git a/graphics/epix/samples/vfield.xp b/graphics/epix/samples/vfield.xp
deleted file mode 100644
index ba6e1fd8ba..0000000000
--- a/graphics/epix/samples/vfield.xp
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// A spatial vector field depending on three variables
-P F(double x, double y, double z)
-{
- return -0.25*P(0.5*x+y, 0.5*y-x, 1+z);
-}
-
-domain R(P(-1,-1,-1), P(1,1,1), mesh(6,6,4), mesh());
-
-int main()
-{
- picture(P(-2,-2),P(2,2), "4x4in");
-
- begin();
- border();
-
- label(P(0, ymax()), P(0,-4), "$F(x,y,z)=-(x+2y, y-2x, 1+z)$",b);
-
- camera.at(P(11,8,5));
-
- // coordinate grids
- const int GRIDS(6);
- plain(Black(0.3));
- grid(P(-1, -1,-1), P(-1, 1, 1), GRIDS, GRIDS);
- grid(P(-1, -1,-1), P( 1,-1, 1), GRIDS, GRIDS);
- grid(P(-1, -1,-1), P(1, 1, -1), GRIDS, GRIDS);
-
- // flow lines
- bold();
- for (int i=0; i<12; ++i)
- {
- double t(M_PI_2+i*M_PI/6);
- pen(RGB(0.25*(3+Sin(t)), 0.25, 0.25*(3+Cos(t))));
- ode_plot(F, cyl(1.4, t, 1), 0, 10, 60);
- }
-
- // draw arrows in plain black borderd by a white edge;
- // vectors will appear to hide vectors behind them
- plain(Black());
- base(White(), "2pt");
-
- // the field is drawn in successive slices x_3 = const
-#ifdef VECT
- vector_field(F, R, 0.75); // draw arrowheads at 75% of default size
-#else
- dart_field(F, R, 0.5); // draw darts at 50% of default length
-#endif
-
- const double DX(0.125); // label padding
- font_size("scriptsize");
- degrees();
-
- label_angle(30); // adjusted visually; could calculate from camera position
- label(P(1+DX, -1, -1), P(-4,-2), "$y=-1$", bl);
- label(P(1+DX, 0, -1), P(-4,-2), "$y=0$", bl);
- label(P(1+DX, 1, -1), P(-4,-2), "$y=1$", bl);
-
- label_angle(-15);
- label(P(-1, 1+DX, -1), P(4,0), "$x=-1$", br);
- label(P( 0, 1+DX, -1), P(4,0), "$x=0$", br);
- label(P( 1, 1+DX, -1), P(4,0), "$x=1$", br);
-
- label(P( 1, -1-DX, -1), P(-4,0), "$z=-1$", tl);
- label(P( 1, -1-DX, 0), P(-4,0), "$z=0$", tl);
- label(P( 1, -1-DX, 1), P(-4,0), "$z=1$", tl);
-
- end();
-}
diff --git a/graphics/epix/samples/weierstrass.xp b/graphics/epix/samples/weierstrass.xp
deleted file mode 100644
index 2822b0737a..0000000000
--- a/graphics/epix/samples/weierstrass.xp
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-const int N(8); // Number of summands
-
-double weierstrass(double t)
-{
- double y(0);
- for(int i=0; i < N; ++i)
- y += pow(2,-i)*cb(pow(2,i)*t);
-
- return y;
-}
-
-int main()
-{
- picture(P(-2, 0), P(2, 1.5), "3.2 x 1.2in");
-
- begin();
-
- h_axis(2*xsize());
- v_axis(2*ysize());
- h_axis_labels(xsize(), P(-4,-8));
-
- blue();
- plot(cb, xmin() - 0.25, xmax()+0.25, 4*xsize() + 2);
-
- bold(Black());
- plot(weierstrass, xmin(), xmax(), pow(2,N));
-
- pen(Red());
- plot(weierstrass, 0.5, 1.5, pow(2,N-2));
-
- end();
-}
diff --git a/graphics/epix/samples/wheel.xp b/graphics/epix/samples/wheel.xp
deleted file mode 100644
index e8056f8658..0000000000
--- a/graphics/epix/samples/wheel.xp
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-P F(double t, double r)
-{
- return P(t-r*Sin(t), 1-r*Cos(t)); // a cycloid
-}
-
-int main()
-{
- picture(P(0,0), P(15,27), "4 x 7.2in");
-
- begin();
-
- const double dt(5*M_PI/11);
- double t(dt);
-
- for(int i=0; i < 9; ++i, t += dt)
- {
- screen scr(P(-1,0), P(15,2)); // drawing area
- activate(scr);
-
- plain(Black());
- line(P(-1, 0), P(15, 0)); // the ground
-
- circle(P(t,1), 1); // the wheel
-
- // [0,t] x [0,1]
- domain R(P(0,0), P(t, 1), mesh(10*i,5), mesh((int) ceil(1+4*t), 5));
-
- // the paths
- bold();
- for (int j=0; j < 6; ++j)
- {
- pen(RGB(1-0.125*j, 0.125*j, 0.5+0.125*j));
- plot(F, R.slice2(0.2*j));
- }
-
- // the spoke
- bold(Green());
- line(P(t,1), F(t,1));
-
- inset(P(0, 25-3*i), P(15, 27-3*i)); // page layout
- deactivate(scr);
- }
-
- end();
-}
-
diff --git a/graphics/epix/screen.cc b/graphics/epix/screen.cc
deleted file mode 100644
index 2c23a26d68..0000000000
--- a/graphics/epix/screen.cc
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- * screen.cc -- ePiX::screen_data class wrapper (for user interface)
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 16, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <string>
-#include <sstream>
-
-#include "triples.h"
-#include "pairs.h"
-#include "affine.h"
-
-#include "Color.h"
-
-#include "mask_ellipse.h"
-#include "mask_rectangle.h"
-#include "mask_diamond.h"
-
-#include "screen_data.h"
-#include "screen.h"
-
-namespace ePiX {
-
- // N.B. Our interface handles only P, not pair.
- // Our implementation works only with pair, not P.
-
- P __epix_pair2P(const pair& arg)
- {
- return P(arg.x1(), arg.x2(), 0);
- }
-
- screen::screen() { }
-
- screen::screen(const P& arg1, const P& arg2)
- : m_screen(new screen_data(pair(arg1.x1(), arg1.x2()),
- pair(arg2.x1(), arg2.x2()))) { }
-
-
- screen::screen(const screen& sc)
- : m_screen(sc.m_screen->clone()) { }
-
- screen& screen::operator= (const screen& sc)
- {
- if (this != &sc)
- {
- screen_data* tmp(sc.m_screen->clone());
-
- delete m_screen;
- m_screen = tmp;
- }
-
- return *this;
- }
-
- screen::~screen()
- {
- delete m_screen;
- }
-
-
- // Set mask; one named function for each type of screen_mask
- screen& screen::crop_mask_rectangle(const P& sw, const P& ne)
- {
- const pair BL(sw.x1(), sw.x2());
- const pair TR(ne.x1(), ne.x2());
-
- m_screen->set_mask(mask_rectangle(BL, TR));
- return *this;
- }
-
- screen& screen::crop_mask_ellipse(const P& sw, const P& ne)
- {
- const pair BL(sw.x1(), sw.x2());
- const pair TR(ne.x1(), ne.x2());
-
- m_screen->set_mask(mask_ellipse(BL, TR));
- return *this;
- }
-
- screen& screen::crop_mask_diamond(const P& sw, const P& ne)
- {
- const pair BL(sw.x1(), sw.x2());
- const pair TR(ne.x1(), ne.x2());
-
- m_screen->set_mask(mask_diamond(BL, TR));
- return *this;
- }
-
- // masks' cardinal points lie on circumrectangle, corners may not
- screen& screen::crop_mask_rectangle()
- {
- const pair BL((m_screen->l()).x1(), (m_screen->b()).x2());
- const pair TR((m_screen->r()).x1(), (m_screen->t()).x2());
-
- m_screen->set_mask(mask_rectangle(BL, TR));
- return *this;
- }
-
- screen& screen::crop_mask_ellipse()
- {
- const pair BL((m_screen->l()).x1(), (m_screen->b()).x2());
- const pair TR((m_screen->r()).x1(), (m_screen->t()).x2());
-
- m_screen->set_mask(mask_ellipse(BL, TR));
- return *this;
- }
-
- screen& screen::crop_mask_diamond()
- {
- const pair BL((m_screen->l()).x1(), (m_screen->b()).x2());
- const pair TR((m_screen->r()).x1(), (m_screen->t()).x2());
-
- m_screen->set_mask(mask_diamond(BL, TR));
- return *this;
- }
-
-
- screen screen::extract(const P& arg1, const P& arg2) const
- {
- screen value(arg1, arg2);
-
- value.m_screen
- = new screen_data(m_screen->extract(pair(arg1.x1(), arg1.x2()),
- pair(arg2.x1(), arg2.x2())));
- return value;
- }
-
- screen screen::extract_diamond(const P& arg1, const P& arg2) const
- {
- screen value(arg1, arg2);
-
- value.m_screen
- = new screen_data(m_screen->extract_diamond(pair(arg1.x1(), arg1.x2()),
- pair(arg2.x1(), arg2.x2())));
- return value;
- }
-
- screen screen::extract_ellipse(const P& arg1, const P& arg2) const
- {
- screen value(arg1, arg2);
-
- value.m_screen
- = new screen_data(m_screen->extract_ellipse(pair(arg1.x1(), arg1.x2()),
- pair(arg2.x1(), arg2.x2())));
- return value;
- }
-
-
- screen& screen::set_crop(bool arg)
- {
- m_screen->set_crop(arg);
- return *this;
- }
-
- // crop contents to current mask
- screen& screen::crop()
- {
- m_screen->crop();
- return *this;
- }
-
-
- // inset and import
- screen& screen::paste(const screen& child, const P& sw, const P& ne)
- {
- m_screen->paste(*(child.m_screen), mask_rectangle(pair(sw.x1(), sw.x2()),
- pair(ne.x1(), ne.x2())));
- return *this;
- }
-
- screen& screen::paste(const screen& child)
- {
- m_screen->paste(*(child.m_screen));
- return *this;
- }
-
- screen& screen::clear()
- {
- m_screen->clear();
- return *this;
- }
-
- screen& screen::border(const Color& col, double len)
- {
- std::stringstream buf;
- buf << len << "pt";
- m_screen->border(col, buf.str());
- return *this;
- }
-
- screen& screen::border(const Color& col, const std::string& len)
- {
- m_screen->border(col, len);
- return *this;
- }
-
- screen& screen::backing(const Color& col)
- {
- m_screen->backing(col);
- return *this;
- }
-
-
- screen& screen::border()
- {
- m_screen->border();
- return *this;
- }
-
- screen& screen::backing()
- {
- m_screen->backing();
- return *this;
- }
-
- // affine operations on contents (not border, backing)
- screen& screen::apply(const affine& af)
- {
- m_screen->apply(af);
- return *this;
- }
-
- screen& screen::shift(const P& arg)
- {
- m_screen->shift(pair(arg.x1(), arg.x2()));
- return *this;
- }
-
- // rotate by theta about ctr
- screen& screen::rotate(double theta, const P& ctr)
- {
- m_screen->rotate(theta, pair(ctr.x1(), ctr.x2()));
- return *this;
- }
-
- // reflect in angle-theta line through ctr
- screen& screen::reflect(double theta, const P& ctr)
- {
- m_screen->reflect(theta, pair(ctr.x1(), ctr.x2()));
- return *this;
- }
-
- // scale coord direction(s) fixing ctr
- screen& screen::h_scale(double sc, const P& ctr)
- {
- m_screen->h_scale(sc, pair(ctr.x1(), ctr.x2()));
- return *this;
- }
-
- screen& screen::v_scale(double sc, const P& ctr)
- {
- m_screen->v_scale(sc, pair(ctr.x1(), ctr.x2()));
- return *this;
- }
-
- screen& screen::scale(double sc, const P& ctr)
- {
- m_screen->scale(sc, pair(ctr.x1(), ctr.x2()));
- return *this;
- }
-
- // shear, fixing ctr, e.g. h_shear(sc) : (x,y) -> (x+sc*y, y)
- screen& screen::h_shear(double sc, const P& ctr)
- {
- m_screen->h_shear(sc, pair(ctr.x1(), ctr.x2()));
- return *this;
- }
-
- screen& screen::v_shear(double sc, const P& ctr)
- {
- m_screen->v_shear(sc, pair(ctr.x1(), ctr.x2()));
- return *this;
- }
-
- P screen::tr() const
- {
- return __epix_pair2P(m_screen->tr());
- }
-
- P screen::tl() const
- {
- return __epix_pair2P(m_screen->tl());
- }
-
- P screen::bl() const
- {
- return __epix_pair2P(m_screen->bl());
- }
-
- P screen::br() const
- {
- return __epix_pair2P(m_screen->br());
- }
-
-
- P screen::t() const
- {
- return __epix_pair2P(m_screen->t());
- }
-
- P screen::b() const
- {
- return __epix_pair2P(m_screen->b());
- }
-
- P screen::l() const
- {
- return __epix_pair2P(m_screen->l());
- }
-
- P screen::r() const
- {
- return __epix_pair2P(m_screen->r());
- }
-
- P screen::c() const
- {
- return __epix_pair2P(m_screen->c());
- }
-
-
- double screen::h_min() const
- {
- return m_screen->h_min();
- }
-
- double screen::h_max() const
- {
- return m_screen->h_max();
- }
-
- double screen::h_size() const
- {
- return m_screen->h_size();
- }
-
- double screen::h_avg() const
- {
- return m_screen->h_avg();
- }
-
-
- double screen::v_min() const
- {
- return m_screen->v_min();
- }
-
- double screen::v_max() const
- {
- return m_screen->v_max();
- }
-
- double screen::v_size() const
- {
- return m_screen->v_size();
- }
-
- double screen::v_avg() const
- {
- return m_screen->v_avg();
- }
-} // end of namespace
diff --git a/graphics/epix/screen.h b/graphics/epix/screen.h
deleted file mode 100644
index 023d34b4be..0000000000
--- a/graphics/epix/screen.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * screen.h -- ePiX::screen class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 15, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file defines the screen class interface, a Cartesian rectangle
- * into which objects are drawn. Object-creating commands add to the
- * the "global" screen the_picture(). Users may create and activate
- * additional screens, then import their content to the_picture().
- *
- * Constructor:
- * screen(P(a,c), P(b,d)); // corners of bounding box
- *
- * Markup functions:
- * crop(); // remove elements outside bounding box
- * crop_to(mask); // or specified mask
- * paste(screen); // overlay contents of screen
- * paste(screen, P(a,c), P(b,d)); // or inset into specified rectangle
- *
- * Decorations:
- * border(Color, "1pt"); // set border color/width
- * backing(Color); // and backing color
- *
- * This file wraps the implementation, which is hidden from the user.
- */
-#ifndef EPIX_SCREEN
-#define EPIX_SCREEN
-
-#include <string>
-
-#include "triples.h"
-
-namespace ePiX {
-
- class Color;
- class affine;
- class screen_data;
- class P;
-
- // global function
- void write(const std::string&);
-
- class screen {
- // There's no user-visible form for screen contents, so
- // we give these classes access to our implementation.
- friend class arrow_data;
- friend class label_data;
- friend class legend;
- friend class path_data;
- friend class picture_data;
- friend void write(const std::string&);
-
- public:
- screen();
- screen(const P&, const P&);
-
- screen(const screen&);
- screen& operator= (const screen&);
- ~screen();
-
- // Set mask; one named function for each type of screen_mask
- screen& crop_mask_rectangle(const P&, const P&);
- screen& crop_mask_ellipse(const P&, const P&);
- screen& crop_mask_diamond(const P&, const P&);
-
- screen& crop_mask_rectangle();
- screen& crop_mask_ellipse();
- screen& crop_mask_diamond();
-
- // return selected region
- screen extract(const P&, const P&) const;
- screen extract_diamond(const P&, const P&) const;
- screen extract_ellipse(const P&, const P&) const;
-
- // set flag only
- screen& set_crop(bool arg=true);
-
- // crop contents to current mask
- screen& crop();
-
- // inset and import
- screen& paste(const screen& child, const P& inset_sw, const P& inset_ne);
- screen& paste(const screen& child);
-
- screen& clear();
-
- // border(Color, length)?
- screen& border(const Color&, double);
- screen& border(const Color&, const std::string&);
- screen& backing(const Color&);
-
- screen& border();
- screen& backing();
-
- //// pass-through functions ////
- // affine operations on contents (not border, backing)
- screen& apply(const affine& f);
-
- // convenience operators for single affine ops
- screen& shift(const P& arg);
-
- // rotate by theta about ctr
- screen& rotate(double theta, const P& ctr = P(0,0));
-
- // reflect in angle-theta line through ctr
- screen& reflect(double theta, const P& ctr = P(0,0));
-
- // scale coord direction(s) fixing ctr
- screen& h_scale(double, const P& ctr=P(0,0));
- screen& v_scale(double, const P& ctr=P(0,0));
- screen& scale(double, const P& ctr=P(0,0));
-
- // shear, fixing ctr, e.g. h_shear(sc) : (x,y) -> (x+sc*y, y)
- screen& h_shear(double sc, const P& ctr=P(0,0));
- screen& v_shear(double sc, const P& ctr=P(0,0));
-
- P tr() const;
- P tl() const;
- P bl() const;
- P br() const;
-
- P t() const;
- P b() const;
- P l() const;
- P r() const;
- P c() const;
-
- double h_min() const;
- double h_max() const;
- double h_size() const;
- double h_avg() const;
-
- double v_min() const;
- double v_max() const;
- double v_size() const;
- double v_avg() const;
-
- private:
- screen_data* m_screen;
-
- }; // end of class screen
-
-} // end of namespace
-
-#endif /* EPIX_SCREEN */
diff --git a/graphics/epix/screen_crop.cc b/graphics/epix/screen_crop.cc
deleted file mode 100644
index 1eb6860266..0000000000
--- a/graphics/epix/screen_crop.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * screen_crop.cc -- ePiX functions for cropping 2D paths and loops
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.8
- * Last Change: July 17, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include "functions.h"
-#include "pairs.h"
-
-#include "edge_data.h"
-#include "screen_crop.h"
-#include "crop_algorithms.h"
-
-namespace ePiX {
-
- typedef std::list<edge2d>::const_iterator CLI;
-
- static pair unit_perp(const edge2d& E)
- {
- pair N(J(E.head() - E.tail()));
- return N *= recip(norm(N));
- }
-
- // O(n^2) algorithm seems necessary since edge_list needn't be convex
- std::list<edge2d>& crop_path_2nd(const std::list<edge2d>& bord,
- std::list<edge2d>& edge_list)
- {
- for (CLI ep=bord.begin(); ep != bord.end(); ++ep)
- chop_path<pair>(unit_perp(*ep), (*ep).tail(), edge_list);
-
- return cull<pair>(edge_list);
- }
-
- std::list<edge2d>& crop_loop_2nd(const std::list<edge2d>& bord,
- std::list<edge2d>& edge_list)
- {
- for (CLI ep=bord.begin(); ep != bord.end(); ++ep)
- {
- chop_path<pair>(unit_perp(*ep), (*ep).tail(), edge_list);
- loopify<pair>(edge_list);
- }
-
- return cull<pair>(edge_list);
- }
-} // end of namespace
diff --git a/graphics/epix/screen_crop.h b/graphics/epix/screen_crop.h
deleted file mode 100644
index 910114528a..0000000000
--- a/graphics/epix/screen_crop.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * screen_crop.h -- ePiX functions for cropping 2D paths and loops
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.8
- * Last Change: July 17, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_SCREEN_CROP
-#define EPIX_SCREEN_CROP
-
-#include <list>
-
-#include "edge_data.h"
-
-namespace ePiX {
-
- // return reference to second argument
- std::list<edge2d>& crop_path_2nd(const std::list<edge2d>&,
- std::list<edge2d>&);
-
- std::list<edge2d>& crop_loop_2nd(const std::list<edge2d>&,
- std::list<edge2d>&);
-} // end of namespace
-
-#endif /* EPIX_SCREEN_CROP */
diff --git a/graphics/epix/screen_data.cc b/graphics/epix/screen_data.cc
deleted file mode 100644
index 02eac318b5..0000000000
--- a/graphics/epix/screen_data.cc
+++ /dev/null
@@ -1,572 +0,0 @@
-/*
- * screen_data.cc -- ePiX::screen class implementation
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.2.1
- * Last Change: September 28, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <list>
-#include <algorithm>
-#include <sstream>
-
-#include "camera.h"
-
-#include "pairs.h"
-
-#include "functions.h"
-
-#include "Color.h"
-
-#include "utils.h"
-
-#include "tile.h"
-
-#include "pen_line.h"
-#include "pen_fill.h"
-
-#include "affine.h"
-#include "mask_ellipse.h"
-#include "mask_rectangle.h"
-#include "mask_diamond.h"
-
-#include "format.h"
-
-// #include "screen_mask.h"
-#include "screen_data.h"
-
-namespace ePiX {
-
- typedef std::list<tile*>::const_iterator Tp;
-
- // constructor
- screen_data::screen_data(const pair& arg1, const pair& arg2)
- : m_bl(pair(min(arg1.x1(), arg2.x1()), min(arg1.x2(), arg2.x2()))),
- m_tr(pair(max(arg1.x1(), arg2.x1()), max(arg1.x2(), arg2.x2()))),
- m_mask(new mask_rectangle(m_bl, m_tr)),
- m_border(new pen_line()),
- m_backing(new pen_fill()),
- m_crop(false) { }
-
- // copy constructor
- screen_data::screen_data(const screen_data& scr)
- : m_bl(scr.m_bl),
- m_tr(scr.m_tr),
- m_mask(scr.m_mask->clone()),
- m_border(scr.m_border->clone()),
- m_backing(scr.m_backing->clone()),
- m_crop(scr.m_crop)
- {
- for(Tp p=scr.m_tiles.begin(); p!= scr.m_tiles.end(); ++p)
- add_tile(*p);
- }
-
- // copy assignment
- screen_data& screen_data::operator= (const screen_data& scr)
- {
- if (this != &scr)
- {
- // copy scr's tiles before freeing ours
- std::list<tile*> tmp;
- for(Tp p=scr.m_tiles.begin(); p!= scr.m_tiles.end(); ++p)
- add_tile(*p);
-
- screen_mask* tmp_mask(scr.m_mask->clone());
-
- pen_line* tmp_border(scr.m_border->clone());
- pen_fill* tmp_backing(scr.m_backing->clone());
-
- // okay, safe to muck with our data
- m_bl = scr.m_bl;
- m_tr = scr.m_tr;
-
- delete m_mask;
- m_mask = tmp_mask;
-
- delete m_border;
- m_border = tmp_border;
-
- delete m_backing;
- m_backing = tmp_backing;
-
- for (Tp p=m_tiles.begin(); p!=m_tiles.end(); ++p)
- delete *p;
-
- swap(m_tiles, tmp);
-
- m_crop = scr.m_crop;
- }
- return *this;
- } // end of copy assignment
-
-
- screen_data::~screen_data()
- {
- delete m_mask;
- delete m_border;
- delete m_backing;
-
- for(Tp p=m_tiles.begin(); p!= m_tiles.end(); ++p)
- delete *p;
- }
-
- screen_data* screen_data::clone() const
- {
- return new screen_data(*this);
- }
-
-
- // superimpose a layer by affine scaling
- // map child to inset (inset defaults to m_mask)
- screen_data& screen_data::paste(const screen_data& child,
- const screen_mask& inset)
- {
- if (this != &child)
- {
- const double h_sc(inset.h_size()/child.h_size());
- const double v_sc(inset.v_size()/child.v_size());
-
- const pair tmp00(inset.bl() - (child.bl() & pair(h_sc, v_sc)));
-
- affine af(tmp00 + pair(h_sc, 0), tmp00 + pair(0, v_sc), tmp00);
-
- // backing
- if (!child.m_backing->is_empty())
- {
- // child is const, so must copy tile
- pen_fill* temp(child.m_backing->clone());
- add_tile(temp->map_by(af));
- }
-
- // tiles
- for(Tp p=child.m_tiles.begin(); p!= child.m_tiles.end(); ++p)
- {
- tile* temp((*p)->clone());
- add_tile(temp->map_by(af));
- }
-
- // border
- if (!child.m_border->is_empty())
- {
- pen_line* temp(child.m_border->clone());
- add_tile(temp->map_by(af));
- }
- }
-
- return *this;
- } // end of paste(child, inset)
-
-
- screen_data& screen_data::paste(const screen_data& child)
- {
- if (this != &child)
- {
- const double h_sc(h_size()/child.h_size());
- const double v_sc(v_size()/child.v_size());
-
- const pair tmp00(bl() - (child.bl() & pair(h_sc, v_sc)));
-
- affine af(tmp00 + pair(h_sc, 0), tmp00 + pair(0, v_sc), tmp00);
-
- // backing
- if (!child.m_backing->is_empty())
- {
- // child is const, so must copy tile
- pen_fill* temp(child.m_backing->clone());
-
- add_tile(temp->map_by(af));
- }
-
- // tiles
- for(Tp p=child.m_tiles.begin(); p!= child.m_tiles.end(); ++p)
- {
- tile* temp((*p)->clone());
- add_tile(temp->map_by(af));
- }
-
- // border
- if (!child.m_border->is_empty())
- {
- pen_line* temp(child.m_border->clone());
- add_tile(temp->map_by(af));
- }
- }
-
- return *this;
- }
-
- screen_data& screen_data::clear()
- {
- delete m_border;
- m_border = new pen_line();
-
- m_tiles.clear();
-
- delete m_backing;
- m_backing = new pen_fill();
-
- m_crop = false;
- return *this;
- }
-
- screen_data& screen_data::crop_to(const screen_mask& mask)
- {
- std::list<tile*> visibles;
-
- if (!m_border->is_empty())
- m_border->crop_to(mask);
-
- if (!m_backing->is_empty())
- m_backing->crop_to(mask);
-
- for (Tp curr=m_tiles.begin(); curr!=m_tiles.end(); ++curr)
- {
- (*curr)->crop_to(mask);
-
- if (!(*curr)->is_empty())
- visibles.push_back(*curr);
- }
-
- swap(m_tiles, visibles);
- return *this;
- }
-
- screen_data& screen_data::crop()
- {
- return crop_to(*m_mask);
- }
-
-
- screen_data& screen_data::set_mask(const screen_mask& mask)
- {
- delete m_mask;
- m_mask = mask.clone();
-
- return *this;
- }
-
- screen_data& screen_data::set_crop(bool arg)
- {
- m_crop = arg;
- return *this;
- }
-
- screen_data screen_data::extract(const pair& arg1, const pair& arg2) const
- {
- screen_data value(arg1, arg2);
- value.set_crop(true);
-
- for (Tp curr=m_tiles.begin(); curr!=m_tiles.end(); ++curr)
- value.add_tile(*curr);
-
- return value;
- }
-
- screen_data screen_data::extract_diamond(const pair& arg1,
- const pair& arg2) const
- {
- screen_data value(arg1, arg2);
-
- value.set_mask(mask_diamond(arg1, arg2)).set_crop(true);
-
- for (Tp curr=m_tiles.begin(); curr!=m_tiles.end(); ++curr)
- value.add_tile(*curr);
-
- return value;
- }
-
- screen_data screen_data::extract_ellipse(const pair& arg1,
- const pair& arg2) const
- {
- screen_data value(arg1, arg2);
-
- value.set_mask(mask_ellipse(arg1, arg2)).set_crop(true);
-
- for (Tp curr=m_tiles.begin(); curr!=m_tiles.end(); ++curr)
- value.add_tile(*curr);
-
- return value;
- }
-
-
- screen_data& screen_data::border(const Color& col, const std::string& len)
- {
- delete m_border;
- m_border = new pen_line(m_mask->border(cam()(col), len));
- m_crop = true;
-
- return *this;
- }
-
-
- screen_data& screen_data::backing(const Color& col)
- {
- delete m_backing;
- m_backing = new pen_fill(m_mask->backing(cam()(col)));
- m_crop = true;
-
- return *this;
- }
-
-
- screen_data& screen_data::border()
- {
- delete m_border;
- m_border = new pen_line(m_mask->border());
- m_crop = true;
-
- return *this;
- }
-
-
- screen_data& screen_data::backing()
- {
- delete m_backing;
- m_backing = new pen_fill(m_mask->backing());
- m_crop = true;
-
- return *this;
- }
-
- // screen cropping done in these two functions
- void screen_data::add_tile(const tile& T)
- {
- tile* tmp(T.clone());
- if (m_crop)
- tmp->crop_to(*m_mask);
-
- if (!tmp->is_empty())
- m_tiles.push_back(tmp);
- }
-
- void screen_data::add_tile(tile* Tp)
- {
- tile* tmp(Tp->clone());
- if (m_crop)
- tmp->crop_to(*m_mask);
-
- if (!tmp->is_empty())
- m_tiles.push_back(tmp);
- }
-
-
- // affine operations on contents (not border, backing)
- void screen_data::apply(const affine& af)
- {
- for (Tp curr=m_tiles.begin(); curr!=m_tiles.end(); ++curr)
- (*curr)->map_by(af);
- }
-
- void screen_data::shift(const pair& arg)
- {
- affine af;
- af.shift(arg);
- apply(af);
- }
-
- // rotate by theta about ctr
- void screen_data::rotate(double theta, const pair& ctr)
- {
- affine af;
- af.rotate(theta, ctr);
- apply(af);
- }
-
- // reflect in angle-theta line through ctr
- void screen_data::reflect(double theta, const pair& ctr)
- {
- affine af;
- af.reflect(theta, ctr);
- apply(af);
- }
-
- // scale coord direction(s) fixing ctr
- void screen_data::h_scale(double sc, const pair& ctr)
- {
- affine af;
- af.h_scale(sc, ctr);
- apply(af);
- }
-
- void screen_data::v_scale(double sc, const pair& ctr)
- {
- affine af;
- af.v_scale(sc, ctr);
- apply(af);
- }
-
- void screen_data::scale(double sc, const pair& ctr)
- {
- affine af;
- af.scale(sc, ctr);
- apply(af);
- }
-
- // shear, fixing ctr, e.g. h_shear(sc) : (x,y) -> (x+sc*y, y)
- void screen_data::h_shear(double sc, const pair& ctr)
- {
- affine af;
- af.h_shear(sc, ctr);
- apply(af);
- }
-
- void screen_data::v_shear(double sc, const pair& ctr)
- {
- affine af;
- af.v_shear(sc, ctr);
- apply(af);
- }
-
-
- pair screen_data::tr() const
- {
- return m_tr;
- }
-
- pair screen_data::tl() const
- {
- return pair(m_bl.x1(), m_tr.x2());
- }
-
- pair screen_data::bl() const
- {
- return m_bl;
- }
-
- pair screen_data::br() const
- {
- return pair(m_tr.x1(), m_bl.x2());
- }
-
-
- pair screen_data::t() const
- {
- return pair(0.5*(m_bl.x1() + m_tr.x1()), m_tr.x2());
- }
-
- pair screen_data::b() const
- {
- return pair(0.5*(m_bl.x1() + m_tr.x1()), m_bl.x2());
- }
-
- pair screen_data::l() const
- {
- return pair(m_bl.x1(), 0.5*(m_bl.x2() + m_tr.x2()));
- }
-
- pair screen_data::r() const
- {
- return pair(m_tr.x1(), 0.5*(m_bl.x2() + m_tr.x2()));
- }
-
- pair screen_data::c() const
- {
- return pair(0.5*(m_bl.x1() + m_tr.x1()), 0.5*(m_bl.x2() + m_tr.x2()));
- }
-
-
- double screen_data::h_min() const
- {
- return m_bl.x1();
- }
-
- double screen_data::h_max() const
- {
- return m_tr.x1();
- }
-
- double screen_data::h_size() const
- {
- return m_tr.x1() - m_bl.x1();
- }
-
- double screen_data::h_avg() const
- {
- return 0.5*(m_bl.x1() + m_tr.x1());
- }
-
-
- double screen_data::v_min() const
- {
- return m_bl.x2();
- }
-
- double screen_data::v_max() const
- {
- return m_tr.x2();
- }
-
- double screen_data::v_size() const
- {
- return m_tr.x2() - m_bl.x2();
- }
-
- double screen_data::v_avg() const
- {
- return 0.5*(m_bl.x2() + m_tr.x2());
- }
-
- std::string screen_data::print_to(const format& fmt, const length& len,
- bool wrap) const
- {
- std::ostringstream obuf;
-
- if (wrap)
- {
- obuf << fmt.start_picture(tr()-bl(), bl());
- fmt.reset_state(); // ensures drawing attribs set properly below
- }
-
- if (!m_backing->is_empty())
- {
- m_backing->add_to_pallet();
-
- obuf << m_backing->print_to(fmt, len.units());
- }
-
- for (Tp curr = m_tiles.begin(); curr != m_tiles.end(); ++curr)
- {
- (*curr)->add_to_pallet();
-
- obuf << (*curr)->print_to(fmt, len.units());
- }
-
- if (!m_border->is_empty())
- {
- m_border->add_to_pallet();
-
- obuf << m_border->print_to(fmt, len.units());
- }
-
- if (wrap)
- obuf << fmt.end_picture();
-
- return obuf.str();
- } // end of print_to()
-
-} // end of namespace
diff --git a/graphics/epix/screen_data.h b/graphics/epix/screen_data.h
deleted file mode 100644
index 582ec1d555..0000000000
--- a/graphics/epix/screen_data.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * screen_data.h -- ePiX::screen class implementation
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 16, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file implements the screen class, a Cartesian rectangle into
- * which objects are drawn. This file is not part of epix.h.
- */
-#ifndef EPIX_SCREEN_DATA
-#define EPIX_SCREEN_DATA
-
-#include <string>
-#include <list>
-
-#include "pairs.h"
-
-namespace ePiX {
-
- class affine;
- class Color;
- class format;
- class length;
- class pen_fill;
- class pen_line;
- class screen_mask;
- class tile;
-
- class screen_data {
- public:
- screen_data(const pair&, const pair&);
-
- screen_data(const screen_data&);
- screen_data& operator= (const screen_data&);
- ~screen_data();
-
- screen_data* clone() const;
-
- screen_data& crop_to(const screen_mask&);
- screen_data& crop();
-
-
- screen_data& set_mask(const screen_mask&);
- screen_data& set_crop(bool);
-
- // cut out and return a region
- screen_data extract(const pair&, const pair&) const;
- screen_data extract_diamond(const pair&, const pair&) const;
- screen_data extract_ellipse(const pair&, const pair&) const;
-
- // inset and import
- screen_data& paste(const screen_data& child, const screen_mask& inset);
- screen_data& paste(const screen_data& child);
-
- screen_data& clear();
-
- screen_data& border(const Color&, const std::string&);
- screen_data& backing(const Color&);
-
- screen_data& border();
- screen_data& backing();
-
- void add_tile(const tile&);
- void add_tile(tile*);
-
- // wrap=true -> encapsulate in a picture, for legends
- std::string print_to(const format&, const length&, bool wrap=false) const;
-
- // affine operations on contents (not border, backing)
- void apply(const affine& af);
- void shift(const pair& arg);
-
- // rotate by theta about ctr
- void rotate(double theta, const pair& ctr = pair(0,0));
-
- // reflect in angle-theta line through ctr
- void reflect(double theta, const pair& ctr = pair(0,0));
-
- // scale coord direction(s) fixing ctr
- void h_scale(double, const pair& ctr=pair(0,0));
- void v_scale(double, const pair& ctr=pair(0,0));
- void scale(double, const pair& ctr=pair(0,0));
-
- // shear, fixing ctr, e.g. h_shear(sc) : (x,y) -> (x+sc*y, y)
- void h_shear(double sc, const pair& ctr=pair(0,0));
- void v_shear(double sc, const pair& ctr=pair(0,0));
-
- pair tr() const;
- pair tl() const;
- pair bl() const;
- pair br() const;
-
- pair t() const;
- pair b() const;
- pair l() const;
- pair r() const;
- pair c() const;
-
- double h_min() const;
- double h_max() const;
- double h_size() const;
- double h_avg() const;
-
- double v_min() const;
- double v_max() const;
- double v_size() const;
- double v_avg() const;
-
- private:
- pair m_bl;
- pair m_tr;
-
- screen_mask* m_mask;
- pen_line* m_border;
- pen_fill* m_backing;
-
- bool m_crop;
-
- std::list<tile*> m_tiles;
- }; // end of class screen_data
-
-} // end of namespace
-
-#endif /* EPIX_SCREEN_DATA */
diff --git a/graphics/epix/screen_mask.cc b/graphics/epix/screen_mask.cc
deleted file mode 100644
index e652685e4e..0000000000
--- a/graphics/epix/screen_mask.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * screen_mask.cc -- ePiX::screen_mask interface
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.4
- * Last Change: June 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "constants.h"
-
-#include "pairs.h"
-
-#include "screen_mask.h"
-
-namespace ePiX {
-
- //// screen_mask::alignment points ////
- pair screen_mask::tr() const { return pair(h_max(), v_max()); }
- pair screen_mask::tl() const { return pair(h_min(), v_max()); }
- pair screen_mask::bl() const { return pair(h_min(), v_min()); }
- pair screen_mask::br() const { return pair(h_max(), v_min()); }
-
- pair screen_mask::t() const { return pair(h_avg(), v_max()); }
- pair screen_mask::b() const { return pair(h_avg(), v_min()); }
- pair screen_mask::l() const { return pair(h_min(), v_avg()); }
- pair screen_mask::r() const { return pair(h_max(), v_avg()); }
- pair screen_mask::c() const { return pair(h_avg(), v_avg()); }
-
-} // end of ePiX namespace
diff --git a/graphics/epix/screen_mask.h b/graphics/epix/screen_mask.h
deleted file mode 100644
index 0ec475f3db..0000000000
--- a/graphics/epix/screen_mask.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * screen_mask.h -- ePiX::screen_mask interface, for screen cropping
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.8
- * Last Change: July 17, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_SCREEN_MASK
-#define EPIX_SCREEN_MASK
-
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-
-namespace ePiX {
-
- class pair;
-
- class Color;
-
- class length;
- class pen_fill;
- class pen_line;
-
- class screen_mask {
- public:
- virtual ~screen_mask() { }
-
- virtual screen_mask* clone() const = 0;
-
- // alignment points
- pair tr() const;
- pair tl() const;
- pair bl() const;
- pair br() const;
-
- pair t() const;
- pair b() const;
- pair l() const;
- pair r() const;
- pair c() const;
-
- // cropping facilities (for tiles: glyph, pen_line, pen_fill resp.)
- virtual bool crops(const pair& arg) const = 0; // false if arg visible
- virtual std::list<edge2d>& crop_path(std::list<edge2d>&) const = 0;
- virtual std::list<edge2d>& crop_loop(std::list<edge2d>&) const = 0;
-
- // extreme and average coordinates, dimensions
- virtual double h_min() const = 0;
- virtual double h_max() const = 0;
- virtual double h_size() const = 0;
- virtual double h_avg() const = 0;
-
- virtual double v_min() const = 0;
- virtual double v_max() const = 0;
- virtual double v_size() const = 0;
- virtual double v_avg() const = 0;
-
- // convert us to screen border or backing
- virtual pen_line border(const Color&, const length&) const = 0;
- virtual pen_fill backing(const Color&) const = 0;
-
- virtual pen_line border() const = 0;
- virtual pen_fill backing() const = 0;
- }; // end of class screen_mask
-
-} // end of namespace
-
-#endif /* EPIX_SCREEN_MASK */
diff --git a/graphics/epix/segment.cc b/graphics/epix/segment.cc
deleted file mode 100644
index 3ea5eb3760..0000000000
--- a/graphics/epix/segment.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * segment.cc -- ePiX::Segment class and mathematical operators
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 30, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "triples.h"
-
-#include "path.h"
-#include "segment.h"
-
-namespace ePiX {
-
- Segment::Segment(const P& p1, const P& p2)
- : m_endpt1(p1), m_endpt2(p2), m_malformed(false) { }
-
- Segment::Segment(bool tag) : m_malformed(true) { }
-
- P Segment::end1() const
- {
- return m_endpt1;
- }
-
- P Segment::end2() const
- {
- return m_endpt2;
- }
-
- bool Segment::malformed() const
- {
- return m_malformed;
- }
-
- // translate
- Segment& Segment::shift(const P& arg)
- {
- if (!m_malformed)
- {
- m_endpt1 += arg;
- m_endpt2 += arg;
- }
- return *this;
- }
-
- Segment& Segment::move_to(const P& arg)
- {
- if (!m_malformed)
- {
- const P dX(arg - 0.5*(m_endpt1 + m_endpt2));
- m_endpt1 += dX;
- m_endpt2 += dX;
- }
- return *this;
- }
-
- Segment& Segment::scale(double c)
- {
- if (!m_malformed)
- {
- const P ctr(0.5*(m_endpt1 + m_endpt2));
-
- m_endpt1 = ctr + c*(m_endpt1 - ctr);
- m_endpt2 = ctr + c*(m_endpt2 - ctr);
- }
- return *this;
- }
-
- P Segment::midpoint() const
- {
- return 0.5*(m_endpt1 + m_endpt2);
- }
-
- void Segment::draw() const
- {
- if (m_malformed)
- return;
-
- // else
- path temp(m_endpt1, m_endpt2);
-
- temp.draw();
- }
-} // end of namespace
diff --git a/graphics/epix/segment.h b/graphics/epix/segment.h
deleted file mode 100644
index 5a19b1dd6a..0000000000
--- a/graphics/epix/segment.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * segment.h -- ePiX::Segment class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 30, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides:
- *
- * The Segment class (unordered pair of points), and operators:
- * - end1(), end2() (no guaranteed order)
- * - Translation operators shift(P), move_to(P)
- * - Stretch about midpoint: scale(double)
- * - draw() (ePiX line)
- * - midpoint();
- */
-
-#ifndef EPIX_SEGMENT
-#define EPIX_SEGMENT
-
-#include "triples.h"
-
-namespace ePiX {
-
- class Segment {
- public:
- Segment(const P&, const P&); // endpoints
-
- Segment(bool); // malformed Segment for intersection operators
-
- // Segment ends are not distinguished geometrically,
- // so these functions should normally be used in tandem.
- P end1() const;
- P end2() const;
-
- bool malformed() const;
-
- // translate
- Segment& shift(const P&);
- Segment& move_to(const P&);
-
- Segment& scale(double);
-
- P midpoint() const;
-
- void draw() const;
-
- private:
- P m_endpt1;
- P m_endpt2;
-
- bool m_malformed;
- }; // end of Segment class
-
-} // end of namespace
-#endif /* EPIX_SEGMENT */
diff --git a/graphics/epix/sphere.cc b/graphics/epix/sphere.cc
deleted file mode 100644
index 5f172e0fb0..0000000000
--- a/graphics/epix/sphere.cc
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * sphere.cc -- ePiX::Sphere class and mathematical operators
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 30, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-
-#include "errors.h"
-
-#include "triples.h"
-
-#include "functions.h"
-
-#include "camera.h"
-#include "circle.h"
-
-#include "sphere.h"
-
-namespace ePiX {
-
- Sphere::Sphere(const P& ctr, double rad)
- : m_ctr(ctr), m_rad(rad), m_malformed(false) { }
-
- Sphere::Sphere(const P& ctr, const P& pt)
- : m_ctr(ctr), m_rad(norm(pt-ctr)), m_malformed(false) { }
-
- P Sphere::center() const
- {
- return m_ctr;
- }
-
- double Sphere::radius() const
- {
- return m_rad;
- }
-
- bool Sphere::malformed() const
- {
- return m_malformed;
- }
-
- // translation
- Sphere& Sphere::shift(const P& arg)
- {
- if (!m_malformed)
- m_ctr += arg;
- return *this;
- }
-
- Sphere& Sphere::move_to(const P& arg)
- {
- if (!m_malformed)
- m_ctr = arg;
- return *this;
- }
-
- Sphere& Sphere::scale(double& arg)
- {
- if (!m_malformed)
- m_rad *= arg;
- return *this;
- }
-
-
- void Sphere::draw() const
- {
- if (m_malformed)
- return;
-
- // else
- P location(cam().viewpt());
-
- P dir(m_ctr - location);
- double dist(norm(dir));
-
- if (dist <= m_rad)
- epix_warning("Cannot draw sphere enclosing camera");
-
- else
- {
- dir *= 1/dist;
- double x(m_rad*m_rad/dist);
-
- Circle temp(m_ctr - x*dir, sqrt((m_rad-x)*(m_rad+x)), dir);
- temp.draw();
- }
- } // end of Sphere::photo()
-
-
- //// global functions ////
- void sphere(const P& ctr, double rad)
- {
- Sphere S(ctr, rad);
- S.draw();
- }
-
- void sphere(const P& ctr, const P& pt)
- {
- Sphere S(ctr, pt);
- S.draw();
- }
-} // end of namespace
diff --git a/graphics/epix/sphere.h b/graphics/epix/sphere.h
deleted file mode 100644
index fa043ca382..0000000000
--- a/graphics/epix/sphere.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * sphere.h -- ePiX::Sphere class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: July 30, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides:
- *
- * The Sphere class (center, radius), and operators:
- * - Sphere += P (translate by <P>)
- * - Sphere *= double (scale about center)
- * - draw() (ePiX line)
- * - center();
- * - radius();
- *
- * Hiding test, latitude and longitudes on a sphere.
- */
-#ifndef EPIX_SPHERE
-#define EPIX_SPHERE
-
-#include "triples.h"
-
-namespace ePiX {
-
- class Sphere {
- public:
- Sphere(const P& ctr=P(0,0,0), double rad=1);
- Sphere(const P& ctr, const P& pt);
-
- P center() const;
- double radius() const;
-
- bool malformed() const; // always returns false, currently
-
- // translation
- Sphere& shift(const P&);
- Sphere& move_to(const P&);
-
- // scale radius
- Sphere& scale(double&);
-
- void draw() const;
-
- private:
- P m_ctr;
- double m_rad;
-
- bool m_malformed;
- }; // end of Sphere class
-
-
- // global horizon-drawing functions
- void sphere(const P& ctr=P(0,0,0), double rad=1);
- void sphere(const P& ctr, const P& pt);
-
-} // end of namespace
-
-#endif /* EPIX_SPHERE */
diff --git a/graphics/epix/spline.cc b/graphics/epix/spline.cc
deleted file mode 100644
index 286d63d57a..0000000000
--- a/graphics/epix/spline.cc
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * spline.cc -- ePiX n_spline class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: August 02, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "path.h"
-#include "spline.h"
-
-namespace ePiX {
- // natural spline constructor
- n_spline::n_spline(const std::vector<P>& data, bool loop)
- : m_vertices(data)
- {
- if (loop)
- m_vertices.push_back(m_vertices.at(0));
-
- const unsigned int N(m_vertices.size()-1);
-
- // notation and algorithm from John H. Matthews and Kurtis K. Fink
- std::vector<double> tmp_h(N+1); // h_k = x_{k+1} - x_k
- std::vector<double> tmp_d(N+1); // d_k = (y_{k+1} - y_k)/h_k
- std::vector<double> tmp_u(N+1); // u_k = 6*(d_{k+1} - d_k)
- std::vector<double> tmp_y(N+1); // y_k
-
- // entries of tridiagonal coefficient matrix
- std::vector<double> tmp_A(N+1); // subdiagonal of coefficient matrix
- std::vector<double> tmp_C(N+1); // superdiagonal
- std::vector<double> tmp_D(N+1); // diagonal
-
- std::vector<double> tmp_m(N+1); // m_k = S"(x_k), 1 <= k <= N-1
-
- // initialize...
- for (unsigned int i = 0; i <= N; ++i)
- {
- P curr(m_vertices.at(i));
-
- tmp_y.at(i) = curr.x2();
-
- if (i <= N-1)
- {
- P next(m_vertices.at(i+1));
-
- tmp_h.at(i) = (next.x1() - curr.x1());
- tmp_d.at(i) = (next.x2() - curr.x2())/tmp_h.at(i);
-
- if (0 < i)
- {
- tmp_u.at(i) = 6*(tmp_d.at(i) - tmp_d.at(i-1));
- tmp_D.at(i) = 2*(tmp_h.at(i) + tmp_h.at(i-1));
-
- if (i <= N-2)
- {
- tmp_A.at(i) = tmp_h.at(i);
- tmp_C.at(i) = tmp_h.at(i);
- }
- }
- }
- }
-
- for (unsigned int i=2; i <= N; ++i)
- {
- const double ratio(tmp_A.at(i-1)/tmp_D.at(i-1));
-
- tmp_D.at(i) -= ratio*tmp_C.at(i-1);
- tmp_u.at(i) -= ratio*tmp_u.at(i-1);
- }
-
- tmp_m.at(N) = tmp_u.at(N-1)/tmp_D.at(N-1);
-
- for (unsigned int i=N-1; 0 < i; --i)
- tmp_m.at(i) = (tmp_u.at(i) - tmp_C.at(i)*tmp_m.at(i+1))/tmp_D.at(i);
-
- std::vector<double> tmp_k0(N);
- std::vector<double> tmp_k1(N);
- std::vector<double> tmp_k2(N);
- std::vector<double> tmp_k3(N);
-
- for (unsigned int i=0; i < N; ++i)
- {
- tmp_k0.at(i) = tmp_y.at(i);
- tmp_k1.at(i)
- = tmp_d.at(i) - (tmp_h.at(i)/6)*(2*tmp_m.at(i) + tmp_m.at(i+1));
-
- tmp_k2.at(i) = 0.5*tmp_m.at(i);
- tmp_k3.at(i) = (tmp_m.at(i+1) - tmp_m.at(i))/(6*tmp_h.at(i));
- }
-
- swap(tmp_k0, m_k0);
- swap(tmp_k1, m_k1);
- swap(tmp_k2, m_k2);
- swap(tmp_k3, m_k3);
- }
-
- path n_spline::data(const unsigned int num_pts) const
- {
- path value;
- for (unsigned int i=0; i < m_vertices.size()-1; ++i)
- {
- const double Xmin(m_vertices.at(i).x1());
- const double dx((m_vertices.at(i+1).x1() - Xmin)/num_pts);
-
- for (unsigned int j=0; j<=num_pts; ++j)
- {
- const double w(j*dx);
- const double x(Xmin + w);
-
- // Horner's form
- double y((((m_k3.at(i)*w) + m_k2.at(i))*w + m_k1.at(i))*w + m_k0.at(i));
-
- value.pt(P(x, y));
- }
- }
- return value;
- }
-
-} // end of namespace
diff --git a/graphics/epix/spline.h b/graphics/epix/spline.h
deleted file mode 100644
index bf8630a39f..0000000000
--- a/graphics/epix/spline.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * spline.h -- ePiX spline class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.3
- * Last Change: March 04, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_SPLINE
-#define EPIX_SPLINE
-
-#include <vector>
-#include "triples.h"
-
-namespace ePiX {
-
- class path;
-
- class n_spline {
- public:
-
- n_spline(const std::vector<P>& data, bool loop=false);
-
- path data(const unsigned int) const;
-
- private:
- std::vector<P> m_vertices;
-
- // coefficient sequences
- std::vector<double> m_k0;
- std::vector<double> m_k1;
- std::vector<double> m_k2;
- std::vector<double> m_k3;
- }; // end of class n_spline
-
-} // end of namespace
-
-#endif /* EPIX_SPLINE */
diff --git a/graphics/epix/spline_data.h b/graphics/epix/spline_data.h
deleted file mode 100644
index ea47eeb982..0000000000
--- a/graphics/epix/spline_data.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * splinee_data.h -- ePiX parametric spline functions
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.4
- * Last Change: June 18, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_SPLINE_DATA
-#define EPIX_SPLINE_DATA
-
-namespace ePiX {
-
- template <typename T>
- T spl_pt(const T& p1, const T& p2, const T& p3, double t)
- {
- return (1-t)*(1-t)*p1 + 2*t*(1-t)*p2 + t*t*p3;
- }
-
- template <typename T>
- T spl_pt(const T& p1, const T& p2, const T& p3, const T& p4, double t)
- {
- const double s(1-t);
- return s*s*(s*p1 + 3*t*p2) + t*t*(3*s*p3 + t*p4);
- }
-} // end of namespace
-
-#endif /* EPIX_SPLINE_DATA */
diff --git a/graphics/epix/state.cc b/graphics/epix/state.cc
deleted file mode 100644
index 44802bf991..0000000000
--- a/graphics/epix/state.cc
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * state.cc -- ePiX's current drawing state
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "constants.h"
-#include "errors.h"
-#include "triples.h"
-#include "Color.h"
-
-#include "length.h"
-
-#include "camera.h"
-
-#include "angle_units.h"
-#include "arrow_style.h"
-#include "label_style.h"
-#include "marker_style.h"
-#include "paint_style.h"
-#include "path_style.h"
-
-#include "active_screen.h"
-#include "screen.h"
-
-#include "clipping.h"
-
-#include "state.h"
-
-namespace ePiX {
-
- // set camera position
- void viewpoint(const P& arg)
- {
- cam().at(arg);
- }
-
- void viewpoint(double x1, double x2, double x3)
- {
- cam().at(P(x1, x2, x3));
- }
-
- // Set angular mode
- void radians()
- {
- the_angle_style().set_radians_mode();
- }
-
- void degrees()
- {
- the_angle_style().set_degrees_mode();
- }
-
- void revolutions()
- {
- the_angle_style().set_revolutions_mode();
- }
-
-
- // number of current units in a full turn
- double full_turn()
- {
- return the_angle_style().from_degrees(360.0);
- }
-
-
- // clipping is always on
- void clip(bool arg) { }
-
- void clip_box()
- {
- the_clip_box() = clip_state();
- }
-
- void clip_box(const P& arg1, const P& arg2)
- {
- the_clip_box() = clip_state(arg1, arg2);
- }
-
- void clip_to(const P& arg)
- {
- the_clip_box() = clip_state(P(0,0,0), arg);
- }
-
- void clip_box(const P& arg)
- {
- the_clip_box() = clip_state(-arg, arg);
- }
-
- // add a clip face; perp points inward
- void clip_face(const P& loc, const P& perp)
- {
- the_clip_box().add_face(loc, perp);
- }
-
- // add parallel clip planes
- void clip_slice(const P& loc, const P& perp)
- {
- the_clip_box().add_face(loc-0.5*EPIX_EPSILON*perp, perp)
- .add_face(loc+0.5*EPIX_EPSILON*perp, -perp);
- }
-
- void clip_slice(const P& perp, double thickness)
- {
- clip_slice(P(0,0,0), perp, thickness);
- }
-
- void clip_slice(const P& perp)
- {
- clip_slice(P(0,0,0), perp);
- }
-
- void clip_slice(const P& loc, const P& perp, double thickness)
- {
- the_clip_box().add_face(loc-0.5*thickness*perp, perp)
- .add_face(loc+0.5*thickness*perp, -perp);
- }
-
- // remove user-specified clip planes, preserve clip box settings
- void clip_restore()
- {
- the_clip_box().clear_extras();
- }
-
-
- // Set crop state and select region
- void set_crop(bool arg)
- {
- active_screen()->set_crop(arg);
- }
-
- void crop()
- {
- active_screen()->crop();
- }
-
- void crop_rectangle(const P& sw, const P& ne)
- {
- active_screen()->crop_mask_rectangle(sw, ne).set_crop(true);
- }
-
- void crop_ellipse(const P& sw, const P& ne)
- {
- active_screen()->crop_mask_ellipse(sw, ne).set_crop(true);
- }
-
- void crop_diamond(const P& sw, const P& ne)
- {
- active_screen()->crop_mask_diamond(sw, ne).set_crop(true);
- }
-
- void crop_rectangle()
- {
- active_screen()->crop_mask_rectangle().set_crop(true);
- }
-
- void crop_ellipse()
- {
- active_screen()->crop_mask_ellipse().set_crop(true);
- }
-
- void crop_diamond()
- {
- active_screen()->crop_mask_diamond().set_crop(true);
- }
-
-
- void crop_box(const P& arg1, const P& arg2)
- {
- active_screen()->crop_mask_rectangle(arg1, arg2).set_crop(true);
- }
-
- void crop_box() // (re)set active crop box to active bounding box
- {
- active_screen()->crop_mask_rectangle().set_crop(true);
- }
-
-
- // Set font size and face, label angle, mask color
- void font_size(const std::string& arg)
- {
- the_label_style().fontsize(arg);
- }
-
- void font_face(const std::string& arg)
- {
- the_label_style().fontface(arg);
- }
-
- void label_color(const Color& col)
- {
- the_label_style().text_color(col);
- }
-
- void label_angle(double th)
- {
- the_label_style().label_angle(th);
- }
-
- void label_mask(const Color& arg)
- {
- the_label_style().mask_color(arg);
- }
-
- void label_mask()
- {
- the_label_style().mask_color(White());
- }
-
- void label_pad(std::string len)
- {
- the_label_style().label_padding(length(len));
- }
-
- void label_border(const Color& col, double len)
- {
- the_label_style().label_border(pen_data(col, length(len)));
- }
-
- void label_border(const Color& col, std::string len)
- {
- the_label_style().label_border(pen_data(col, len));
- }
-
- // set color only
- void label_border(const Color& col)
- {
- length len(the_label_style().label_border().width());
- the_label_style().label_border(pen_data(col, len));
- }
-
- // set width only
- void label_border(double len)
- {
- Color col(the_label_style().label_border().color());
- the_label_style().label_border(pen_data(col, length(len)));
- }
-
- void label_border(std::string len)
- {
- Color col(the_label_style().label_border().color());
- the_label_style().label_border(pen_data(col, len));
- }
-
- void no_label_border()
- {
- label_border("0pt");
- }
-
-
- // Gray depth, path filling, [fill color]
- void gray(double depth)
- {
- the_paint_style().fill_color(Black(depth));
- }
-
- // new function
- void fill(const Color& col)
- {
- the_paint_style().fill_color(col);
- the_paint_style().fill_flag(!col.is_unset());
- }
-
- void fill(bool arg)
- {
- the_paint_style().fill_flag(arg);
- if (arg && the_paint_style().fill_color().is_unset())
- the_paint_style().fill_color(White());
- }
-
- void nofill()
- {
- the_paint_style().fill_flag(false);
- }
-
-
- // Arrowhead parameters
- void arrow_width(double w)
- {
- the_arrowhead_style().width(w);
- }
-
- void arrow_ratio(double r)
- {
- the_arrowhead_style().ratio(r);
- }
-
- void arrow_inset(double arg)
- {
- the_arrowhead_style().inset(arg);
- }
-
- void arrow_fill(bool fill)
- {
- the_arrowhead_style().fill(fill);
- }
-
-
- // Set (approximate) length of dashes, dot separation
- void dash_size(double len)
- {
- the_path_style().separation(len);
- }
-
- void dot_sep(double len)
- {
- dash_size(len);
- }
-
- // Dot/box marker size
- void dot_size(double diam)
- {
- the_mark_size().dot_size(diam);
- }
-
- void tick_size(double len)
- {
- the_mark_size().tick_size(len);
- }
-
- // Line style
- void line_style(std::string style)
- {
- the_path_style() = path_state(style);
- }
-
- void solid()
- {
- line_style("-");
- }
-
- void dashed()
- {
- line_style("- -");
- }
-
- void dotted()
- {
- line_style(" . ");
- }
-
-
- // Line width
- void pen(const std::string& len)
- {
- the_paint_style().line_width(length(len));
- }
-
- void pen(double wd)
- {
- the_paint_style().line_width(length(wd));
- }
-
-
- void bbold()
- {
- the_paint_style().line_width(BBOLD_WIDTH);
- }
-
- void bold()
- {
- the_paint_style().line_width(BOLD_WIDTH);
- }
-
- void plain()
- {
- the_paint_style().line_width(PLAIN_WIDTH);
- }
-
- // line width and color
- void bbold(const Color& col)
- {
- the_paint_style().line_color(col);
- the_paint_style().line_width(BBOLD_WIDTH);
- }
-
- void bold(const Color& col)
- {
- the_paint_style().line_color(col);
- the_paint_style().line_width(BOLD_WIDTH);
- }
-
- void plain(const Color& col)
- {
- the_paint_style().line_color(col);
- the_paint_style().line_width(PLAIN_WIDTH);
- }
-
- void pen(const Color& col)
- {
- the_paint_style().line_color(col);
- }
- void pen(const Color& col, double len)
- {
- the_paint_style().line_color(col);
- the_paint_style().line_width(length(len));
- }
- void pen(const Color& col, std::string len)
- {
- the_paint_style().line_color(col);
- the_paint_style().line_width(length(len));
- }
-
- // base width and color
- void base(const Color& col)
- {
- the_paint_style().base_color(col);
- }
- void base(const Color& col, double len)
- {
- the_paint_style().base_color(col);
- the_paint_style().base_width(length(len));
- }
- void base(const Color& col, std::string len)
- {
- the_paint_style().base_color(col);
- the_paint_style().base_width(length(len));
- }
-
-
- // Red-Blue-Green
- void rgb(double r, double g, double b)
- {
- the_paint_style().line_color(RGB(r, g, b));
- the_paint_style().fill_color(RGB(r, g, b));
- the_label_style().text_color(RGB(r, g, b));
- }
-
- // Cyan-Magenta-Yellow-Black
- void cmyk(double c, double m, double y, double k)
- {
- the_paint_style().line_color(CMYK(c, m, y, k));
- the_paint_style().fill_color(CMYK(c, m, y, k));
- the_label_style().text_color(CMYK(c, m, y, k));
- }
-
- void rgb(const P& arg)
- {
- rgb(arg.x1(), arg.x2(), arg.x3());
- }
-
- void cmyk(const P& arg)
- {
- cmyk(arg.x1(), arg.x2(), arg.x3(), 0);
- }
-
- // primary colors
- void red(double d)
- {
- rgb(d,0,0);
- }
- void green(double d)
- {
- rgb(0,d,0);
- }
- void blue(double d)
- {
- rgb(0,0,d);
- }
- void white(double d)
- {
- rgb(d,d,d);
- }
- void black(double d)
- {
- rgb(1-d,1-d,1-d);
- }
-
- void cyan(double d)
- {
- cmyk(d,0,0,0);
- }
- void magenta(double d)
- {
- cmyk(0,d,0,0);
- }
- void yellow(double d)
- {
- cmyk(0,0,d,0);
- }
-} // end of namespace
diff --git a/graphics/epix/state.h b/graphics/epix/state.h
deleted file mode 100644
index 207a39b33e..0000000000
--- a/graphics/epix/state.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * state.h -- ePiX global functions to control current drawing state
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.22
- * Last Change: September 24, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file contains the (old) user interface governing:
- *
- * [] Angular mode
- * [] Clipping and cropping
- * [] Font size and face, label angle, mask color
- * [] Gray depth, path filling, fill color
- * [] Whether to use PSTricks macros
- * [] Arrowhead parameters
- * [] Line style, dash length, dot size
- * [] Line width
- * [] Line/text color
- */
-
-#ifndef EPIX_STATE
-#define EPIX_STATE
-
-#include <string>
-
-namespace ePiX {
-
- class Color;
- class P;
-
- // set camera position
- void viewpoint(const P&);
- void viewpoint(double, double, double);
-
- // Set angular mode
- void radians();
- void degrees();
- void revolutions();
-
- // number of current angle units in one full turn
- double full_turn();
-
- // set clip box
- void clip(bool arg=true); // no effect
- void clip_box(); // default (very large)
- void clip_box(const P& arg1, const P& arg2);
- void clip_to(const P& arg);
- void clip_box(const P& arg);
-
- // add a clip face; perp points inward
- void clip_face(const P& loc, const P& perp);
-
- // add parallel clip planes
- void clip_slice(const P& loc, const P& perp);
- void clip_slice(const P& loc, const P& perp, double thickness);
-
- // loc = origin
- void clip_slice(const P& perp);
- void clip_slice(const P& perp, double thickness);
-
- // remove user-specified clip planes, preserve clip box settings
- void clip_restore();
-
- // set flag on active screen; contents unchanged
- void set_crop(bool arg=true);
-
- // crop contents of active screen
- void crop();
-
- //// New cropping functions ////
- // set crop mask of active screen
- void crop_rectangle(const P&, const P&);
- void crop_ellipse(const P&, const P&);
- void crop_diamond(const P&, const P&);
-
- void crop_rectangle();
- void crop_ellipse();
- void crop_diamond();
-
- void crop_box(const P&, const P&);
- void crop_box(); // (re)set crop box to bounding box
-
- // Set label attributes
- void font_size(const std::string& arg="nsz");
- void font_face(const std::string& arg="rm");
-
- void label_color(const Color&);
-
- void label_angle(double t=0);
- void label_mask(const Color& col);
- void label_mask();
-
- void label_pad(std::string);
- void label_border(const Color&, double);
- void label_border(const Color&, std::string);
- void label_border(const Color&);
-
- void label_border(double);
- void label_border(std::string);
- void no_label_border();
-
- // Gray depth, path filling, [fill color]
- void gray(double depth=0.3);
- void fill(const Color&); // set fill color
- void fill(bool arg=true); // set fill flag
- void nofill();
- // void fill_color(const std::string& arg);
-
- // Arrowhead parameters
- void arrow_width(double w=3);
- void arrow_ratio(double r=5.5);
- void arrow_inset(double arg=0);
- void arrow_fill(bool arg=true);
-
- // Dash pattern length
- void dash_size(double len=0);
- void dot_sep(double len=0);
-
- // Dot and box marker size
- void dot_size(double diam=0);
-
- // Tick length
- void tick_size(double len=0);
-
- // Line style
- void line_style(std::string style="-"); // solid by default
-
- void solid();
- void dashed();
- void dotted();
-
- // Line width
- void pen(const std::string&);
- void pen(double);
-
- void bbold();
- void bold();
- void plain();
-
- // Line width and color
- void bbold(const Color&);
- void bold(const Color&);
- void plain(const Color&);
-
- void pen(const Color&);
- void pen(const Color&, double);
- void pen(const Color&, std::string);
-
- void base(const Color&);
- void base(const Color&, double);
- void base(const Color&, std::string);
-
- // Line and text color
- // ePiX provides rgb/cmyk colors via xcolor. The following are equivalent:
- // red();
- // rgb(1,0,0);
- //
- // cmyk(0,1,1,0); is visually equivalent but not the same.
- //
- // Densities outside the unit interval [0,1] are truncated, e.g.,
- // rgb(2, -1, 0.3) = rgb(1, 0, 0.3).
-
- // red-green-blue
- void rgb(double r, double g, double b); // must pass args by value
- // cyan-magenta-yellow-black
- void cmyk(double c, double m, double y, double k);
-
- // P arguments, for easy function control
- void rgb(const P&);
- void cmyk(const P&);
-
- // primary colors
- void red(double d=1);
- void green(double d=1);
- void blue(double d=1);
- void white(double d=1);
- void black(double d=1);
-
- void cyan(double d=1);
- void magenta(double d=1);
- void yellow(double d=1);
-
-} // end of namespace
-
-#endif /* EPIX_STATE */
diff --git a/graphics/epix/surface.cc b/graphics/epix/surface.cc
deleted file mode 100644
index 0da2210fb6..0000000000
--- a/graphics/epix/surface.cc
+++ /dev/null
@@ -1,1072 +0,0 @@
-/*
- * surface.cc -- Shaded surface plotting
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 14, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-
-#include "constants.h"
-#include "errors.h"
-
-#include "triples.h"
-#include "frame.h"
-
-#include "camera.h"
-#include "Color.h"
-
-#include "pen_data.h"
-#include "state.h"
-
-#include "domain.h"
-
-#include "facet.h"
-#include "surface.h"
-
-namespace ePiX {
-
- typedef std::list<domain>::const_iterator dolci;
-
- static double id(double x) { return x; }
-
- scenery::scenery() : m_cull(0) { }
-
- scenery::scenery(P F(double, double), const domain& R) : m_cull(0)
- {
- // construct sorted list of facet*s
- if (R.dim() != 2)
- {
- epix_warning("scenery() requires a 2-dimensional domain");
- return;
- }
- // else may assume dim(R)=2
-
- // exactly one test of first three should succeed
- if (fabs(R.corner2_x1() - R.corner1_x1()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n2()/R.coarse_n2());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx2());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n2(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- m_data.push_back(new facet(F,
- R.corner1_x2() + i*R.step2(),
- R.corner1_x3() + j*R.step3(),
- du, dv, N1, N2));
- }
-
- // if dx2() == 0, use (u,v) = (x,z)
- else if (fabs(R.corner2_x2() - R.corner1_x2()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx1());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x3() + j*R.step3(),
- du, dv, N1, N2));
- }
-
- else if (fabs(R.corner2_x3() - R.corner1_x3()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
-
- const double du(R.dx1());
- const double dv(R.dx2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- du, dv, N1, N2));
- }
-
- else
- {
- epix_warning("scenery() internal error!");
- // clean up
- for (std::list<facet*>::iterator p=m_data.begin();
- p!=m_data.end(); ++p)
- delete *p;
-
- return;
- }
-
- m_data.sort(by_distance());
- // sort(m_data.begin(), m_data.end(), by_distance());
- } // end of scenery(P F(double, double), const domain& R)
-
-
- scenery::scenery(P F(double, double, double), const domain& R) : m_cull(0)
- {
- if (R.dim() != 2)
- {
- epix_warning("scenery() requires a 2-dimensional domain");
- return;
- }
- // else may assume dim(R)=2
-
- // exactly one test of first three should succeed
- if (fabs(R.corner2_x1() - R.corner1_x1()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n2()/R.coarse_n2());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx2());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n2(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- m_data.push_back(new facet(F,
- R.corner1_x1(),
- R.corner1_x2() + i*R.step2(),
- R.corner1_x3() + j*R.step3(),
- 0, du, dv, N1, N2));
- }
-
- // if dx2() == 0, use (u,v) = (x,z)
- else if (fabs(R.corner2_x2() - R.corner1_x2()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx1());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2(),
- R.corner1_x3() + j*R.step3(),
- du, 0, dv, N1, N2));
- }
-
- else if (fabs(R.corner2_x3() - R.corner1_x3()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
-
- const double du(R.dx1());
- const double dv(R.dx2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- R.corner1_x3(),
- du, dv, 0, N1, N2));
- }
-
- else
- {
- epix_warning("scenery() internal error!");
- // clean up
- for (std::list<facet*>::iterator p=m_data.begin();
- p!=m_data.end(); ++p)
- delete *p;
-
- return;
- }
-
- m_data.sort(by_distance());
- // sort(m_data.begin(), m_data.end(), by_distance());
- } // end of scenery(P F(double, double, double), const domain& R)
-
-
- //// Color-dependent constructors ////
- // position-valued color
- scenery::scenery(P F(double, double), const domain& R,
- P color(double, double, double)) : m_cull(0)
- {
- // construct sorted list of facet*s
- if (R.dim() != 2)
- {
- epix_warning("scenery() requires a 2-dimensional domain");
- return;
- }
- // else may assume dim(R)=2
-
- // exactly one test of first three should succeed
- if (fabs(R.corner2_x1() - R.corner1_x1()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n2()/R.coarse_n2());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx2());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n2(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- {
- // use mesh center to approximate facet's location
- P posn(F(R.corner1_x2() + (i+0.5)*R.step2(),
- R.corner1_x3() + (j+0.5)*R.step3()));
-
- P col(color(posn.x1(), posn.x2(), posn.x3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x2() + i*R.step2(),
- R.corner1_x3() + j*R.step3(),
- du, dv, N1, N2,
- RGB(col.x1(),col.x2(),col.x3())));
- }
- }
-
- // if dx2() == 0, use (u,v) = (x,z)
- else if (fabs(R.corner2_x2() - R.corner1_x2()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx1());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- {
- // use mesh center to approximate facet's location
- P posn(F(R.corner1_x1() + (i+0.5)*R.step1(),
- R.corner1_x3() + (j+0.5)*R.step3()));
-
- P col(color(posn.x1(), posn.x2(), posn.x3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x3() + j*R.step3(),
- du, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- else if (fabs(R.corner2_x3() - R.corner1_x3()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
-
- const double du(R.dx1());
- const double dv(R.dx2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- {
- // use mesh center to approximate facet's location
- P posn(F(R.corner1_x1() + (i+0.5)*R.step1(),
- R.corner1_x2() + (j+0.5)*R.step2()));
-
- P col(color(posn.x1(), posn.x2(), posn.x3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- du, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- else
- {
- epix_warning("scenery() internal error!");
- // clean up
- for (std::list<facet*>::iterator p=m_data.begin();
- p!=m_data.end(); ++p)
- delete *p;
-
- return;
- }
-
- m_data.sort(by_distance());
- // sort(m_data.begin(), m_data.end(), by_distance());
- } // end of scenery(P F(double, double), const domain& R)
-
-
- scenery::scenery(P F(double, double, double), const domain& R,
- P color(double, double, double)) : m_cull(0)
- {
- if (R.dim() != 2)
- {
- epix_warning("scenery() requires a 2-dimensional domain");
- return;
- }
- // else may assume dim(R)=2
-
- // exactly one test of first three should succeed
- if (fabs(R.corner2_x1() - R.corner1_x1()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n2()/R.coarse_n2());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx2());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n2(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- {
- // use mesh center to approximate facet's location
- P posn(F(R.corner1_x1(),
- R.corner1_x2() + (i+0.5)*R.step2(),
- R.corner1_x3() + (j+0.5)*R.step3()));
-
- P col(color(posn.x1(), posn.x2(), posn.x3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1(),
- R.corner1_x2() + i*R.step2(),
- R.corner1_x3() + j*R.step3(),
- 0, du, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- // if dx2() == 0, use (u,v) = (x,z)
- else if (fabs(R.corner2_x2() - R.corner1_x2()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx1());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- {
- P posn(F(R.corner1_x1() + (i+0.5)*R.step1(),
- R.corner1_x2(),
- R.corner1_x3() + (j+0.5)*R.step3()));
-
- P col(color(posn.x1(), posn.x2(), posn.x3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2(),
- R.corner1_x3() + j*R.step3(),
- du, 0, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- else if (fabs(R.corner2_x3() - R.corner1_x3()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
-
- const double du(R.dx1());
- const double dv(R.dx2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- {
- P posn(F(R.corner1_x1() + (i+0.5)*R.step1(),
- R.corner1_x2() + (j+0.5)*R.step2(),
- R.corner1_x3()));
-
- P col(color(posn.x1(), posn.x2(), posn.x3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- R.corner1_x3(),
- du, dv, 0, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- else
- {
- epix_warning("scenery() internal error!");
- // clean up
- for (std::list<facet*>::iterator p=m_data.begin();
- p!=m_data.end(); ++p)
- delete *p;
-
- return;
- }
-
- m_data.sort(by_distance());
- // sort(m_data.begin(), m_data.end(), by_distance());
- } // end of scenery(P F(double, double, double), const domain& R)
-
-
- //// domain-valued color ////
- scenery::scenery(P F(double, double), const domain& R,
- P color(double, double)) : m_cull(0)
- {
- // construct sorted list of facet*s
- if (R.dim() != 2)
- {
- epix_warning("scenery() requires a 2-dimensional domain");
- return;
- }
- // else may assume dim(R)=2
-
- // exactly one test of first three should succeed
- if (fabs(R.corner2_x1() - R.corner1_x1()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n2()/R.coarse_n2());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx2());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n2(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- {
- P col(color(R.corner1_x2() + (i+0.5)*R.step2(),
- R.corner1_x3() + (j+0.5)*R.step3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x2() + i*R.step2(),
- R.corner1_x3() + j*R.step3(),
- du, dv, N1, N2,
- RGB(col.x1(),col.x2(),col.x3())));
- }
- }
-
- // if dx2() == 0, use (u,v) = (x,z)
- else if (fabs(R.corner2_x2() - R.corner1_x2()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx1());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- {
- // use mesh center to approximate facet's location
- P col(color(R.corner1_x1() + (i+0.5)*R.step1(),
- R.corner1_x3() + (j+0.5)*R.step3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x3() + j*R.step3(),
- du, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- else if (fabs(R.corner2_x3() - R.corner1_x3()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
-
- const double du(R.dx1());
- const double dv(R.dx2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- {
- // use mesh center to approximate facet's location
- P col(color(R.corner1_x1() + (i+0.5)*R.step1(),
- R.corner1_x2() + (j+0.5)*R.step2()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- du, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- else
- {
- epix_warning("scenery() internal error!");
- // clean up
- for (std::list<facet*>::iterator p=m_data.begin();
- p!=m_data.end(); ++p)
- delete *p;
-
- return;
- }
-
- m_data.sort(by_distance());
- // sort(m_data.begin(), m_data.end(), by_distance());
- } // end of scenery(P F(double, double), const domain& R)
-
-
- scenery::scenery(P F(double, double, double), const domain& R,
- P color(double, double)) : m_cull(0)
- {
- if (R.dim() != 2)
- {
- epix_warning("scenery() requires a 2-dimensional domain");
- return;
- }
- // else may assume dim(R)=2
-
- // exactly one test of first three should succeed
- if (fabs(R.corner2_x1() - R.corner1_x1()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n2()/R.coarse_n2());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx2());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n2(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- {
- // Color indep of x1
- P col(color(R.corner1_x2() + (i+0.5)*R.step2(),
- R.corner1_x3() + (j+0.5)*R.step3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1(),
- R.corner1_x2() + i*R.step2(),
- R.corner1_x3() + j*R.step3(),
- 0, du, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- // if dx2() == 0, use (u,v) = (x,z)
- else if (fabs(R.corner2_x2() - R.corner1_x2()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n3()/R.coarse_n3());
-
- const double du(R.dx1());
- const double dv(R.dx3());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n3(); ++j)
- {
- P col(color(R.corner1_x1() + (i+0.5)*R.step1(),
- R.corner1_x3() + (j+0.5)*R.step3()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2(),
- R.corner1_x3() + j*R.step3(),
- du, 0, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- else if (fabs(R.corner2_x3() - R.corner1_x3()) <= EPIX_EPSILON)
- {
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
-
- const double du(R.dx1());
- const double dv(R.dx2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- {
- P col(color(R.corner1_x1() + (i+0.5)*R.step1(),
- R.corner1_x2() + (j+0.5)*R.step2()));
-
- m_data.push_back(new facet(F,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- R.corner1_x3(),
- du, dv, 0, N1, N2,
- RGB(col.x1(), col.x2(), col.x3())));
- }
- }
-
- else
- {
- epix_warning("scenery() internal error!");
- // clean up
- for (std::list<facet*>::iterator p=m_data.begin();
- p!=m_data.end(); ++p)
- delete *p;
-
- return;
- }
-
- m_data.sort(by_distance());
- // sort(m_data.begin(), m_data.end(), by_distance());
- } // end of scenery(P F(double, double, double), const domain& R)
-
-
- scenery::scenery(const scenery& sc)
- : m_cull(sc.m_cull)
- {
- for (std::list<facet*>::const_iterator p=sc.m_data.begin();
- p!=sc.m_data.end(); ++p)
- m_data.push_back((*p)->clone());
- }
-
- scenery& scenery::operator= (const scenery& sc)
- {
- if (this != &sc)
- {
- std::list<facet*> tmp;
- // get facets from sc
- for (std::list<facet*>::const_iterator p=sc.m_data.begin();
- p!=sc.m_data.end(); ++p)
- tmp.push_back((*p)->clone());
-
- // free memory
- for (std::list<facet*>::iterator p=m_data.begin();
- p!=m_data.end(); ++p)
- delete *p;
-
- swap(m_data, tmp);
-
- m_cull=sc.m_cull;
- }
-
- return *this;
- }
-
- scenery::~scenery()
- {
- for (std::list<facet*>::iterator p=m_data.begin(); p!=m_data.end(); ++p)
- delete *p;
- }
-
-
- scenery& scenery::add(P F(double, double), const domain& R)
- {
- scenery tmp(F, R);
- (*this).m_data.merge(tmp.m_data, by_distance());
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double, double), const domain& R)
- {
- scenery tmp(F, R);
- (*this).m_data.merge(tmp.m_data, by_distance());
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double), const domain_list& DL)
- {
- for (dolci p=DL.m_list.begin(); p!=DL.m_list.end(); ++p)
- {
- scenery tmp(F, *p);
- (*this).m_data.merge(tmp.m_data, by_distance());
- }
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double, double), const domain_list& DL)
- {
- for (dolci p=DL.m_list.begin(); p!=DL.m_list.end(); ++p)
- {
- scenery tmp(F, *p);
- (*this).m_data.merge(tmp.m_data, by_distance());
- }
-
- return *this;
- }
-
-
- //// Color-dependent versions ////
- // position-dependent color
- scenery& scenery::add(P F(double, double), const domain& R,
- P color(double, double, double))
- {
- scenery tmp(F, R, color);
- (*this).m_data.merge(tmp.m_data, by_distance());
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double, double), const domain& R,
- P color(double, double, double))
- {
- scenery tmp(F, R, color);
- (*this).m_data.merge(tmp.m_data, by_distance());
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double), const domain_list& DL,
- P color(double, double, double))
- {
- for (dolci p=DL.m_list.begin(); p!=DL.m_list.end(); ++p)
- {
- scenery tmp(F, *p, color);
- (*this).m_data.merge(tmp.m_data, by_distance());
- }
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double, double), const domain_list& DL,
- P color(double, double, double))
- {
- for (dolci p=DL.m_list.begin(); p!=DL.m_list.end(); ++p)
- {
- scenery tmp(F, *p, color);
- (*this).m_data.merge(tmp.m_data, by_distance());
- }
-
- return *this;
- }
-
-
- //domain-dependent color
- scenery& scenery::add(P F(double, double), const domain& R,
- P color(double, double))
- {
- scenery tmp(F, R, color);
- (*this).m_data.merge(tmp.m_data, by_distance());
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double, double), const domain& R,
- P color(double, double))
- {
- scenery tmp(F, R, color);
- (*this).m_data.merge(tmp.m_data, by_distance());
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double), const domain_list& DL,
- P color(double, double))
- {
- for (dolci p=DL.m_list.begin(); p!=DL.m_list.end(); ++p)
- {
- scenery tmp(F, *p, color);
- (*this).m_data.merge(tmp.m_data, by_distance());
- }
-
- return *this;
- }
-
- scenery& scenery::add(P F(double, double, double), const domain_list& DL,
- P color(double, double))
- {
- for (dolci p=DL.m_list.begin(); p!=DL.m_list.end(); ++p)
- {
- scenery tmp(F, *p, color);
- (*this).m_data.merge(tmp.m_data, by_distance());
- }
-
- return *this;
- }
-
-
- scenery& scenery::cull(int c)
- {
- if (c == 0)
- m_cull=0;
- else if (c > 0)
- m_cull=1;
- else
- m_cull=-1;
- return *this;
- }
-
- void scenery::draw(int cull) const
- {
- for (std::list<facet*>::const_iterator p=m_data.begin();
- p!=m_data.end(); ++p)
- (*p)->draw(cull);
- }
-
-
- //// User-accessible functions ////
- void surface(P F(double, double), const domain& R, int cull)
- {
- scenery surf(F, R);
- surf.draw(cull);
- }
-
-
- // for slices of maps R^3 -> R^3
- void surface(P F(double, double, double), const domain& R, int cull)
- {
- scenery surf(F, R);
- surf.draw(cull);
- }
-
- void surface(P F(double, double, double), const domain_list& R, int cull)
- {
- scenery tmp;
-
- for (dolci p= R.m_list.begin(); p!=R.m_list.end(); ++p)
- tmp.add(F, *p);
-
- tmp.draw(cull);
- }
-
-
- void surface_rev(double f(double), double g(double),
- double min_x, double max_x, int i_max, int j_max, int cull)
- {
- surface_rev(f, g,
- domain(P(min_x, 0), P(max_x, full_turn()),
- mesh(i_max, j_max), mesh(i_max, j_max)), frame(), cull);
- }
-
- void surface_rev(double f(double),
- double min_x, double max_x, int i_max, int j_max, int cull)
- {
- surface_rev(id, f,
- domain(P(min_x, 0), P(max_x, full_turn()),
- mesh(i_max, j_max), mesh(i_max, j_max)), frame(), cull);
- }
-
- void surface_rev(double f(double), double g(double),
- const domain& R, const frame& coords, int cull)
- {
- if (R.dx3() > 0)
- epix_warning("surface_rev() ignores domain's third coordinate");
-
- std::list<facet*> mesh;
-
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
- const double du(R.dx1());
- const double dv(R.dx2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- mesh.push_back(new facet(f, g,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- du, dv, N1, N2, coords));
-
- mesh.sort(by_distance());
- // sort(mesh.begin(), mesh.end(), by_distance());
-
- for (std::list<facet*>::iterator p=mesh.begin(); p!=mesh.end(); ++p)
- {
- (*p)->draw(cull);
- delete *p;
- }
- }
-
- //// Color-dependent versions ////
- // location-dependent color
- void surface(P F(double, double), const domain& R,
- P color(double, double, double), int cull)
- {
- scenery surf(F, R, color);
- surf.draw(cull);
- }
-
-
- // for slices of maps R^3 -> R^3
- void surface(P F(double, double, double), const domain& R,
- P color(double, double, double), int cull)
- {
- scenery surf(F, R, color);
- surf.draw(cull);
- }
-
- void surface(P F(double, double, double), const domain_list& R,
- P color(double, double, double), int cull)
- {
- scenery tmp;
-
- for (dolci p= R.m_list.begin(); p!=R.m_list.end(); ++p)
- tmp.add(F, *p, color);
-
- tmp.draw(cull);
- }
-
-
- void surface_rev(double f(double), double g(double),
- double min_x, double max_x, int i_max, int j_max,
- P color(double, double, double), int cull)
- {
- surface_rev(f, g,
- domain(P(min_x, 0), P(max_x, full_turn()),
- mesh(i_max, j_max), mesh(i_max, j_max)), color,
- frame(), cull);
- }
-
- void surface_rev(double f(double),
- double min_x, double max_x, int i_max, int j_max,
- P color(double, double, double), int cull)
- {
- surface_rev(id, f,
- domain(P(min_x, 0), P(max_x, full_turn()),
- mesh(i_max, j_max), mesh(i_max, j_max)), color,
- frame(), cull);
- }
-
- void surface_rev(double f(double), double g(double),
- const domain& R, P color(double, double, double),
- const frame& coords, int cull)
- {
- if (R.dx3() > 0)
- epix_warning("surface_rev() ignores domain's third coordinate");
-
- std::list<facet*> mesh;
-
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
- const double du(R.dx1());
- const double dv(R.dx2());
-
- const double u0(R.corner1_x1());
- const double v0(R.corner1_x2());
- const double DU(R.step1());
- const double DV(R.step2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- {
- // mesh center approximates facet's location
- P posn(f(u0 + (i+0.5)*DU)*coords.sea() +
- g(u0 + (i+0.5)*DU)*Cos(v0 + (j+0.5)*DV)*coords.sky() +
- g(u0 + (i+0.5)*DU)*Sin(v0 + (j+0.5)*DV)*coords.eye());
-
- P col(color(posn.x1(), posn.x2(), posn.x3()));
-
- mesh.push_back(new facet(f, g,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- du, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3()), coords));
- }
-
- mesh.sort(by_distance());
- // sort(mesh.begin(), mesh.end(), by_distance());
-
- for (std::list<facet*>::iterator p=mesh.begin(); p!=mesh.end(); ++p)
- {
- (*p)->draw(cull);
- delete *p;
- }
- }
-
- // domain-dependent color
- void surface(P F(double, double), const domain& R,
- P color(double, double), int cull)
- {
- scenery surf(F, R, color);
- surf.draw(cull);
- }
-
-
- // for slices of maps R^3 -> R^3
- void surface(P F(double, double, double), const domain& R,
- P color(double, double), int cull)
- {
- scenery surf(F, R, color);
- surf.draw(cull);
- }
-
- void surface(P F(double, double, double), const domain_list& R,
- P color(double, double), int cull)
- {
- scenery tmp;
-
- for (dolci p= R.m_list.begin(); p!=R.m_list.end(); ++p)
- tmp.add(F, *p, color);
-
- tmp.draw(cull);
- }
-
-
- void surface_rev(double f(double), double g(double),
- double min_x, double max_x, int i_max, int j_max,
- P color(double, double), int cull)
- {
- surface_rev(f, g,
- domain(P(min_x, 0), P(max_x, full_turn()),
- mesh(i_max, j_max), mesh(i_max, j_max)), color,
- frame(), cull);
- }
-
- void surface_rev(double f(double),
- double min_x, double max_x, int i_max, int j_max,
- P color(double, double), int cull)
- {
- surface_rev(id, f,
- domain(P(min_x, 0), P(max_x, full_turn()),
- mesh(i_max, j_max), mesh(i_max, j_max)), color,
- frame(), cull);
- }
-
- void surface_rev(double f(double), double g(double),
- const domain& R, P color(double, double),
- const frame& coords, int cull)
- {
- if (R.dx3() > 0)
- epix_warning("surface_rev() ignores domain's third coordinate");
-
- std::list<facet*> mesh;
-
- const unsigned int N1(R.fine_n1()/R.coarse_n1());
- const unsigned int N2(R.fine_n2()/R.coarse_n2());
- const double du(R.dx1());
- const double dv(R.dx2());
-
- const double u0(R.corner1_x1());
- const double v0(R.corner1_x2());
- const double DU(R.step1());
- const double DV(R.step2());
-
- for (int i=0; i<R.coarse_n1(); ++i)
- for (int j=0; j<R.coarse_n2(); ++j)
- {
- // mesh center approximates facet's location
- P posn(f(u0 + (i+0.5)*DU)*coords.sea() +
- g(u0 + (i+0.5)*DU)*Cos(v0 + (j+0.5)*DV)*coords.sky() +
- g(u0 + (i+0.5)*DU)*Sin(v0 + (j+0.5)*DV)*coords.eye());
-
- P col(color(u0 + (i+0.5)*DU, v0 + (j+0.5)*DV));
-
- mesh.push_back(new facet(f, g,
- R.corner1_x1() + i*R.step1(),
- R.corner1_x2() + j*R.step2(),
- du, dv, N1, N2,
- RGB(col.x1(), col.x2(), col.x3()), coords));
- }
-
- mesh.sort(by_distance());
- // sort(mesh.begin(), mesh.end(), by_distance());
-
- for (std::list<facet*>::iterator p=mesh.begin(); p!=mesh.end(); ++p)
- {
- (*p)->draw(cull);
- delete *p;
- }
- }
-} // end of namespace
diff --git a/graphics/epix/surface.h b/graphics/epix/surface.h
deleted file mode 100644
index 9c5be67a0c..0000000000
--- a/graphics/epix/surface.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * surface.h -- Shaded surface plotting
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.7
- * Last Change: July 08, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#include <list>
-
-#include "triples.h"
-#include "frame.h"
-
-#include "path.h"
-
-namespace ePiX
-{
- class domain;
- class domain_list;
- class facet;
-
- // manipulable collection of surface-like objects
- class scenery {
- public:
- scenery();
- scenery(P F(double, double), const domain& R);
- scenery(P F(double, double, double), const domain& R);
-
- // third arg is RGB-valued function of position
- scenery(P F(double, double), const domain& R,
- P color(double, double, double));
-
- scenery(P F(double, double, double), const domain& R,
- P color(double, double, double));
-
- // third arg is RGB-valued function of domain location
- scenery(P F(double, double), const domain& R,
- P color(double, double));
-
- scenery(P F(double, double, double), const domain& R,
- P color(double, double));
-
- scenery(const scenery&);
- scenery& operator= (const scenery&);
- ~scenery();
-
- scenery& add(P F(double, double), const domain& R);
- scenery& add(P F(double, double, double), const domain& R);
-
- scenery& add(P F(double, double), const domain_list&);
- scenery& add(P F(double, double, double), const domain_list&);
-
- // color-dependent
- // location-colored
- scenery& add(P F(double, double), const domain& R,
- P color(double, double, double));
- scenery& add(P F(double, double, double), const domain& R,
- P color(double, double, double));
-
- scenery& add(P F(double, double), const domain_list&,
- P color(double, double, double));
- scenery& add(P F(double, double, double), const domain_list&,
- P color(double, double, double));
-
- // domain-colored
- scenery& add(P F(double, double), const domain& R,
- P color(double, double));
- scenery& add(P F(double, double, double), const domain& R,
- P color(double, double));
-
- scenery& add(P F(double, double), const domain_list&,
- P color(double, double));
- scenery& add(P F(double, double, double), const domain_list&,
- P color(double, double));
-
- // remove backward-pointing faces? 0=no, -1=front, 1=back
- scenery& cull(int);
- void draw(int cull=0) const;
-
- private:
- int m_cull;
-
- std::list<facet*> m_data;
- }; // end of class scenery
-
-
- //// global functions ////
- // except as noted, dim(R) must be 2
- // cosine-shaded surface with fake z-buffered hidden object removal
- void surface(P F(double, double), const domain& R, int cull=0);
-
- // for slices of maps R^3 -> R^3
- void surface(P F(double, double, double), const domain& R, int cull=0);
-
- // plot multiple slices
- void surface(P F(double, double, double), const domain_list& R, int cull=0);
-
- // Surface from revolving the curve (f(t),g(t)) about the x-axis...
- void surface_rev(double f(double), double g(double),
- double t_min, double t_max,
- int latitudes, int longitudes=24, int cull=0);
-
- void surface_rev(double f(double),
- double t_min, double t_max,
- int latitudes, int longitudes=24, int cull=0);
-
- // or about the specified axis, with specified angle range
- void surface_rev(double f(double), double g(double),
- const domain& R, const frame& coords=frame(), int cull=0);
-
-
-
- //// location-colored versions ////
- void surface(P F(double, double), const domain& R,
- P color(double, double, double), int cull=0);
-
- // for slices of maps R^3 -> R^3
- void surface(P F(double, double, double), const domain& R,
- P color(double, double, double), int cull=0);
-
- // plot multiple slices
- void surface(P F(double, double, double), const domain_list& R,
- P color(double, double, double), int cull=0);
-
- // Surface from revolving the curve (f(t),g(t)) about the x-axis...
- void surface_rev(double f(double), double g(double),
- double t_min, double t_max,
- int latitudes, int longitudes,
- P color(double, double, double), int cull=0);
-
- void surface_rev(double f(double),
- double t_min, double t_max,
- int latitudes, int longitudes,
- P color(double, double, double), int cull=0);
-
- // or about the specified axis, with specified angle range
- void surface_rev(double f(double), double g(double),
- const domain& R, P color(double, double, double),
- const frame& coords=frame(), int cull=0);
-
-
- //// domain-colored versions ////
- void surface(P F(double, double), const domain& R,
- P color(double, double), int cull=0);
-
- // for slices of maps R^3 -> R^3
- void surface(P F(double, double, double), const domain& R,
- P color(double, double), int cull=0);
-
- // plot multiple slices
- void surface(P F(double, double), const domain_list& R,
- P color(double, double, double), int cull=0);
-
- // Surface from revolving the curve (f(t),g(t)) about the x-axis...
- void surface_rev(double f(double), double g(double),
- double t_min, double t_max,
- int latitudes, int longitudes,
- P color(double, double), int cull=0);
-
- void surface_rev(double f(double),
- double t_min, double t_max,
- int latitudes, int longitudes,
- P color(double, double), int cull=0);
-
- // or about the specified axis, with specified angle range
- void surface_rev(double f(double), double g(double),
- const domain& R, P color(double, double),
- const frame& coords=frame(), int cull=0);
-} // end of namespace ePiX
diff --git a/graphics/epix/tikz.cc b/graphics/epix/tikz.cc
deleted file mode 100644
index b28a4832e4..0000000000
--- a/graphics/epix/tikz.cc
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * tikz.cc -- ePiX::tikz output format
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 07, 2007
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <list>
-
-#include <string>
-#include <sstream>
-
-#include <set>
-
-#include "constants.h"
-
-#include "utils.h"
-
-#include "pairs.h"
-#include "edge_data.h"
-
-#include "Color.h"
-
-#include "path_style.h"
-#include "pen_data.h"
-
-// need to get units from the_picture
-#include "picture_data.h"
-#include "picture.h"
-
-#include "format.h"
-#include "tikz.h"
-
-namespace ePiX {
-
- tikz::tikz()
- : m_fill(Neutral()), m_stroke(Black()), m_lwidth(PLAIN_WIDTH),
- m_units(the_picture().the_unitlength.units()) { }
-
-
- tikz* tikz::clone() const
- {
- return new tikz(*this);
- }
-
- // Filled region with specified Cartesian edges, offset, and color
- std::string tikz::print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fc,
- const pen_data& line,
- const std::string& len) const
- {
- std::stringstream obuf;
- obuf << set_fill_state(fc) << set_pen_state(line);
-
- // compute attribute string
- std::stringstream attribs;
-
- if ( !(fc.is_unset()) )
- {
- attribs << "[fill";
-
- if (fc.alpha() < 1)
- attribs << ",opacity=" << fc.alpha();
-
- attribs << "]";
- }
-
- obuf << print_paths(edges, offset, attribs.str(), len);
-
- return obuf.str();
- }
-
- // Unfilled region, specified Cartesian edges
- std::string tikz::print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line,
- const pen_data& base,
- const path_state& style,
- const std::string& len) const
- {
- std::string value;
-
- // draw *solid* base first
- if (line.width() < base.width() && !base.color().is_unset())
- {
- std::stringstream battr;
- battr << "[color=" << format::print(base.color()) << ","
- << "line width=" << format::print(base.width()) << "]";
-
- value += format::print_line(edges, offset, base, path_state(),
- battr.str(), len);
- }
-
- value += set_pen_state(line);
-
- return value += format::print_line(edges, offset, line, style, "", len);
- }
-
- // Print color declaration strings: model, name, densities
- std::string tikz::print_color(const std::string& model,
- const std::string& name,
- double d1, double d2,
- double d3) const
- {
- return format::xdefinecolor(model, name, d1, d2, d3);
- }
-
- std::string tikz::print_color(const std::string& model,
- const std::string& name,
- double d1, double d2,
- double d3, double d4) const
- {
- return format::xdefinecolor(model, name, d1, d2, d3, d4);
- }
-
-
- // One-line comment
- std::string tikz::print_comment(const std::string& msg) const
- {
- std::stringstream obuf;
- obuf << "%% " << msg << std::endl;
-
- return obuf.str();
- }
-
- // verbatim string, newline protected
- std::string tikz::print_verbatim(const std::string& msg) const
- {
- std::stringstream obuf;
- obuf << msg << "%" << std::endl;
-
- return obuf.str();
- }
-
-
- // start/end a picture-like environment, set unit length
- std::string tikz::start_picture(const pair& sz, const pair& offset) const
- {
- std::stringstream obuf;
- obuf << "\\begin{tikzpicture}" << std::endl
- << "\\pgfsetlinewidth{" << format::print(PLAIN_WIDTH) << "}"
- << std::endl
- << "\\useasboundingbox " << print(offset)
- << " rectangle " << print(sz + offset) << ";"
- << std::endl;
-
- return obuf.str();
- }
-
- std::string tikz::end_picture() const
- {
- std::stringstream obuf;
- obuf << "\\end{tikzpicture}" << std::endl;
-
- return obuf.str();
- }
-
- // Actual work done in start_picture
- std::string tikz::set_unitlength(const std::string& len) const
- {
- return "";
- /*
- std::stringstream obuf;
-
- obuf << "\\setlength{\\unitlength}{1" << len << "}%" << std::endl;
-
- return obuf.str();
- */
- }
-
-
- void tikz::reset_state() const
- {
- m_fill = Neutral();
- m_stroke = Black();
- m_lwidth = PLAIN_WIDTH;
- }
-
- //// private member functions ////
- std::string tikz::path_connector() const
- {
- return "--";
- }
-
-
- std::string tikz::usepackages() const
- {
- return "usepackages tikz";
- }
-
- // string argument for passing attributes local to this path/loop
- std::string tikz::start_open_path(const std::string& attribs) const
- {
- return "\\draw " + attribs;
- }
-
- std::string tikz::end_open_path(const std::string&) const
- {
- std::stringstream obuf;
- obuf << ";" << std::endl;
-
- return obuf.str();
- }
-
- std::string tikz::start_closed_path(const std::string& attribs) const
- {
- return "\\draw " + attribs;
- }
-
- std::string tikz::end_closed_path(const std::string&) const
- {
- std::stringstream obuf;
- obuf << "--cycle;" << std::endl;
-
- return obuf.str();
- }
-
- // print declarations to set state of output format
- std::string tikz::set_fill_state(const Color& col) const
- {
- std::stringstream buf;
- if (col != m_fill && !col.is_unset())
- buf << "\\pgfsetfillcolor{" << format::print(col) << "}" << std::endl;
-
- m_fill = col;
- return buf.str();
- }
-
- std::string tikz::set_pen_state(const pen_data& pen) const
- {
- std::stringstream buf;
- if (pen.color() != m_stroke)
- {
- buf << "\\pgfsetstrokecolor{" << format::print(pen.color()) << "}"
- << std::endl;
-
- m_stroke = pen.color();
- }
-
- if (pen.width() != m_lwidth)
- {
- buf << "\\pgfsetlinewidth{" << format::print(pen.width()) << "}"
- << std::endl;
-
- m_lwidth = pen.width();
- }
-
- return buf.str();
- }
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- std::string tikz::put_box(const pair& loc, const std::string& msg) const
- {
- std::stringstream obuf;
-
- obuf << "\\pgftext[at={\\pgfpoint{"
- << truncate(loc.x1()) << m_units << "}{"
- << truncate(loc.x2()) << m_units
- << "}}] {" << msg << "}" << std::endl;
-
- return obuf.str();
- }
-
- std::string tikz::print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const
- {
- std::stringstream obuf;
- obuf << "\\";
-
- if (fill)
- obuf << "fill";
-
- obuf << "draw[color=" << format::print(color) << "] "
- << print(here) << " circle(" << 0.5*diam << len << ");" << std::endl;
-
- return obuf.str();
- }
-
- std::string tikz::print(const pair& arg) const
- {
- std::stringstream o;
- o << "(" << truncate(arg.x1()) << m_units
- << "," << truncate(arg.x2()) << m_units << ")";
- return o.str();
- }
-} // end of namespace
diff --git a/graphics/epix/tikz.h b/graphics/epix/tikz.h
deleted file mode 100644
index e437edb122..0000000000
--- a/graphics/epix/tikz.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * tikz.h -- ePiX::tikz output format
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.15
- * Last Change: September 07, 2007
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_TIKZ
-#define EPIX_TIKZ
-
-#include <set>
-#include <list>
-#include <string>
-
-#include "edge_data.h"
-
-namespace ePiX {
-
- class Color;
- class pair;
- class path_state;
- class pen_data;
-
- class tikz : public format {
- public:
- tikz();
-
- // Return a copy of this
- tikz* clone() const;
-
- // Filled region with specified Cartesian edges, offset, and color
- std::string print_fill(const std::list<edge2d>& edges,
- const pair& offset,
- const Color& fill,
- const pen_data& line,
- const std::string& len) const;
-
- // Unfilled region, specified Cartesian edges. Should generally be
- // trivially implemented using one-pen function (supplied).
- std::string print_line(const std::list<edge2d>& edges,
- const pair& offset,
- const pen_data& line_pen,
- const pen_data& base_pen,
- const path_state& style,
- const std::string& len) const;
-
- /*
- * Picture start and finish:
- * Size and offset in page units,
- * pallet (set of colors contained in the screen),
- * unitlength
- *
- * These functions have default implementations, see format.cc.
- * If the new format can use the default implementation, these
- * functions declarations should be removed.
- *
- std::string pic_header(const pair& sizes,
- const pair& offsets,
- const std::set<Color>& pallet,
- const std::string& len) const;
-
- std::string pic_footer() const;
- */
-
- // Print color declaration strings: model, name, densities
- std::string print_color(const std::string&,
- const std::string&,
- double,
- double,
- double) const;
-
- std::string print_color(const std::string&,
- const std::string&,
- double,
- double,
- double,
- double) const;
-
- // One-line comment
- std::string print_comment(const std::string&) const;
-
- // Verbatim output
- std::string print_verbatim(const std::string&) const;
-
-
- // begin and end a picture-like environment, set the unit length
- std::string start_picture(const pair&, const pair&) const;
- std::string end_picture() const;
-
- std::string set_unitlength(const std::string& len) const;
-
- // State data, if any, must be mutable
- void reset_state() const;
-
- private:
- mutable Color m_fill;
- mutable Color m_stroke;
- mutable length m_lwidth;
-
- std::string m_units;
-
- // override: inserted between path points
- std::string path_connector() const;
-
- std::string usepackages() const;
-
- // string argument for passing attributes local to this path/loop
- std::string start_open_path(const std::string&) const;
- std::string end_open_path(const std::string&) const;
-
- std::string start_closed_path(const std::string&) const;
- std::string end_closed_path(const std::string&) const;
-
- // print declarations to set state of output format
- std::string set_fill_state(const Color&) const;
- std::string set_pen_state(const pen_data&) const;
-
- // place a LaTeX box of width zero (containing string) at location (pair)
- std::string put_box(const pair&, const std::string&) const;
-
- std::string print_circle_marker(const pair& here, double diam,
- bool fill, const Color& color,
- const std::string& len) const;
-
- std::string print(const pair&) const; // override base class, print units
- }; // end of class tikz
-} // end of namespace
-
-#endif /* EPIX_TIKZ */
diff --git a/graphics/epix/tile.cc b/graphics/epix/tile.cc
deleted file mode 100644
index a7717a818c..0000000000
--- a/graphics/epix/tile.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * tile.cc -- ePiX::tile destructor
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.0.23
- * Last Change: January 14, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "tile.h"
-
-namespace ePiX {
- tile::~tile() { }
-
-} // end of namespace
diff --git a/graphics/epix/tile.h b/graphics/epix/tile.h
deleted file mode 100644
index da4639e694..0000000000
--- a/graphics/epix/tile.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * tile.h -- ePiX::screen object base class (tile)
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.0.23
- * Last Change: January 14, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef EPIX_TILE
-#define EPIX_TILE
-
-#include <string>
-
-namespace ePiX {
-
- class format;
- class length;
- class affine;
- class screen;
- class screen_mask;
-
- class tile {
- public:
- virtual ~tile();
-
- virtual tile* clone() const = 0;
- virtual tile& map_by(const affine&) = 0;
- virtual tile& crop_to(const screen_mask&) = 0;
-
- virtual bool is_empty() const = 0;
-
- // pass length for (e.g.) dash length, marker size
- virtual std::string print_to(const format&, const std::string&) const = 0;
- virtual void add_to_pallet() const = 0;
- }; // end of class tile
-
-} // end of namespace
-
-#endif /* EPIX_TILE */
diff --git a/graphics/epix/triples.cc b/graphics/epix/triples.cc
deleted file mode 100644
index f62076d4f7..0000000000
--- a/graphics/epix/triples.cc
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * triples.cc -- ePiX::P class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.9
- * Last Change: August 01, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <cmath>
-
-#include "constants.h"
-#include "errors.h"
-#include "triples.h"
-
-namespace ePiX {
-
- P::P(double arg1, double arg2, double arg3)
- : m_x1(arg1), m_x2(arg2), m_x3(arg3) { }
-
- double P::x1() const
- {
- return m_x1;
- }
-
- double P::x2() const
- {
- return m_x2;
- }
-
- double P::x3() const
- {
- return m_x3;
- }
-
- bool P::is_valid() const
- {
- using std::isnan;
- using std::isinf;
-
- return
- !isinf(m_x3) && !isnan(m_x3)
- && !isinf(m_x2) && !isnan(m_x2)
- && !isinf(m_x1) && !isnan(m_x1)
- && m_x1*m_x1 + m_x2*m_x2 + m_x3*m_x3 < EPIX_INFTY;
- }
-
- // increment operators
- P& P::operator += (const P& arg)
- {
- m_x1 += arg.m_x1;
- m_x2 += arg.m_x2;
- m_x3 += arg.m_x3;
-
- return *this;
- }
-
- P& P::operator -= (const P& arg)
- {
- m_x1 -= arg.m_x1;
- m_x2 -= arg.m_x2;
- m_x3 -= arg.m_x3;
-
- return *this;
- }
-
- // scalar multipication
- P& P::operator *= (double c)
- {
- m_x1 *= c;
- m_x2 *= c;
- m_x3 *= c;
-
- return *this;
- }
-
- // cross product
- P& P::operator *= (const P& v)
- {
- P temp(*this);
-
- m_x1 = (temp.m_x2 * v.m_x3 - temp.m_x3 * v.m_x2);
- m_x2 = (temp.m_x3 * v.m_x1 - temp.m_x1 * v.m_x3);
- m_x3 = (temp.m_x1 * v.m_x2 - temp.m_x2 * v.m_x1);
-
- return *this;
- }
-
- // componentwise product
- P& P::operator &= (const P& v)
- {
- m_x1 *= v.m_x1;
- m_x2 *= v.m_x2;
- m_x3 *= v.m_x3;
-
- return *this;
- }
-
- // orthogonalization: u %= v is the vector of the form u-k*v perp to v
- P& P::operator%= (const P& v)
- {
- double denom(v.m_x1*v.m_x1 + v.m_x2*v.m_x2 + v.m_x3*v.m_x3);
- if (denom < EPIX_EPSILON)
- {
- epix_warning("Orthogonalizing by zero vector, no action");
- return *this;
- }
-
- // else c=(u|v)/(v|v)
- double c((m_x1*v.m_x1 + m_x2*v.m_x2 + m_x3*v.m_x3)/denom);
-
- m_x1 -= c*v.m_x1;
- m_x2 -= c*v.m_x2;
- m_x3 -= c*v.m_x3;
-
- return *this;
- }
- // end of class functions
-
- // vector space operations
- P operator- (P u)
- {
- return u *= -1;
- }
-
- P operator+ (P u, const P& v)
- {
- return u += v;
- }
-
- P operator- (P u, const P& v)
- {
- return u -= v;
- }
-
- // scalar multiplication
- P operator* (double c, P v)
- {
- return v *= c;
- }
-
- // cross product
- P operator* (P u, const P& v)
- {
- return u *= v;
- }
-
- P J(P arg)
- {
- // E_3 * arg, but E_3 is const
- return arg *= -E_3;
- }
-
- // dot product
- double operator | (const P& u, const P& v)
- {
- return u.x1()*v.x1() + u.x2()*v.x2() + u.x3()*v.x3();
- }
-
- double norm(const P& u)
- {
- return sqrt(u|u);
- }
-
- // componentwise product (a,b,c)&(x,y,z)=(ax,by,cz)
- P operator& (P u, const P& v)
- {
- return u &= v;
- }
-
- P operator% (P u, const P& v)
- {
- return u %= v;
- }
-
- // (in)equality
- bool operator == (const P& u, const P& v)
- {
- return (norm(u-v) < EPIX_EPSILON);
- }
-
- bool operator != (const P& u, const P& v)
- {
- return !(u==v);
- }
-} // end of namespace
diff --git a/graphics/epix/triples.h b/graphics/epix/triples.h
deleted file mode 100644
index 54f5c5581b..0000000000
--- a/graphics/epix/triples.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * triples.h -- ePiX::P class
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.10
- * Last Change: August 04, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * This file provides:
- *
- * The P class (ordered triple of <double>s) and operators
- *
- * - P(), P() (default to origin), E_1, E_2, E_3 (standard basis)
- * - Vector space operators
- * - Other vector operators, operands (a,b,c), (x,y,z)
- * | dot product ax + by + cz
- * norm(p) = sqrt(p|p)
- * & componentwise product (ax, by, cz)
- * * cross product (bz-cy, cx-az, ay-bx)
- * J rotate (x1,x2,0)-plane 1/4 turn (-b,a,0)
- * % orthogonalization u%v = u - ((u|v)/(v|v))*v
- */
-#ifndef EPIX_TRIPLES
-#define EPIX_TRIPLES
-
-namespace ePiX {
-
- class P {
- public:
- P(double arg1=0, double arg2=0, double arg3=0);
-
- double x1() const;
- double x2() const;
- double x3() const;
-
- bool is_valid() const; // coords not inf or nan
-
- // increment operators
- P& operator += (const P&);
- P& operator -= (const P&);
- P& operator *= (double); // scalar multipication
-
- // cross product
- P& operator *= (const P&);
-
- // componentwise product
- P& operator &= (const P&);
-
- // orthogonalization: u %= v is the vector of the form u-k*v perp to v
- P& operator %= (const P&);
-
- private:
- double m_x1, m_x2, m_x3;
- }; // end of class P
-
-
- // standard basis in global namespace
- const P E_1(1,0,0);
- const P E_2(0,1,0);
- const P E_3(0,0,1);
-
- // vector space operations
- P operator- (P u); // unary negation
- P operator+ (P u, const P& v);
- P operator- (P u, const P& v);
- // scalar multiplication
- P operator* (double c, P v);
-
- // cross product
- P operator* (P, const P&);
- P J(P); // quarter turn about E_3-axis
-
- // dot product
- double operator | (const P&, const P&);
- double norm(const P&);
-
- // componentwise product (a,b,c)&(x,y,z)=(ax,by,cz)
- P operator& (P, const P&);
- // orthogonalization
- P operator% (P, const P&);
-
- // (in)equality
- bool operator == (const P&, const P&);
- bool operator != (const P&, const P&);
-
-} // end of namespace
-
-#endif /* EPIX_TRIPLES */
diff --git a/graphics/epix/utils.cc b/graphics/epix/utils.cc
deleted file mode 100644
index 2b57ddf1ea..0000000000
--- a/graphics/epix/utils.cc
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * utils.cc -- global utility functions for ePiX
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 15, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <string>
-#include <cmath>
-#include <ctime>
-
-#include "constants.h"
-#include "utils.h"
-
-namespace ePiX {
-
- const std::string epix_version()
- {
- return "1.2.1";
- }
-
- double truncate(double arg)
- {
- return fabs(arg) < EPIX_EPSILON ? 0 : arg;
- }
-
- std::string date_and_time()
- {
- ////// N.B.: Revise this if time format string changes!
- const int max_len = 31;
- char buf[max_len];
- time_t t=time(0);
-
- // strftime(buf, max_len, "%c", localtime(&t));
-
- // Sat Jul 1 23:25:39 2006 (GMT)
- strftime(buf, max_len, "%a %b %d %X %Y (%Z)", gmtime(&t));
- return std::string(buf);
- }
-
-
- // remove everything from arg except chars in srch
- std::string get_chars(std::string arg, const std::string& srch)
- {
- std::string::size_type curr(0);
- std::string::size_type next(arg.find_first_of(srch));
-
- while (next != std::string::npos)
- {
- arg.erase(curr, next-curr);
-
- curr = arg.find_first_not_of(srch);
- next = arg.find_first_of(srch, curr);
- }
-
- if (next != curr)
- arg.erase(curr, next);
-
- return arg;
- }
-
- // add linebreaks before opening parentheses to make lines at most
- // FILE_WIDTH characters long; return reference to arg
- std::string break_lines(std::string arg, const std::string& path_break)
- {
- std::string value; // append here; swap with arg at end
-
- // initialize markers prev, curr, next
- std::string::size_type prev(0); // position of last line break
- std::string::size_type next(arg.find_first_of("("));
- std::string::size_type curr(next);
-
- unsigned int pbk_sz(path_break.size());
-
- while (next != std::string::npos)
- {
- // seek next break points
- while (next-prev <= EPIX_FILE_WIDTH - pbk_sz)
- {
- curr = next;
- next = arg.find_first_of("(", ++next);
- }
-
- value.append(arg, prev, curr-prev); // append current line
- // Magic number 20 (greater than width of a printed pair)
- if (next - prev <= 20+EPIX_FILE_WIDTH) // not at end of data
- value += path_break; // and formatting string
- prev = curr; // update front of line
- }
-
- // get remaining characters
- value.append(arg, prev, next-prev);
-
- swap(arg, value);
- return arg;
- }
-} // end of namespace
diff --git a/graphics/epix/utils.h b/graphics/epix/utils.h
deleted file mode 100644
index 018efcdfca..0000000000
--- a/graphics/epix/utils.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * utils.h -- global utility functions for ePiX
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.18
- * Last Change: September 15, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_UTILS
-#define EPIX_UTILS
-
-#include <string>
-
-namespace ePiX {
-
- const std::string epix_version();
-
- double truncate(double); // return 0 if fabs(arg) < epsilon
-
- // print GMT string for file header
- std::string date_and_time();
-
- // remove everything from arg except chars in srch
- std::string get_chars(std::string arg, const std::string& srch);
-
- // Use break to split arg into lines of at most FILE_WIDTH characters,
- // return mangled copy of arg
- std::string break_lines(std::string arg, const std::string& break_str);
-}
-#endif /* EPIX_UTILS */
diff --git a/graphics/epix/verbatim.cc b/graphics/epix/verbatim.cc
deleted file mode 100644
index 8f7df3b3fb..0000000000
--- a/graphics/epix/verbatim.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * verbatim.cc -- ePiX screen implemenation for verbatim text
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.7
- * Last Change: July 14, 2007
- */
-
-/*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- */
-
-/*
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <sstream>
-
-#include "format.h"
-#include "verbatim.h"
-
-namespace ePiX {
-
- class affine;
- class screen_mask;
-
- verbatim::verbatim(const std::string& text) : m_text(text)
- {
- }
-
- verbatim& verbatim::map_by(const affine& f)
- {
- return *this;
- }
-
- verbatim& verbatim::crop_to(const screen_mask& M)
- {
- return *this;
- }
-
- verbatim* verbatim::clone() const
- {
- return new verbatim(*this);
- }
-
- bool verbatim::is_empty() const
- {
- return (m_text == "");
- }
-
- std::string verbatim::print_to(const format& fmt, const std::string& L) const
- {
- if (is_empty())
- return "";
-
- // else
- return fmt.print_verbatim(m_text);
- }
-
- void verbatim::add_to_pallet() const { }
-} // end of namespace
-
diff --git a/graphics/epix/verbatim.h b/graphics/epix/verbatim.h
deleted file mode 100644
index 39b2d3b9d5..0000000000
--- a/graphics/epix/verbatim.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * verbatim.h -- ePiX screen implemenation of verbatim text
- *
- * This file is part of ePiX, a C++ library for creating high-quality
- * figures in LaTeX
- *
- * Version 1.1.7
- * Last Change: July 14, 2007
- *
- *
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
- * Andrew D. Hwang <rot 13 nujnat at zngupf dot ubylpebff dot rqh>
- * Department of Mathematics and Computer Science
- * College of the Holy Cross
- * Worcester, MA, 01610-2395, USA
- *
- *
- * ePiX is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * ePiX is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ePiX; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef EPIX_VERBATIM
-#define EPIX_VERBATIM
-
-#include <string>
-
-#include "tile.h"
-
-namespace ePiX {
-
- class format;
- class affine;
- class screen_mask;
-
- class verbatim : public tile {
- public:
- verbatim(const std::string& text="");
-
- verbatim& map_by(const affine&);
- verbatim& crop_to(const screen_mask&);
-
- verbatim* clone() const;
-
- bool is_empty() const;
-
- std::string print_to(const format&, const std::string&) const;
- void add_to_pallet() const;
-
- private:
- std::string m_text;
- }; // end of class verbatim
-
-} // end of namespace
-
-#endif /* EPIX_VERBATIM */
diff --git a/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdf b/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdf
index e479e4960f..f9dd77a8a2 100644
--- a/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdf
+++ b/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex b/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex
index 5c68664271..bb431eb276 100644
--- a/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams-doc.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
%==[ document class ]===========================================================
@@ -401,7 +401,7 @@
\resizebox{\linewidth}{!}{\scshape enchiridion}\par
\vfill
\marginpar{
- \resizebox{\linewidth}{!}{\scshape 1.0.0}\\[0.62em]
+ \resizebox{\linewidth}{!}{\scshape 1.0.1}\\[0.62em]
\resizebox{\linewidth}{!}{\scshape \today}
}
diff --git a/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty b/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty
index 63bfde447f..56b5a0c657 100644
--- a/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty
+++ b/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.sty
@@ -3,11 +3,11 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
\RequirePackage{tikz}%[2013/12/13] % pgf version 3.0.0 required
-\ProvidesPackage{commutative-diagrams}[2020/06/06 1.0.0 CoDi: Commutative Diagrams for TeX]
+\ProvidesPackage{commutative-diagrams}[2020/06/11 1.0.1 CoDi: Commutative Diagrams for TeX]
\usetikzlibrary{commutative-diagrams}
\let\codi\kDRammaOpen
\let\endcodi\kDRammaShut
diff --git a/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex b/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex
index f9ac654c65..8cd0ed181d 100644
--- a/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/commutative-diagrams.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
\input tikz.tex
diff --git a/graphics/pgf/contrib/commutative-diagrams/kodi.sty b/graphics/pgf/contrib/commutative-diagrams/kodi.sty
index 9443a2d8b0..149c1cbe10 100644
--- a/graphics/pgf/contrib/commutative-diagrams/kodi.sty
+++ b/graphics/pgf/contrib/commutative-diagrams/kodi.sty
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
\RequirePackage{commutative-diagrams}
diff --git a/graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex b/graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex
index 2c03eaa948..6a65083d05 100644
--- a/graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/t-commutative-diagrams.tex
@@ -3,10 +3,10 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
-\writestatus{loading}{2020/06/06 1.0.0 CoDi: Commutative Diagrams for TeX}
+\writestatus{loading}{2020/06/11 1.0.1 CoDi: Commutative Diagrams for TeX}
\startmodule[commutative-diagrams]
\usemodule[tikz]
\usetikzlibrary[commutative-diagrams]
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex
index e417dc7f08..57339b8696 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.bapto.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% βάπτω • (báptō)
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex
index eabf14dd06..d1a8ece647 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
%==[ dependencies graph ]=======================================================
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex
index 4a79abdbcc..90677affb5 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.diorthono.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% διορθώνω • (diorthóno)
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex
index 3a698436c4..0a418942c6 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ektropi.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% εκτροπή • (ektropí)
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex
index ef3c4ea0fc..f89e99c9c0 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.katharizo.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% καθαρίζω • (katharízo)
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex
index c2b378f38a..5e15eab768 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.koinos.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% κοινός • (koinós)
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex
index 2d43ef5d55..b1116fd50a 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mandyas.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% μανδύας • (mandýas)
@@ -20,6 +20,7 @@
% \usetikzlibrary{decorations.pathmorphing}
% \usetikzlibrary[decorations.markings]
% \usetikzlibrary[arrows.meta]
+\usetikzlibrary[positioning]
\pgfqkeys{/codi}{
%==[ universal styles ]=========================================================
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex
index 211ade2f4c..90b41a7eb4 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.mitra.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% μήτρα • (mítra)
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex
index 07d375cc43..b309cc3b13 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ozos.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% όζος • (ózos)
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex
index 1854abb67e..cdc8ceaab5 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% ράμμα • (rámma)
diff --git a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex
index 5072b97d7c..b1d500cdbc 100644
--- a/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex
+++ b/graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex
@@ -3,7 +3,7 @@
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
-% This file is part of CoDi 1.0.0, released on 2020/06/06 under MIT license.
+% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% βέλος • (vélos)
diff --git a/graphics/svg/README.md b/graphics/svg/README.md
index 77441af55c..e0e785fc6b 100644
--- a/graphics/svg/README.md
+++ b/graphics/svg/README.md
@@ -3,9 +3,9 @@
----------------------------------------------------------------------------
Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016<br>
- Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
+ Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-2020
- **svg 2020/05/07 v2.02f**
+ **svg 2020/06/12 v2.02g**
----------------------------------------------------------------------------
@@ -39,6 +39,10 @@ can be invoked.
Versions
--------
+**v2.02g** (2020/06/12)
++ hot fix for including files with mutliple dots in it's names,
+ see https://github.com/mrpiggi/svg/issues/27
+
**v2.02f** (2020/05/07)
+ support for ***Inkscape*** 1.0
diff --git a/graphics/svg/doc/svg.pdf b/graphics/svg/doc/svg.pdf
index 0cf75be787..98e6a99382 100644
--- a/graphics/svg/doc/svg.pdf
+++ b/graphics/svg/doc/svg.pdf
Binary files differ
diff --git a/graphics/svg/source/svg.dtx b/graphics/svg/source/svg.dtx
index 84a4041594..51a34dc5f7 100644
--- a/graphics/svg/source/svg.dtx
+++ b/graphics/svg/source/svg.dtx
@@ -1,110 +1,134 @@
% \iffalse meta-comment
+%<*identify>
%
% svg and svg-extract -- Handling SVG pictures in LaTeX documents
-% ----------------------------------------------------------------------------
%
-% Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
-% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-2020
-%
-% ----------------------------------------------------------------------------
-%
-% This work may be distributed and/or modified under the conditions of the
-% LaTeX Project Public License, version 1.3c of the license. The latest
-% version of this license is in http://www.latex-project.org/lppl.txt and
-% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
-% or later and of this work. This work has the LPPL maintenance status
-% "author-maintained". The current maintainer and author of this work
-% is Falk Hanisch.
-%
-% ----------------------------------------------------------------------------
+%% ----------------------------------------------------------------------------
+%%
+%% Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
+%% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-2020
+%%
+%% ----------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the conditions
+%% of the LaTeX Project Public License, version 1.3c of the license.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX 2005/12/01 or later and of this work.
+%%
+%% This work has the LPPL maintenance status "author-maintained".
+%%
+%% The current maintainer and author of this work is Falk Hanisch.
+%%
+%% This work consists of the main source file README.md, LICENSE.md, svg.dtx
+%% and the derived documentation svg.pdf as well as the example files
+%% svg-example.svg, svg-preamble.tex and root.C (with derived file root.svg).
+%%
+%% ----------------------------------------------------------------------------
+%%
+%</identify>
+% \fi
%
-%<*batchfile>
-\ifx\documentclass\@undefined
+% \iffalse
+%<*dtx>
+\ifx\documentclass\undefined
\input docstrip.tex
\keepsilent
-\begingroup
-\catcode`\^^M=13 \catcode`\ =12 %
-\gdef\svgpreamble{%
-Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
-Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
-
-This file was generated from file svg.dtx.
-----------------------------------------------------------------------------
-
-This work may be distributed and/or modified under the conditions
-of the LaTeX Project Public License, version 1.3c of the license.
-The latest version of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3c or later is part of all distributions of
-LaTeX 2005/12/01 or later and of this work.
-
-This work has the LPPL maintenance status "author-maintained".
-
-The current maintainer and author of this work is Falk Hanisch.
-
-This work consists of the main source file README.md, LICENSE.md, svg.dtx
-and the derived documentation svg.pdf as well as the example files
-svg-example.svg, svg-preamble.tex and root.C (with derived file root.svg).
-}
-\endgroup
-
-\declarepreamble\svgbasepreamble
+\declarepreamble\svgmainpreamble
svg -- Include SVG pictures in LaTeX documents using Inkscape
-\svgpreamble
-
\endpreamble
\declarepreamble\svgextractpreamble
svg-extract -- Extract independent graphic files from SVG pictures
-\svgpreamble
-
\endpreamble
\askforoverwritefalse
\usedir{tex/latex/svg}
\generate{%
- \usepreamble\svgbasepreamble
- \file{svg.sty}{%
- \from{svg.dtx}{package,option,base}%
- \from{svg.dtx}{package,body,base}%
+ \usepreamble\svgmainpreamble
+ \file{svg.sty}{
+ \from{svg.dtx}{package,identify,main}
+ \from{svg.dtx}{package,base,main}
+ \from{svg.dtx}{package,option,main}
+ \from{svg.dtx}{package,body,main}
}
\usepreamble\svgextractpreamble
- \file{svg-extract.sty}{%
- \from{svg.dtx}{package,option,extract}%
- \from{svg.dtx}{package,body,extract}%
+ \file{svg-extract.sty}{
+ \from{svg.dtx}{package,identify,extract}
+ \from{svg.dtx}{package,base,extract}
+ \from{svg.dtx}{package,option,extract}
+ \from{svg.dtx}{package,standalone,extract}
+ \from{svg.dtx}{package,body,extract}
}
% \usepreamble\defaultpreamble
-% \file{svg-old.sty}{%
-% \from{svg.dtx}{package,old}%
+% \file{svg-old.sty}{
+% \from{svg.dtx}{package,old}
% }
}
\else
\let\endbatchfile\relax
\fi
\endbatchfile
-%</batchfile>
+%</dtx>
% \fi
%
% \iffalse
-%<package&option>\NeedsTeXFormat{LaTeX2e}[2020-02-02]
-%<*driver>
-\ifx\ProvidesFile\@undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{svg.dtx}[%
-%</driver>
-%<package&option&base>\ProvidesPackage{svg}[%
-%<package&option&extract>\ProvidesPackage{svg-extract}[%
-%<*driver|package&option>
- 2020/05/07 v2.02f\space%
-%<package&option&base> (include SVG pictures)%
-%<package&option&extract> (extract independent graphics from SVG pictures)%
-]
-%</driver|package&option>
-%<*driver>
+%<*dtx|package&identify>
+\NeedsTeXFormat{LaTeX2e}[2020-02-02]
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+%</dtx>
+\begingroup
+ \catcode`\@11\relax%
+ \def\svg@Provides#1#2[#3]{%
+ \def\@tempa{\def\svg@version{#3}}%
+ \ifx\svg@version\@undefined\else%
+ \def\@tempb{#3}%
+ \ifx\svg@version\@tempb\else%
+ \def\@tempa{%
+ \@latex@warning@no@line{%
+ The version of package `#1' is `#3',\MessageBreak%
+ but `\svg@version' was expected!\MessageBreak%
+ You should update the svg bundle%
+ }%
+ }%
+ \fi%
+ \fi%
+ \edef\@tempb{%
+ \endgroup%
+%<*dtx>
+ \noexpand\ProvidesFile%
+%</dtx>
+%<package&identify> \noexpand\ProvidesPackage%
+ {#1}[#3\space(#2)]%
+%<package&identify&extract> \noexpand\RequirePackage{svg}[#3]%
+ \unexpanded\expandafter{\@tempa}%
+ }%
+ }%
+ \svg@Provides%
+%<*dtx>
+ {svg.dtx}{source}%
+%</dtx>
+%<package&identify&main> {svg}{include SVG pictures}%
+%<package&identify&extract> {svg-extract}{extract graphics from SVG pictures}%
+ [2020/06/12 v2.02g]%
+\@tempb
+%</dtx|package&identify>
+% \fi
+%
+% \iffalse
+%<*dtx>
\documentclass[english,xindy]{tudscrdoc}[2017/03/27]
-\usepackage[T1]{fontenc}
+\usepackage{iftex}[2020/03/06]
+\iftutex
+ \usepackage{fontspec}
+\else
+ \usepackage[T1]{fontenc}
+\fi
\usepackage{babel}
\KOMAoptions{parskip=half-}
\usepackage{marginnote}
@@ -129,18 +153,18 @@ svg-extract -- Extract independent graphic files from SVG pictures
\usepackage{listings}
\lstset{%
- inputencoding=utf8,extendedchars=true,
+ inputencoding=utf8,extendedchars=true,%
literate=%
{ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
- {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+ {ß}{{\ss}}1 {~}{{\textasciitilde}}1
+ {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1
}
\newcommand*\svglstbelowskip{\medskipamount}
\AtBeginDocument{%
- \edef\svglstbelowskip{\the\glueexpr\medskipamount-\parskip\relax}
+ \renewcommand*\svglstbelowskip{\glueexpr\medskipamount-\parskip\relax}%
}
\lstdefinestyle{svg}{%
-% language=[LaTeX]TeX,%
basicstyle=\small\ttfamily,%
columns=flexible,%
frame=single,%
@@ -148,7 +172,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
xleftmargin=\fboxsep,%
xrightmargin=\fboxsep,%
gobble=2,%
- escapechar=§,
+ escapechar=§,%
belowskip=\svglstbelowskip,%
}
\lstnewenvironment{svgexample}[1][]{%
@@ -168,35 +192,36 @@ svg-extract -- Extract independent graphic files from SVG pictures
\CodelineIndex
\RecordChanges
\GetFileInfo{svg.dtx}
-\title{The packages \pkg{svg} and \pkg{svg-extract}}
-\author{%
- Philip Ilten (2012--2016) \\
- Falk Hanisch (2017--) \\
- \url{https://github.com/mrpiggi/svg} \\
- \mailto{hanisch.latex@outlook.com}
-}
-\date{\fileversion\nobreakspace(\filedate)}
\begin{document}
- \maketitle
+ \title{The packages \pkg{svg} and \pkg{svg-extract}}
+ \author{%
+ Philip Ilten (2012--2016)\\%
+ Falk Hanisch (2017--)\\%
+ \url{https://github.com/mrpiggi/svg}\\%
+ \mailto{hanisch.latex@outlook.com}%
+ }
+ \date{\fileversion\nobreakspace(\filedate)}
+ \providerobustcmd*\default[1]{\val{\textit{#1}}}
+ \maketitle%
\begin{abstract}
\noindent
The \pkg{svg} package is intended for the automated integration of
SVG~graphics into \LaTeX~documents. Therefor the capabilities provided
by \app{Inkscape}---or more precisely its command~line~interface---are used
to export the text within a SVG~graphic to a separate file, which is
- then rendered by \LaTeX. The two commands \cs{includesvg} and
+ then rendered by \LaTeX{}. The two commands \cs{includesvg} and
\cs{includeinkscape} are provided as central user\hbox{-}interface,
which are very similar to the \cs{includegraphics} command of the
\pkg{graphicx} package.
In addition, the package \pkg{svg-extract} allows the extraction of these
graphics into independent files in different graphic formats, exactly as it
- is rendered within the document. For the creation of these graphics in the
- well\hbox{-}known formats PDF, EPS and~PS, \LaTeX{} and possibly conversion
- tools shipped with the distribution are used. If the graphics are required
- in other file formats, either \app{ImageMagick} or \app{Ghostscript} can be
- invoked.
+ is rendered within the \LaTeX~document. For the creation of these graphics
+ in the well\hbox{-}known formats PDF, EPS and~PS, \LaTeX{} and possibly
+ conversion tools shipped with the distribution are used. If the graphics
+ are required in other file formats, either \app{ImageMagick} or
+ \app{Ghostscript} can be invoked.
\bigskip\noindent%
\fbox{\parbox{\dimexpr\linewidth-(\fboxsep+\fboxrule)*2\relax}{%
@@ -212,30 +237,24 @@ svg-extract -- Extract independent graphic files from SVG pictures
\tableofcontents
\DocInput{\filename}
\end{document}
-%</driver>
+%</dtx>
% \fi
%
% \changes{v1.0}{2004/11/05}{initial version by Philip Ilten}^^A
% \changes{v2.00}{2016/09/23}{new maintainer: Falk Hanisch}^^A
% \changes{v2.00}{2017/03/27}{re-implementation from scratch}^^A
% \changes{v2.00}{2017/03/27}{package \pkg{subfig} not required anymore}^^A
-% \changes{v2.00}{2017/03/27}{support of subfigures stopped due to the huge
+% \changes{v2.00}{2017/03/27}{support of subfigures stopped due to the huge
% number of packages which deal with this topic and the large variety of
% implementing this functionality; naming exported graphics after their
% consecutive numbering can't be ensured for all variants of subfigures, so
% it's neglected}^^A
-% \changes{v2.01}{2017/11/27}{new option \opt{svgextension} to change format of
-% files exported by \app{Inkscape} from \file{svg} to a custom one}^^A
-% \changes{v2.01}{2017/11/28}{usage of \cs{input}\marg{tex filename} within
-% \app{Inkscape}~graphics possible; locates files in all declared searched
-% folders}^^A
+% \changes{v2.01}{2017/11/28}{usage of \cs{input}\marg{tex~filename} within
+% \app{Inkscape}~graphics locates files in all declared searched folders}^^A
% \changes{v2.02}{2018/09/07}{package \pkg{trimspaces} required}^^A
% \changes{v2.02}{2018/09/07}{multiple dots within file names possible}^^A
-% \changes{v2.02}{2018/09/07}{fixed errors with active double qoutes from
+% \changes{v2.02}{2018/09/07}{fixed errors with active double quotes from
% \pkg{babel} in path arguments}^^A
-% \changes{v2.02}{2018/09/07}{distortion of included and extracted graphics
-% supported with options \opt{distort} (or \opt{keepaspectratio}) as well as
-% \opt{extractdistort} and rotation for extractions (\opt{extractangle})}^^A
% \changes{v2.02a}{2018/10/17}{fix bug for package \pkg{polyglossia} which
% fakes \pkg{babel} poorly}^^A
% \changes{v2.02b}{2018/11/12}{fix bug for package \pkg{tikzscale} which
@@ -244,9 +263,11 @@ svg-extract -- Extract independent graphic files from SVG pictures
% name parsing}^^A
% \changes{v2.02d}{2019/10/22}{fix bugs with kernel (2019/10/01) regarding file
% name parsing, see \url{https://github.com/mrpiggi/svg/issues/16}}^^A
-% \changes{v2.02f}{2020/05/06}{new option {inkscapeversion} for explicitly
-% setting \app{Inkscape}-CLI version; automatic detection implemented}^^A
-% \ToDo{Workaround for missing \cs{transparent} (Lua\TeX lacks support)}[v2.03]
+% \changes{v2.02d}{2019/10/22}{conditional invocation of \app{Inkscape} export
+% based on file modification date implemented for Xe\TeX{}}^^A
+% \changes{v2.02f}{2020/05/06}{command~line~interface of \app{Inkscape~1.0}
+% is supported}^^A
+% \changes{v2.02g}{2020/06/12}{fix for mutliple dots in file names (\#27)}^^A
%
%
%
@@ -257,13 +278,13 @@ svg-extract -- Extract independent graphic files from SVG pictures
% the simple and easy creation of images and diagrams using a graphical
% user\hbox{-}interface. The work by Johan\,B.\,C.~Engelen has further enhanced
% the ability of \app{Inkscape} to split a SVG~file into a text component that
-% can be compiled with \LaTeX, and an image component that can be imported as a
-% PDF~file. For further information see the documentation of
+% can be compiled with \LaTeX{}, and an image component that can be imported
+% as a PDF~file. For further information see the documentation of
% \hrfn{http://www.ctan.org/pkg/svg-inkscape}{\pkg{svg-inkscape} on CTAN}.
% The procedure described therein is taken up and consistently expanded. Thus,
% it is now possible to include a SVG~file into a \LaTeX~document where the
-% text within the SVG~graphic will be rendered natively by \LaTeX.
-%
+% text within the SVG~graphic will be rendered natively by \LaTeX{}.
+%
% Both packages \pkg{svg} and \pkg{svg-extract} rely heavily upon executing
% commands on shell using the \cs{ShellEscape} command---or respectively the
% old known \cs{write18}---for executing the CLIs of the applications mentioned
@@ -282,7 +303,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \file{inkscape -V}. Moreover, there are some required packages which are
% loaded by packages \pkg{svg} and \pkg{svg-extract} to provide the
% functionallity. These are:
-% \begin{description}[parsep=.5\smallskipamount]
+% \begin{description}[parsep=\glueexpr\smallskipamount/2\relax]
% \item[\pkg{iftex}]
% for flow control depending on the used \LaTeX~engine
% \item[\pkg{scrbase}]
@@ -323,17 +344,17 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
%
%
-% \section{Usage of package \pkg{svg}}\label{sec:inkscape}
+% \section{Usage of package \pkg{svg}\label{sec:inkscape}}
%
-% The purpose of this package is to include SVG~graphics into a \LaTeX~document.
-% The command \cs{includesvg} is defined which does all necessary steps for
-% this task. It first launches the export of a SVG~file to a supported
-% file~format with Inkscape, if necessary, and includes the exported
-% graphic~file afterwards. The usage and the syntax is quite similiar to the
-% command \cs{includegraphics} from the \pkg{graphicx} package. In fact, the
-% inclusion of the exported graphic~file is done with \cs{includegraphics}.
+% The purpose of this package is to include standalone SVG~graphics into a
+% \LaTeX~document. The command \cs{includesvg} is defined which does all
+% necessary steps for this task. It first launches the export of a SVG~file
+% to a supported file~format with Inkscape, if necessary, and includes the
+% exported graphic~file afterwards. The usage and the syntax is quite similiar
+% to the command \cs{includegraphics} from the \pkg{graphicx} package. In fact,
+% the inclusion of the exported graphic~file is done with \cs{includegraphics}.
%
-% \DescribeOptions{usexcolor,usetransparent,noxcolor,notransparent}
+% \DescribeOptions{usexcolor,usetransparent,noxcolor,notransparent}^^A
% The packages \pkg{xcolor} and \pkg{transparent} are loaded by default at the
% end of package \pkg{svg}. The listed options are intended to prevent these
% packages from loading. They are the only options which have to be given while
@@ -349,27 +370,28 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \subsection{General settings}
%
-% \DescribeMacro{\svgsetup}
+% \DescribeMacro{\svgsetup}^^A
% All other options described in detail below can also be changed after loading
% the package either in the preamble or within the document. They don't have to
% be given as optional argument to \cs{usepackage}\oarg{options}|{svg}| but can
-% be set by using macro \cs{svgsetup}\marg{options} where \marg{options} is a
+% be set by using macro \cs{svgsetup}\marg{options} where \meta{options} is a
% comma separated list of options. Settings with \cs{svgsetup} are done in the
% current scope which means globally or within the current group.
% \begin{svgexample}
% \svgsetup§\marg{options}§
% \end{svgexample}
-% Further, it's possible to reset any setting locally with the optional
-% argument of the commands \cs{includesvg}\oarg{options}\marg{svg filename} or
-% \cs{includesvg}\oarg{options}\marg{graphic filename}.
+% Further, with the optional argument of commands
+% \cs{includesvg}\oarg{options}\marg{svg~filename} or
+% \cs{includeinkscape}\oarg{options}\marg{graphic~filename}, it's possible to
+% reset any setting locally for a certain file.
%
-% \DescribeMacro{\svgpath}
+% \DescribeMacro{\svgpath}^^A
% Most likely you want to organize your SVG~files in a separate folder either
% as a subfolder in the working directory or elsewhere in your local folder
% structure. For this purpose, a list of root paths to SVG~files can be
% specified using the \cs{svgpath} command in the same way as \cs{graphicspath}
% is used. Every path has to be given in a group of braces |{}|---even if there
-% is only one---and terminate with |/| last. For example:
+% is only one---and should terminate with a slash. For example:
% \begin{svgexample}
% \svgpath{{svg/}{/usr/local/svg/}}
% \end{svgexample}
@@ -377,21 +399,23 @@ svg-extract -- Extract independent graphic files from SVG pictures
% afterwards in the absolute path \file{/usr/local/svg/}. Further, if no path
% was specified with \cs{svgpath} or the desired file wasn't found, all
% directories given with \cs{graphicspath} are searched too. Please keep in
-% mind that the current working directory is browsed first in any case. It's
-% recommended to avoid any spaces and/or quotes respectively \cs{dq} both in
-% paths and file~names, especially when DVI~output is active.
+% mind that the current working directory is browsed first in any case.
+% It is recommended to avoid umlauts or any other Non\hbox{-}ASCII characters
+% as well as any spaces and/or quotes respectively \cs{dq} both in paths and
+% file~names. Especially when DVI~output is active using quotes will certainly
+% cause an error.
%
%
%
% \subsection{Options for the invocation of \app{Inkscape}}
%
-% \DescribeOption{inkscape}
+% \DescribeOption{inkscape}^^A
% This option controls, when the export with \app{Inkscape} is invoked and is
-% \val{true} by default.
-% \begin{DescribeValues}
+% \default{true} by default.
+% \begin{DescribeValues}^^A
% \item[false/off/no]
% \app{Inkscape} won't be invoked in any case, no export is done.
-% \item[\textbf{true}/on/yes/newer/onlynewer]
+% \item[\default{true}/on/yes/newer/onlynewer]
% The export with \app{Inkscape} will only be done, if the exported
% graphic~file either does not exist or the file~modification date of the
% SVG~file is newer than that of the exported graphic~file. Thus the
@@ -401,12 +425,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
% The \app{Inkscape}~export will definitely be done, any already existing
% exported file will overwritten regardlessly.
% \end{DescribeValues}
-%
+%
% In addition to controlling the export behavior, the option \opt{inkscape} can
% also be used to make additional settings, which then acts as a wrapper for
% the options described below.
%
-% \begin{DescribeValues}
+% \begin{DescribeValues}^^A
% \item[pdf/eps/ps/png]
% see \opt{inkscapeformat}|=|\val{pdf/eps/ps/png}
% \item[latex/nolatex]
@@ -417,12 +441,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
% see \opt{inkscapedpi}|=|\val{\meta{integer}}
% \end{DescribeValues}
%
-% \DescribeOption{inkscapepath}
+% \DescribeOption{inkscapepath}^^A
% The option \opt{inkscapepath} specifies, where the resulting files of the
-% \app{Inkscape}~export should be located. The subfolder \file{./svg-inkscape/}
-% within the current working directory is used by default
-% (\opt{inkscapepath}|=|\val{basesubdir}).
-% \begin{DescribeValues}
+% \app{Inkscape}~export should be located. The default setting is
+% \default{basesubdir}, which uses the subfolder \file{./svg-inkscape/}
+% within the current working directory.
+% \begin{DescribeValues}^^A
% \item[svgdir/svgpath]
% The PDF/EPS/PS/PNG~graphic~files as well as the \LaTeX~files generated by
% \app{Inkscape} will be located in the same directory as the corresponding
@@ -432,7 +456,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% located in a subfolder named \file{svg-inkscape/}.
% \item[basedir/basepath/jobdir/jobpath]
% All exported files will be located in the current working directory.
-% \item[\textbf{basesubdir}/basesubpath/jobsubdir/jobsubpath]
+% \item[\default{basesubdir}/basesubpath/jobsubdir/jobsubpath]
% A subfolder named \file{svg-inkscape/} within the current working directory
% will be used for files generated by \app{Inkscape}.
% \item[/path/to/somewhere/]
@@ -442,29 +466,32 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \DescribeOption{inkscapeexe}^^A
% For including a SVG~file, \app{Inkscape} is used to separate the text and
-% image from the SVG~file itself. In order to run the command~line~interface
+% image from the SVG~file itself. In order to use the command~line~interface
% on shell, the path where the executable is located has to be known to the
-% operating system. You can check this by typing \file{inkscape -V} into the
-% terminal. If this fails and nothing is returned, you should add the binaray
-% directory of \app{Inkscape} to the environment variable \file{PATH} on your
-% operating system.
+% operating system and its name is assumed to be \val{inkscape} by default.
%
-% If this is not possible or you aren't willing to do so, you can use option
-% \opt{inkscapeexe} \emph{within the document preamble} to set the absolute
-% path where the executable of \app{Inkscape} is located. The option is set to
-% \opt{inkscapeexe}|=|\val{inkscape} by default.
+% You can check if the default setting is valid for your system by typing
+% \file{inkscape -V} into the terminal. If this fails and nothing is returned,
+% you should add the binary directory of \app{Inkscape} to the environment
+% variable \file{PATH} on your operating system. If this is not possible or you
+% aren't willing to do so, you can alternatively use option \opt{inkscapeexe}
+% \emph{within the document preamble} to set the absolute path where the
+% executable of \app{Inkscape} is located.
%
% \DescribeOption{inkscapeversion}^^A
+% \changes{v2.02f}{2020/05/06}{option {inkscapeversion} for explicitly setting
+% \app{Inkscape}-CLI version; automatic detection implemented}^^A
% The command~line~interface of \app{Inkscape} changed slightly from version
% \val{0.9x} to \val{1.x} and makes it necessary to distinguish between the two
% versions. By default, \opt{inkscapeversion}|=|\val{auto} is set and the used
-% version is detected by calling the given \opt{inkscapeexe} described above
-% with parameter~\prm{-V} on shell and evaluating the result by either piping
-%\val{stdout} or eventually writing it to a temporary file and read this back
+% version is automatically detected. This is done by calling \app{Inkscape}-CLI
+% with parameter~\prm{-V} on shell---see option \opt{inkscapeexe} described
+% above. The returned result is evaluated by either piping \val{stdout} or
+% eventually---if this fails---writing to a temporary file and read this back
% in (pipes with a potentially quoted path can not be used with MiK\TeX).^^A
% \footnote{^^A
-% If this fails, the used inkscape version is guessed when \cs{svg@ink@run}
-% is used the very first time.^^A
+% If this fails too, the \app{Inkscape} version is guessed when macro
+% \cs{svg@ink@run} is used the very first time.^^A
% }
% It is also possible to switch off the automatic detection routine by setting
% the desired version manually with either \opt{inkscapeversion}|=|\val{0} to
@@ -472,12 +499,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \DescribeOption{inkscapename}^^A
% The file names of the \app{Inkscape}~export are derived from the name of the
-% base SVG~file by default but can be modified with
-% \opt{inkscapename}|=|\file{\meta{filename}}. It's possible to use counters
-% for specifying the name of the exported file. Repeatedly specifying the same
-% file name will overwrite previously created files.
+% base SVG~file by default. Nevertheless, the name of the exported file can be
+% customized with \opt{inkscapename}|=|\file{\meta{filename}}. It is possible
+% to use counters for specifying the name of the exported file. Repeatedly
+% specifying the same file name will overwrite previously created files.
%
-% \DescribeOption{inkscapeformat}
+% \DescribeOption{inkscapeformat}^^A
% With this option, the \app{Inkscape}~export~format can be controlled. Valid
% values are \val{pdf}, \val{eps}, \val{ps} and \val{png}, where a \LaTeX~export
% is not possible for \val{png} and option \opt{inkscapelatex} won't have any
@@ -485,18 +512,18 @@ svg-extract -- Extract independent graphic files from SVG pictures
% was detected. In this case \opt{inkscapeformat}|=|\val{eps} is the default
% setting.
%
-% \DescribeOption{inkscapelatex}
+% \DescribeOption{inkscapelatex}^^A
% If option \opt{inkscapelatex}|=|\val{true} is set, the output is split into
% a seperate PDF/EPS/PS~file (see option \opt{inkscapeformat}) and a
% corresponding \LaTeX~file. This is the default setting. Setting
% \opt{inkscapelatex}|=|\val{false} will result in a single PDF/EPS/PS~file,
-% where any contained text won't be rendered by \LaTeX.
+% where any contained text won't be rendered by \LaTeX{}.
%
-% \DescribeOption{inkscapearea}
+% \DescribeOption{inkscapearea}^^A
% This option controls which area of the SVG~file should be exported,
-% \val{drawing} is set by default.
-% \begin{DescribeValues}
-% \item[\textbf{drawing}/crop]
+% \default{drawing} is set by default.
+% \begin{DescribeValues}^^A
+% \item[\default{drawing}/crop]
% The area exported corresponds to the bounding box of all objects in a
% drawing, including any that are not on the page.
% \item[page/nocrop]
@@ -504,61 +531,65 @@ svg-extract -- Extract independent graphic files from SVG pictures
% SVG~file.
% \end{DescribeValues}
%
-% \DescribeOption{inkscapedpi}
+% \DescribeOption{inkscapedpi}^^A
% The resolution used either for PNG~export or for fallback rasterization of
% filtered objects when exporting to PDF/EPS/PS~file. For PNG~export it is set
% to 300\,dpi by default, if no value was given. The given value should be a
% positive integer. The default behaviour can be reversed after a given value
% with \opt{inkscapedpi}|=|\val{\cs{relax}}.
%
-% \DescribeOption{inkscapeopt}
+% \DescribeOption{inkscapeopt}^^A
% You can use this option to pass additional switches to the \app{Inkscape}
% command~line~interface. For further information see the documentation of
% \hrfn{https://inkscape.org/de/doc/inkscape-man.html}{\app{Inkscape}}.
%
-% \DescribeOption{svgextension}
+% \DescribeOption{svgextension}^^A
+% \changes{v2.01}{2017/11/27}{option \opt{svgextension} added in order to
+% change the format of files exported by \app{Inkscape} from \file{svg} to
+% a custom one}^^A
% The package assumes SVG~files with \file{.svg} extension as source for the
% \app{Inkscape} export. This option can be used to change this behaviour.
% For example, in order to process \file{.dia} files instead of \file{.svg} you
% could use
% \begin{svgexample}
-% \includesvg[svgextension=dia,§\meta{additional options}§]§\marg{filename}§
+% \includesvg[svgextension=dia,§\meta{additional~options}§]§\marg{filename}§
% \end{svgexample}
%
%
%
% \subsection{Options for the graphic inclusion}
%
-% \DescribeOptions{width,height,distort,scale}
+% \DescribeOptions{width,height,distort,scale}^^A
+% \changes{v2.02}{2018/09/07}{option \opt{distort} (or \opt{keepaspectratio})
+% added for distortion of included graphics}^^A
% The width of the included graphic~file can be specified via the \opt{width}
% option and the height by the \opt{height} option. If both the width and
% height are specified, the figure will be scaled such that neither of the
% specified dimensions is exceeded, unless option \opt{distort}|=|\val{true} is
-% given.\footnote{\ignorespaces%
-% to provide compatibility for package \pkg{graphicx}, it's possible to use
-% \prm{keepaspectratio}|=|\val{true} as alias for \opt{distort}|=|\val{false}
-% and the other way round
-% } If \opt{width} and/or \opt{height} once have been set, this can be undone
+% given.\footnote{to provide compatibility for package \pkg{graphicx}, it's
+% possible to use \prm{keepaspectratio}|=|\val{true} as alias for
+% \opt{distort}|=|\val{false} and the other way round}
+% If \opt{width} and/or \opt{height} once have been set, this can be undone
% by setting them to \val{0pt} or \cs{relax}. If neither \opt{width} nor
% \opt{height} are set, the included graphic~file can also be scaled by setting
% \opt{scale} to a positive real number.
%
-% \DescribeOptions{pretex,apptex}
+% \DescribeOptions{pretex,apptex}^^A
% Commands prior and post to the inclusion of the graphic~file may be desired,
% such as font or color commands. The options \opt{pretex} and \opt{apptex} are
% provided where the \LaTeX~code given to \opt{pretex} is included before the
% graphic~file and \opt{apptex} right afterwards. For example, to change the
% size of the included text one could use:
% \begin{svgexample}
-% \includesvg[pretex=\tiny,§\meta{additional options}§]§\marg{svg filename}§
+% \includesvg[pretex=\tiny,§\meta{additional~options}§]§\marg{svg~filename}§
% \end{svgexample}
%
-% \DescribeOption{draft}
+% \DescribeOption{draft}^^A
% This option can be used with booelan values and is equal to the identically
% named option of the \pkg{graphicx} package. If the \opt{draft} option is
% given to \pkg{graphicx}, it's activated for \pkg{svg} as well.
%
-% \DescribeOption{lastpage}
+% \DescribeOption{lastpage}^^A
% A \hrfn{https://bugs.launchpad.net/ubuntu/+source/inkscape/+bug/1417470}{bug}
% concerning the \LaTeX~export has been reported for \app{Inkscape}\,0.91. It
% may happen that within the exported \LaTeX~file, it's attempted to include
@@ -567,38 +598,41 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% Consequently, the total number of pages is read and only existing PDF~pages
% are included, if both options \opt{inkscapeformat}|=|\val{pdf} and
-% \opt{lastpage}|=|\val{true} are set. This is the default setting and can be
-% switched off with \opt{lastpage}|=|\val{false}. It's also possible to set the
-% number of the last page included of a PDF~graphic manually as optional
-% parameter for \cs{includesvg} or \cs{includeinkscape}. For details, see the
-% description of the respective commands.
+% \opt{lastpage}|=|\val{true} are set. This is the default setting
+% (unless DVI~output is active) and can be switched off with
+% \opt{lastpage}|=|\val{false}. It's also possible to set the number of the
+% last page included of a PDF~graphic manually as optional parameter for
+% \cs{includesvg} or \cs{includeinkscape}. For details, see the description of
+% the respective commands.
%
%
%
% \subsection{Including SVG~files}
%
-% \DescribeMacro{\includesvg}
+% \DescribeMacro{\includesvg}^^A
% The command \cs{includesvg} to include a SVG~file is quite similar to the
% \cs{includegraphics} command provided by the \pkg{graphicx} package.
% \begin{svgexample}
-% \includesvg§\oarg{parameters}\marg{svg filename}§
+% \includesvg§\oarg{parameters}\marg{svg~filename}§
% \end{svgexample}
%
-% \begin{DescribeParameterParent}{Macro}{\includesvg}
-% \DescribeParameters{%
-% inkscape,inkscapeformat,inkscapelatex,inkscapearea,inkscapedpi,inkscapeopt,%
-% svgextension,width,height,distort,scale,pretex,apptex,draft,%
-% }
-% It is used right in the same way but where \marg{svg filename} is the
+% \begin{DescribeParameterParent}{Macro}{\includesvg}^^A
+% \DescribeParameters{inkscape,inkscapeformat,inkscapelatex,inkscapearea,^^A
+% inkscapedpi,inkscapeopt,svgextension,width,height,distort,scale,^^A
+% pretex,apptex,draft}^^A
+% It is used right in the same way but where \meta{svg~filename} is the
% file~name of the SVG~file, where any given file~extension will be replaced
% with \file{.svg} ruthlessly. In order to change the source file format for
% the \app{Inkscape} export, you have to use parameter \prm{svgextension}.
%
% If the given file is not located in the current working directory but
% elsewhere on your file~system, the command \cs{svgpath} could be used to
-% specify this path. It is recommended to avoid any spaces and/or quotes
-% respectively \cs{dq} both in paths an file~names. Espacially when DVI~output
-% is active using quotes will certainly cause an error.
+% specify this path.
+% \ToDo{reference to general note at the very beginning instead}[v2.03]^^A
+% It is recommended to avoid umlauts or any other Non\hbox{-}ASCII characters
+% as well as any spaces and/or quotes respectively \cs{dq} both in paths and
+% file~names. Especially when DVI~output is active using quotes will certainly
+% cause an error.
%
% The command \cs{includesvg} is intended to do an automated export with
% \app{Inkscape} at first, where the given SVG~file is exported to a
@@ -607,19 +641,19 @@ svg-extract -- Extract independent graphic files from SVG pictures
% invoked, if the SVG~file is newer than the exported graphic~file or latter
% doesn't exist at all. Once the export has been done, the graphic~file and
% maybe the \LaTeX~file are included.
-%
+%
% All previously described options can also be used as optional parameters to
% \cs{includesvg} and do have the same effect as described before. However, the
% optional parameters specified have an effect only once when \cs{includesvg}
% is executed and remain unchanged afterwards.
%
-% \DescribeParameter{lastpage}
+% \DescribeParameter{lastpage}^^A
% In addition to the use of boolean values, the parameter \prm{lastpage} can
% also be assigned a specific (integer) page number, which defines the last
% used page of a PDF~graphic. This, just like the identically named option, has
% an effect only when \prm{inkscapeformat}|=|\val{pdf} is set.
%
-% \DescribeParameters{angle,origin}
+% \DescribeParameters{angle,origin}^^A
% Both parameters correlate to the identically named parameters of the
% \cs{includegraphics} command provided by the \pkg{graphicx} package. However,
% unlike to \cs{includegraphics}, they \prm{angle} and \prm{origin} are
@@ -633,20 +667,18 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \subsection{Including already exported SVG~files}
%
-% \DescribeMacro{\includeinkscape}
+% \DescribeMacro{\includeinkscape}^^A
% If you don't want to make use of the automated export with \app{Inkscape} but
% the user\hbox{-}interface provided by the \pkg{svg} package, you can use
% \cs{includeinkscape} instead of \cs{includesvg}.
% \begin{svgexample}
-% \includeinkscape§\oarg{parameters}\marg{graphic filename}§
+% \includeinkscape§\oarg{parameters}\marg{graphic~filename}§
% \end{svgexample}
%
-% \begin{DescribeParameterParent}{Macro}{\includeinkscape}
-% \DescribeParameters{%
-% inkscapeformat,inkscapelatex,%
-% width,height,distort,scale,pretex,apptex,draft,lastpage,angle,origin,%
-% }
-% You can use it similar to \cs{includesvg} but \marg{graphic filename} has to
+% \begin{DescribeParameterParent}{Macro}{\includeinkscape}^^A
+% \DescribeParameters{inkscapeformat,inkscapelatex,width,height,distort,^^A
+% scale,pretex,apptex,draft,lastpage,angle,origin}^^A
+% You can use it similar to \cs{includesvg} but \meta{graphic~filename} has to
% be the filename of the already exported graphic file. If a valid
% file~extension (\file{.pdf/.eps/.ps/.png}) is given, the current setting for
% \opt{inkscapeformat} is overwritten. It's even possible to specify a
@@ -668,13 +700,13 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% In order to extract to PDF, EPS, or PS~files the programs \file{pstoeps},
% \file{pstopdf} and \file{pdftops} are used which are usually provided by most
-% of the \LaTeXe~distributions. In additon, the command~line~interfaces of
+% of the \LaTeX~distributions. In additon, the command~line~interfaces of
% \app{ImageMagick} and \app{Ghostscript} can be invoked for converting images
% in formats like PNG, JPG, TIF or something else. It's also possible to create
% PDF, EPS or PS~files with one of the two programs. Therefor the desired
% program---\file{magick} and/or \file{gswin32c}/\file{gswin64c} on Windows
% respectively \file{convert} and/or \file{gs} on unix-like operating
-% systems---must be installed. By typing \file{\meta{program} -{}-version} on
+% systems---must be installed. By typing \file{\meta{program}~-{}-version} on
% shell, this can be checked.
%
% If you want to extract independent graphic~files from included SVG~files, you
@@ -688,7 +720,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% In contrast to package \pkg{svg}, the console commands for graphic extraction
% are executed with each LaTeX run by package \pkg{svg-extract} when
-% \file{-{}-shell-escape} mode is activated. This behaviour can be switched of
+% \file{-{}-shell-escape} mode is activated. This behaviour can be switched off
% with option \opt{extract}|=|\val{false}.
%
% \minisec{Important changes}
@@ -699,13 +731,13 @@ svg-extract -- Extract independent graphic files from SVG pictures
% different \LaTeX~packages which all provide the possibility to include
% subfigures with very different implemetations, this feature can't be provided
% reliably by \pkg{svg-extract}. See option \opt{extractname} for further
-% information.
+% information.
%
%
%
% \subsection{General settings}
%
-% \DescribeOptions{on,off}
+% \DescribeOptions{on,off}^^A
% This options have to be given while loading the \pkg{svg-extract} package and
% are intended to toggle the functionality of this package. As both extracting
% and converting independent graphic~files is invoked with every \LaTeX~run
@@ -715,80 +747,76 @@ svg-extract -- Extract independent graphic files from SVG pictures
% used to reactivate functionality of this package. This can also be done by
% using \opt{extract}|=|\val{true}/\val{false}.
%
-% \DescribeMacros{\svgsetup,\includesvg,\includeinkscape}
+% \DescribeMacros{\svgsetup,\includesvg,\includeinkscape}^^A
% With package \pkg{svg-extract} the applicable options for
% \cs{svgsetup}\marg{options} as well as parameters for the already described
-% macros \cs{includesvg}\oarg{parameters}\marg{filename} and
-% \cs{includeinkscape}\oarg{parameters}\marg{filename} are extended. They can
-% be used to control the process of graphic extraction and converting.
-%
-% \begin{DescribeParameterParent}{Macro}{\includesvg}
-% \DescribeParameters{extractangle}
-% With this parameter the graphic is rotated during the extraction process. The
-% value is not inherited from \prm{angle} if it was given by default. this can
-% be achieved by setting:
-% \begin{svgexample}
-% \includesvg[angle=§\meta{angle}§,extractangle=inherit]§\marg{filename}§
-% \end{svgexample}
-% \end{DescribeParameterParent}
+% macros \cs{includesvg}\oarg{parameters}\marg{svg~filename} and
+% \cs{includeinkscape}\oarg{parameters}\marg{graphic~filename} are extended.
+% They can be used to control the process of graphic extraction and converting.
%
% All option described below can be used togehter with \cs{svgsetup} and are
% then valid in the current scope. There also exist identically named
% parameters for the optional arguments of
% \begin{svgexample}
-% \includesvg§\oarg{parameters}\marg{svg filename}§
-% \includeinkscape§\oarg{parameters}\marg{graphic filename}§
+% \includesvg§\oarg{parameters}\marg{svg~filename}§
+% \includeinkscape§\oarg{parameters}\marg{graphic~filename}§
% \end{svgexample}
-% These parameters have an effect only once when the specific command is
-% executed and remain unchanged afterwards.
-% \begingroup\ignorespaces%
-% \newcommand*\parameterlist{}\ignorespaces%
-% \listadd\parameterlist{extract}\ignorespaces%
-% \listadd\parameterlist{extractpreamble}\ignorespaces%
-% \listadd\parameterlist{extractformat}\ignorespaces%
-% \listadd\parameterlist{extractruns}\ignorespaces%
-% \listadd\parameterlist{latexopt}\ignorespaces%
-% \listadd\parameterlist{extractwidth}\ignorespaces%
-% \listadd\parameterlist{extractheight}\ignorespaces%
-% \listadd\parameterlist{extractdistort}\ignorespaces%
-% \listadd\parameterlist{extractscale}\ignorespaces%
-% \listadd\parameterlist{extractangle}\ignorespaces%
-% \listadd\parameterlist{extractpretex}\ignorespaces%
-% \listadd\parameterlist{extractapptex}\ignorespaces%
-% \listadd\parameterlist{convert}\ignorespaces%
-% \listadd\parameterlist{convertformat}\ignorespaces%
-% \listadd\parameterlist{convertdpi}\ignorespaces%
-% \listadd\parameterlist{magicksetting}\ignorespaces%
-% \listadd\parameterlist{magickoperator}\ignorespaces%
-% \listadd\parameterlist{gsopt}\ignorespaces%
-% \listadd\parameterlist{gsdevice}\ignorespaces%
-% \listadd\parameterlist{clean}\ignorespaces%
-% \listadd\parameterlist{exclude}\ignorespaces%
-% \def\buffer{}\def\do#1{\buffer\prm{#1}\def\buffer{, }}\ignorespaces%
-% These parameters are: \dolistloop{\parameterlist}.
-% \renewcommand*\marginpar[2][]{}\ignorespaces%
-% \def\do#1{\DescribeParameter{#1}}\ignorespaces%
-% \begin{DescribeParameterParent}{Macro}{\includesvg}%
-% \dolistloop{\parameterlist}%
-% \end{DescribeParameterParent}%
-% \begin{DescribeParameterParent}{Macro}{\includeinkscape}%
-% \dolistloop{\parameterlist}%
-% \end{DescribeParameterParent}%
-% \endgroup%
-%
-%
-%
-% \subsection{Extract independent grahic files}\label{sec:extract}
-% \DescribeOption{extract}
+% These have an effect only once, when the specific command is executed.
+%^^A \begingroup^^A
+%^^A \newcommand*\parameterlist{}^^A
+%^^A \listadd\parameterlist{extract}^^A
+%^^A \listadd\parameterlist{extractpreamble}^^A
+%^^A \listadd\parameterlist{extractformat}^^A
+%^^A \listadd\parameterlist{extractwidth}^^A
+%^^A \listadd\parameterlist{extractheight}^^A
+%^^A \listadd\parameterlist{extractdistort}^^A
+%^^A \listadd\parameterlist{extractscale}^^A
+%^^A \listadd\parameterlist{extractangle}^^A
+%^^A \listadd\parameterlist{extractpretex}^^A
+%^^A \listadd\parameterlist{extractapptex}^^A
+%^^A \listadd\parameterlist{extractruns}^^A
+%^^A \listadd\parameterlist{latexexe}^^A
+%^^A \listadd\parameterlist{latexopt}^^A
+%^^A \listadd\parameterlist{latexext}^^A
+%^^A \listadd\parameterlist{dvipsopt}^^A
+%^^A \listadd\parameterlist{pstoepsopt}^^A
+%^^A \listadd\parameterlist{pstopdfopt}^^A
+%^^A \listadd\parameterlist{pdftoepsopt}^^A
+%^^A \listadd\parameterlist{pdftopsopt}^^A
+%^^A \listadd\parameterlist{convert}^^A
+%^^A \listadd\parameterlist{convertformat}^^A
+%^^A \listadd\parameterlist{convertdpi}^^A
+%^^A \listadd\parameterlist{magicksetting}^^A
+%^^A \listadd\parameterlist{magickoperator}^^A
+%^^A \listadd\parameterlist{gsopt}^^A
+%^^A \listadd\parameterlist{gsdevice}^^A
+%^^A \listadd\parameterlist{clean}^^A
+%^^A \listadd\parameterlist{exclude}^^A
+%^^A \def\buffer{}\def\do#1{\buffer\prm{#1}\def\buffer{, }}^^A
+%^^A These parameters are: \dolistloop{\parameterlist}.
+%^^A \renewcommand*\marginpar[2][]{}^^A
+%^^A \def\do#1{\DescribeParameter{#1}}^^A
+%^^A \begin{DescribeParameterParent}{Macro}{\includesvg}^^A
+%^^A \dolistloop{\parameterlist}^^A
+%^^A \end{DescribeParameterParent}^^A
+%^^A \begin{DescribeParameterParent}{Macro}{\includeinkscape}^^A
+%^^A \dolistloop{\parameterlist}^^A
+%^^A \end{DescribeParameterParent}^^A
+%^^A \endgroup^^A
+%
+%
+%
+% \subsection{Extract independent grahic files\label{sec:extract}}
+%
+% \DescribeOption{extract}^^A
% This option can be used with boolean values. Using \opt{extract}|=|\val{true}
% activates the functionality for both extracting and converting which is the
% default setting, whereas \opt{extract}|=|\val{false} turns it off completely.
%
-% \DescribeOption{extractpath}
+% \DescribeOption{extractpath}^^A
% The path where the extracted and converted files are located can be specified
-% with option \opt{extractpath}, whereas \opt{extractpath}|=|\val{basesubdir}
-% is set by default.
-% \begin{DescribeValues}
+% with option \opt{extractpath}, whereas \default{basesubdir} is set by default.
+% \begin{DescribeValues}^^A
% \item[svgdir/svgpath]
% The extracted and converted independent graphic~files are located in the
% same directory as the corresponding SVG~file.
@@ -798,7 +826,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \item[basedir/basepath/jobdir/jobpath]
% All extracted and converted files will be located in the current working
% directory.
-% \item[\textbf{basesubdir}/basesubpath/jobsubdir/jobsubpath]
+% \item[\default{basesubdir}/basesubpath/jobsubdir/jobsubpath]
% A subfolder named \file{svg-extract/} within the current working directory
% will be used for all extracted and converted files.
% \item[/path/to/somewhere/]
@@ -806,58 +834,57 @@ svg-extract -- Extract independent graphic files from SVG pictures
% working directory (\file{./relative/path/}) or as an absolute path.
% \end{DescribeValues}
%
-% \DescribeOption{extractname}
+% \DescribeOption{extractname}^^A
% It's also possible to change the name for extracted and converted files. The
-% default setting is \opt{extractname}|=|\val{filenamenumbered}.
-% \begin{DescribeValues}
+% default setting is \opt{extractname}|=|\val{filenamenumbered}. The appended
+% file extension is derived from option \opt{extractformat}.
+% \begin{DescribeValues}^^A
% \item[filename/name]
% The name of the exported \app{Inkscape}~file is used and the suffix
% \file{-extract} is attached.
-% \item[\textbf{filenamenumbered}/namenumbered/numberedfilename/numberedname]
-% Same as above, but a prefix with the count of extracted files is used
-% instead of the suffix.
+% \item[\default{filenamenumbered}/namenumbered/numberedfilename/numberedname]
+% Same as above, but a prefix with the current enumerated count of SVG~files
+% is used instead of the suffix.
% \item[numbered/section/numberedsection/sectionnumbered]
-% The file name is composed by the number of extracted files and the current
-% outline numbering.
-% \item[\meta{filename}]
-% You can use any file name, the file extension is derived from option
-% \opt{extractformat}. It's possible to use counters for specifying the
+% The file name is composed by the current enumerated count of SVG~files and
+% the present outline numbering.
+% \item[\file{\meta{filename}}]
+% You can use any file name. It's possible to use counters for specifying the
% name of the extracted file. Repeatedly specifying the same file name will
% overwrite previously created files.
% \end{DescribeValues}
%
-% \DescribeOption{extractformat}
-% The included SVG~file can be extracted from the document into a independent
+% \DescribeOption{extractformat}^^A
+% The included SVG~file can be extracted from the document into an independent
% graphic~file of type PDF, EPS or PS. The option can be used with either a
% single value (\opt{extractformat}|=|\val{pdf}) or a comma separated list.
% For example,
% \begin{svgexample}
-% \includesvg[extractformat={pdf,eps,ps}]§\marg{svg filename}§
+% \includesvg[extractformat={pdf,eps,ps}]§\marg{svg~filename}§
% \end{svgexample}
% will extract the SVG~file to both PDF and EPS~formats and generates two
% independent graphic~files. By default, \opt{extractformat}|=|\val{pdf} is set
% unless DVI~output was detected. In this case \opt{extractformat}|=|\val{eps}
% is the default setting.
%
-% \DescribeOptions{%
-% extractwidth,extractheight,extractdistort,extractscale,
-% extractpretex,extractapptex,%
-% }
+% \DescribeOptions{extractwidth,extractheight,extractdistort,extractscale,^^A
+% extractpretex,extractapptex}^^A
+% \changes{v2.02}{2018/09/07}{option \opt{extractdistort} added for distortion
+% of extracted graphics}^^A
% These options can be used to overwrite the settings given for the appearance
% of a SVG~file within the document. For example, a SVG~file should cover the
-% entire text width within the document but be extracted to a fixed width, this
+% entire text width within the document but be extracted to a fixed width. This
% can be done with:
% \begin{svgexample}
-% \includesvg[width=\textwidth,extractwidth=500pt]§\marg{svg filename}§
+% \includesvg[width=\textwidth,extractwidth=500pt]§\marg{svg~filename}§
% \end{svgexample}
% Assigning the value \val{inherit} to one of these options---which is set by
% default---leads to the usage of the corresponding option of package \pkg{svg}
% (\opt{width}/\opt{height}/\opt{scale}/\opt{pretex}/\opt{apptex}), whereas
% \opt{extract\dots}|=|\val{\cs{relax}} can be used to ignore a parent option
-% utterly. Only option \opt{extractdistort} is initialized to \val{false} and
-% does not inherit from \opt{distort} by default.
+% utterly.
%
-% \DescribeOptions{extractpreamble,extractpreambleend}
+% \DescribeOptions{extractpreamble,extractpreambleend}^^A
% Within the included and extracted SVG~files any \LaTeX~macro can be used
% either defined by the user---this should be done in the preamble of the
% \LaTeX~document in which the SVG~file is to be included---or provided by a
@@ -865,7 +892,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% auxiliary \LaTeX~file all used packages and commands have to be known within
% this file. Consequently, the preamble of the current \LaTeX~document is used
% for the extraction of the SVG~file by default.
-%
+%
% However, it is possible to specify a different \emph{preamble~file} with the
% option \opt{extractpreamble} where the file to use as the preamble is given
% as the argument---including maybe path, but file~name and file~extension in
@@ -877,7 +904,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% option \opt{extractpreambleend} will be used, which is set to a default with
% \cs{begin}|{document}|.
%
-% \DescribeMacros{\svghidepreamblestart,\svghidepreambleend}
+% \DescribeMacros{\svghidepreamblestart,\svghidepreambleend}^^A
% In case, the preamble of the current \LaTeX~document is used, there are maybe
% packages included or some parts within the preamble, which should not be used
% within the separate auxiliary \LaTeX~file. These parts can be excluded if
@@ -897,33 +924,33 @@ svg-extract -- Extract independent graphic files from SVG pictures
% §\dots§
% \end{svgexample}
%
-% \DescribeOption{extractruns}
+% \DescribeOption{extractruns}^^A
% When extracting independent grahic~files by compiling the generated auxiliary
-% \LaTeX~file, it's maybe necessary to do multiple \LaTeX~runs on this file.
-% The number of runs can be controlled with option \opt{extractruns}. It's set
-% to \opt{extractruns}|=|\val{2} by default.
+% \LaTeX~file, it's maybe necessary to do multiple \LaTeX~iterations on this.
+% The number of iterations is controlled with option \opt{extractruns}. It is
+% set to \opt{extractruns}|=|\val{2} by default.
%
-% \DescribeOptions{latexexe,latexopt,latexext}
+% \DescribeOptions{latexexe,latexopt,latexext}^^A
% For the extraction of an independent grahic~file, the \LaTeX~program is used
% which is set by the \opt{latexexe} option. Depending on the \LaTeX~engine
% used for the current \LaTeX~document, it is set to either \app{pdflatex},
% \app{lualatex}, \app{xelatex} or \app{latex} by default. It's also possible
-% to specify additional flags or switches for the \LaTeX~runs, which are
+% to specify additional flags or switches for the \LaTeX~iterations, which are
% performed during the extraction process by the \opt{latexopt} option. If you
-% are used to utilize a other file~extension for \LaTeX~files than \file{.tex},
+% are used to utilize a different extension for \LaTeX~files than \file{.tex},
% option \opt{latexext} can be used like \opt{latexext}|=|\val{ltx}.
%
-% \DescribeOptions{dvipsopt,pstoepsopt,pstopdfopt,pdftoepsopt,pdftopsopt}
+% \DescribeOptions{dvipsopt,pstoepsopt,pstopdfopt,pdftoepsopt,pdftopsopt}^^A
% Depending on the used \LaTeX~engine, the file~type of the extracted
% graphic differs. In order to create all formats, requested with option
% \opt{extractformat}, several converting tools provided by most of the
-% \LaTeXe~distributions are maybe invoked. These are \file{dvips},
+% \LaTeX~distributions are maybe invoked. These are \file{dvips},
% \file{ps2eps}, \file{ps2pdf} and/or \file{pdftops} and can't be changed. It's
% only possible to specify additional switches for every single tool with
% \opt{dvipsopt}, \opt{pstoepsopt}, \opt{pstopdfopt}, \opt{pdftoepsopt} and
% \opt{pdftopsopt}.
%
-% \DescribeOption{clean}
+% \DescribeOption{clean}^^A
% During the extraction process many files are generated for each SVG~file
% extraction. So it's oftentimes desirable to automatically remove these
% temporary files. Using the option \opt{clean}|=|\val{true} will remove any
@@ -933,28 +960,51 @@ svg-extract -- Extract independent graphic files from SVG pictures
% file~extensions in order to specify auxiliary files generated by package
% \pkg{svg-extract} to be deleted, for example \opt{clean}|=|\val{\{log,aux\}}.
%
-% \DescribeOption{exclude}
+% \DescribeOption{exclude}^^A
% Sometimes it may be necessary to extract and/or convert a SVG~file without
% including it. If the flag \opt{exclude} is specified, the SVG~file will not
% be rendered in the current \LaTeX~document, but will be extracted and/or
% converted to the requested output format(s).
%
+% \DescribeMacros{\includesvg,\includeinkscape}^^A
+% As previously mentioned, for extracting independent graphic files it is
+% sufficient to load package \pkg{svg-extract} and afterwards everything
+% necassary is done by just using \cs{includesvg} or \cs{includeinkscape}.
+%
+% \begin{DescribeParameterParent}{Macro}{\includesvg}^^A
+% \DescribeParameter{extractangle}^^A
+% \begin{DescribeParameterParent}{Macro}{\includeinkscape}^^A
+% \renewcommand*\marginpar[2][]{}^^A
+% \DescribeParameter{extractangle}^^A
+% \changes{v2.02}{2018/09/07}{parameter \prm{extractangle} for \cs{includesvg}
+% and \cs{includeinkscape} implemented in order to rotate graphics during
+% extractions}^^A
+% With this additional parameter the graphic is rotated during the extraction
+% process. The value is not inherited from \prm{angle} if it was given by
+% default. This can be achieved by setting:
+% \begin{svgexample}
+% \includesvg[angle=§\meta{angle}§,extractangle=inherit]§\marg{svg~filename}§
+% \end{svgexample}
+% \end{DescribeParameterParent}
+% \end{DescribeParameterParent}
+%
+%
%
+% \subsection{Convert extracted grahic files\label{sec:convert}}
%
-% \subsection{Convert extracted grahic files}\label{sec:convert}
-%
% Based on the extraction of independent graphic~files, the \pkg{svg-extract}
-% packages also provides the possibility to convert those extracted graphics in
+% packages also provides the possibility to convert these extracted graphics in
% another format than PDF, EPS or PS with either \app{ImageMagick}---which is
% set by default---or \app{Ghostscript}.
%
-% \DescribeOption{convert}
+% \DescribeOption{convert}^^A
% This option can be used to control the invocation of the conversion process.
% By default, \opt{convert}|=|\val{false} is set. For Windows, there exist two
% different versions of \app{Ghostscript}, either 64\,bit or 32\,bit. If
% it is selected as converting tool the 64\,bit~executable is set by default.
-% \begin{DescribeValues}
-% \item[\textbf{false}/off/no]
+% Please note, that option \opt{extract} has to be activated.
+% \begin{DescribeValues}^^A
+% \item[\default{false}/off/no]
% No conversion is done.
% \item[true/on/yes]
% The conversion will be done with the current chosen converting tool.
@@ -970,8 +1020,8 @@ svg-extract -- Extract independent graphic files from SVG pictures
% The same as for the latter case applies, only option
% \opt{gsexe}|=|\val{gswin32c} is set on Windows.
% \end{DescribeValues}
-%
-% \DescribeOption{convertformat}
+%
+% \DescribeOption{convertformat}^^A
% With this option, the desired output format(s) can be given. Multiple graphic
% formats can be specified in a list, for example something like
% \opt{convertformat}|=|\val{\{png,jpg,tif\}}. The value specified in
@@ -993,7 +1043,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% desired output~format is trailed with |+| as inner key.
%
% The first variant is applied to all output formats in general. If one of
-% these mentioned options is evaluated and a output format specific value was
+% these mentioned options is evaluated and an output format specific value was
% given like in the second variant, the general setting is overwritten. If the
% general setting should be used and extended by an additional output format
% specific settings, then the third variant is to be used. In this case, no
@@ -1004,7 +1054,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% or a specific one
% (\opt{\meta{option}}|=|\val{\{\meta{outputformat}[+]=\cs{relax}\}}).
%
-% \DescribeOption{convertdpi}
+% \DescribeOption{convertdpi}^^A
% This option controls the used density for all file~formats or a specific one,
% whether \app{ImageMagick} or \app{Ghostscript} is used for the graphic
% conversion. The desired resolution of the converted file is given in dots per
@@ -1033,9 +1083,10 @@ svg-extract -- Extract independent graphic files from SVG pictures
% the used conversion tool and not to the processing of the option.
%
%
+%
% \subsubsection{Settings for the invocation of \app{ImageMagick}}
%
-% \DescribeOptions{magickexe,magicksetting,magickoperator}
+% \DescribeOptions{magickexe,magicksetting,magickoperator}^^A
% The conversion with \app{ImageMagick} via the \file{magick} or \file{convert}
% command~line~interface can be controlled with these options. The option
% \opt{magickexe} determines the used executable and is set to \file{magick} on
@@ -1046,13 +1097,14 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \opt{magickoperator} can be set for all output formats or a \emph{specific}
% one either resetting or extending the general settings. For further
% information see the documentation of
-% \hrfn{http://www.imagemagick.org/script/command-line-processing.php}%
+% \hrfn{http://www.imagemagick.org/script/command-line-processing.php}^^A
% {\app{ImageMagick} command~line~interface}.
%
%
+%
% \subsubsection{Settings for the invocation of \app{Ghostscript}}
%
-% \DescribeOptions{gsexe,gsdevice,gsopt}
+% \DescribeOptions{gsexe,gsdevice,gsopt}^^A
% The conversion with \app{Ghostscript} is done with command~line~interface
% \file{gswin64c} or \file{gswin32c} on Windows and \file{gs} on unix-like
% operating systems. The executable can be changed with option \opt{gsexe}.
@@ -1073,14 +1125,14 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
%
%
+% \cleardoublepage
% \section{Example}
%
-% As an minimal example\footnote{\ignorespaces%
-% The image used here is a slightly modified version of the image used in the
-% initial documentation on how to include a SVG~file in \LaTeX{} by
-% Johan\,B.\,C.~Engelen available as package
-% \href{http://www.ctan.org/pkg/svg-inkscape}{\pkg{svg-inkscape} on CTAN}.
-% } take the following lines of code:
+% As an minimal example\footnote{The image used here is a slightly modified
+% version of the image used in the initial documentation on how to include a
+% SVG~file in \LaTeX{} by Johan\,B.\,C.~Engelen available as package
+% \href{http://www.ctan.org/pkg/svg-inkscape}{\pkg{svg-inkscape} on CTAN}.}
+% take the following lines of code:
% \begin{svgexample}
% \documentclass{article}
% \usepackage[T1]{fontenc}
@@ -1092,58 +1144,59 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \usepackage{subcaption}
% \begin{document}
% \begin{figure}
-% \begin{minipage}{.5\linewidth}
+% \begin{minipage}{\dimexpr\linewidth/2\relax}
% \includesvg[width=\linewidth]{svg-example}%
-% \subcaption{This text is too large!}
+% \subcaption{This text is too large!}%
% \end{minipage}%
-% \begin{minipage}{.5\linewidth}
+% \begin{minipage}{\dimexpr\linewidth/2\relax}
% \includesvg[width=\linewidth,pretex=\relscale{0.6}]{svg-example}%
-% \subcaption{This text fits better.}
+% \subcaption{This text fits better.}%
% \end{minipage}
-% \caption{An example figure with \LaTeX~support}\label{fig:example}
+% \caption{An example figure with \LaTeX~support\label{fig:example}}%
% \end{figure}
% \begin{figure}\centering
% \includesvg[%
% width=.5\linewidth,inkscapelatex=false,extractformat={pdf,eps}%
% ]{svg-example}%
-% \caption{The same example figure without \LaTeX~support}
+% \caption{The same example figure without \LaTeX~support}%
% \end{figure}
% \end{document}
% \end{svgexample}
% \begin{figure}[tb]
-% \null\hfill\ignorespaces%
-% \begin{minipage}{.45\linewidth}
-% \includesvg[width=\linewidth]{svg-example}%
-% \subcaption{This text is too large!}\label{fig:example-tex-a}
-% \end{minipage}\hfill\ignorespaces%
-% \begin{minipage}{.45\linewidth}
-% \includesvg[width=\linewidth,pretex=\relscale{0.6}]{svg-example}%
-% \subcaption{This text fits better.}\label{fig:example-tex-b}
+% \null\hfill^^A
+% \begin{minipage}{\dimexpr\linewidth*9/20\relax}
+% \includesvg[width=\linewidth]{svg-example}^^A
+% \subcaption{This text is too large!\label{fig:example-tex-a}}^^A
+% \end{minipage}\hfill^^A
+% \begin{minipage}{\dimexpr\linewidth*9/20\relax}
+% \includesvg[width=\linewidth,pretex=\relscale{0.6}]{svg-example}^^A
+% \subcaption{This text fits better.\label{fig:example-tex-b}}^^A
% \end{minipage}
-% \hfill\null\ignorespaces%
-% \caption{An example figure with \LaTeX~support}\label{fig:example-tex}
+% \hfill\null^^A
+% \caption{An example figure with \LaTeX~support\label{fig:example-tex}}^^A
% \end{figure}
% \begin{figure}[tb]\centering
-% \includesvg[%
-% width=.5\linewidth,inkscapelatex=false,extractformat={pdf,eps}%
-% ]{svg-example}%
-% \caption{The same example figure without \LaTeX~support}\label{fig:example}
+% \includesvg[^^A
+% width=.5\linewidth,inkscapelatex=false,extractformat={pdf,eps}^^A
+% ]{svg-example}^^A
+% \caption{^^A
+% The same example figure without \LaTeX~support\label{fig:example}^^A
+% }^^A
% \end{figure}
%
-% If you are willing to compile the example, there are two aspects to consider.
-% First, the included SVG~file \file{svg-example.svg} has to be located in the
-% current folder and is located in \file{\meta{texmf}/doc/latex/svg/examples/}.
-% Second, you have to run the desired \LaTeX~engine with
-% \file{-{}-shell-escape} option enabled.
-%
% The output is shown in \autoref{fig:example-tex} and \autoref{fig:example}.
% Within this example the file \file{svg-example.svg} was included three times
% using the \cs{includesvg} command.
-%
+%
+% If you are willing to compile the example, there are two aspects to consider.
+% First, the included SVG~file \file{svg-example.svg} has to be located in the
+% current folder and is located in \file{\meta{texmf}/doc/latex/svg/}. Second,
+% you have to run the desired \LaTeX~engine with flag \file{-{}-shell-escape}.
+%
% As you can see, \autoref{fig:example-tex-a} is created with default settings,
-% except for the width specification. So the \app{Inkscape}~export with
-% \LaTeX~support is done as well as the extraction of a independent graphic~file
-% in PDF~format as the \pkg{svg-extract} package was loaded.
+% except the width specification. The \app{Inkscape}~export with \LaTeX~support
+% is done and the extraction of an independent graphic~file in PDF~format as
+% the \pkg{svg-extract} package was loaded.
%
% However, the text is slightly overrunning the margins of the image, and so
% \autoref{fig:example-tex-b}---which again uses the same \app{Inkscape}~export
@@ -1177,7 +1230,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% |Package svg Info:| or |Package svg-extract Info:|
% \end{quote}
% Right afterwards, there should appear |runsystem(<command>)...excuted.| which
-% you should try to execute manually from terminal in the right directory. In
+% you should try to execute manually at the terminal in the right directory. In
% most cases, the problem will be an invalid command call. If something goes
% wrong during the extraction/converting process of package \pkg{svg-extract},
% it would make sense to set option \opt{clean}|=|\val{false} to not delete any
@@ -1190,9 +1243,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \minisec{When using pdf\LaTeX{} there are a lot of warnings}
%
% It may happen that several warnings like
-% \begin{quote}\ttfamily\raggedright%
+% \begin{quote}\ttfamily\raggedright^^A
% pdfTeX warning:\,pdflatex.exe(file \meta{filename}.pdf):\,PDF inclusion:
-% multiple pdfs with page group included in a single page
+% multiple pdfs with page group included in a single page^^A
% \end{quote}
% occur when including the PDF~graphics exported with \app{Inkscape}. This is
% related to the handling of transparency effects within PDF~files. Since
@@ -1206,7 +1259,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \section{Include SVG files created with \app{ROOT}}
%
% This section was originally written by Philip Ilten. In the hope that since
-% then nothing has changed fundamentally in the described procedure, this
+% then nothing has changed fundamentally in the described procedure. This
% passage remains in the documentation, even if it will almost certainly be
% relevant to experimental particle physicists only, who frequently use the
% analysis package \app{ROOT}.
@@ -1257,7 +1310,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% Consider the following example image produced by \app{ROOT} in
% \autoref{fig:root}. This figure was generated by the \app{ROOT} macro
-% \file{root.C}, provided within \file{\meta{texmf}/doc/latex/svg/examples/},
+% \file{root.C}, provided within \file{\meta{texmf}/doc/latex/svg/},
% which produces the file~\file{root.svg} when run. The code used to produce
% this SVG~file from within \app{ROOT} is
% \lstinputlisting[style=svg,backgroundcolor=\color{red!10}]{examples/root.C}
@@ -1272,27 +1325,35 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \includesvg[%
% inkscapearea=page,height=6cm,pretex=\tiny,convertformat=png%
% ]{root}%
-% \caption{Rendering of a \app{ROOT} plot---no more \emph{Comic CERNs}}%
-% \label{fig:root}%
+% \caption{%
+% Rendering of a \app{ROOT} plot---no more \emph{Comic CERNs}%
+% \label{fig:root}%
+% }%
% \end{figure}
% \end{svgexample}
% \begin{figure}
-% \centering%
-% \includesvg[%
-% inkscapearea=page,height=6cm,pretex=\tiny,convertformat=png%
-% ]{root}%
-% \caption{Rendering of a \app{ROOT} plot---no more \emph{Comic CERNs}}%
-% \label{fig:root}%
+% \centering^^A
+% \includesvg[^^A
+% inkscapearea=page,height=6cm,pretex=\tiny,convertformat=png^^A
+% ]{root}^^A
+% \caption{^^A
+% Rendering of a \app{ROOT} plot---no more \emph{Comic CERNs}
+% \label{fig:root}^^A
+% }^^A
% \end{figure}
% which includes the graphic as well as the \LaTeX~file exported by
% \app{Inkscape}, produces the extracted PDF~image~(\file{root.pdf}) and
% converts this to a PNG~image~(\file{root.png}) by using \app{ImageMagick}.
-% Enjoy plots from \app{ROOT} with natively rendered \LaTeX!
+% Enjoy plots from \app{ROOT} with natively rendered \LaTeX{}!
%
-% \StopEventually{\clearpage\PrintIndex\PrintChanges\PrintToDos}
+% \StopEventually{^^A
+% \cleardoublepage\PrintIndex^^A
+% \cleardoublepage\PrintChanges^^A
+% \cleardoublepage\PrintToDos^^A
+% }
%
% \iffalse
-%<*package&option>
+%<*package&base>
% \fi
%
%
@@ -1303,66 +1364,553 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \section{Initialization}
% \subsection{Packages}
%
-% The package \pkg{svg} requires package \pkg{iftex} for detecting the used
-% \LaTeX~engine, \pkg{scrbase} for options processing, \pkg{pdftexcmds} for
-% pdf\TeX{} primitives when using Lua\TeX, \pkg{shellesc} and \pkg{ifplatform}
-% for engine independent access to systems commands and files as well as
-% \pkg{graphicx} for the inclusion of PDF~files. The usage of packages
-% \pkg{xcolor} and \pkg{transparent} can be switched of with the corresponding
-% options. Package \pkg{svg-extract} only needs package \pkg{svg} itself.
+% The package \pkg{svg} mainly requires \pkg{scrbase} for options processing
+% and \pkg{graphicx} for the inclusion of the exported graphic~files.
+%
+% The packages \pkg{iftex} and \pkg{pdftexcmds} are needed to detect the used
+% \LaTeX~engine on the one hand and enabling pdf\TeX{} primitives independent
+% of the used \LaTeX~engine on the other hand. Additionally, \pkg{trimspaces}
+% is responsible for string manipulation. Both packages \pkg{shellesc} and
+% \pkg{ifplatform} are used for engine independent access to systems commands
+% and files. The package \pkg{svg-extract} only needs package \pkg{svg} itself,
+% which is loaded during initialization.
% \begin{macrocode}
-%<*base>
+%<*main>
\RequirePackage{iftex}[2020/03/06]
\RequirePackage{scrbase}[2020/04/19]
\RequirePackage{pdftexcmds}[2019/11/24]
-\RequirePackage{shellesc}[2019/11/08]
\RequirePackage{trimspaces}[2009/09/17]
\RequirePackage{graphicx}[2019/11/30]
-%</base>
-%<*extract>
-\RequirePackage{svg}[2020/05/07]
-%</extract>
+\RequirePackage{shellesc}[2019/11/08]
+% \end{macrocode}
+% In order to do not raise a warning, package \pkg{ifplatform} is only used if
+% \file{-{}-shell-escape} flag is enabled.
+% \begin{macrocode}
+\ifnum\pdf@shellescape=\@ne\relax
+ \RequirePackage{ifplatform}[2017/10/13]
+\fi
+%</main>
+% \end{macrocode}
+%
+%
+%
+% \subsection{Dealing with catcodes}
+%
+% The catcode for double quotes are temporarily changed and restored at the
+% very end of both packages.
+% \begin{macrocode}
+\edef\svg@catcodecodes@restore{%
+ \catcode`\noexpand\"\the\catcode`\"\relax%
+}
+\@makeother\"%
+\AtEndOfPackage{\svg@catcodecodes@restore}
% \end{macrocode}
%
% \iffalse
-%<*base>
+%<*main>
% \fi
%
-% \subsection{Helper macros}
+%
+%
+% \subsection{General macros}
%
% \begin{macro}{\svg@tempa}
% \begin{macro}{\svg@tempb}
-% \begin{macro}{\svg@box}
% \begin{macro}{\if@svg@tempswa}
-% Internal temporary macros. The catcode for double quotes are also temporarily
-% changed.
+% Internal temporary macros.
% \begin{macrocode}
\newcommand*\svg@tempa{}
\newcommand*\svg@tempb{}
-\newbox\svg@box
\newif\if@svg@tempswa
-\edef\svg@catcodecodes@restore{%
- \catcode`\noexpand\"\the\catcode`\"\relax%
-}
-\@makeother\"%
% \end{macrocode}
% \end{macro}^^A \if@svg@tempswa
-% \end{macro}^^A \svg@box
% \end{macro}^^A \svg@tempb
% \end{macro}^^A \svg@tempa
%
+%
+%
+% \subsubsection{Macros for process control}
+%
+% \begin{macro}{\svg@ifwindowsdetected}
+% Do some Windows specific stuff if it was detected.
+% \begin{macrocode}
+\newcommand*\svg@ifwindowsdetected{\@secondoftwo}
+\AfterPackage*{ifplatform}{%
+ \renewcommand*\svg@ifwindowsdetected{%
+ \ifwindows%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@ifwindowsdetected
+% \begin{macro}{\svg@ifvalueisrelax}
+% For some keys the usage of \val{\cs{relax}} as a value should lead to a
+% special reaction, such as restoring to default behavior or reseting the key.
+% Therefore, \cs{svg@ifvalueisrelax} checks, whether \val{\cs{relax}} was used
+% as value or not.
+% \begin{macrocode}
+\newcommand*\svg@ifvalueisrelax[1]{%
+ \begingroup%
+ \def\svg@tempa{#1}%
+ \def\svg@tempb{\relax}%
+ \ifx\svg@tempa\svg@tempb%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@ifvalueisrelax
+%
+% \iffalse
+%</main>
+%<*extract>
+% \fi
+%
+% \begin{macro}{\svgx@ifkeyandval}
+% \begin{macro}{\svgx@@ifkeyandval}
+% It is checked whether a key was given as \val{\meta{key}=\meta{value}} or
+% like \val{\meta{key}=\{\meta{format}=\meta{value}\}}.
+% \begin{macrocode}
+\newcommand*\svgx@@ifkeyandval{}
+\newcommand*\svgx@ifkeyandval[3]{%
+ \def\svgx@@ifkeyandval##1=##2=##3\@nil{\IfArgIsEmpty{##3}{#3}{#2}}%
+ \svgx@@ifkeyandval#1==\@nil%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@@ifkeyandval
+% \end{macro}^^A \svgx@ifkeyandval
+%
% \iffalse
-%</base>
+%</extract>
+%<*main>
% \fi
%
%
+%
+% \subsubsection{String manipulation}
+%
+% Both packages \pkg{svg} and \pkg{svg-extract} should be able to handle
+% user-defined input and output paths. As there is the possibility for users to
+% provide paths with or without quotes to \LaTeX{}, this is taken into account.
+%
+% \begin{macro}{\svg@deactivate@dq}
+% \changes{v2.02}{2018/09/07}{new}^^A
+% \changes{v2.02a}{2018/10/17}{bug fix for \pkg{polyglossia}}^^A
+% In order to avoid errors concerning file names with package \pkg{babel} and
+% it's active double quotes, this command is defined.
+% \begin{macrocode}
+\newcommand*\svg@deactivate@dq{}
+\AfterPackage+{babel}{%
+ \renewcommand*\svg@deactivate@dq{\bbl@deactivate{"}}%
+ \providecommand*\bbl@deactivate[1]{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@deactivate@dq
+% \begin{macro}{\svg@sanitize@dq}
+% \changes{v2.02}{2018/09/07}{new}^^A
+% Save expansion of the second argument in the macro from the first argument
+% with deactivated double quotes.
+% \begin{macrocode}
+\newcommand*\svg@sanitize@dq[2]{%
+ \begingroup%
+ \svg@deactivate@dq%
+ \edef\svg@tempa{\endgroup\def\noexpand#1{#2}}%
+ \svg@tempa%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@sanitize@dq
+% \begin{macro}{\svg@quotes@check}
+% \begin{macro}{\svg@quotes@@check}
+% \begin{macro}{\if@svg@quotes@found}
+% During the treatment of paths, it may be necessary to temporarily remove
+% quotes and, if required, add them again later. For this purpose, the switch
+% \cs{if@svg@quotes@found} as well as the commands \cs{svg@quotes@check} and
+% \cs{svg@quotes@@check}, which controls the switch, are defined. As before,
+% the string is passed in a macro to \cs{svg@quotes@check}.
+% \begin{macrocode}
+\newif\if@svg@quotes@found
+\newcommand*\svg@quotes@check[1]{%
+ \expandafter\svg@quotes@@check#1"\@nil%
+}
+\newcommand*\svg@quotes@@check{}
+\def\svg@quotes@@check#1"#2\@nil{%
+ \IfArgIsEmpty{#2}{\@svg@quotes@foundfalse}{\@svg@quotes@foundtrue}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@svg@quotes@found
+% \end{macro}^^A \svg@quotes@@check
+% \end{macro}^^A \svg@quotes@check
+% \begin{macro}{\svg@quotes@remove}
+% \changes{v2.02}{2018/09/07}{usage of \cs{svg@sanitize@dq}}^^A
+% \changes{v2.02}{2018/09/07}{calling \cs{svg@quotes@check}}^^A
+% \begin{macro}{\svg@quotes@@remove}
+% These two commands are used to remove all occurring quotes within a string.
+% The only argument passed to \cs{svg@quotes@remove} is not the string itself
+% but a macro in which a string is stored.
+% \begin{macrocode}
+\newcommand*\svg@quotes@remove[2][]{%
+ \begingroup%
+ \IfArgIsEmpty{#1}{\def\svg@tempb{#2}}{\def\svg@tempb{#1}}%
+ \svg@sanitize@dq\svg@tempa{\svg@tempb}%
+ \expandafter\svg@quotes@check\expandafter{\svg@tempa}%
+ \expandafter\svg@quotes@@remove\svg@tempa""\@nil%
+ \edef\svg@tempb{%
+ \endgroup%
+ \def\noexpand#2{\svg@tempa}%
+ \if@svg@quotes@found%
+ \noexpand\@svg@quotes@foundtrue%
+ \else%
+ \noexpand\@svg@quotes@foundfalse%
+ \fi%
+ }%
+ \svg@tempb%
+}
+\newcommand*\svg@quotes@@remove{}
+\def\svg@quotes@@remove#1"#2"#3\@nil{%
+ \IfArgIsEmpty{#2}{%
+ \edef\svg@tempa{#1}%
+ }{%
+ \svg@quotes@@remove#1#2#3""\@nil%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@quotes@@remove
+% \end{macro}^^A \svg@quotes@remove
+% \begin{macro}{\svg@remove@leadingchar}
+% \changes{v2.02}{2018/09/07}{new}^^A
+% This command removes the single character in given with the first argument
+% from the expanded macro in the second argument.
+% \begin{macrocode}
+\newcommand*\svg@remove@leadingchar[2]{%
+ \begingroup%
+ \svg@sanitize@dq\svg@tempa{#2}%
+ \def\svg@tempb{%
+ \def\svg@tempa####1\@nil{\def\svg@tempa{####1}}%
+ \kernel@ifnextchar#1%
+ {\expandafter\svg@tempa\@gobble}%
+ {\svg@tempa}%
+ }%
+ \expandafter\svg@tempb\svg@tempa\@nil%
+ \edef\svg@tempb{%
+ \endgroup%
+ \def\noexpand#2{\svg@tempa}%
+ }%
+ \svg@tempb%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@remove@leadingchar
+%
+%
+%
+% \subsubsection{File handling}
+%
+% \begin{macro}{\svg@filename@parse}
+% \changes{v2.02}{2018/09/07}{usage of \cs{svg@sanitize@dq}}^^A
+% \changes{v2.02}{2018/09/07}{usage of \cs{svg@remove@leadingchar}}^^A
+% \changes{v2.02}{2018/09/07}{usage of \cs{svg@extension@parse}}^^A
+% As the internal \LaTeX{} command \cs{filename@parse} is not able to split a
+% given file name containing quotes, \cs{svg@filename@parse} is defined to
+% resolve this problem. The optional argument can be used to give a specific
+% file extension, which should be searched within \cs{filename@ext}. If found
+% at the very end, the previous part is appended to \cs{filename@base}.
+% \begin{macrocode}
+\newcommand*\svg@filename@parse[2][]{%
+ \begingroup%
+% \end{macrocode}
+% The given path and file is parsed with \cs{filename@parse}.
+% \begin{macrocode}
+ \svg@sanitize@dq\svg@tempa{#2}%
+ \expandafter\filename@parse\expandafter{\svg@tempa}%
+% If there are quotes in the file path, the closing one will be found as first
+% character in \cs{filename@base} as \cs{filename@area} is splitted at the last
+% slash. This leading quote is removed from \cs{filename@base} with
+% \cs{svg@remove@leadingchar}.
+% \begin{macrocode}
+ \svg@quotes@remove{\filename@area}%
+ \if@svg@quotes@found%
+ \edef\filename@area{"\filename@area"}%
+ \svg@remove@leadingchar"\filename@base%
+ \fi%
+% \end{macrocode}
+% The found extension is parsed against the optional argument. If a double quote
+% was found within the extension, it actually belongs to \cs{filename@base}.
+% \begin{macrocode}
+ \ifx\filename@ext\relax\else%
+ \svg@quotes@remove{\filename@ext}%
+ \svg@extension@parse{#1}%
+ \if@svg@quotes@found%
+ \edef\filename@base{\filename@base"}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Quotes within \cs{filename@base} are normalized.
+% \begin{macrocode}
+ \svg@quotes@remove{\filename@base}%
+ \if@svg@quotes@found%
+ \edef\filename@base{"\filename@base"}%
+ \fi%
+% \end{macrocode}
+% With \cs{svg@tempa} the group is closed and the results are saved in the
+% macros \cs{filename@\dots}.
+% \begin{macrocode}
+ \edef\svg@tempa{%
+ \endgroup%
+ \def\noexpand\filename@area{\filename@area}%
+ \def\noexpand\filename@base{\filename@base}%
+ \ifx\filename@ext\relax%
+ \let\noexpand\filename@ext\noexpand\relax%
+ \else%
+ \def\noexpand\filename@ext{\filename@ext}%
+ \fi%
+ }%
+ \svg@tempa%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@filename@parse
+% \begin{macro}{\svg@extension@parse}
+% \changes{v2.02}{2018/09/07}{new}^^A
+% \begin{macro}{\svg@extension@@parse}
+% \changes{v2.02}{2018/09/07}{new}^^A
+% These macros are used to permit multiple dots in file names. The content of
+% \cs{filename@ext} is split at each occurence of \val{.} and the trailing part
+% is compared against the content of the argument of \cs{svg@extension@parse},
+% which is probably \cs{svg@file@ext}. If they are equal, the previous part is
+% appended to \cs{filename@base} and \cs{filename@ext} is set to the content of
+% the first argument.
+% \begin{macrocode}
+\newcommand*\svg@extension@parse[1]{%
+ \IfArgIsEmpty{#1}{}{%
+ \@expandtwoargs\Ifstr%
+ {\detokenize\expandafter{\filename@ext}}{\detokenize\expandafter{#1}}{}{%
+ \begingroup%
+% \end{macrocode}
+% Macro \cs{svg@tempa} is used to temporarily store anything before the
+% searched extension at the end of \cs{filename@ext} and \cs{svg@tempb} is set
+% to the actual searched extension if found.
+% \begin{macrocode}
+ \edef\svg@tempa{%
+ \def\noexpand\svg@tempa{}%
+ \let\noexpand\svg@tempb\relax%
+ \noexpand\svg@extension@@parse%
+ \filename@ext.\noexpand\@nil#1\noexpand\@nil%
+ }%
+ \svg@tempa%
+ \edef\svg@tempa{%
+ \endgroup%
+% \end{macrocode}
+% If the trailing extension was found, \cs{filename@base} and \cs{filename@ext}
+% are adopted.
+% \begin{macrocode}
+ \def\noexpand\filename@base{\filename@base\svg@tempa}%
+ \ifx\svg@tempb\relax%
+ \let\noexpand\filename@ext\relax%
+ \else%
+ \def\noexpand\filename@ext{\svg@tempb}%
+ \fi%
+ }%
+ \svg@tempa%
+ }%
+ }%
+}
+% \end{macrocode}
+% Macro \cs{svg@extension@@parse} is recursively called as long as there are
+% any dots or the searched extension is found.
+% \begin{macrocode}
+\newcommand*\svg@extension@@parse{}
+\def\svg@extension@@parse#1.#2\@nil#3\@nil{%
+ \edef\svg@tempa{\svg@tempa.#1}%
+ \IfArgIsEmpty{#2}{}{%
+ \Ifstr{\detokenize{#2}}{\detokenize{#3.}}{%
+% \end{macrocode}
+% If the trailing extension is found, \cs{svg@tempb} is definied.
+% \begin{macrocode}
+ \edef\svg@tempb{#3}%
+ }{%
+ \svg@extension@@parse#2\@nil#3\@nil%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@extension@@parse
+% \end{macro}^^A \svg@extension@parse
+% \begin{macro}{\svg@iffilenewer}
+% \changes{v2.02d}{2019/10/22}{use \cs{filemoddate} with Xe\LaTeX, see
+% \url{https://github.com/mrpiggi/svg/issues/12}}^^A
+% The macro \cs{svg@iffilenewer} is used to decide, whether the export with
+% \app{Inkscape} is necessary due to an updated SVG~file. This can only be
+% done, if \cs{pdf@filemoddate} or \cs{filemoddate} is definied.
+% \ToDo{\cs{svg@iffilenewer} instead \cs{IfFileExists} to check results}[v2.03]
+% \begin{macrocode}
+\newcommand*\svg@iffilenewer[2]{\@gobbletwo}
+\ifx\pdf@filemoddate\@undefined
+ \ifx\filemoddate\@undefined\else
+ \ifx\strcmp\@undefined\else
+ \renewcommand*\svg@iffilenewer[2]{%
+ \begingroup%
+ \edef\svg@tempa{\filemoddate{#1}}%
+ \edef\svg@tempb{\filemoddate{#2}}%
+ \ifnum\strcmp{\svg@tempa}{\svg@tempb}>\z@\relax%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+ }%
+ \fi
+ \fi
+\else
+ \ifx\pdf@strcmp\@undefined\else
+ \renewcommand*\svg@iffilenewer[2]{%
+ \begingroup%
+ \edef\svg@tempa{\pdf@filemoddate{#1}}%
+ \edef\svg@tempb{\pdf@filemoddate{#2}}%
+ \ifnum\pdf@strcmp{\svg@tempa}{\svg@tempb}>\z@\relax%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+ }%
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}^^A \svg@iffilenewer
+% \begin{macro}{\svg@shell@mkdir}
+% \begin{macro}{\svg@shell@@mkdir}
+% \begin{macro}{\svg@shell@mv}
+% \begin{macro}{\svg@shell@@mv}
+% \begin{macro}{\svg@shell@rm}
+% \begin{macro}{\svg@shell@@rm}
+% Finally, platform dependend macros for creating directories as well as
+% moving and deleting files are provided.
+% \begin{macrocode}
+\newcommand*\svg@shell@mkdir[1]{%
+ \begingroup%
+% \end{macrocode}
+% A directory should only be created, if it isn't the current working directory.
+% \begin{macrocode}
+ \svg@quotes@remove[{#1}]{\svg@tempa}%
+ \@svg@tempswatrue%
+ \Ifstr{\svg@tempa}{}{\@svg@tempswafalse}{%
+ \Ifstr{\svg@tempa}{./}{\@svg@tempswafalse}{%
+ }}%
+ \if@svg@tempswa%
+ \ShellEscape{\svg@shell@@mkdir{\svg@tempa}}%
+ \fi%
+ \endgroup%
+}
+\newcommand*\svg@shell@mv[2]{%
+ \ShellEscape{\svg@shell@@mv\space"#1"\space"#2"}%
+}
+\newcommand*\svg@shell@rm[1]{%
+ \ShellEscape{\svg@shell@@rm\space"#1"}%
+}
+% \end{macrocode}
+% The platform dependent commands for file access.
+% \begin{macrocode}
+\svg@ifwindowsdetected{%
+ \newcommand*\svg@shell@@mkdir[1]{if not exist "#1" mkdir "#1"}%
+ \newcommand*\svg@shell@@mv{move}%
+ \newcommand*\svg@shell@@rm{del}%
+}{%
+ \newcommand*\svg@shell@@mkdir[1]{mkdir -p "#1"}%
+ \newcommand*\svg@shell@@mv{mv}%
+ \newcommand*\svg@shell@@rm{rm}%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@shell@@rm
+% \end{macro}^^A \svg@shell@rm
+% \end{macro}^^A \svg@shell@@mv
+% \end{macro}^^A \svg@shell@mv
+% \end{macro}^^A \svg@shell@@mkdir
+% \end{macro}^^A \svg@shell@mkdir
+% \begin{macro}{\svg@normalize@path}
+% \changes{v2.02}{2018/09/07}{usage of \cs{svg@deactivate@dq}}^^A
+% \begin{macro}{\svg@normalize@@path}
+% If any path is given, a trailing slash is needed. These two macros ensure
+% that this condition is fulfilled in any case, even if this is not considered
+% by the user. As before, a macro containing the path string is passed to
+% \cs{svg@normalize@path}.
+% \begin{macrocode}
+\newcommand*\svg@normalize@path[1]{%
+ \begingroup%
+ \svg@quotes@remove[{#1}]{\svg@tempa}%
+ \ifx\svg@tempa\@empty\relax%
+ \def\svg@tempa{./}%
+ \fi%
+ \expandafter\svg@normalize@@path\svg@tempa//\@nil%
+ \edef\svg@tempb{%
+ \endgroup%
+ \if@svg@quotes@found%
+ \def\noexpand#1{"\svg@tempa"}%
+ \else%
+ \def\noexpand#1{\svg@tempa}%
+ \fi%
+ }%
+ \svg@tempb%
+}
+\newcommand*\svg@normalize@@path{}
+\def\svg@normalize@@path#1/#2/\@nil{%
+ \IfArgIsEmpty{#2}{%
+ \IfArgIsEmpty{#1}{\def\svg@tempa{}}{\def\svg@tempa{#1/}}%
+ }{%
+ \svg@normalize@@path#2/\@nil%
+ \edef\svg@tempa{#1/\svg@tempa}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@normalize@@path
+% \end{macro}^^A \svg@normalize@path
+%
+% \iffalse
+%</main>
+%<*extract>
+% \fi
+%
+%
+%
+% \subsubsection{List handling}
+%
+% \begin{macro}{\svgx@ifinlist}
+% Check, if the first argument is included in a comma-separated list in the
+% second argument. Keep in mind that the first argument is not expanded at all,
+% the second one exactly once.
+% \begin{macrocode}
+\newcommand*\svgx@ifinlist[2]{%
+ \begingroup%
+ \def\svg@tempa##1,#1,##2\@nil{%
+ \IfArgIsEmpty{##2}{%
+ \aftergroup\@secondoftwo%
+ }{%
+ \aftergroup\@firstoftwo%
+ }%
+ }%
+ \expandafter\svg@tempa\expandafter,#2,#1,\@nil%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@ifinlist
+%
+% \iffalse
+%</extract>
+%</package&base>
+%<*package&option>
+% \fi
+%
+%
+%
% \section{Including SVG files with package \pkg{svg}}
% \subsection{Options}
%
% All options, which can be set either as package options or with
% \cs{svgsetup}, as well as the optional parameters for both user commands
-% \cs{includesvg}\oarg{parameters}\marg{svg filename} and
-% \cs{includeinkscape}\oarg{parameters}\marg{graphic filename} are defined with
+% \cs{includesvg}\oarg{parameters}\marg{svg~filename} and
+% \cs{includeinkscape}\oarg{parameters}\marg{graphic~filename} are defined with
% the interface provided by package \pkg{scrbase}.
% \begin{macrocode}
\DefineFamily{SVG}
@@ -1371,8 +1919,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \iffalse
%</package&option>
-%<*package&base>
-%<*option>
+%<*package&option&main>
% \fi
%
% \begin{macro}{\svg@deprecated@key}
@@ -1383,7 +1930,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{macrocode}
\newcommand*\svg@deprecated@key[3][svg]{%
\PackageWarning{#1}{%
- The option key `#2' is deprecated.\MessageBreak%
+ The option key `#2' is deprecated. \MessageBreak%
It's recommended to use `#3'\MessageBreak%
instead%
}%
@@ -1394,7 +1941,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% Within the exported \LaTeX~files of \app{Inkscape}, some commands are used
% out of additional packages. But maybe the user doesn't want to load this
-% packages anyways.
+% packages anyhow.
%
% \begin{option}{usexcolor}
% \changes{v2.00}{2017/02/17}{new}^^A
@@ -1435,6 +1982,15 @@ svg-extract -- Extract independent graphic files from SVG pictures
\PackageWarning{svg}{Package `transparent' was loaded anyway}%
}%
\fi%
+% \end{macrocode}
+% There is an issue\footnote{\url{https://github.com/ho-tex/oberdiek/issues/62}}
+% with package \pkg{transparent}, which currently implements an \emph{invalid}
+% check relying on internal commands of package \pkg{pgfsys}, whereas these
+% have changed in the latest version.
+% \begin{macrocode}
+ \AfterPackage*{transparent}{%
+ \@ifpackagelater{transparent}{2018/11/19}{}{\RequirePackage{pgfsys}}%
+ }%
}
% \end{macrocode}
% \end{macro}^^A \if@svg@use@transparent
@@ -1467,12 +2023,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{macrocode}
\newcommand*\svg@ink@mode{}
\DefineFamilyKey{SVG}{inkscape}[true]{%
- \lowercase{\svg@sanitize@dq\svg@tempb{#1}}%
+ \svg@sanitize@dq\svg@tempb{#1}%
\FamilySetNumerical{SVG}{inkscape}{svg@tempa}{%
{false}{0},{off}{0},{no}{0},%
- {true}{1},{on}{1},{yes}{1},{onlynewer}{1},{newer}{1},%
- {force}{2},{forced}{2},{overwrite}{2},%
- {pdf}{3},{eps}{4},{ps}{5},{png}{6},%
+ {true}{1},{on}{1},{yes}{1},{auto}{1},{onlynewer}{1},{newer}{1},%
+ {forced}{2},{force}{2},{overwrite}{2},%
+ {pdf}{3},{PDF}{3},{eps}{4},{EPS}{4},{ps}{5},{PS}{5},{png}{6},{PNG}{6},%
{drawing}{7},{crop}{7},%
{page}{8},{nocrop}{8},%
{tex}{9},{latex}{9},{exportlatex}{9},{latexexport}{9},%
@@ -1520,7 +2076,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% In version~v1.0 the option \opt{inkscape} was used to set both the executable
% and options for \app{Inkscape}. This is taken into account here.
% \begin{macrocode}
- \ifx\FamilyKeyState\FamilyKeyStateProcessed\else%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed\else% legacy option
% \end{macrocode}
% Splitting executable from options with delimitted macros. After calling
% \cs{svg@tempa} with the given value, the part for the executable is stored in
@@ -1529,7 +2085,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{macrocode}
\svg@quotes@remove[{#1}]{\svg@tempb}%
\def\svg@tempa##1-##2\@nil{%
- \IfArgIsEmpty{##2}{\def\svg@tempb{}}{%
+ \IfArgIsEmpty{##2}{\let\svg@tempb\@empty}{%
\def\svg@tempa####1-\@nil{\def\svg@tempb{-####1}}%
\svg@tempa##2\@nil%
}%
@@ -1591,7 +2147,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{option}{inkscapeopt}
% \changes{v2.00}{2017/02/17}{new}^^A
% \begin{macro}{\svg@ink@opt}
-% With these options, the terminal command for invoking \app{Inkscape} as well
+% With these options, the executed command for invoking \app{Inkscape} as well
% as additional options can be defined.
% \ToDo{rename \cs{svg@ink@ver} > \cs{svg@ink@ver@val} (keep former cs)?}[v2.03]
% \begin{macrocode}
@@ -1660,10 +2216,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
\renewcommand*\svg@ink@format{eps}
\fi\fi
\DefineFamilyKey{SVG}{inkscapeformat}{%
- \lowercase{\def\svg@tempa{#1}}%
\FamilySetNumerical{SVG}{inkscapeformat}{svg@tempa}{%
- {pdf}{0},{eps}{1},{ps}{2},{png}{3}%
- }{\svg@tempa}%
+ {pdf}{0},{PDF}{0},{eps}{1},{EPS}{1},{ps}{2},{PS}{2},{png}{3},{PNG}{3}%
+ }{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\ifcase\svg@tempa\relax% latex
\renewcommand*\svg@ink@format{pdf}%
@@ -1750,7 +2305,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{option}^^A inkscapedpi
% \begin{macro}{\svg@ink@cmd}
% \changes{v2.02f}{2020/05/06}{distinguish \app{Inkscape}~CLI versions}^^A
-% The actual call of the \app{Inkscape} command~line~interface.
+% The actual usage of the \app{Inkscape} command~line~interface.
% \begin{macrocode}
\newcommand*\svg@ink@cmd[2]{%
\svg@ink@exe\space"#1.\svg@file@ext"\space\svg@ink@area\space%
@@ -1821,23 +2376,16 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
%
%
-% \subsubsection{Setting output folder}
+% \subsubsection{Setting output folder and file}
%
% \begin{option}{inkscapepath}
% \changes{v2.00}{2017/02/17}{new}^^A
% \changes{v2.02}{2018/09/07}{usage of \cs{svg@sanitize@dq}}^^A
-% \begin{option}{inkscapename}
-% \changes{v2.00}{2017/02/17}{new}^^A
% \begin{macro}{\svg@out@path}
-% \begin{macro}{\svg@out@name}
-% \begin{macro}{\svg@out@base}
% The option \opt{inkscapepath} controls, in which folder the results of the
-% \app{Inkscape} export will be located. With option \opt{inkscapename} the
-% name of the exported file itself can be changed.
+% \app{Inkscape} export will be located.
% \begin{macrocode}
\newcommand*\svg@out@path{}
-\newcommand*\svg@out@name{\svg@file@name\svg@file@suffix}
-\newcommand*\svg@out@base{\svg@out@path\svg@out@name.\svg@ink@format}
\DefineFamilyKey{SVG}{inkscapepath}{%
\svg@sanitize@dq\svg@tempb{#1}%
\FamilySetNumerical{SVG}{inkscapepath}{svg@tempa}{%
@@ -1862,6 +2410,17 @@ svg-extract -- Extract independent graphic files from SVG pictures
\FamilyKeyStateProcessed%
\fi%
}
+% \end{macrocode}
+% \end{macro}^^A \svg@out@path
+% \end{option}^^A inkscapepath
+% \begin{option}{inkscapename}
+% \changes{v2.00}{2017/02/17}{new}^^A
+% \begin{macro}{\svg@out@name}
+% \begin{macro}{\svg@out@base}
+% With option \opt{inkscapename} the name of the exported file can be changed.
+% \begin{macrocode}
+\newcommand*\svg@out@name{\svg@file@name\svg@file@suffix}
+\newcommand*\svg@out@base{\svg@out@path\svg@out@name.\svg@ink@format}
\DefineFamilyKey{SVG}{inkscapename}{%
\renewcommand*\svg@out@name{#1\svg@file@suffix}%
\FamilyKeyStateProcessed%
@@ -1869,9 +2428,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{macrocode}
% \end{macro}^^A \svg@out@base
% \end{macro}^^A \svg@out@name
-% \end{macro}^^A \svg@out@path
% \end{option}^^A inkscapename
-% \end{option}^^A inkscapepath
%
%
%
@@ -1933,9 +2490,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
\FamilySetBool{SVG}{keepaspectratio}{@svg@tempswa}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\if@svg@tempswa%
- \FamilyOptions{SVG}{distort=false}%
- \else
- \FamilyOptions{SVG}{distort=true}%
+ \FamilyExecuteOptions[.svg.sty]{SVG}{distort=false}%
+ \else%
+ \FamilyExecuteOptions[.svg.sty]{SVG}{distort=true}%
\fi%
\fi%
}
@@ -2013,7 +2570,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% from the PDF~file.
% \begin{macrocode}
\newcounter{svg@param@lastpage}
-\DefineFamilyKey{SVG}{lastpage}{%
+\DefineFamilyKey{SVG}{lastpage}[true]{%
\FamilySetNumerical{SVG}{lastpage}{svg@tempa}{%
{false}{0},{off}{0},{no}{0},{ignore}{0},%
{true}{1},{on}{1},{yes}{1},{auto}{1}%
@@ -2037,518 +2594,36 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{macrocode}
\newif\if@svg@draft
\FamilyBoolKey{SVG}{draft}{@svg@draft}
-\AtBeginDocument{\if@svg@draft\else\ifGin@draft\@svg@drafttrue\fi\fi}
+\AfterPackage*{graphicx}{\ifGin@draft\@svg@drafttrue\fi}
% \end{macrocode}
% \end{macro}^^A \if@svg@draft
% \end{option}^^A draft
%
+% \iffalse
+%</package&option&main>
+% \fi
%
%
-% \subsection{Handling path information}
%
-% Both packages \pkg{svg} and \pkg{svg-extract} should be able to handle
-% user-defined input and output paths. As there is the possibility for users to
-% provide paths with or without quotes to \LaTeX, this is taken into account.
+% \subsection{User commands}
+% \subsubsection{Optional parameters for user commands}
%
-% \begin{macro}{\svg@deactivate@dq}
-% \changes{v2.02}{2018/09/07}{new}^^A
-% \changes{v2.02a}{2018/10/17}{bug fix for \pkg{polyglossia}}^^A
-% In order to avoid errors concerning file names with package \pkg{babel} and
-% it's active double quotes, this command is defined.
-% \begin{macrocode}
-\newcommand*\svg@deactivate@dq{}
-\AfterPackage+{babel}{%
- \renewcommand*\svg@deactivate@dq{\bbl@deactivate{"}}%
- \providecommand*\bbl@deactivate[1]{}%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@deactivate@dq
-% \begin{macro}{\svg@sanitize@dq}
-% \changes{v2.02}{2018/09/07}{new}^^A
-% Save expansion of the second argument in the macro from teh first argument
-% with deactivated double quotes.
-% \begin{macrocode}
-\newcommand*\svg@sanitize@dq[2]{%
- \begingroup%
- \svg@deactivate@dq%
- \edef\svg@tempa{\endgroup\def\noexpand#1{#2}}%
- \svg@tempa%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@sanitize@dq
-% \begin{macro}{\svg@quotes@remove}
-% \changes{v2.02}{2018/09/07}{usage of \cs{svg@sanitize@dq}}^^A
-% \changes{v2.02}{2018/09/07}{calling \cs{svg@quotes@check}}^^A
-% \begin{macro}{\svg@quotes@@remove}
-% These two commands are used to remove all occurring quotes within a string.
-% The only argument passed to \cs{svg@quotes@remove} is not the string itself
-% but a macro in which a string is stored.
-% \begin{macrocode}
-\newcommand*\svg@quotes@remove[2][]{%
- \begingroup%
- \IfArgIsEmpty{#1}{\def\svg@tempb{#2}}{\def\svg@tempb{#1}}%
- \svg@sanitize@dq\svg@tempa{\svg@tempb}%
- \expandafter\svg@quotes@check\expandafter{\svg@tempa}%
- \expandafter\svg@quotes@@remove\svg@tempa""\@nil%
- \edef\svg@tempb{%
- \endgroup%
- \def\noexpand#2{\svg@tempa}%
- \if@svg@quotes@found%
- \noexpand\@svg@quotes@foundtrue%
- \else%
- \noexpand\@svg@quotes@foundfalse%
- \fi%
- }%
- \svg@tempb%
-}
-\newcommand*\svg@quotes@@remove{}
-\def\svg@quotes@@remove#1"#2"#3\@nil{%
- \IfArgIsEmpty{#2}{%
- \edef\svg@tempa{#1}%
- }{%
- \svg@quotes@@remove#1#2#3""\@nil%
- }%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@quotes@@remove
-% \end{macro}^^A \svg@quotes@remove
-% \begin{macro}{\svg@quotes@check}
-% \begin{macro}{\svg@quotes@@check}
-% \begin{macro}{\if@svg@quotes@found}
-% During the treatment of paths, it may be necessary to temporarily remove
-% quotes and, if required, add them again later. For this purpose, the switch
-% \cs{if@svg@quotes@found} as well as the commands \cs{svg@quotes@check} and
-% \cs{svg@quotes@@check}, which controls the switch, are defined. As before,
-% the string is passed in a macro to \cs{svg@quotes@check}.
-% \begin{macrocode}
-\newif\if@svg@quotes@found
-\newcommand*\svg@quotes@check[1]{%
- \expandafter\svg@quotes@@check#1"\@nil%
-}
-\newcommand*\svg@quotes@@check{}
-\def\svg@quotes@@check#1"#2\@nil{%
- \IfArgIsEmpty{#2}{\@svg@quotes@foundfalse}{\@svg@quotes@foundtrue}%
-}
-% \end{macrocode}
-% \end{macro}^^A \if@svg@quotes@found
-% \end{macro}^^A \svg@quotes@@check
-% \end{macro}^^A \svg@quotes@check
-% \begin{macro}{\svg@remove@leadingchar}
-% \changes{v2.02}{2018/09/07}{new}^^A
-% This command removes the single character in given with the first argument
-% from the expanded macro in the second argument.
-% \begin{macrocode}
-\newcommand*\svg@remove@leadingchar[2]{%
- \begingroup%
- \svg@sanitize@dq\svg@tempa{#2}%
- \def\svg@tempb{%
- \def\svg@tempa####1\@nil{\def\svg@tempa{####1}}%
- \kernel@ifnextchar#1%
- {\expandafter\svg@tempa\@gobble}%
- {\svg@tempa}%
- }%
- \expandafter\svg@tempb\svg@tempa\@nil%
- \edef\svg@tempb{%
- \endgroup%
- \def\noexpand#2{\svg@tempa}%
- }%
- \svg@tempb%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@remove@leadingchar%
-% \begin{macro}{\svg@set@input@path}
-% \changes{v2.01}{2017/11/28}{new}^^A
-% \changes{v2.02}{2018/09/07}{usage of \cs{svg@deactivate@dq}}^^A
-% \begin{macro}{\svg@append@input@path}
-% \changes{v2.01}{2017/11/28}{new}^^A
-% \changes{v2.02}{2018/09/07}{avoid duplicates in \cs{input@path}}^^A
-% In order to import SVG~files from different folders, \cs{svg@set@input@path}
-% evaluates several macros, which are supposed to be used for holding different
-% search folders. Any given path will be handled by \cs{svg@normalize@path}.
-% The optional argument can be used to append an additional search path.
-% \begin{macrocode}
-\newcommand*\svg@set@input@path[1][]{%
- \begingroup%
- \svg@deactivate@dq%
-% \end{macrocode}
-% If a path was already found and stored within \cs{svg@file@path}, it is
-% searched first and wrapped in curly braces. This is necessary for using
-% commands like \cs{input}\marg{tex filename} within SVG~files.
-% \begin{macrocode}
- \ifx\svg@file@path\@empty\else%
- \svg@normalize@path{\svg@file@path}%
- \edef\svg@file@path{{\svg@file@path}}%
- \fi%
-% \end{macrocode}
-% Afterwards, several search paths are appended. If \cs{svgpath} was used, it
-% is searched next. If nothing was found, \cs{graphicspath} is considered if
-% defined followed by a path given in the third argument. If nothing was found
-% yet, the standard \cs{input@path} is searched last.
-% \begin{macrocode}
- \svg@append@input@path{\svg@file@path}{\svg@input@path}%
- \svg@append@input@path{\svg@file@path}{\Ginput@path}%
- \IfArgIsEmpty{#1}{}{\svg@append@input@path{\svg@file@path}{{#1}}}%
- \svg@append@input@path{\svg@file@path}{\input@path}%
-% \end{macrocode}
-% Finally, \cs{input@path} is set.
-% \begin{macrocode}
- \edef\svg@tempa{%
- \endgroup%
- \ifx\svg@file@path\@empty\else%
- \def\noexpand\input@path{\svg@file@path}%
- \fi%
- }%
- \svg@tempa%
-}
-% \end{macrocode}
-% Only, if a certain search path is defined, it is added. The paths given in
-% the first argument are compared to each path in the second argument and only
-% new ones are added.
-% \begin{macrocode}
-\newcommand*\svg@append@input@path[2]{%
- \ifx#2\@undefined\else%
- \edef\svg@tempb{#2}%
- \expandafter\@tfor\expandafter\svg@tempa\expandafter:\expandafter=%
- \svg@tempb\do{%
-% \end{macrocode}
-% Passing each new path to \cs{svg@normalize@path}. If a path already exists,
-% switch \cs{if@svg@tempswa} is set to \val{false}.
-% \begin{macrocode}
- \ifx\svg@tempa\@empty\else%
- \@svg@tempswatrue%
- \svg@normalize@path{\svg@tempa}%
- \expandafter\@tfor\expandafter\svg@tempb\expandafter:\expandafter=%
- #1\do{%
- \ifx\svg@tempa\svg@tempb%
- \@svg@tempswafalse%
- \@break@tfor%
- \fi%
- }%
- \if@svg@tempswa%
- \edef#1{#1{\svg@tempa}}%
- \fi%
- \fi%
- }%
- \fi%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@append@input@path
-% \end{macro}^^A \svg@set@input@path
-% \begin{macro}{\svg@normalize@path}
-% \changes{v2.02}{2018/09/07}{usage of \cs{svg@deactivate@dq}}^^A
-% \begin{macro}{\svg@normalize@@path}
-% If any path is given, a trailing slash is needed. These two macros ensure
-% that this condition is fulfilled in any case, even if this is not considered
-% by the user. As before, a macro containing the path string is passed to
-% \cs{svg@normalize@path}.
-% \begin{macrocode}
-\newcommand*\svg@normalize@path[1]{%
- \begingroup%
- \svg@quotes@remove[{#1}]{\svg@tempa}%
- \ifx\svg@tempa\@empty\relax%
- \def\svg@tempa{./}%
- \fi%
- \expandafter\svg@normalize@@path\svg@tempa//\@nil%
- \edef\svg@tempb{%
- \endgroup%
- \if@svg@quotes@found%
- \def\noexpand#1{"\svg@tempa"}%
- \else%
- \def\noexpand#1{\svg@tempa}%
- \fi%
- }%
- \svg@tempb%
-}
-\newcommand*\svg@normalize@@path{}
-\def\svg@normalize@@path#1/#2/\@nil{%
- \IfArgIsEmpty{#2}{%
- \IfArgIsEmpty{#1}{\def\svg@tempa{}}{\def\svg@tempa{#1/}}%
- }{%
- \svg@normalize@@path#2/\@nil%
- \edef\svg@tempa{#1/\svg@tempa}%
- }%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@normalize@@path
-% \end{macro}^^A \svg@normalize@path
-% \begin{macro}{\svg@ifvalueisrelax}
-% For some keys the usage of \val{\cs{relax}} as a value should lead to a
-% special reaction, such as restoring to default behavior or reseting the key.
-% Therefore, \cs{svg@ifvalueisrelax} checks, whether \val{\cs{relax}} was used
-% as value or not.
+% The family member is defined for both \pkg{svg} and \pkg{svg-extract}.
% \begin{macrocode}
-\newcommand*\svg@ifvalueisrelax[1]{%
- \begingroup%
- \def\svg@tempa{#1}%
- \def\svg@tempb{\relax}%
- \ifx\svg@tempa\svg@tempb\relax%
- \aftergroup\@firstoftwo%
- \else%
- \aftergroup\@secondoftwo%
- \fi%
- \endgroup%
-}
+%<*package&body>
+\DefineFamilyMember[.param]{SVG}
+%</package&body>
% \end{macrocode}
-% \end{macro}^^A \svg@ifvalueisrelax
%
% \iffalse
-%</option>
+%<*package&main>
%<*body>
% \fi
%
-% \begin{macro}{\svg@get@path}
-% \changes{v2.01}{2017/11/28}{using \cs{svg@set@input@path}}^^A
-% \changes{v2.01}{2017/11/28}{using \cs{trim@spaces}}^^A
-% \begin{macro}{\if@svg@file@found}
-% \begin{macro}{\svg@file@path}
-% \begin{macro}{\svg@file@name}
-% \begin{macro}{\svg@file@base}
-% \begin{macro}{\svg@file@suffix}
-% The command \cs{svg@get@path} tries to find a given SVG~file. If the
-% searched file wasn't found in the current path, all paths given with
-% \cs{svgpath} are evaluated. If there was no appropriate file again, all paths
-% given by \cs{graphicspath} are examined. In the last step, a given path
-% within the second mandatory argument is browsed. The results for file path
-% and name are stored in \cs{svg@file@path} and \cs{svg@file@name} as well as
-% the compound of both is saved in \cs{svg@file@base}.
-% \begin{macrocode}
-\newif\if@svg@file@found
-\newcommand*\svg@file@path{}
-\newcommand*\svg@file@name{}
-\newcommand*\svg@file@base{}
-\newcommand*\svg@file@suffix{}
-\newcommand*\svg@get@path[3][\svg@file@ext]{%
- \begingroup%
-% \end{macrocode}
-% A maybe given, unneeded file extension is removed.
-% \begin{macrocode}
- \svg@filename@parse[{#1}]{#2}%
- \IfArgIsEmpty{#1}{%
- \edef\svg@tempa{\filename@area\filename@base.\filename@ext}%
- }{%
- \edef\svg@tempa{\filename@area\filename@base.#1}%
- }%
-% \end{macrocode}
-% After calling \cs{svg@set@input@path}, all search paths are stored in
-% \cs{input@path}, a single path given in the third argument will also be
-% considered.
-% \begin{macrocode}
- \svg@set@input@path[{#3}]%
-% \end{macrocode}
-% The specified file is searched with \cs{IfFileExists}. If the file search was
-% succesful, the macro \cs{svg@filename@parse} is called with the result.
-% \begin{macrocode}
- \@svg@tempswafalse%
- \expandafter\IfFileExists\expandafter{\svg@tempa}{%
- \expandafter\svg@quotes@check\expandafter{\svg@tempa}%
- \if@svg@quotes@found\else%
- \svg@quotes@remove{\@filef@und}%
- \fi%
- \@svg@tempswatrue%
- \edef\@filef@und{\expandafter\trim@spaces\expandafter{\@filef@und}}%
- \svg@filename@parse[{#1}]{\@filef@und}%
- }{}%
- \edef\svg@tempa{%
- \endgroup%
- \if@svg@tempswa%
- \noexpand\@svg@file@foundtrue%
- \def\noexpand\svg@file@path{\filename@area}%
- \def\noexpand\svg@file@name{\filename@base}%
- \def\noexpand\svg@file@base{\filename@area\filename@base}%
- \else%
- \noexpand\@svg@file@foundfalse%
- \def\noexpand\svg@file@path{}%
- \def\noexpand\svg@file@name{#2}%
- \def\noexpand\svg@file@base{#2}%
- \fi%
- }%
- \svg@tempa%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@file@suffix
-% \end{macro}^^A \svg@file@base
-% \end{macro}^^A \svg@file@name
-% \end{macro}^^A \svg@file@path
-% \end{macro}^^A \if@svg@file@found
-% \end{macro}^^A \svg@get@path
-% \begin{macro}{\svg@filename@parse}
-% \changes{v2.02}{2018/09/07}{usage of \cs{svg@sanitize@dq}}^^A
-% \changes{v2.02}{2018/09/07}{usage of \cs{svg@remove@leadingchar}}^^A
-% \changes{v2.02}{2018/09/07}{usage of \cs{svg@extension@parse}}^^A
-% As the internal \LaTeXe{} command \cs{filename@parse} is not able to split a
-% given file name containing quotes, \cs{svg@filename@parse} is defined to
-% resolve this problem. The optional argument can be used to give a specific
-% file extension, which should be searched within \cs{filename@ext}. If found
-% at the very end, the previous part is appended to \cs{filename@base}.
-% \begin{macrocode}
-\newcommand*\svg@filename@parse[2][]{%
- \begingroup%
-% \end{macrocode}
-% The given path and file is parsed with \cs{filename@parse}.
-% \begin{macrocode}
- \svg@sanitize@dq\svg@tempa{#2}%
- \expandafter\filename@parse\expandafter{\svg@tempa}%
-% If there are quotes in the file path, the closing one will be found as first
-% character in \cs{filename@base} as \cs{filename@area} is splitted at the last
-% slash. This leading quote is removed from \cs{filename@base} with
-% \cs{svg@remove@leadingchar}.
-% \begin{macrocode}
- \svg@quotes@remove{\filename@area}%
- \if@svg@quotes@found%
- \edef\filename@area{"\filename@area"}%
- \svg@remove@leadingchar"\filename@base%
- \fi%
-% \end{macrocode}
-% The found extension is parsed against the optional argument. If a double quote
-% was found within the extension, it actually belongs to \cs{filename@base}.
-% \begin{macrocode}
- \ifx\filename@ext\relax\else%
- \svg@quotes@remove{\filename@ext}%
- \svg@extension@parse{#1}%
- \if@svg@quotes@found%
- \edef\filename@base{\filename@base"}%
- \fi%
- \fi%
-% \end{macrocode}
-% Quotes within \cs{filename@base} are normalized.
-% \begin{macrocode}
- \svg@quotes@remove{\filename@base}%
- \if@svg@quotes@found%
- \edef\filename@base{"\filename@base"}%
- \fi%
-% \end{macrocode}
-% With \cs{svg@tempa} the group is closed and the results are saved in the
-% macros \cs{filename@\dots}.
-% \begin{macrocode}
- \edef\svg@tempa{%
- \endgroup%
- \def\noexpand\filename@area{\filename@area}%
- \def\noexpand\filename@base{\filename@base}%
- \ifx\filename@ext\relax%
- \let\noexpand\filename@ext\noexpand\relax%
- \else%
- \def\noexpand\filename@ext{\filename@ext}%
- \fi%
- }%
- \svg@tempa%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@filename@parse
-% \begin{macro}{\svg@extension@parse}
-% \changes{v2.02}{2018/09/07}{new}^^A
-% \begin{macro}{\svg@extension@@parse}
-% \changes{v2.02}{2018/09/07}{new}^^A
-% These macros are used to permit multiple dots in file names. The content of
-% \cs{filename@ext} is split at each occurence of \val{.} and the trailing part
-% is compared against the content of the argument of \cs{svg@extension@parse},
-% which is probably \cs{svg@file@ext}. If they are equal, the previous part is
-% appended to \cs{filename@base} and \cs{filename@ext} is set to the content of
-% the first argument.
-% \begin{macrocode}
-\newcommand*\svg@extension@parse[1]{%
- \IfArgIsEmpty{#1}{}{%
- \@expandtwoargs\Ifstr%
- {\detokenize\expandafter{\filename@ext}}{\detokenize\expandafter{#1}}{}{%
- \begingroup%
-% \end{macrocode}
-% Macro \cs{svg@tempa} is used to temporarily store anything before the
-% searched extension at the end of \cs{filename@ext} and \cs{svg@tempb} is set
-% to the actual searched extension if found.
-% \begin{macrocode}
- \edef\svg@tempa{%
- \def\noexpand\svg@tempa{}%
- \let\noexpand\svg@tempb\relax%
- \noexpand\svg@extension@@parse%
- \filename@ext.\noexpand\@nil#1\noexpand\@nil%
- }%
- \svg@tempa%
- \edef\svg@tempa{%
- \endgroup%
-% \end{macrocode}
-% If the trailing extension was found, \cs{filename@base} and \cs{filename@ext}
-% are adopted.
-% \begin{macrocode}
- \def\noexpand\filename@base{\filename@base\svg@tempa}%
- \ifx\svg@tempb\relax%
- \let\noexpand\filename@ext\relax%
- \else%
- \def\noexpand\filename@ext{\svg@tempb}%
- \fi%
- }%
- \svg@tempa%
- }%
- }%
-}
-% \end{macrocode}
-% Macro \cs{svg@extension@@parse} is recursively called as long as there are
-% any dots or the searched extension is found.
-% \begin{macrocode}
-\newcommand*\svg@extension@@parse{}
-\def\svg@extension@@parse#1.#2\@nil#3\@nil{%
- \edef\svg@tempa{\svg@tempa.#1}%
- \IfArgIsEmpty{#2}{}{%
- \Ifstr{\detokenize{#2}}{\detokenize{#3.}}{%
-% \end{macrocode}
-% If the trailing extension is found, \cs{svg@tempb} is definied.
-% \begin{macrocode}
- \edef\svg@tempb{#3}%
- }{%
- \svg@extension@@parse#2\@nil#3\@nil%
- }%
- }%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@extension@@parse
-% \end{macro}^^A \svg@extension@parse
-% \begin{macro}{\svg@iffilenewer}
-% \changes{v2.02d}{2019/10/22}{use \cs{filemoddate} with Xe\LaTeX, see
-% \url{https://github.com/mrpiggi/svg/issues/12}}^^A
-% The macro \cs{svg@iffilenewer} is used to decide, whether the export with
-% \app{Inkscape} is necessary due to an updated SVG~file. This can only be
-% done, if \cs{pdf@filemoddate} or \cs{filemoddate} is definied.
-% \ToDo{\cs{svg@iffilenewer} instead \cs{IfFileExists} to check results}[v2.03]
-% \begin{macrocode}
-\newcommand*\svg@iffilenewer[2]{\@gobbletwo}
-\ifx\pdf@filemoddate\@undefined
- \ifx\filemoddate\@undefined\else
- \ifx\strcmp\@undefined\else
- \renewcommand*\svg@iffilenewer[2]{%
- \begingroup%
- \edef\svg@tempa{\filemoddate{#1}}%
- \edef\svg@tempb{\filemoddate{#2}}%
- \ifnum\strcmp{\svg@tempa}{\svg@tempb}>\z@\relax%
- \aftergroup\@firstoftwo%
- \else%
- \aftergroup\@secondoftwo%
- \fi%
- \endgroup%
- }%
- \fi
- \fi
-\else
- \ifx\pdf@strcmp\@undefined\else
- \renewcommand*\svg@iffilenewer[2]{%
- \begingroup%
- \edef\svg@tempa{\pdf@filemoddate{#1}}%
- \edef\svg@tempb{\pdf@filemoddate{#2}}%
- \ifnum\pdf@strcmp{\svg@tempa}{\svg@tempb}>\z@\relax%
- \aftergroup\@firstoftwo%
- \else%
- \aftergroup\@secondoftwo%
- \fi%
- \endgroup%
- }%
- \fi
-\fi
-% \end{macrocode}
-% \end{macro}^^A \svg@iffilenewer
-%
-% \subsection{Optional Parameters for user commands}
-%
+% \begin{macro}{\svg@local@param@def}
+% \begin{macro}{\svg@local@param@use}
% \begin{macro}{\svg@local@param@set}
% \changes{v2.02}{2018/09/07}{reasonable value for key \opt{distort}}^^A
-% \begin{macro}{\svg@local@param@use}
-% \begin{macro}{\svg@local@param@def}
% Most of the package options can also be used as optional parameters for
% \cs{includesvg} or \cs{includeinkscape}. Some of them are overloaded for the
% usage as optional argument and there are some keys, which \emph{only} can be
@@ -2556,6 +2631,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \cs{svg@local@param@use} is extended with \cs{svg@local@param@def} by the
% definition of local keys during the loading of package \pkg{svg}.
% \begin{macrocode}
+\newcommand*\svg@local@param@use{}
+\newcommand*\svg@local@param@def[1]{%
+ \edef\svg@local@param@use{%
+ \unexpanded\expandafter{\svg@local@param@use}\unexpanded{#1}%
+ }%
+}
\newcommand*\svg@local@param@set[1]{%
\svg@local@param@use%
\FamilyOptions{SVG}{#1}%
@@ -2569,44 +2650,51 @@ svg-extract -- Extract independent graphic files from SVG pictures
% Using \opt{distort=true} is only reasonable, if \opt{height} and \opt{width}
% are given.
% \begin{macrocode}
- \@svg@tempswafalse%
+ \@svg@tempswatrue%
\ifdim\svg@param@width>\z@\relax\ifdim\svg@param@height>\z@\relax%
- \@svg@tempswatrue%
+ \@svg@tempswafalse%
\fi\fi%
- \if@svg@tempswa\else%
- \FamilyOptions{SVG}{distort=false}%
+ \if@svg@tempswa%
+ \FamilyExecuteOptions[.svg.sty]{SVG}{distort=false}%
\fi%
}
-\newcommand*\svg@local@param@use{}
-\newcommand*\svg@local@param@def[1]{%
- \edef\svg@local@param@use{%
- \unexpanded\expandafter{\svg@local@param@use}\unexpanded{#1}%
- }%
-}
% \end{macrocode}
-% \end{macro}^^A \svg@local@param@def
-% \end{macro}^^A \svg@local@param@use
% \end{macro}^^A \svg@local@param@set
-%
-% \iffalse
-%</body>
-%</package&base>
-% \fi
-%
-% The family member is defined for both \pkg{svg} and \pkg{svg-extract}.
+% \end{macro}^^A \svg@local@param@use
+% \end{macro}^^A \svg@local@param@def
+% \begin{macro}{\svg@deprecated@param}
+% This macro checks, if \cs{svgwidth} or \cs{svgscale} are defined. In this
+% case, the given values are passed to the correlating parameters and a warning
+% is raised.
% \begin{macrocode}
-%<*body>
-\DefineFamilyMember[.param]{SVG}
-%</body>
+\newcommand*\svg@deprecated@param{%
+ \@svg@tempswafalse%
+ \ifx\svgwidth\@undefined\else%
+ \edef\svg@tempa{\noexpand\FamilyOptions{SVG}{width=\svgwidth}}%
+ \svg@tempa%
+ \@svg@tempswatrue%
+ \fi%
+ \ifx\svgscale\@undefined\else%
+ \edef\svg@tempa{\noexpand\FamilyOptions{SVG}{scale=\svgscale}}%
+ \svg@tempa%
+ \@svg@tempswatrue%
+ \fi%
+ \if@svg@tempswa%
+ \PackageWarning{svg}{%
+ You should specify the image size with parameters\MessageBreak%
+ `width' and `height' or `scale' instead of using\MessageBreak%
+ `\string\svgscale' or `\string\svgwidth'%
+ }%
+ \let\svgwidth\@undefined%
+ \let\svgscale\@undefined%
+ \fi%
+}
% \end{macrocode}
+% \end{macro}^^A \svg@deprecated@param
%
%
-% \iffalse
-%<*package&base>
-%<*body>
-% \fi
%
-% \subsection{User commands}
+% \subsubsection{Definition of user commands}
%
% \begin{macro}{\svgsetup}
% \changes{v2.00}{2017/02/17}{new}^^A
@@ -2769,6 +2857,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\newcommand*\svg@param@angle{0}
\svg@local@param@def{%
\DefineFamilyKey[.param]{SVG}{angle}{%
+ \FamilyKeyStateUnknownValue%
\Ifisdimension{#1\p@}{%
\renewcommand*\svg@param@angle{#1}%
\FamilyKeyStateProcessed%
@@ -2917,35 +3006,6 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \subsection{Auxiliary macros}
%
-% \begin{macro}{\svg@deprecated@param}
-% This macro checks, if \cs{svgwidth} or \cs{svgscale} are defined. In this
-% case, the given values are passed to the correlating parameters and a warning
-% is raised.
-% \begin{macrocode}
-\newcommand*\svg@deprecated@param{%
- \@svg@tempswafalse%
- \ifx\svgwidth\@undefined\else%
- \edef\svg@tempa{\noexpand\FamilyOptions{SVG}{width=\svgwidth}}%
- \svg@tempa%
- \@svg@tempswatrue%
- \fi%
- \ifx\svgscale\@undefined\else%
- \edef\svg@tempa{\noexpand\FamilyOptions{SVG}{scale=\svgscale}}%
- \svg@tempa%
- \@svg@tempswatrue%
- \fi%
- \if@svg@tempswa%
- \PackageWarning{svg}{%
- You should specify the image size with parameters\MessageBreak%
- `width' and `height' or `scale' instead of using\MessageBreak%
- `\string\svgscale' or `\string\svgwidth'%
- }%
- \let\svgwidth\@undefined%
- \let\svgscale\@undefined%
- \fi%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@deprecated@param
% \begin{macro}{\svg@ink@run}
% \begin{macro}{\if@svg@ink@run}
% The command, which performs the call of \app{Inkscape} via \cs{ShellEscape}.
@@ -2996,7 +3056,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\fi%
% \end{macrocode}
% If all checks were positive, the export with \app{Inkscape} can be done in
-% case \file{-{}-shell-escape} is enabled.
+% case flag \file{-{}-shell-escape} is used.
% \begin{macrocode}
\if@svg@ink@run%
\ifnum\pdf@shellescape=\@ne\relax%
@@ -3016,8 +3076,8 @@ svg-extract -- Extract independent graphic files from SVG pictures
\fi%
}%
% \end{macrocode}
-% Executing \app{Inkscape} through the command~line~interface. Afterwards, the
-% export results are moved into the given output path.
+% Executing \app{Inkscape} on shell. Afterwards, the export results are moved
+% into the given output path.
% \begin{macrocode}
\svg@quotes@remove[\svg@file@base]{\svg@tempa}%
\svg@quotes@remove[\svg@out@name]{\svg@tempb}%
@@ -3064,9 +3124,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
\edef\svg@tempb{\svg@tempb.\svg@ink@format}%
\svg@quotes@remove{\svg@out@base}%
\svg@shell@mkdir{\svg@out@path}%
- \svg@shell@move{\svg@tempb}{\svg@out@base}%
+ \svg@shell@mv{\svg@tempb}{\svg@out@base}%
\if@svg@ink@latex%
- \svg@shell@move{\svg@tempb_tex}{\svg@out@base_tex}%
+ \svg@shell@mv{\svg@tempb_tex}{\svg@out@base_tex}%
\fi%
}{%
\gdef\svg@ink@ver{\m@ne}%
@@ -3098,71 +3158,43 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{macro}^^A \svg@ink@run
% \begin{macro}{\svg@input}
% \begin{macro}{\svg@@input}
+% \changes{v2.02g}{2020/06/12}{parsing of file extension discarded; meanwhile
+% taken over by the kernel}^^A
+% \begin{macro}{\svg@box}
% With \cs{svg@@input} the export results of \app{Inkscape} are included. The
% macro \cs{svg@input} is defined in order to realize the option \opt{exclude}
% for package \pkg{svg-extract}. The macro \cs{svg@set@input@path} is called to
% support commands like \cs{input}\marg{tex filename} within SVG~files.
% \begin{macrocode}
+\newsavebox\svg@box
\newcommand*\svg@input{\svg@@input}
\newcommand*\svg@@input[2][]{%
\IfArgIsEmpty{#1}{}{\svg@local@param@set{#1}}%
\svg@set@input@path%
+ \@svg@tempswatrue%
\if@svg@draft%
- \@svg@ink@latexfalse%
+ \@svg@tempswafalse%
\fi%
-% \end{macrocode}
-% In order to support file names with multiple dots, the second argument is
-% parsed and only the part after the last dot is stroed in \cs{svg@tempb} as
-% extension. Everything before is stored in \cs{svg@tempa}.
-% \begin{macrocode}
- \def\svg@tempb##1.##2\@nil{%
- \IfArgIsEmpty{##2}{%
- \def\svg@tempb{##1}%
- }{%
- \edef\svg@tempa{\svg@tempa.##1}%
- \svg@tempb##2\@nil%
- }%
- }%
- \edef\svg@tempa{%
- \def\noexpand\svg@tempa{}%
- \noexpand\svg@tempb#2.\noexpand\@nil%
- }%
- \svg@tempa%
-% \end{macrocode}
-% Afterwards \cs{svg@tempa} is defined with the file name within enclosing
-% braces followed by the extension---only if the file name itself contains any
-% dots--- and \cs{svg@tempb} holds the original file name plus extension
-% without enclosing braces.
-% \begin{macrocode}
- \svg@remove@leadingchar.\svg@tempa%
- \begingroup%
- \expandafter\filename@parse\expandafter{\svg@tempa}%
- \edef\svg@tempa{%
- \endgroup%
- \ifx\filename@ext\relax%
- \edef\noexpand\svg@tempa{\svg@tempa.\svg@tempb}%
- \else%
- \edef\noexpand\svg@tempa{{\svg@tempa}.\svg@tempb}%
- \fi%
- }%
- \svg@tempa%
- \edef\svg@tempb{#2}%
+ \if@svg@ink@latex\else%
+ \@svg@tempswafalse%
+ \fi%
+ \edef\svg@tempa{#2}%
% \end{macrocode}
% If the export with \app{Inkscape} was done with \LaTeX~support enabled, the
% corresponding file will be used together with \cs{input}. The necessary
% patches to environment \env{picture} as well as command \cs{includegraphics}
% are made beforehand with \cs{svg@patches}.
% \begin{macrocode}
- \if@svg@ink@latex%
+ \if@svg@tempswa%
\svg@patches{\svg@tempa}%
\ifnum\value{svg@param@lastpage}=\z@\relax%
- \expandafter\svg@get@lastpage\expandafter{\svg@tempb}%
+ \expandafter\svg@get@lastpage\expandafter{\svg@tempa}%
\fi%
\edef\svg@tempa{%
\ifx\svg@param@pretex\relax\else%
\noexpand\svg@param@pretex%
\fi%
- \noexpand\input{\svg@tempb_tex}%
+ \noexpand\input{\svg@tempa_tex}%
\ifx\svg@param@apptex\relax\else%
\noexpand\svg@param@apptex%
\fi%
@@ -3213,6 +3245,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\fi%
}
% \end{macrocode}
+% \end{macro}^^A \svg@box
% \end{macro}^^A \svg@@input
% \end{macro}^^A \svg@input
% \begin{macro}{\svg@wrn@scale}
@@ -3448,7 +3481,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \ToDo{Markup for link to issue}[v2.03]
% \begin{macrocode}
\ifx\svg@tempa\@empty%
- \ifwindows%
+ \svg@ifwindowsdetected{%
\def\svg@tempb{\jobname.svg.ink.ver.aux}%
\IfFileExists{\svg@tempb}{}{%
\ShellEscape{call "\svg@ink@exe" -V > \svg@tempb}%
@@ -3457,7 +3490,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\closein\@inputcheck%
\ShellEscape{del \svg@tempb}%
}%
- \fi%
+ }{}%
\fi%
% \end{macrocode}
% The found version is stored in \cs{svg@tempa} and parsed afterwards.
@@ -3490,6 +3523,161 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
%
%
+% \subsection{Handling path and file names}
+%
+% \begin{macro}{\svg@set@input@path}
+% \changes{v2.01}{2017/11/28}{new}^^A
+% \changes{v2.02}{2018/09/07}{usage of \cs{svg@deactivate@dq}}^^A
+% \begin{macro}{\svg@append@input@path}
+% \changes{v2.01}{2017/11/28}{new}^^A
+% \changes{v2.02}{2018/09/07}{avoid duplicates in \cs{input@path}}^^A
+% In order to import SVG~files from different folders, \cs{svg@set@input@path}
+% evaluates several macros, which are supposed to be used for holding different
+% search folders. Any given path will be handled by \cs{svg@normalize@path}.
+% The optional argument can be used to append an additional search path.
+% \begin{macrocode}
+\newcommand*\svg@set@input@path[1][]{%
+ \begingroup%
+ \svg@deactivate@dq%
+% \end{macrocode}
+% If a path was already found and stored within \cs{svg@file@path}, it is
+% searched first and wrapped in curly braces. This is necessary for using
+% commands like \cs{input}\marg{tex~filename} within SVG~files.
+% \begin{macrocode}
+ \ifx\svg@file@path\@empty\else%
+ \svg@normalize@path{\svg@file@path}%
+ \edef\svg@file@path{{\svg@file@path}}%
+ \fi%
+% \end{macrocode}
+% Afterwards, several search paths are appended. If \cs{svgpath} was used, it
+% is searched next. If nothing was found, \cs{graphicspath} is considered if
+% defined followed by a path given in the third argument. If nothing was found
+% yet, the standard \cs{input@path} is searched last.
+% \begin{macrocode}
+ \svg@append@input@path{\svg@file@path}{\svg@input@path}%
+ \svg@append@input@path{\svg@file@path}{\Ginput@path}%
+ \IfArgIsEmpty{#1}{}{\svg@append@input@path{\svg@file@path}{{#1}}}%
+ \svg@append@input@path{\svg@file@path}{\input@path}%
+% \end{macrocode}
+% Finally, \cs{input@path} is set.
+% \begin{macrocode}
+ \edef\svg@tempa{%
+ \endgroup%
+ \ifx\svg@file@path\@empty\else%
+ \def\noexpand\input@path{\svg@file@path}%
+ \fi%
+ }%
+ \svg@tempa%
+}
+% \end{macrocode}
+% Only, if a certain search path is defined, it is added. The paths given in
+% the first argument are compared to each path in the second argument and only
+% new ones are added.
+% \begin{macrocode}
+\newcommand*\svg@append@input@path[2]{%
+ \ifx#2\@undefined\else%
+ \edef\svg@tempb{#2}%
+ \expandafter\@tfor\expandafter\svg@tempa\expandafter:\expandafter=%
+ \svg@tempb\do{%
+% \end{macrocode}
+% Passing each new path to \cs{svg@normalize@path}. If a path already exists,
+% switch \cs{if@svg@tempswa} is set to \val{false}.
+% \begin{macrocode}
+ \ifx\svg@tempa\@empty\else%
+ \@svg@tempswatrue%
+ \svg@normalize@path{\svg@tempa}%
+ \expandafter\@tfor\expandafter\svg@tempb\expandafter:\expandafter=%
+ #1\do{%
+ \ifx\svg@tempa\svg@tempb%
+ \@svg@tempswafalse%
+ \@break@tfor%
+ \fi%
+ }%
+ \if@svg@tempswa%
+ \edef#1{#1{\svg@tempa}}%
+ \fi%
+ \fi%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@append@input@path
+% \end{macro}^^A \svg@set@input@path
+% \begin{macro}{\svg@get@path}
+% \changes{v2.01}{2017/11/28}{using \cs{svg@set@input@path}}^^A
+% \changes{v2.01}{2017/11/28}{using \cs{trim@spaces}}^^A
+% \begin{macro}{\if@svg@file@found}
+% \begin{macro}{\svg@file@path}
+% \begin{macro}{\svg@file@name}
+% \begin{macro}{\svg@file@base}
+% \begin{macro}{\svg@file@suffix}
+% The command \cs{svg@get@path} tries to find a given SVG~file. If the
+% searched file wasn't found in the current path, all paths given with
+% \cs{svgpath} are evaluated. If there was no appropriate file again, all paths
+% given by \cs{graphicspath} are examined. In the last step, a given path
+% within the second mandatory argument is browsed. The results for file path
+% and name are stored in \cs{svg@file@path} and \cs{svg@file@name} as well as
+% the compound of both is saved in \cs{svg@file@base}.
+% \begin{macrocode}
+\newif\if@svg@file@found
+\newcommand*\svg@file@path{}
+\newcommand*\svg@file@name{}
+\newcommand*\svg@file@base{}
+\newcommand*\svg@file@suffix{}
+\newcommand*\svg@get@path[3][\svg@file@ext]{%
+ \begingroup%
+ \svg@filename@parse[{#1}]{#2}%
+ \IfArgIsEmpty{#1}{%
+ \edef\svg@tempa{\filename@area\filename@base.\filename@ext}%
+ }{%
+ \edef\svg@tempa{\filename@area\filename@base.#1}%
+ }%
+% \end{macrocode}
+% After calling \cs{svg@set@input@path}, all search paths are stored in
+% \cs{input@path}, a single path given in the third argument will also be
+% considered.
+% \begin{macrocode}
+ \svg@set@input@path[{#3}]%
+% \end{macrocode}
+% The specified file is searched with \cs{IfFileExists}. If the file search was
+% succesful, the macro \cs{svg@filename@parse} is called with the result.
+% \begin{macrocode}
+ \@svg@tempswafalse%
+ \expandafter\IfFileExists\expandafter{\svg@tempa}{%
+ \expandafter\svg@quotes@check\expandafter{\svg@tempa}%
+ \if@svg@quotes@found\else%
+ \svg@quotes@remove{\@filef@und}%
+ \fi%
+ \@svg@tempswatrue%
+ \edef\@filef@und{\expandafter\trim@spaces\expandafter{\@filef@und}}%
+ \svg@filename@parse[{#1}]{\@filef@und}%
+ }{}%
+ \edef\svg@tempa{%
+ \endgroup%
+ \if@svg@tempswa%
+ \noexpand\@svg@file@foundtrue%
+ \def\noexpand\svg@file@path{\filename@area}%
+ \def\noexpand\svg@file@name{\filename@base}%
+ \def\noexpand\svg@file@base{\filename@area\filename@base}%
+ \else%
+ \noexpand\@svg@file@foundfalse%
+ \def\noexpand\svg@file@path{}%
+ \def\noexpand\svg@file@name{#2}%
+ \def\noexpand\svg@file@base{#2}%
+ \fi%
+ }%
+ \svg@tempa%
+}
+% \end{macrocode}
+% \end{macro}^^A \svg@file@suffix
+% \end{macro}^^A \svg@file@base
+% \end{macro}^^A \svg@file@name
+% \end{macro}^^A \svg@file@path
+% \end{macro}^^A \if@svg@file@found
+% \end{macro}^^A \svg@get@path
+%
+%
+%
% \subsection{Patches}
%
% \begin{macro}{\svg@patches}
@@ -3500,7 +3688,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{macro}{\svg@includegraphics@saved}
% For including the export results from \app{Inkscape} with \LaTeX~support
% enabled, there are some patches necessary for environment \env{picture} and
-% \cs{includegraphics}. Those patches are done with \cs{svg@patches}.
+% \cs{includegraphics}. These patches are done with \cs{svg@patches}.
% \begin{macrocode}
\newcommand*\svg@picture@saved{}
\let\svg@picture@saved\picture
@@ -3515,6 +3703,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{macro}^^A \svg@includegraphics@saved
% \end{macro}^^A \svg@picture@saved
% \end{macro}^^A \svg@patches
+% \begin{macro}{\svg@picture@patched}
% \begin{macro}{\svg@pictur@patched}
% In order to provide the possibility specify the desired width of a graphic,
% the appropriate \cs{unitlength} is calculated at the beginning of the
@@ -3559,6 +3748,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
}
% \end{macrocode}
% \end{macro}^^A \svg@pictur@patched
+% \end{macro}^^A \svg@picture@patched
% \begin{macro}{\svg@includegraphics@patched}
% \begin{macro}{\svg@includegraphics@file}
% The patch to \cs{includegraphics} is meant to dissolve the \app{Inkscape} bug
@@ -3606,7 +3796,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \iffalse
%</body>
-%</package&base>
+%</package&main>
%<*package&option>
% \fi
%
@@ -3624,7 +3814,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% for package \pkg{svg} in order to raise a warning message. Primarily this is
% done for compatibility reasons.
% \begin{macrocode}
-%<*base>
+%<*main>
\DefineFamilyMember[.dummy]{SVG}
\newcommand*\svg@dummy@key[2][]{%
\@ifpackageloaded{svg-extract}{}{%
@@ -3654,7 +3844,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\AfterPackage{svg-extract}{\RelaxFamilyKey[.dummy]{SVG}{#2}}%
}%
}
-%</base>
+%</main>
% \end{macrocode}
% \end{macro}^^A \svg@dummy@key
%
@@ -3668,9 +3858,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
% With option \opt{extract} it can be controlled, if the extraction of
% independent graphic files should be done.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key[true]{extract}
-%</base>
+%</main>
%<*extract>
\newif\if@svgx@run
\DefineFamilyKey{SVG}{extract}[true]{%
@@ -3724,11 +3914,11 @@ svg-extract -- Extract independent graphic files from SVG pictures
% is set to \val{pdf} or, if dvi output could be detected, to \val{eps} during
% initialization.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{extractformat}
\svg@dummy@key[true]{pdf}
\svg@dummy@key[true]{eps}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@format{pdf}
\ifxetex\else\ifpdf\else
@@ -3784,12 +3974,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \LaTeX~file. By default, the preamble of the main document is used, which end
% is detected at \cs{begin}|{document}|.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{extractpreamble}
\svg@dummy@key{preamble}
\svg@dummy@key{extractpreambleend}
\svg@dummy@key{end}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@preamble{\jobname.\svgx@latex@ext}%
\DefineFamilyKey{SVG}{extractpreamble}{%
@@ -3824,9 +4014,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
% With this option, the number of \LaTeX~runs for the separate auxiliary file
% can be set.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{extractruns}
-%</base>
+%</main>
%<*extract>
\newcounter{svgx@runs}
\DefineFamilyKey{SVG}{extractruns}{%
@@ -3858,12 +4048,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
% The command and facultative options for the \LaTeX~call of the separate
% auxiliary file. The default is set according to the currently used engine.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{latexexe}
\svg@dummy@key{pdflatex}
\svg@dummy@key{latexext}
\svg@dummy@key{latexopt}
-%</base>
+%</main>
%<*extract>
\ifxetex
\newcommand*\svgx@latex@exe{xelatex}
@@ -3927,18 +4117,18 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{option}{pdftops}
% \changes{v2.00}{2017/02/24}{deprecated}^^A
% Options and macros for calling convert commands, which are supplied by most
-% \LaTeXe~distributions. These are used to generate all files, which are
+% \LaTeX~distributions. These are used to generate all files, which are
% supported by option \opt{extractformat}, as they don't need an additional
% application.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{dvipsopt}
\svg@dummy@key{pstoepsopt}
\svg@dummy@key{pstopdfopt}
\svg@dummy@key{pdftoepsopt}
\svg@dummy@key{pdftopsopt}
\svg@dummy@key{pdftops}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@dvips@exe{dvips}
\newcommand*\svgx@dvips@opt{}
@@ -3971,8 +4161,8 @@ svg-extract -- Extract independent graphic files from SVG pictures
\FamilyKeyStateProcessed%
}
\DefineFamilyKey{SVG}{pdftops}{%
- \PackageWarning{#1}{%
- The option key `pdftops' is deprecated.\MessageBreak%
+ \PackageWarning{svg-extract}{%
+ The option key `pdftops' is deprecated. \MessageBreak%
You should use either `pdftoepsopt' or\MessageBreak%
`pdftopsopt' instead. See the manual for\MessageBreak%
more. Nothing was done%
@@ -4002,8 +4192,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \subsubsection{Invoking external application for graphic conversion}
%
-% Besides the use of a conversion tool supplied by \LaTeXe, the applications
-% \app{ImageMagick} and \app{Ghostscript} can be used for converting graphics.
+% Besides the use of a conversion tool supplied by the \LaTeX~distribution,
+% the applications \app{ImageMagick} and \app{Ghostscript} can be used for
+% converting graphics.
%
% \begin{option}{convert}
% \changes{v2.00}{2017/02/24}{changed/extended}^^A
@@ -4012,9 +4203,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
% The option \opt{convert} can be used to define, which of both applications
% should be use. \app{ImageMagick} is set by default.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key[true]{convert}
-%</base>
+%</main>
%<*extract>
\newif\if@svgx@cnv@run
\newcommand*\svgx@cnv@cmd{}
@@ -4042,24 +4233,24 @@ svg-extract -- Extract independent graphic files from SVG pictures
\or% gs64
\@svgx@cnv@runtrue%
\renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}%
- \svgx@onlywindows{%
+ \svg@ifwindowsdetected{%
\renewcommand*\svgx@gs@exe{gswin64c}%
- }%
+ }{}%
\or% gs32
\@svgx@cnv@runtrue%
\renewcommand*\svgx@cnv@cmd{\svgx@gs@cmd}%
- \svgx@onlywindows{%
+ \svg@ifwindowsdetected{%
\renewcommand*\svgx@gs@exe{gswin32c}%
- }%
+ }{}%
\fi%
% \end{macrocode}
% In version~v1.0 the option \opt{convert} was used to set both the executable
% and options for the conversion application, meant for the usage of
% \app{ImageMagick}. This is taken into account here.
% \begin{macrocode}
- \else%
+ \else% legacy option
% \end{macrocode}
-% Same doing like with option \opt{inkscape}.
+% Same doing like with legacy part of option \opt{inkscape}.
% \begin{macrocode}
\def\svg@tempa##1-##2\@nil{%
\IfArgIsEmpty{##2}{\def\svg@tempb{}}{%
@@ -4108,10 +4299,10 @@ svg-extract -- Extract independent graphic files from SVG pictures
% Option \opt{convertformat} controls the output format for converted files. It
% is set to \val{png} by default.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{convertformat}
\svg@dummy@key[true]{png}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@cnv@format{png}
\DefineFamilyKey{SVG}{convertformat}{%
@@ -4143,6 +4334,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \changes{v2.00}{2017/02/24}{new}^^A
% \begin{option}{convertdensity}
% \begin{macro}{\svgx@cnv@dpi}
+% \begin{macro}{\svgx@cnv@get@dpi}
% The option \opt{convertdpi} is meant to define the used density during the
% conversion process. It can be set either for all designated output formats or
% targeted for a specific format. It's also possible to use something like
@@ -4151,10 +4343,10 @@ svg-extract -- Extract independent graphic files from SVG pictures
% the option is used for a specific or for all output formats is recocnized by
% \cs{svgx@ifkeyandval}.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{convertdpi}
\svg@dummy@key{convertdensity}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@cnv@dpi{}
\let\svgx@cnv@dpi\relax
@@ -4175,11 +4367,151 @@ svg-extract -- Extract independent graphic files from SVG pictures
}%
}
\DefineFamilyKey{SVG}{convertdensity}{\FamilyOptions{SVG}{convertdpi=#1}}
+% \end{macrocode}
+% This macro is used to resolve a given value to set the density for the
+% conversion. The delimited macros \cs{svg@tempa} and \cs{svg@tempb} are
+% defined to first crop any given suffix \val{dpi} and second to split two
+% numbers at |x|, if present. Pay attention how both macros are invoked. In the
+% end, a passed value in any of the forms \val{300}, \val{300dpi}, \val{300x400}
+% or \val{300x400dpi} and even \val{300dpix400dpi} is possible. The result is
+% stored in \cs{svg@tempa}.
+% \begin{macrocode}
+\newcommand*\svgx@cnv@get@dpi[1]{%
+ \begingroup%
+ \def\svg@tempa##1dpi##2x##3dpi##4\@nil{%
+ \edef\svg@tempa{##1}%
+% \end{macrocode}
+% Switch \cs{if@svg@tempswa} as \cs{iftrue} means, a valid value was found.
+% \begin{macrocode}
+ \@svg@tempswafalse%
+% \end{macrocode}
+% If only the first argument is a number and third is empty, a single number
+% was given and there's nothing more to do. If the argument is something like
+% \val{300dpix400dpi}, the third argument is the second number.
+% \begin{macrocode}
+ \Ifnumber{##1}{%
+ \IfArgIsEmpty{##3}{\@svg@tempswatrue}{%
+ \Ifnumber{##3}{\edef\svg@tempa{##1x##3}}{}%
+ }%
+ }{}%
+ \if@svg@tempswa\else%
+ \expandafter\svg@tempb\svg@tempa xx\@nil%
+ \fi%
+ }%
+% \end{macrocode}
+% Macro \cs{svg@tempb} splits at |x| and checks, if something valid like
+% \val{300x400} was given. If true, the value is stored in \cs{svg@tempa}.
+% \begin{macrocode}
+ \def\svg@tempb##1x##2x##3\@nil{%
+ \Ifstr{##3}{x}{%
+ \@svg@tempswatrue%
+ \IfArgIsEmpty{##1}{\@svg@tempswafalse}{%
+ \Ifnumber{##1}{}{\@svg@tempswafalse}%
+ }%
+ \IfArgIsEmpty{##2}{\@svg@tempswafalse}{%
+ \Ifnumber{##2}{}{\@svg@tempswafalse}%
+ }%
+ \if@svg@tempswa%
+ \edef\svg@tempa{##1x##2}%
+ \fi%
+ }{}%
+ }%
+ \IfArgIsEmpty{#1}{%
+ \let\svg@tempa\@empty%
+ }{%
+ \lowercase{\svg@tempa#1dpi#1xdpi\@nil}%
+ \if@svg@tempswa\else%
+ \let\svg@tempa\relax%
+ \fi%
+ }%
+ \edef\svg@tempb{%
+ \endgroup%
+ \ifx\svg@tempa\relax%
+ \let\noexpand\svg@tempa\noexpand\relax%
+ \else%
+ \def\noexpand\svg@tempa{\svg@tempa}%
+ \fi%
+ }%
+ \svg@tempb%
+}
%</extract>
% \end{macrocode}
+% \end{macro}^^A \svgx@cnv@get@dpi
% \end{macro}^^A \svgx@cnv@dpi
% \end{option}^^A convertdensity
% \end{option}^^A convertdpi
+%
+% \iffalse
+%<*extract>
+% \fi
+%
+% \begin{macro}{\svgx@setformatkey}
+% \begin{macro}{\svgx@useformatkey}
+% With \cs{svgx@setformatkey} the---maybe output format depend---keys for the
+% conversion tools are set. First argument contains the value given to a key,
+% second the command sequence name of the macro, to whom the value shall be
+% allocated.
+% \begin{macrocode}
+\newcommand*\svgx@setformatkey[2]{%
+% \end{macrocode}
+% A key of the form \val{\meta{key}=\{\meta{format}=\meta{value}\}} is given.
+% The desired output format can be accessed with |##1|, the value with |##2|
+% within the arguments of \cs{svgx@ifkeyandval}.
+% \begin{macrocode}
+ \svgx@ifkeyandval{#1}{%
+ \svg@ifvalueisrelax{##2}{%
+ \expandafter\let\csname #2@##1\endcsname\relax%
+ }{%
+ \@namedef{#2@##1}{##2}%
+ }%
+% \end{macrocode}
+% A key of the form \val{\meta{key}=\{\meta{format}=\meta{value}\}} is given.
+% The value can be used with |##1|.
+% \begin{macrocode}
+ }{%
+ \svg@ifvalueisrelax{##1}{%
+ \expandafter\let\csname #2\endcsname\relax%
+ }{%
+ \@namedef{#2}{##1}%
+ }%
+ }%
+}
+% \end{macrocode}
+% The command \cs{svgx@useformatkey} checks, if a format specific key was
+% definded with \cs{svgx@setformatkey}, whereas the format is given in the
+% second argument. If this is not the case, the setting for all output formats
+% is used. After that, a specific key appended with a |+| can be used to do
+% some additional stuff.
+% \begin{macrocode}
+\newcommand*\svgx@useformatkey[3]{%
+ \scr@ifundefinedorrelax{#1@#2}{%
+ \scr@ifundefinedorrelax{#1}{}{%
+ \expandafter\ifx\csname #1\endcsname\@empty\else%
+ #3\@nameuse{#1}\space%
+ \fi%
+ }%
+ \scr@ifundefinedorrelax{#1@#2+}{}{%
+ \expandafter\ifx\csname #1@#2+\endcsname\@empty\else%
+ #3\@nameuse{#1@#2+}\space%
+ \fi%
+ }%
+ }{%
+% \end{macrocode}
+% If a format specific key was definded, it is used.
+% \begin{macrocode}
+ \expandafter\ifx\csname #1@#2\endcsname\@empty\else%
+ #3\@nameuse{#1@#2}\space%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \svgx@useformatkey
+% \end{macro}^^A \svgx@setformatkey
+%
+% \iffalse
+%</extract>
+% \fi
+%
% \begin{option}{magickexe}
% \changes{v2.00}{2017/02/24}{new}^^A
% \begin{macro}{\svgx@magick@exe}
@@ -4189,19 +4521,24 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{option}{magickoperator}
% \changes{v2.00}{2017/02/24}{new}^^A
% \begin{macro}{\svgx@magick@opr}
+% \begin{macro}{\svgx@magick@cmd}
% Setting the command including maybe the path to \app{ImageMagick}. The keys
% \opt{magicksetting} and \opt{magickoperator} should be used to add optional
% arguments before (\emph{Settings}) or after (\emph{Operators}) the input
% file. They can either be set for all or a specific output format as like
% option \opt{convertdpi}. For this \cs{svgx@setformatkey} is used.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{magickexe}
\svg@dummy@key{magicksetting}
\svg@dummy@key{magickoperator}
-%</base>
+%</main>
%<*extract>
-\newcommand*\svgx@magick@exe{}
+\svg@ifwindowsdetected{%
+ \newcommand*\svgx@magick@exe{magick}%
+}{%
+ \newcommand*\svgx@magick@exe{convert}%
+}
\DefineFamilyKey{SVG}{magickexe}{%
\renewcommand*\svgx@magick@exe{#1}%
\FamilyKeyStateProcessed%
@@ -4216,8 +4553,17 @@ svg-extract -- Extract independent graphic files from SVG pictures
\svgx@setformatkey{#1}{svgx@magick@opr}%
\FamilyKeyStateProcessed%
}
+\newcommand*\svgx@magick@cmd[3]{%
+ \svgx@magick@exe\space%
+ \svgx@useformatkey{svgx@cnv@dpi}{#3}{-density }%
+ \svgx@useformatkey{svgx@magick@set}{#3}{}%
+ "#1.#2"\space%
+ \svgx@useformatkey{svgx@magick@opr}{#3}{}%
+ "#1.#3"%
+}
%</extract>
% \end{macrocode}
+% \end{macro}^^A \svgx@magick@cmd
% \end{macro}^^A \svgx@magick@opr
% \end{option}^^A magickoperator
% \end{macro}^^A \svgx@magick@set
@@ -4233,19 +4579,24 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{option}{gsdevice}
% \changes{v2.00}{2017/02/24}{new}^^A
% \begin{macro}{\svgx@gs@device}
+% \begin{macro}{\svgx@gs@cmd}
% Options to set the command including maybe the path to \app{Ghostscript}. As
% \app{Ghostscript} needs a specific device defined for different output
% formats, the option \opt{gsdevice} can be used. It can either be set for all
% or a specific output format just like \opt{gsopt} in the same manner like
% option \opt{convertdpi}.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{gsexe}
\svg@dummy@key{gsopt}
\svg@dummy@key{gsdevice}
-%</base>
+%</main>
%<*extract>
-\newcommand*\svgx@gs@exe{}
+\svg@ifwindowsdetected{%
+ \newcommand*\svgx@gs@exe{gswin64c}%
+}{%
+ \newcommand*\svgx@gs@exe{gs}%
+}
\DefineFamilyKey{SVG}{gsexe}{%
\renewcommand*\svgx@gs@exe{#1}%
\FamilyKeyStateProcessed%
@@ -4260,8 +4611,16 @@ svg-extract -- Extract independent graphic files from SVG pictures
\svgx@setformatkey{#1}{svgx@gs@device}%
\FamilyKeyStateProcessed%
}
+\newcommand*\svgx@gs@cmd[3]{%
+ \svgx@gs@exe\space-dSAFER -dBATCH -dNOPAUSE\space%
+ \svgx@useformatkey{svgx@gs@device}{#3}{-sDEVICE=}%
+ \svgx@useformatkey{svgx@cnv@dpi}{#3}{-r}%
+ \svgx@useformatkey{svgx@gs@opt}{#3}{}%
+ -sOutputFile="#1.#3"\space"#1.#2"%
+}
%</extract>
% \end{macrocode}
+% \end{macro}^^A \svgx@gs@cmd
% \end{macro}^^A \svgx@gs@device
% \end{option}^^A gsdevice
% \end{macro}^^A \svgx@gs@opt
@@ -4278,27 +4637,15 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \changes{v2.02}{2018/09/07}{usage of \cs{svg@sanitize@dq}}^^A
% \begin{option}{path}
% \changes{v2.00}{2017/02/24}{deprecated}^^A
-% \begin{option}{extractname}
-% \changes{v2.00}{2017/02/24}{new}^^A
-% \changes{v2.02}{2018/09/07}{usage of \cs{svg@quotes@remove}}^^A
-% \begin{option}{name}
-% \changes{v2.00}{2017/02/24}{deprecated}^^A
-% \changes{v2.00}{2017/02/24}{support of \pkg{subfig} removed}^^A
% \begin{macro}{\svgx@out@path}
-% \begin{macro}{\svgx@out@name}
-% \begin{macro}{\if@svgx@out@sec}
-% \begin{counter}{svgx@out@count}
% The option \opt{extractpath} controls, in which folder the results both of
% the extraction as well as the conversion of \app{ImageMagick} or
-% \app{Ghostscript} will be located. With option \opt{extractname} the
-% name of the extracted and maybe converted file itself can be changed.
+% \app{Ghostscript} will be located.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{extractpath}
\svg@dummy@key{path}
-\svg@dummy@key{extractname}
-\svg@dummy@key{name}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@out@path{}
\DefineFamilyKey{SVG}{extractpath}{%
@@ -4328,9 +4675,33 @@ svg-extract -- Extract independent graphic files from SVG pictures
\DefineFamilyKey{SVG}{path}{%
\svg@deprecated@key[svg-extract]{path=#1}{extractpath=#1}%
}
-\newcounter{svgx@out@count}
+%</extract>
+% \end{macrocode}
+% \end{macro}^^A \svgx@out@path
+% \end{option}^^A path
+% \end{option}^^A extractpath
+% \begin{option}{extractname}
+% \changes{v2.00}{2017/02/24}{new}^^A
+% \changes{v2.02}{2018/09/07}{usage of \cs{svg@quotes@remove}}^^A
+% \begin{option}{name}
+% \changes{v2.00}{2017/02/24}{deprecated}^^A
+% \changes{v2.00}{2017/02/24}{support of \pkg{subfig} removed}^^A
+% \begin{macro}{\svgx@out@name}
+% \begin{macro}{\if@svgx@out@sec}
+% \begin{counter}{svgx@out@count}
+% \begin{macro}{\svgx@out@sec}
+% With option \opt{extractname} the name of the extracted and maybe converted
+% file itself can be changed.
+% \begin{macrocode}
+%<*main>
+\svg@dummy@key{extractname}
+\svg@dummy@key{name}
+%</main>
+%<*extract>
\newcommand*\svgx@out@name{}
\newif\if@svgx@out@sec
+\newcounter{svgx@out@count}
+\newcommand*\svgx@out@sec{unknown}
\DefineFamilyKey{SVG}{extractname}{%
\svg@quotes@remove[{#1}]{\svg@tempb}%
\FamilySetNumerical{SVG}{extractname}{svg@tempa}{%
@@ -4363,14 +4734,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
}
%</extract>
% \end{macrocode}
+% \end{macro}^^A \svgx@out@sec
% \end{counter}^^A svgx@out@count
% \end{macro}^^A \if@svgx@out@sec
% \end{macro}^^A \svgx@out@name
-% \end{macro}^^A \svgx@out@path
% \end{option}^^A name
% \end{option}^^A extractname
-% \end{option}^^A path
-% \end{option}^^A extractpath
%
%
%
@@ -4395,13 +4764,13 @@ svg-extract -- Extract independent graphic files from SVG pictures
% value \val{inherit} means, that the actual option for including is used for
% extraction as well. This is the default setting.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{extractwidth}
\svg@dummy@key{extractheight}
\svg@dummy@key{extractdistort}
\svg@dummy@key{extractkeepaspectratio}
\svg@dummy@key{extractscale}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@param@width{\svg@param@width}
\DefineFamilyKey{SVG}{extractwidth}{%
@@ -4463,7 +4832,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\if@svg@tempswa%
\FamilyOptions{SVG}{extractdistort=false}%
- \else
+ \else%
\FamilyOptions{SVG}{extractdistort=true}%
\fi%
\else%
@@ -4511,11 +4880,11 @@ svg-extract -- Extract independent graphic files from SVG pictures
% The similar hooks for executing code right before or after the graphic
% extraction.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key{extractpretex}
\svg@dummy@key{extractapptex}
\svg@dummy@key{extractpostex}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@param@pretex{\svg@param@pretex}
\DefineFamilyKey{SVG}{extractpretex}{%
@@ -4566,10 +4935,10 @@ svg-extract -- Extract independent graphic files from SVG pictures
% deleted. Setting \val{true} will remove all files, \val{false} won't clear
% any file. Additionally, a specific file list of suffixes can be given.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key[true]{clean}
\svg@dummy@key[true]{clear}
-%</base>
+%</main>
%<*extract>
\newcommand*\svgx@clean{}
\DefineFamilyKey{SVG}{clean}[true]{%
@@ -4585,7 +4954,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\FamilyKeyStateProcessed%
\fi%
}
-\DefineFamilyKey{SVG}{clear}{\FamilyOptions{SVG}{clean=#1}}
+\DefineFamilyKey{SVG}{clear}[true]{\FamilyOptions{SVG}{clean=#1}}
%</extract>
% \end{macrocode}
% \end{macro}^^A \svgx@clean
@@ -4595,9 +4964,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
% If it is desired not to include but only extract graphics with package
% \pkg{svg-extract}, option \opt{exclude} can be used.
% \begin{macrocode}
-%<*base>
+%<*main>
\svg@dummy@key[true]{exclude}
-%</base>
+%</main>
%<*extract>
\DefineFamilyKey{SVG}{exclude}[true]{%
\FamilySetBool{SVG}{exclude}{@svg@tempswa}{#1}%
@@ -4643,7 +5012,14 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{parameter}{extractpretex}
% \begin{parameter}{extractapptex}
% \begin{parameter}{extractruns}
+% \begin{parameter}{latexexe}
% \begin{parameter}{latexopt}
+% \begin{parameter}{latexext}
+% \begin{parameter}{dvipsopt}
+% \begin{parameter}{pstoepsopt}
+% \begin{parameter}{pstopdfopt}
+% \begin{parameter}{pdftoepsopt}
+% \begin{parameter}{pdftopsopt}
% \begin{parameter}{convert}
% \begin{parameter}{convertformat}
% \begin{parameter}{convertdpi}
@@ -4663,10 +5039,18 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \changes{v2.02}{2018/09/07}{new}^^A
% \begin{parameter}{extractscale}
% \begin{parameter}{extractangle}
+% \changes{v2.02}{2018/09/07}{new}^^A
% \begin{parameter}{extractpretex}
% \begin{parameter}{extractapptex}
% \begin{parameter}{extractruns}
+% \begin{parameter}{latexexe}
% \begin{parameter}{latexopt}
+% \begin{parameter}{latexext}
+% \begin{parameter}{dvipsopt}
+% \begin{parameter}{pstoepsopt}
+% \begin{parameter}{pstopdfopt}
+% \begin{parameter}{pdftoepsopt}
+% \begin{parameter}{pdftopsopt}
% \begin{parameter}{convert}
% \begin{parameter}{convertformat}
% \begin{parameter}{convertdpi}
@@ -4711,7 +5095,14 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{parameter}^^A convertdpi
% \end{parameter}^^A convertformat
% \end{parameter}^^A convert
+% \end{parameter}^^A pdftopsopt
+% \end{parameter}^^A pdftoepsopt
+% \end{parameter}^^A pstopdfopt
+% \end{parameter}^^A pstoepsopt
+% \end{parameter}^^A dvipsopt
+% \end{parameter}^^A latexext
% \end{parameter}^^A latexopt
+% \end{parameter}^^A latexexe
% \end{parameter}^^A extractruns
% \end{parameter}^^A extractapptex
% \end{parameter}^^A extractpretex
@@ -4733,7 +5124,14 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{parameter}^^A convertdpi
% \end{parameter}^^A convertformat
% \end{parameter}^^A convert
+% \end{parameter}^^A pdftopsopt
+% \end{parameter}^^A pdftoepsopt
+% \end{parameter}^^A pstopdfopt
+% \end{parameter}^^A pstoepsopt
+% \end{parameter}^^A dvipsopt
+% \end{parameter}^^A latexext
% \end{parameter}^^A latexopt
+% \end{parameter}^^A latexexe
% \end{parameter}^^A extractruns
% \end{parameter}^^A extractapptex
% \end{parameter}^^A extractpretex
@@ -4752,22 +5150,22 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \changes{v2.00}{2017/02/24}{new}^^A
% Some dummys for package \pkg{svg}.
% \begin{macrocode}
-%<*base>
+%<*main>
\newcommand*\svghidepreamblestart{%
\PackageWarning{svg}{%
The macro `\string\svghidepreamblestart' is only meant\MessageBreak%
- to be used together with package `svg-extract'.\MessageBreak%
+ to be used together with package `svg-extract'. \MessageBreak%
Nevertheless, nothing will happen%
}%
}
\newcommand*\svghidepreambleend{%
\PackageWarning{svg}{%
The macro `\string\svghidepreambleend' is only meant\MessageBreak%
- to be used together with package `svg-extract'.\MessageBreak%
+ to be used together with package `svg-extract'. \MessageBreak%
Nevertheless, nothing will happen%
}%
}
-%</base>
+%</main>
% \end{macrocode}
% These two macros can be used to hide some parts of the preamble during
% reading the preamble of the main document.
@@ -4785,18 +5183,14 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \subsection{Auxiliary macros}
%
% \begin{macro}{\svg@extract}
-% \begin{macro}{\svgx@stream@in}
-% \begin{macro}{\svgx@read@line}
-% \begin{macro}{\svgx@stream@out}
-% \begin{macro}{\if@svgx@preamble@write}
% The macro \cs{svg@extract} does the actual job of both extracting and
% converting independent graphic files. Since it is necessary to run it with
% \file{-{}-shell-escape} enabled, the command raises a warning if it is not
% activated. Afterwards, the package is finished.
% \begin{macrocode}
-%<*base>
+%<*main>
\newcommand*\svg@extract[1]{}
-%</base>
+%</main>
%<*extract>
\ifnum\pdf@shellescape=\@ne\relax\else%
\renewcommand*\svg@extract[1]{%
@@ -4814,15 +5208,37 @@ svg-extract -- Extract independent graphic files from SVG pictures
}%
\expandafter\endinput%
\fi
+%</extract>
% \end{macrocode}
-% If \file{-{}-shell-escape} is enabled, the command is defined with its
-% intended functionality. Some macros and a input stream as well as a output
-% stream are necessary for this.
+% \end{macro}^^A \svg@extract
+%
+% \iffalse
+%</package&body>
+%<*package&body&extract>
+% \fi
+%
+% \begin{macro}{\svgx@stream@in}
+% \begin{macro}{\svgx@read@line}
+% \begin{macro}{\svgx@stream@out}
+% \begin{macro}{\if@svgx@preamble@write}
+% Both an input stream and an output stream are necessary for this as well as a
+% token register, which is used to store all commands which should be executed
+% on shell.
% \begin{macrocode}
\newread\svgx@stream@in
\newcommand*\svgx@read@line{}
\newwrite\svgx@stream@out
\newif\if@svgx@preamble@write
+% \end{macrocode}
+% \end{macro}^^A \if@svgx@preamble@write
+% \end{macro}^^A \svgx@stream@out
+% \end{macro}^^A \svgx@read@line
+% \end{macro}^^A \svgx@stream@in
+% \begin{macro}{\svg@extract}
+% If flag \file{-{}-shell-escape} is enabled, the command is defined with its
+% intended functionality. It runs all necessary processes to extract and
+% convert grahic files.
+% \begin{macrocode}
\renewcommand*\svg@extract[1]{%
% \end{macrocode}
% If option \opt{extract} is enabled\dots
@@ -5263,26 +5679,13 @@ svg-extract -- Extract independent graphic files from SVG pictures
}%
\fi%
}
-%</extract>
% \end{macrocode}
-% \end{macro}^^A \if@svgx@preamble@write
-% \end{macro}^^A \svgx@stream@out
-% \end{macro}^^A \svgx@read@line
-% \end{macro}^^A \svgx@stream@in
% \end{macro}^^A \svg@extract
-%
-% \iffalse
-%</package&body>
-%<*package&extract&body>
-% \fi
-%
% \begin{macro}{\svgx@get@out@sec}
-% \begin{macro}{\svgx@out@sec}
% The macro \cs{svgx@get@out@sec} reads all sectioning counters in order to
% get the numbering of the current sectioning level. The value is stored in
% \cs{svgx@out@sec}.
% \begin{macrocode}
-\newcommand*\svgx@out@sec{unknown}
\newcommand*\svgx@get@out@sec{%
\begingroup%
\def\svg@tempa{}%
@@ -5306,11 +5709,10 @@ svg-extract -- Extract independent graphic files from SVG pictures
\svg@tempb%
}
% \end{macrocode}
-% \end{macro}^^A \svgx@out@sec
% \end{macro}^^A \svgx@get@out@sec
% \begin{macro}{\svgx@documentclass}
% \begin{macro}{\if@svgx@classfound}
-% This delimited macro is used to find a occurrence of \cs{documentclass}
+% This delimited macro is used to find the occurrence of \cs{documentclass}
% within a read in line. The delinmiter \cs{documentclass} is used twice in
% order to ignore the possible occurrence of white space or anything else right
% before \cs{documentclass}.
@@ -5425,53 +5827,13 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{macrocode}
% \end{macro}^^A \svgx@cnv@get@informat
% \end{macro}^^A \svgx@cnv@informat
-% \begin{macro}{\svgx@magick@cmd}
-% \begin{macro}{\svgx@gs@cmd}
-% Depending on option \opt{convert}, one of these two macros is actually used
-% by \cs{svgx@cnv@cmd}. For invoking the conversion process, the required
-% platform-dependent executable is set, if nothing was set by a package option.
-% \begin{macrocode}
-\ifx\svgx@magick@exe\@empty
- \ifwindows
- \renewcommand*\svgx@magick@exe{magick}
- \else
- \renewcommand*\svgx@magick@exe{convert}
- \fi
-\fi
-\newcommand*\svgx@magick@cmd[3]{%
- \svgx@magick@exe\space%
- \svgx@useformatkey{svgx@cnv@dpi}{#3}{-density }%
- \svgx@useformatkey{svgx@magick@set}{#3}{}%
- "#1.#2"\space%
- \svgx@useformatkey{svgx@magick@opr}{#3}{}%
- "#1.#3"%
-}
-% \end{macrocode}
-% \begin{macrocode}
-\ifx\svgx@gs@exe\@empty
- \ifwindows
- \renewcommand*\svgx@gs@exe{gswin64c}
- \else
- \renewcommand*\svgx@gs@exe{gs}
- \fi
-\fi
-\newcommand*\svgx@gs@cmd[3]{%
- \svgx@gs@exe\space-dSAFER -dBATCH -dNOPAUSE\space%
- \svgx@useformatkey{svgx@gs@device}{#3}{-sDEVICE=}%
- \svgx@useformatkey{svgx@cnv@dpi}{#3}{-r}%
- \svgx@useformatkey{svgx@gs@opt}{#3}{}%
- -sOutputFile="#1.#3"\space"#1.#2"%
-}
-% \end{macrocode}
-% \end{macro}^^A \svgx@gs@cmd
-% \end{macro}^^A \svgx@magick@cmd
% \begin{macro}{\svgx@move}
% If the file doesn't exist
% \begin{macrocode}
\newcommand*\svgx@move[3]{%
\begingroup%
\IfFileExists{"#1".#2}{%
- \svg@shell@move{#1.#2}{#3#1.#2}%
+ \svg@shell@mv{#1.#2}{#3#1.#2}%
}{%
\edef\svg@tempa{#2}%
\@svg@tempswafalse%
@@ -5508,177 +5870,10 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{macro}^^A \svgx@move
%
% \iffalse
-%</package&extract&body>
-%<*package&extract&option>
+%</package&body&extract>
+%<*package&standalone&extract>
% \fi
%
-% \begin{macro}{\svgx@ifinlist}
-% Check, if the first argument is included in a comma-separated list in the
-% second argument. Keep in mind that the first argument is not expanded at all,
-% the second one exactly once.
-% \begin{macrocode}
-\newcommand*\svgx@ifinlist[2]{%
- \begingroup%
- \def\svg@tempa##1,#1,##2\@nil{%
- \IfArgIsEmpty{##2}{%
- \aftergroup\@secondoftwo%
- }{%
- \aftergroup\@firstoftwo%
- }%
- }%
- \expandafter\svg@tempa\expandafter,#2,#1,\@nil%
- \endgroup%
-}
-% \end{macrocode}
-% \end{macro}^^A \svgx@ifinlist
-% \begin{macro}{\svgx@onlywindows}
-% Do only some stuff, if Windows was detected.
-% \begin{macrocode}
-\newcommand*\svgx@onlywindows[1]{}
-\AfterPackage*{ifplatform}{\renewcommand*\svgx@onlywindows[1]{\ifwindows#1\fi}}
-% \end{macrocode}
-% \end{macro}^^A \svgx@onlywindows
-% \begin{macro}{\svgx@ifkeyandval}
-% It is checked whether a key was given as \val{\meta{key}=\meta{value}} or
-% like \val{\meta{key}=\{\meta{format}=\meta{value}\}}.
-% \begin{macrocode}
-\newcommand*\svgx@ifkeyandval[3]{%
- \def\svg@tempa##1=##2=##3\@nil{\Ifstr{##3}{=}{#2}{#3}}%
- \svg@tempa#1==\@nil%
-}
-% \end{macrocode}
-% \end{macro}^^A \svgx@ifkeyandval
-% \begin{macro}{\svgx@cnv@get@dpi}
-% This macro is used to resolve a given value to set the density for the
-% conversion. The delimited macros \cs{svg@tempa} and \cs{svg@tempb} are
-% defined to first crop any given suffix \val{dpi} and second to split two
-% numbers at |x|, if present. Pay attention how both macros are invoked. In the
-% end, a passed value in any of the forms \val{300}, \val{300dpi}, \val{300x400}
-% or \val{300x400dpi} and even \val{300dpix400dpi} is possible. The result is
-% stored in \cs{svg@tempa}.
-% \begin{macrocode}
-\newcommand*\svgx@cnv@get@dpi[1]{%
- \begingroup%
- \def\svg@tempa##1dpi##2x##3dpi##4\@nil{%
- \edef\svg@tempa{##1}%
-% \end{macrocode}
-% Switch \cs{if@svg@tempswa} as \cs{iftrue} means, a valid value was found.
-% \begin{macrocode}
- \@svg@tempswafalse%
-% \end{macrocode}
-% If only the first argument is a number and third is empty, a single number
-% was given and there's nothing more to do. If the argument is something like
-% \val{300dpix400dpi}, the third argument is the second number.
-% \begin{macrocode}
- \Ifnumber{##1}{%
- \IfArgIsEmpty{##3}{\@svg@tempswatrue}{%
- \Ifnumber{##3}{\edef\svg@tempa{##1x##3}}{}%
- }%
- }{}%
- \if@svg@tempswa\else%
- \expandafter\svg@tempb\svg@tempa xx\@nil%
- \fi%
- }%
-% \end{macrocode}
-% Macro \cs{svg@tempb} splits at |x| and checks, if something valid like
-% \val{300x400} was given. If true, the value is stored in \cs{svg@tempa}.
-% \begin{macrocode}
- \def\svg@tempb##1x##2x##3\@nil{%
- \Ifstr{##3}{x}{%
- \@svg@tempswatrue%
- \IfArgIsEmpty{##1}{\@svg@tempswafalse}{%
- \Ifnumber{##1}{}{\@svg@tempswafalse}%
- }%
- \IfArgIsEmpty{##2}{\@svg@tempswafalse}{%
- \Ifnumber{##2}{}{\@svg@tempswafalse}%
- }%
- \if@svg@tempswa%
- \edef\svg@tempa{##1x##2}%
- \fi%
- }{}%
- }%
- \IfArgIsEmpty{#1}{%
- \let\svg@tempa\@empty%
- }{%
- \lowercase{\svg@tempa#1dpi#1xdpi\@nil}%
- \if@svg@tempswa\else%
- \let\svg@tempa\relax%
- \fi%
- }%
- \edef\svg@tempb{%
- \endgroup%
- \ifx\svg@tempa\relax%
- \let\noexpand\svg@tempa\noexpand\relax%
- \else%
- \def\noexpand\svg@tempa{\svg@tempa}%
- \fi%
- }%
- \svg@tempb%
-}
-% \end{macrocode}
-% \end{macro}^^A \svgx@cnv@get@dpi
-% \begin{macro}{\svgx@setformatkey}
-% \begin{macro}{\svgx@useformatkey}
-% With \cs{svgx@setformatkey} the---maybe output format depend---keys for the
-% conversion tools are set. First argument contains the value given to a key,
-% second the command sequence name of the macro, to whom the value shall be
-% allocated.
-% \begin{macrocode}
-\newcommand*\svgx@setformatkey[2]{%
-% \end{macrocode}
-% A key of the form \val{\meta{key}=\{\meta{format}=\meta{value}\}} is given.
-% The desired output format can be accessed with |##1|, the value with |##2|
-% within the arguments of \cs{svgx@ifkeyandval}.
-% \begin{macrocode}
- \svgx@ifkeyandval{#1}{%
- \svg@ifvalueisrelax{##2}{%
- \expandafter\let\csname #2@##1\endcsname\relax%
- }{%
- \@namedef{#2@##1}{##2}%
- }%
-% \end{macrocode}
-% A key of the form \val{\meta{key}=\{\meta{format}=\meta{value}\}} is given.
-% The value can be used with |##1|.
-% \begin{macrocode}
- }{%
- \svg@ifvalueisrelax{##1}{%
- \expandafter\let\csname #2\endcsname\relax%
- }{%
- \@namedef{#2}{##1}%
- }%
- }%
-}
-% \end{macrocode}
-% The command \cs{svgx@useformatkey} checks, if a format specific key was
-% definded with \cs{svgx@setformatkey}, whereas the format is given in the
-% second argument. If this is not the case, the setting for all output formats
-% is used. After that, a specific key appended with a |+| can be used to do
-% some additional stuff.
-% \begin{macrocode}
-\newcommand*\svgx@useformatkey[3]{%
- \scr@ifundefinedorrelax{#1@#2}{%
- \scr@ifundefinedorrelax{#1}{}{%
- \expandafter\ifx\csname #1\endcsname\@empty\else%
- #3\@nameuse{#1}\space%
- \fi%
- }%
- \scr@ifundefinedorrelax{#1@#2+}{}{%
- \expandafter\ifx\csname #1@#2+\endcsname\@empty\else%
- #3\@nameuse{#1@#2+}\space%
- \fi%
- }%
- }{%
-% \end{macrocode}
-% If this a format specific key was definded, it is used.
-% \begin{macrocode}
- \expandafter\ifx\csname #1@#2\endcsname\@empty\else%
- #3\@nameuse{#1@#2}\space%
- \fi%
- }%
-}
-% \end{macrocode}
-% \end{macro}^^A \svgx@useformatkey
-% \end{macro}^^A \svgx@setformatkey
%
%
%
@@ -5796,7 +5991,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \end{macro}^^A \svgxoutputbox
%
% \iffalse
-%</package&extract&option>
+%</package&standalone&extract>
%<*package&option>
% \fi
%
@@ -5807,13 +6002,13 @@ svg-extract -- Extract independent graphic files from SVG pictures
% Setting the default options and processing the given ones during when loading
% the packages.
% \begin{macrocode}
-%<*base>
+%<*main>
\FamilyExecuteOptions{SVG}{%
- inkscape=true,inkscapeversion=auto,inkscapepath=basesubdir,
+ inkscape=true,inkscapeversion=auto,inkscapepath=basesubdir,%
inkscapelatex=true,inkscapearea=drawing,distort=false,%
usexcolor=true,usetransparent=true%
}
-%</base>
+%</main>
%<*extract>
\FamilyExecuteOptions{SVG}{%
extract=true,extractpath=basesubdir,%
@@ -5829,77 +6024,6 @@ svg-extract -- Extract independent graphic files from SVG pictures
%
% \iffalse
%</package&option>
-%<*package&base&body>
-% \fi
-%
-%
-%
-% \section{Macros for file access}
-%
-% Finally, platform dependend macros for creating directories as well as moving
-% and deleting files are provided, if \file{-{}-shell-escape} is enabled. Only
-% then package \pkg{ifplatform} is only used in order to do not raise a warning.
-% \begin{macrocode}
-\ifnum\pdf@shellescape=\@ne\relax\else%
- \expandafter\endinput%
-\fi
-\RequirePackage{ifplatform}[2017/10/13]
-% \end{macrocode}
-% \begin{macro}{\svg@shell@mkdir}
-% \begin{macro}{\svg@shell@@mkdir}
-% \begin{macro}{\svg@shell@mv}
-% \begin{macro}{\svg@shell@@mv}
-% \begin{macro}{\svg@shell@rm}
-% \begin{macro}{\svg@shell@@rm}
-% The platform dependent commands for file access.
-% \begin{macrocode}
-\ifwindows
- \newcommand*\svg@shell@@mkdir[1]{if not exist "#1" mkdir "#1"}
- \newcommand*\svg@shell@@mv{move}
- \newcommand*\svg@shell@@rm{del}
-\else
- \newcommand*\svg@shell@@mkdir[1]{mkdir -p "#1"}
- \newcommand*\svg@shell@@mv{mv}
- \newcommand*\svg@shell@@rm{rm}
-\fi
-% \end{macrocode}
-% A directory should only be created, if it isn't the current working directory.
-% \begin{macrocode}
-\newcommand*\svg@shell@mkdir[1]{%
- \begingroup%
- \svg@quotes@remove[{#1}]{\svg@tempa}%
- \@svg@tempswatrue%
- \Ifstr{\svg@tempa}{}{\@svg@tempswafalse}{%
- \Ifstr{\svg@tempa}{./}{\@svg@tempswafalse}{%
- }}%
- \if@svg@tempswa%
- \ShellEscape{\svg@shell@@mkdir{\svg@tempa}}%
- \fi%
- \endgroup%
-}
-% \end{macrocode}
-% Commands for moving and deleting files.
-% \begin{macrocode}
-\newcommand*\svg@shell@move[2]{%
- \ShellEscape{\svg@shell@@mv\space"#1"\space"#2"}%
-}
-\newcommand*\svg@shell@rm[1]{%
- \ShellEscape{\svg@shell@@rm\space"#1"}%
-}
-% \end{macrocode}
-% \end{macro}^^A \svg@shell@@rm
-% \end{macro}^^A \svg@shell@rm
-% \end{macro}^^A \svg@shell@@mv
-% \end{macro}^^A \svg@shell@mv
-% \end{macro}^^A \svg@shell@@mkdir
-% \end{macro}^^A \svg@shell@mkdir
-% At the very end, the catcodes are restored.
-% \begin{macrocode}
-\svg@catcodecodes@restore
-% \end{macrocode}
-%
-% \iffalse
-%</package&base&body>
% \fi
%
% \Finale
diff --git a/macros/latex/contrib/poemscol/poemscol.dtx b/macros/latex/contrib/poemscol/poemscol.dtx
index 5a4984c229..b1dd14c6d9 100644
--- a/macros/latex/contrib/poemscol/poemscol.dtx
+++ b/macros/latex/contrib/poemscol/poemscol.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
% !TEX TS-program = dtxmk
%
-% Copyright (C) 2002-2019 by John Burt <burt@brandeis.edu>
+% Copyright (C) 2002-2020 by John Burt <burt@brandeis.edu>
% --------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -23,7 +23,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
%<package>\ProvidesPackage{poemscol}
-%<package> [2020/06/02 v3.14159 poemscol file]
+%<package> [2020/06/12 v3.141592 poemscol file]
%
%<*driver>
\documentclass{ltxdoc}
@@ -38,7 +38,7 @@
%</driver>
% \fi
%
-% \CheckSum{10550}
+% \CheckSum{10704}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -268,6 +268,11 @@
% and its siblings. Marginal marks are now set using their own inserts, rather than using marginpar.}
% \changes{v3.14159}{2020/06/02}{Marginal marks set by JHpoemtitle now work with the different
% title placement schemes.}
+% \changes{v3.141592}{2020/06/12}{Special commands for titles with footnotes (where the footnotes
+% are authorial and part of the title). Title footnotes can be set at the bottom of the page, like
+% traditional footnotes, at the bottom of the page like ``Layered'' footnotes, or at the
+% end of the poem. Marginal marks set by JHpoemtitle can be placed
+% independently of the marginal marks produced by margreftextnote..}
% \DoNotIndex{\newcommand,\newenvironment,\def,\edef,\else,\renewcommand,\makeatletter,\makeatother}
% \DoNotIndex{\abovedisplayskip,\belowdisplayskip,\abovedisplayshortskip,\belowdisplayshortskip}
% \DoNotIndex{\newcommand, \section, \subsection, \subsubsection,
@@ -300,15 +305,15 @@
% \textsc, \unskip}
% \setcounter{IndexColumns}{2}
% \MakeShortVerb{|}
-% \def\fileversion{3.14159}
-% \def\filedate{2 June 2020}
-% \def\docdate{2 June 2020}
+% \def\fileversion{3.141592}
+% \def\filedate{12 June 2020}
+% \def\docdate{12 June 2020}
% \title{Typesetting Poetry Collections with
% \textsf{poemscol}\thanks{This document corresponds to
% \textsf{poemscol}~\fileversion, dated \filedate.}}
% \author{John Burt
% \\ \texttt{burt@brandeis.edu}}
-% \date{2 June 2020}
+% \date{12 June 2020}
% \maketitle
% \begin{abstract} \textsf{poemscol} provides commands for \LaTeX\ for
% setting collections of poetry. It is especially suited for setting
@@ -2290,7 +2295,8 @@
% range of line numbers of the lemma. To define a footnote called
% |\mynote|, first declare new footnote |\footnoteE| (A, B, C and D
% are reserved for sources, textual notes, emendations, and explanatory notes,
-% respectively). Then issue: \begin{verbatim}
+% respectively, and H is reserved for use for titles with
+% authorial footnotes). Then issue: \begin{verbatim}
% \newcommand{\mynote}[2][0]{\setlemmarange{#1}\\
% \FootnotetextE{\citerange}{#2}
% \resetlemmacounters} \end{verbatim}
@@ -2811,14 +2817,19 @@
% This is so that you can control the placement of these marks
% independently of how you place the line numbers (which use
% |\pmclsidepar|) or other marginal marks you may define using
-% |\marginpar|. Horizontal placement of the mark is controlled by the
+% |\marginpar|.
+%
+% Horizontal placement of the mark is controlled by the
% length |\JHmarginparsep|, which is set by default to 0 pt. Vertical
-% placement of the marginal mark, relative to the baseline, is set by
+% placement of the marginal mark for a textual note, relative to the baseline, is set by
% the length |\JHmarginparvshift|, which is set by default to 0 pt.
-% |\JHpoemtitle|, however, uses the same commands to
-% control the placement of the mark after the title, and the two
+% The horizontal placement of the
+% marginal mark set by |\JHpoemtitle|, and its siblings, however,
+% is controlled by the length |\JHtitlemarginparsep|. |\JHtitlemarginparsep|
+% is set by default to value of |\JHmarginparsep|,
+% so that the two
% kinds of mark
-% are designed so that they should always align vertically.
+% should align with each other by default.
% \end{sloppy}
%
% By default these marginal references are placed in the right
@@ -2828,14 +2839,20 @@
% If you wish the
% marks to aways be in the outer margin, issue the command
% |\JHmarksouter|. If you wish the marks to always be in the inner
-% margin, issue |\JHmarksgutter|.
+% margin, issue |\JHmarksgutter|. (The marks for titles and the marks for
+% notes always appear on the same side of the page, and the different |\JHmarks| commands
+% always move both kinds of mark.)
%
% If you are centering the verse block on the longest line, the verse
% line numbers normally move in towards the verse block. (To center
% the verse block on the longest line, see section
% \ref{centeringtextblock}.) The marginal
% marks for |\margeftextnote| do not do this, since they are designed to
-% line up with the marginal mark produced by |\JHpoemtitle|.
+% line up with the marginal mark produced by |\JHpoemtitle|. You can change
+% the alignment if you wish by changing the value of either the length |\JHmarginparsep|,
+% which controls the placement of marginal marks for notes, or changing the value
+% of the length |\JHtitlemarginparsep|, which controls the placement of the marginal
+% marks for titles.
%
% \begin{sloppypar}
% If you define a new endnote type using |\definenewnotetype|,
@@ -2864,6 +2881,65 @@
% \DescribeMacro{\margrefexplanatory}|\margrefexplanatory| is a
% version of |\margreftextnote| for explanatory notes.
%
+% \subsection{~Titles with footnotes}
+% In James Benstead's edition of the collected poems of Hugh
+% MacDiarmid, many of the titles of the poems have footnotes by the
+% author. Under most circumstances, one can put a note about the title
+% in the textual notes section simply by, after the |\begin{poem}|
+% command, issuing something like this: |\literaltextnote{title] text of note}|.
+% (One can make similar notes for the explanatory notes
+% section or for the emendations section.) But MacDiarmid's notes are
+% authorial, not editorial, and should be considered part of the
+% title. At the same time, the notes should not be printed in the Table
+% of Contents, nor for that matter in the endnotes sections.
+%
+% \DescribeMacro{\footnotepoemtitle} |\footnotepoemtitle| is for the default
+% case. It takes two arguments. The first argument is the title of
+% the poem. The second is the text of the footnote.
+%
+% \begin{sloppypar}
+% \DescribeMacro{\footnotepoemtitlefirstline}
+% |\footnotepoemtitlefirstline| |\footnotepoemtitlemiddleline| and
+% |\footnotepoemtitlelastline| are for long titles in which how the
+% author broke up the title on the page matters, and one or more of
+% the lines has a footnote. These commands also take two arguments,
+% of which the first is the title line and the second is the text of
+% the footnote. You can intersperse these commands with
+% |\poemtitlefirstline|
+% |\poemtitlemiddleline| or |\poemtitlelastline| (depending on which
+% line has the footnote). The lines will be broken in the same way in
+% the text and in the table of contents. \end{sloppypar}
+%
+% \DescribeMacro{\footnotesplitpoemtitle} |\footnotesplitpoemtitle|
+% is for the most general case. Use it if there is a footnote in the middle
+% of the title, or if you have a long title and don't need to ensure
+% that it is broken in the text and in the table of contents in the
+% same way. |\footnotesplitpoemtitle| takes three arguments. The first
+% argument is the first part of the title, up to the footnote mark,
+% the second is the text of the footnote, and the third is the rest
+% of the title.
+%
+% I have not created footnoted titles for sequences, sequence
+% sections, and so on. But if you compare how those titles are
+% defined in the implementation section below and how footnoted
+% titles are defined at \ref{footnotetitles}
+% (page \pageref{footnotetitles}), how to write those commands should be clear.
+%
+% You can control where the footnotes for footnoted titles are placed.
+% By default, those footnotes are conventional footnotes (and all
+% their parameters are set in the way normal \LaTeX\ footnotes are
+% set). You can force the default setting by issuing the command
+% |\maketitlefootnotesplain| in your preamble. If you are setting
+% your textual notes or other notes at the foot of the page using
+% ``layers'' of footnotes, you can treat these footnotes as just
+% another layer by issuing the command |\maketitlefootnoteslayered| in
+% your preamble. (``Layered'' footnotes are described at section \ref{makingfootnotes},
+% page \pageref{makingfootnotes}.) If you wish to place these footnotes at the end of
+% the poem, you must issue |\maketitlefootnotesatpoemend| in the
+% preamble. Just before you declare a title with a footnote, issue
+% |\makepoemendnotes|, and just after issuing |\end{poem}| for that
+% poem, issue |\putpoemendnotes|.
+%
% \subsection{~Empty poem titles and italicized poem titles}
%
% \DescribeMacro{\poemtitlenotitle}
@@ -7140,6 +7216,8 @@
\setlength{\JHmarginparwidth}{\marginparwidth}
\newlength{\JHmarginparsepmin}
\setlength{\JHmarginparsepmin}{\marginparsepmin}
+\newlength{\JHtitlemarginparsep}%
+\setlength{\JHtitlemarginparsep}{\JHmarginparsep}%
\newif{\ifJHmarkstoleft}
\JHmarkstolefttrue
\newif{\ifJHmarkstoright}
@@ -7307,10 +7385,10 @@
\newcommand{\JHrighttitlemarginpar}[1]{%
\pmclbsphack\strut\vadjust{%
\rlap{\kern-\parindent%
-\kern\textwidth\kern\JHmarginparsep% at right
-\ifcentertitleson
-\kern-.5\JHtextwidth\kern\marginparsepmin
-\fi
+\kern\textwidth\kern\JHtitlemarginparsep% at right
+\ifcentertitleson%
+\kern-.5\JHtextwidth\kern\marginparsepmin%
+\fi%
\setbox0=\vtop to 0pt{% added
\begin{minipage}[t]{\JHmarginparwidth}% added
#1%
@@ -7318,18 +7396,17 @@
\vss}%
\vtop to 0pt{\kern\JHmarginparvshift% default should be 0pt
\kern-\dp\strutbox \kern-\ht0 \box0 \vss}}}\pmclesphack}%
-
%
% commands for placing the marginal marks for titles
% left side
\newcommand{\JHlefttitlemarginpar}[1]{%
\pmclbsphack\strut\vadjust{% changed
\rlap{\kern-\parindent%
-\kern -\JHmarginparsep \kern -\JHmarginparwidth% at left
-\ifcentertitleson
-\kern-.5\JHtextwidth\kern\marginparsepmin
-\fi
-\setbox0=\vtop to 0pt{
+\kern -\JHtitlemarginparsep \kern -\JHmarginparwidth% at left
+\ifcentertitleson%
+\kern-.5\JHtextwidth\kern\marginparsepmin%
+\fi%
+\setbox0=\vtop to 0pt{%
\begin{minipage}[t]{\JHmarginparwidth}% added
#1%
\end{minipage}%
@@ -7337,46 +7414,46 @@
\vtop to 0pt{\kern\JHmarginparvshift % default should be 0pt
\kern-\dp\strutbox \kern-\ht0 \box0 \vss}}}\pmclesphack}% changed
%
-% command for JHmarks in title in outer margin or in gutter
+% command for JHtitlemarks in title in outer margin or in gutter
\newcommand{\JHswitchtitlemarginpar}{\@dblarg{\@JHswitchtitlemarginpar}}
%\long\def\@pmclsidepar[#1]#2{\@bsphack\leavevmode\vadjust{%
\long\def\@JHswitchtitlemarginpar[#1]#2{\@bsphack\strut\vadjust{% added
-\checkoddpage
- \ifJHmarginparswitch
- \ifJHreversemarginpar
- \ifoddpage
- \oddpagefalse
- \else
- \oddpagetrue
- \fi
- \fi
- \else
- \oddpagetrue
- \ifJHreversemarginpar
- \oddpagefalse
- \fi
- \fi
- \rlap{\kern-\parindent
- \if@twocolumn
+\checkoddpage%
+ \ifJHmarginparswitch%
+ \ifJHreversemarginpar%
+ \ifoddpage%
+ \oddpagefalse%
+ \else%
+ \oddpagetrue%
+ \fi%
+ \fi%
+ \else%
+ \oddpagetrue%
+ \ifJHreversemarginpar%
+ \oddpagefalse%
+ \fi%
+ \fi%
+ \rlap{\kern-\parindent%
+ \if@twocolumn%
\if@firstcolumn % put at left
- \kern -\JHmarginparsep \kern -\marginparwidth % at left
- \kern-.5\JHtextwidth\kern\marginparsepmin
+ \kern -\JHtitlemarginparsep \kern -\marginparwidth % at left
+ \kern-.5\JHtextwidth\kern\marginparsepmin%
\else % put at right
- \kern \columnwidth \kern \JHmarginparsep % at right
- \fi
- \else
+ \kern \columnwidth \kern \JHtitlemarginparsep % at right
+ \fi%
+ \else%
\ifoddpage % put at right
- \kern \textwidth \kern \JHmarginparsep % at right
- \ifcentertitleson
- \kern-.5\JHtextwidth\kern\marginparsepmin
- \fi
+ \kern \textwidth \kern \JHtitlemarginparsep % at right
+ \ifcentertitleson%
+ \kern-.5\JHtextwidth\kern\marginparsepmin%
+ \fi%
\else % put at left
- \kern -\JHmarginparsep \kern -\marginparwidth % at left
- \ifcentertitleson
- \kern-.5\JHtextwidth\kern\marginparsepmin
- \fi
- \fi
- \fi
+ \kern -\JHtitlemarginparsep \kern -\marginparwidth % at left
+ \ifcentertitleson%
+ \kern-.5\JHtextwidth\kern\marginparsepmin%
+ \fi%
+ \fi%
+ \fi%
% \vbox to 0pt{%
% \kern \pmclsideparvshift% % vertical shift to align top text lines
% \begin{minipage}{\marginparwidth}%
@@ -7388,7 +7465,7 @@
\vss}% added
\vtop to 0pt{\kern\JHmarginparvshift % default should be 0pt
\kern-\dp\strutbox \kern-\ht0 \box0 \vss}}}\@esphack}% added
-%
+ %
\newcommand{\set@margp@emtitle}[7]{\setlength{\titleentryoverrun}{#6}%
{#2}%
{#3 \begin{titleentryenvironment}%
@@ -7653,6 +7730,105 @@
% }
% \catcode`\@=12
% \end{verbatim}
+% \subsection{~Titles with footnotes}
+% \label{footnotetitles}
+% \begin{macro}{\footnotepoemtitle}
+% \begin{macrocode}
+\newif\iftitlefootnotesatpoemend%
+\titlefootnotesatpoemendfalse%
+\newif\iftitlefootnotesplain%
+\titlefootnotesplaintrue%
+\newif\iftitlefootnoteslayered%
+\titlefootnoteslayeredfalse%
+%
+\newcommand{\maketitlefootnoteslayered}{%
+\DeclareNewFootnote[plain]{H}%
+\titlefootnoteslayeredtrue%
+\titlefootnotesplainfalse%
+\titlefootnotesatpoemendfalse%
+}
+%
+\newcommand{\maketitlefootnotesatpoemend}{
+\titlefootnoteslayeredfalse%
+\titlefootnotesplainfalse%
+\titlefootnotesatpoemendtrue%
+}
+%
+\newcommand{\maketitlefootnotesplain}{
+\titlefootnoteslayeredfalse%
+\titlefootnotesplaintrue%
+\titlefootnotesatpoemendfalse%
+}
+%
+\newcommand{\placetitlefootnote}[1]{\iftitlefootnoteslayered%
+\footnoteH{#1}%
+\fi%
+\iftitlefootnotesatpoemend%
+\footnotemark%
+\immediate\write\poemendnotes{\string\makeatletter}%
+\immediate\write\poemendnotes{\string\footnotemark\string[\the\c@footnote \string]}%
+\immediate\write\poemendnotes{\string\makeatother}%
+\literalpoemendnote{#1}%
+\fi%
+\iftitlefootnotesplain%
+\footnote{#1}%
+\fi%
+}
+%
+\newcommand{\footnotepoemtitle}[2]{%
+\set@p@emtitle{#1\placetitlefootnote{#2}}{\poemtitlepenalty}{\poemtitlefont}%
+{\poemtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}%
+\c@ntentsinfo{#1}{\contentspoemtitleindent}{\contentspoemtitlefont}%
+{\contentspoemtitleindentamount}%
+\t@xtnotesinfo{#1}%
+}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\footnotepoemtitlefirstline}
+% \begin{macrocode}
+\newcommand{\footnotepoemtitlefirstline}[2]{%
+\firstlinesettings%
+\set@p@emtitle{#1\placetitlefootnote{#2}}{\multilinetitlepenalty}{\poemtitlefont}%
+{\poemtitleindent}{\nobreak\par\nobreak}{\z@}%
+\c@ntentsinfo{#1}{\contentspoemtitleindent}{\contentspoemtitlefont}%
+{\contentspoemtitleindentamount}%
+\t@xtnotesinfo{#1}%
+\restoresinglelinesettings%
+}
+%
+\newcommand{\footnotepoemtitlemiddleline}[2]{%
+\middlelinesettings%
+\set@p@emtitle{#1\placetitlefootnote{#2}}{\par\nobreak}{\poemtitlefont}%
+{\poemtitlesecondlineindent}{\nobreak\par\nobreak}{\z@}%
+\c@ntentsinfo{#1}{\contentspoemtitlesecondlineindent}{\contentspoemtitlefont}%
+{\contentspoemtitlesecondlineindentamount}%
+\t@xtnotesinfo{#1}%
+\restoresinglelinesettings%
+}
+%
+\newcommand{\footnotepoemtitlelastline}[2]{%
+\lastlinesettings%
+\set@p@emtitle{#1\placetitlefootnote{#2}}{\par\nobreak}{\poemtitlefont}%
+{\poemtitlesecondlineindent}{\nobreak\par\afterpoemtitleskip\nobreak}{\z@}%
+\c@ntentsinfo{#1}{\contentspoemtitlesecondlineindent}{\contentspoemtitlefont}%
+{\contentspoemtitlesecondlineindentamount}%
+\t@xtnotesinfo{#1}%
+\restoresinglelinesettings%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\footnotesplitpoemtitle}
+% \begin{macrocode}
+\newcommand{\footnotesplitpoemtitle}[3]{%
+\set@p@emtitle{#1\placetitlefootnote{#2} #3}{\poemtitlepenalty}{\poemtitlefont}%
+{\poemtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}%
+\c@ntentsinfo{#1 #3}{\contentspoemtitleindent}{\contentspoemtitlefont}%
+{\contentspoemtitleindentamount}%
+\t@xtnotesinfo{#1 #3}%
+}
+% \end{macrocode}
+% \end{macro}
% \subsection{~Epigraphs, headnotes, attributions, dedications}
% Notice that epigraphs to volumes are handled differently from
% epigraphs to poems. Notice also the ``short'' commands, which
diff --git a/macros/latex/contrib/poemscol/poemscol.pdf b/macros/latex/contrib/poemscol/poemscol.pdf
index e5c9d55eb0..a0fc2fe82c 100644
--- a/macros/latex/contrib/poemscol/poemscol.pdf
+++ b/macros/latex/contrib/poemscol/poemscol.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/Makefile b/macros/latex/contrib/thuthesis/Makefile
index 6e1c352650..5500053e5f 100644
--- a/macros/latex/contrib/thuthesis/Makefile
+++ b/macros/latex/contrib/thuthesis/Makefile
@@ -1,15 +1,15 @@
# Makefile for ThuThesis
PACKAGE = thuthesis
-THESIS = main
+THESIS = thuthesis-example
SPINE = spine
SOURCES = $(PACKAGE).ins $(PACKAGE).dtx
CLSFILE = dtx-style.sty $(PACKAGE).cls
-LATEXMK = latexmk
-SHELL := /bin/bash
-NPM ?= npm
+LATEXMK = latexmk
+SHELL := /bin/bash
+NPM ?= npm
# make deletion work on Windows
ifdef SystemRoot
@@ -64,7 +64,7 @@ test:
clean:
$(LATEXMK) -c $(PACKAGE).dtx $(THESIS) $(SPINE)
- -@$(RM) *~ main-survey.* _markdown_thuthesis*
+ -@$(RM) -rf *~ main-survey.* main-translation.* _markdown_thuthesis* thuthesis.markdown.*
cleanall: clean
-@$(RM) $(PACKAGE).pdf $(THESIS).pdf $(SPINE).pdf
diff --git a/macros/latex/contrib/thuthesis/README.md b/macros/latex/contrib/thuthesis/README.md
index 8477c945ac..6e6eb06a31 100644
--- a/macros/latex/contrib/thuthesis/README.md
+++ b/macros/latex/contrib/thuthesis/README.md
@@ -24,7 +24,7 @@ Scroll down for the English version of README.
推荐下载**发布版**模板,里面包括具体使用说明以及示例文档:
* 模板使用说明 (thuthesis.pdf)
-* 示例文档 (main.pdf)
+* 示例文档 (thuthesis-example.pdf)
开发版中不提供预生成的 `cls` 文件和文档,仅包含源码。其仅供开发者与需要尚未发布的功能的有经验的 TeX 用户使用,不提供任何保证。
@@ -73,12 +73,12 @@ make [{all|thesis|spine|doc|clean|cleanall|distclean}]
```
### 目标
-* `make thesis` 生成论文 main.pdf;
+* `make thesis` 生成论文 thuthesis-example.pdf;
* `make spine` 生成书脊 spine.pdf;
* `make doc` 生成模板使用说明书 thuthesis.pdf;
* `make all` 生成论文和书脊,相当于 `make thesis && make spine`;
-* `make clean` 删除示例文件的中间文件(不含 main.pdf);
-* `make cleanall` 删除示例文件的中间文件和 main.pdf;
+* `make clean` 删除示例文件的中间文件(不含 thuthesis-example.pdf);
+* `make cleanall` 删除示例文件的中间文件和 thuthesis-example.pdf;
* `make distclean` 删除示例文件和模板的所有中间文件和 PDF。
---
@@ -94,7 +94,7 @@ This package establishes a simple and easy-to-use LaTeX template for Tsinghua di
**Published versions** are recommended. Specific usage documentation and examples can be found in the archive. At present, these documents are <b>only available in Chinese</b>:
* Template usage documentation (thuthesis.pdf)
-* Template example (main.pdf)
+* Template example (thuthesis-example.pdf)
Developer versions contain only source code but no pre-compiled `cls` file and documentations. They are only for the usage of developers and experienced TeX users in need of unpublished features. No warranties are provided.
@@ -141,10 +141,10 @@ make [{all|thesis|spine|doc|clean|cleanall|distclean}]
```
### Targets
-* `make thesis` generate thesis main.pdf;
+* `make thesis` generate thesis thuthesis-example.pdf;
* `make spine` generate book spine for printing spine.pdf;
* `make doc` generate template documentation thuthesis.pdf;
* `make all` generate thesis and spine, same as `make thesis && make spine`;
-* `make clean` delete all examples' files (excluding main.pdf);
-* `make cleanall` delete all examples' files and main.pdf;
+* `make clean` delete all examples' files (excluding thuthesis-example.pdf);
+* `make cleanall` delete all examples' files and thuthesis-example.pdf;
* `make distclean` delete all examples' and templates' files and PDFs.
diff --git a/macros/latex/contrib/thuthesis/data/abstract.tex b/macros/latex/contrib/thuthesis/data/abstract.tex
index a7737b5168..600ce3c815 100644
--- a/macros/latex/contrib/thuthesis/data/abstract.tex
+++ b/macros/latex/contrib/thuthesis/data/abstract.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ../thuthesis-example.tex
% 中英文摘要和关键字
diff --git a/macros/latex/contrib/thuthesis/data/acknowledgements.tex b/macros/latex/contrib/thuthesis/data/acknowledgements.tex
index 0ef68793d5..04026682bb 100644
--- a/macros/latex/contrib/thuthesis/data/acknowledgements.tex
+++ b/macros/latex/contrib/thuthesis/data/acknowledgements.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ../thuthesis-example.tex
\begin{acknowledgements}
衷心感谢导师 xxx 教授和物理系 xxx 副教授对本人的精心指导。他们的言传身教将使
diff --git a/macros/latex/contrib/thuthesis/data/appendix-survey.tex b/macros/latex/contrib/thuthesis/data/appendix-survey.tex
index f97039b45c..5b6e24a896 100644
--- a/macros/latex/contrib/thuthesis/data/appendix-survey.tex
+++ b/macros/latex/contrib/thuthesis/data/appendix-survey.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ../thuthesis-example.tex
\begin{survey}
\label{cha:survey}
diff --git a/macros/latex/contrib/thuthesis/data/appendix-translation.tex b/macros/latex/contrib/thuthesis/data/appendix-translation.tex
index 5cc6549083..9ed13da9b5 100644
--- a/macros/latex/contrib/thuthesis/data/appendix-translation.tex
+++ b/macros/latex/contrib/thuthesis/data/appendix-translation.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ../thuthesis-example.tex
\begin{translation}
\label{cha:translation}
diff --git a/macros/latex/contrib/thuthesis/data/chap01.tex b/macros/latex/contrib/thuthesis/data/chap01.tex
index 01096ad170..6c2e757db2 100644
--- a/macros/latex/contrib/thuthesis/data/chap01.tex
+++ b/macros/latex/contrib/thuthesis/data/chap01.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ../thuthesis-example.tex
\chapter{带 English 的标题}
\label{cha:intro}
diff --git a/macros/latex/contrib/thuthesis/data/chap02.tex b/macros/latex/contrib/thuthesis/data/chap02.tex
index d4200f2dc4..3721ede72b 100644
--- a/macros/latex/contrib/thuthesis/data/chap02.tex
+++ b/macros/latex/contrib/thuthesis/data/chap02.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ../thuthesis-example.tex
\chapter{图表公式例子}
\label{cha:chapter02}
diff --git a/macros/latex/contrib/thuthesis/data/denotation.tex b/macros/latex/contrib/thuthesis/data/denotation.tex
index 962c6bb444..d3aa4f13bb 100644
--- a/macros/latex/contrib/thuthesis/data/denotation.tex
+++ b/macros/latex/contrib/thuthesis/data/denotation.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ../thuthesis-example.tex
\begin{denotation}[3cm]
\item[HPC] 高性能计算 (High Performance Computing)
diff --git a/macros/latex/contrib/thuthesis/data/resume.tex b/macros/latex/contrib/thuthesis/data/resume.tex
index 587d9ef628..02d777bbf1 100644
--- a/macros/latex/contrib/thuthesis/data/resume.tex
+++ b/macros/latex/contrib/thuthesis/data/resume.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ../thuthesis-example.tex
\begin{resume}
diff --git a/macros/latex/contrib/thuthesis/main.pdf b/macros/latex/contrib/thuthesis/main.pdf
deleted file mode 100644
index d4e1a77c4b..0000000000
--- a/macros/latex/contrib/thuthesis/main.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/math_commands.tex b/macros/latex/contrib/thuthesis/math_commands.tex
index 5fc9be6751..e3636b612a 100644
--- a/macros/latex/contrib/thuthesis/math_commands.tex
+++ b/macros/latex/contrib/thuthesis/math_commands.tex
@@ -1,3 +1,5 @@
+% !TeX root = ./thuthesis-example.tex
+
% Adapted for use with thuthesis.
% Original code is at https://github.com/goodfeli/dlbook_notation/blob/master/math_commands.tex
diff --git a/macros/latex/contrib/thuthesis/spine.pdf b/macros/latex/contrib/thuthesis/spine.pdf
index f5963cc5a6..ce40eba7d1 100644
--- a/macros/latex/contrib/thuthesis/spine.pdf
+++ b/macros/latex/contrib/thuthesis/spine.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/spine.tex b/macros/latex/contrib/thuthesis/spine.tex
index aec1fde0b3..4b8badf5d3 100644
--- a/macros/latex/contrib/thuthesis/spine.tex
+++ b/macros/latex/contrib/thuthesis/spine.tex
@@ -1,19 +1,21 @@
-\documentclass[degree=master]{thuthesis}
+% !TeX encoding = UTF-8
+% !TeX program = xelatex
+% !TeX spellcheck = en_US
-\thusetup{
- author = {薛瑞尼},
- title = {没有英文的中文标题}
-}
+\documentclass[degree=master]{thuthesis}
-\begin{document}
+\input{thusetup.tex}
-\spine % 使用默认标题和默认作者
+\begin{document}
-\spine[使用默认作者的标题]
+\spine
-\spine[同时修改标题和作者的标题][尼瑞薛]
+\thusetup{
+ spine-font = {\Huge},
+ spine-title = {书脊的标题},
+ spine-author = {书脊的作者姓名},
+}
+\spine
-% 中英文混合时需要微调
-\spine[清华大学学位 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例]
\end{document}
diff --git a/macros/latex/contrib/thuthesis/thusetup.tex b/macros/latex/contrib/thuthesis/thusetup.tex
index 7e0e93575b..3da519449b 100644
--- a/macros/latex/contrib/thuthesis/thusetup.tex
+++ b/macros/latex/contrib/thuthesis/thusetup.tex
@@ -1,4 +1,4 @@
-% !TeX root = ../main.tex
+% !TeX root = ./thuthesis-example.tex
% 论文基本信息配置
@@ -7,8 +7,14 @@
% 注意:
% 1. 配置里面不要出现空行
% 2. 不需要的配置信息可以删除
+ % 3. 建议先阅读文档中所有关于选项的说明
%******************************
%
+ % 输出格式
+ % 选择打印版(print)或用于提交的电子版(electronic),前者会插入空白页以便直接双面打印
+ %
+ output = print,
+ %
% 标题
% 可使用“\\”命令手动控制换行
%
@@ -79,6 +85,10 @@
%
% date = {2019-07-07},
%
+ % 是否在中文封面后的空白页生成书脊
+ %
+ include-spine = false,
+ %
% 密级和年限
% 秘密, 机密, 绝密
%
diff --git a/macros/latex/contrib/thuthesis/thuthesis-example.pdf b/macros/latex/contrib/thuthesis/thuthesis-example.pdf
new file mode 100644
index 0000000000..b0bfa584a5
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/thuthesis-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/main.tex b/macros/latex/contrib/thuthesis/thuthesis-example.tex
index 93113b7a6a..93113b7a6a 100644
--- a/macros/latex/contrib/thuthesis/main.tex
+++ b/macros/latex/contrib/thuthesis/thuthesis-example.tex
diff --git a/macros/latex/contrib/thuthesis/thuthesis.dtx b/macros/latex/contrib/thuthesis/thuthesis.dtx
index aca56237d9..6d7d046b56 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.dtx
+++ b/macros/latex/contrib/thuthesis/thuthesis.dtx
@@ -17,7 +17,7 @@
%
% \iffalse
%<*driver>
-\ProvidesFile{thuthesis.dtx}[2020/06/08 6.1.0 Tsinghua University Thesis Template]
+\ProvidesFile{thuthesis.dtx}[2020/06/12 6.1.1 Tsinghua University Thesis Template]
\documentclass{ltxdoc}
\usepackage{dtx-style}
@@ -127,7 +127,7 @@
% \label{sec:contributors}
%
% \thuthesis{} 的开发过程中,主要的维护者包括:
-%
+%
% \begin{itemize}
% \item 薛瑞尼(\githubuser{xueruini}):最早的开发者,2005 年创建 \thuthesis{} 并长期进行维护工作。
% \item 赵涛(\githubuser{alick}):2011-2015 年活跃,较早期阶段的开发者。
@@ -147,7 +147,7 @@
% \item[GitHub] \url{https://github.com/tuna/thuthesis},从 Release 中下载 zip 文件。
% \item[TUNA 镜像站] \url{https://mirrors.tuna.tsinghua.edu.cn/github-release/tuna/thuthesis/},也可在首页选择“获取下载链接——应用软件——\thuthesis{}论文模板”。
% \end{description}
-%
+%
%
% 模板支持在 TeX Live、MacTeX 和 MiKTeX 平台下进行编译,但要求 2017 年或更新的发行版。
% 当然,尽可能使用最新的版本可以避免 bug。
@@ -170,8 +170,8 @@
% thuthesis-numeric.bst & 参考文献样式文件\\
% thuthesis-author-year.bst & 参考文献样式文件\\
% thuthesis-bachelor.bst & 参考文献样式文件\\
-% tsinghua.pdf & 校名 logo,系统无隶书字体时使用 \\\midrule
-% main.tex & 示例文档主文件\\
+% tsinghua-name-bachelor.pdf & 校名 logo,本科生封面使用 \\\midrule
+% thuthesis-example.tex & 示例文档主文件\\
% spine.tex & 书脊示例文档\\
% ref/ & 示例文档参考文献目录\\
% data/ & 示例文档章节具体内容\\
@@ -201,33 +201,40 @@
% \end{shell}
%
% \note[注意:]{如果没有生成的模板 \file{thuthesis.cls} 文件
-% (跟 \file{main.tex} 同一目录下),
+% (跟 \file{thuthesis-example.tex} 同一目录下),
% \LaTeX{} 在编译时可能找到发行版中较旧版本的 \file{.cls},从而造成冲突。}
%
% \subsection{编译论文}
% \label{sec:generate-thesis}
% 本节介绍几种常见的生成论文的方法。用户可根据自己的情况选择。
%
+% 在撰写论文时,我们\textbf{不推荐}使用原有的 \file{thuthesis-example.tex} 这一名称。
+% 建议将其复制一份,改为其他的名字(如 \file{thesis.tex} 或者 \file{main.tex})。
+% 需要注意,如果使用了来自 \file{data} 目录中的 \file{tex} 文件,
+% 则重命名主文件后,其顶端的 \texttt{!TeX root} 选项也需要相应修改。
+%
% \subsubsection{GNU make}
% \label{sec:make}
% 如果用户可以使用 GNU make 工具,这是最方便的办法。
% 所以 \thuthesis{} 提供了 \file{Makefile}:
% \begin{shell}
-% $ make thesis # 生成论文 main.pdf
+% $ make thesis # 生成论文示例 thuthesis-example.pdf
% $ make spine # 生成书脊 spine.pdf
% $ make doc # 生成说明文档 thuthesis.pdf
% $ make clean # 清理编译生成的辅助文件
% \end{shell}
%
+% 需要注意,如果更改了主文件的名称,则需要修改 \file{Makefile} 顶端的 \texttt{THESIS} 变量定义。
+%
% \subsubsection{latexmk}
% \label{sec:latexmk}
% \texttt{latexmk} 命令支持全自动生成 \LaTeX{} 编写的文档,并且支持使用不同的工具
% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。
% \begin{shell}
-% $ latexmk main.tex # 生成论文 main.pdf
-% $ latexmk spine.tex # 生成书脊 spine.pdf
-% $ latexmk thuthesis.dtx # 生成说明文档 thuthesis.pdf
-% $ latexmk -c # 清理编译生成的辅助文件
+% $ latexmk thuthesis-example.tex # 生成示例论文 thuthesis-example.pdf
+% $ latexmk spine.tex # 生成书脊 spine.pdf
+% $ latexmk thuthesis.dtx # 生成说明文档 thuthesis.pdf
+% $ latexmk -c # 清理编译生成的辅助文件
% \end{shell}
% \texttt{latexmk} 的编译过程是通过 \file{latexmkrc} 文件来配置的,如果要进一步了解,
% 可以参考 \pkg{latexmk} 文档。
@@ -243,30 +250,33 @@
%
% 然后,生成论文以及书脊:
% \begin{shell}
-% $ xelatex main.tex
-% $ bibtex main.aux # 生成 bbl 文件
-% $ bibtex main-survey.aux # 本科生的调研报告的参考文献
-% $ bibtex main-translation.aux # 本科生的外文资料翻译的参考文献
-% $ bibtex main-index.aux # 本科生的书面翻译对应的原文索引
-% $ xelatex main.tex # 解决引用
-% $ xelatex main.tex # 生成论文 PDF
+% $ xelatex thuthesis-example.tex
+% $ bibtex thuthesis-example.aux # 生成 bbl 文件
+% $ bibtex main-survey.aux # 本科生的调研报告的参考文献
+% $ bibtex main-translation.aux # 本科生的外文资料翻译的参考文献
+% $ bibtex main-index.aux # 本科生的书面翻译对应的原文索引
+% $ xelatex thuthesis-example.tex # 解决引用
+% $ xelatex thuthesis-example.tex # 生成论文 PDF
%
% $ xelatex spine.tex # 生成书脊 PDF
% \end{shell}
%
+% 在调用 \XeLaTeX 时,如果设置了 \option{include-spine} 选项,
+% 则需要在文件名前加上 \texttt{-shell-scape} 的命令行选项。
+%
% 下面的命令用来生成用户手册:
% \begin{shell}
-% $ xelatex thuthesis.dtx
+% $ xelatex -shell-escape thuthesis.dtx
% $ makeindex -s gind.ist -o thuthesis.ind thuthesis.idx
% $ makeindex -s gglo.ist -o thuthesis.gls thuthesis.glo
-% $ xelatex thuthesis.dtx
-% $ xelatex thuthesis.dtx # 生成说明文档 thuthesis.pdf
+% $ xelatex -shell-escape thuthesis.dtx
+% $ xelatex -shell-escape thuthesis.dtx # 生成说明文档 thuthesis.pdf
% \end{shell}
%
% \subsection{升级}
% \label{sec:upgrade}
% 如果需要升级 \thuthesis{},应当从 GitHub 下载最新的版本,
-% 将 \file{thuthesis.dtx},\file{thuthesis.ins},\file{tsinghua.pdf} 和
+% 将 \file{thuthesis.dtx},\file{thuthesis.ins},\file{tsinghua-name-bachelor.pdf} 和
% \file{thuthesis-*.bst} 拷贝至工作目录覆盖相应的文件,然后按照
% 第~\ref{sec:generate-cls} 节的内容生成新的模板和使用说明。
%
@@ -283,13 +293,13 @@
%
% 模板核心文件
% 有:\file{thuthesis.cls},\file{thuthesis-numeric.bst},
-% \file{thuthesis-author-year.bst} 和 \file{tsinghua.pdf},
+% \file{thuthesis-author-year.bst} 和 \file{tsinghua-name-bachelor.pdf},
% 但如果没有示例文档会较难下手,所以推荐从模板自带的示例文档入手。其中包括了论文
% 写作用到的所有命令及其使用方法,只需用自己的内容进行相应替换就可以。对于不清
% 楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示例文档,
-% 具体内容可以参考模板附带的 \file{main.tex} 和 \file{data/}。
+% 具体内容可以参考模板附带的 \file{thuthesis-example.tex} 和 \file{data/}。
%
-% \lstinputlisting[style=lstStyleLaTeX]{main.tex}
+% \lstinputlisting[style=lstStyleLaTeX]{thuthesis-example.tex}
%
% 其中 \file{thusetup.tex} 包括了论文基本信息的配置样例:
%
@@ -298,6 +308,7 @@
% \subsection{论文选项}
% \label{sec:option}
%
+% \subsubsection{学位}
% \DescribeOption{degree}
% 选择学位,可选:
% \option{bachelor},\option{master},\option{doctor}(默认),\option{postdoc}。
@@ -310,6 +321,7 @@
%
% \subsubsection{学位类型}
% \label{sec:degree-type}
+% \DescribeOption{degree-type}
% 定义研究生学位的类型,可选:\option{academic}(默认)、\option{professional},
% 本科生不受影响。
% \begin{latex}
@@ -378,7 +390,24 @@
% \note[注意:]{\cs{thusetup} 使用 \pkg{kvsetkeys} 机制,所以配置项之间不能有空行,否则
% 会报错。}
%
+% \subsubsection{输出格式}
+% \DescribeOption{output}
+% 选择输出的格式是打印版还是电子版(用于提交),可选:\option{print}(默认)、\option{electronic}。
+% 一些院系要求提交的电子版不含空白页,但是这对打印并不友好,
+% 比如正文第一页可能会在左侧;以及一些部分需要单面打印,需要插入空白页。
+% 注意在不同选项下,生成的\textbf{声明页码很可能不同},需要打印签字并扫描后插入的用户请特别关注这一情况。
+%
+% \begin{latex}
+% \thusetup{
+% output = electronic,
+% }
+% \end{latex}
+%
+% 另外本科生要求有 0.2cm 留给装订线的宽度,这只有在打印版中才会生效。
+%
+%
% \subsubsection{书写语言}
+% \DescribeOption{language}
% 在导言区设置 \option{language} 会修改论文的主要语言,如章节标题等。
% 在正文中设置 \option{language} 只修改接下来部分的书写语言,
% 如标点格式、图表名称,但不影响章节标题等。
@@ -875,6 +904,7 @@
% 像论文正文一样使用标题和参考文献的命令,但不会影响外部。
% 但是需要使用 \hologo{BibTeX} 对 \file{main-survey.aux} 或者
% \file{main-translation.aux} 进行编译,才能生成参考文献(见 \ref{sec:xelatex} 节)。
+% 如果使用 \texttt{latexmk},则无需额外处理。
%
% 同时,阅读报告默认切换书写语言为英语,书面翻译默认切换为中文。
% 如有需要,可以通过 \cs{thusetup} 的 \option{language} 参数再次更改。
@@ -884,18 +914,18 @@
% \title{...}
% \maketitle
% \tableofcontents
-% ... \cite{...}
+% ... \cite{...} % 报告内容及其引用
% \bibliographystyle{...}
-% \bibliography{...}
+% \bibliography{...} % 报告的参考文献
% \end{survey}
% \end{latex}
%
% “书面翻译对应的原文索引”区别于译文的参考文献,需要使用 \env{translation-index}
-% 环境,另外需要使用 \hologo{BibTeX} 编译 \file{main-index.aux}。
+% 环境,另外需要使用 \hologo{BibTeX} 编译 \file{main-index.aux},\texttt{latexmk} 同样会自动处理。
%
% \begin{latex}
% \begin{translation}
-% ... \cite{...}
+% ... \cite{...} % 书面翻译内容及其引用
% \bibliographystyle{...}
% \bibliography{...} % 书面翻译的参考文献
% \begin{translation-index}
@@ -973,12 +1003,40 @@
%
% \subsection{书脊}
% \DescribeMacro{\spine}
-% 生成装订的书脊,为竖排格式,命令格式:\cs{spine}\oarg{标题}\oarg{作者}。默认参
-% 数为论文中文题目和中文作者。如果中文题目中没有英文字母,那么直接调用此命令即可。
-% 否则,可参考参看模板示例文件 \file{spine.tex} 进行微调:
+% \DescribeOption{spine-font}
+% \DescribeOption{spine-title}
+% \DescribeOption{spine-author}
+% 生成装订的书脊,为竖排格式。内容默认使用论文的标题和作者。
+% 可以设置 \option{spine-title} 和 \option{spine-author} 来修改。
+%
+% 书脊字体默认为三号字,同研究生的示例一致。
+% 本科生要求字体大小根据论文的薄厚而定,可以使用 \option{spine-font} 设置字号。
+% \begin{latex}
+% \thusetup{
+% spine-font = {\Huge},
+% spine-title = {书脊的标题},
+% spine-author = {书脊的作者姓名},
+% }
+% \end{latex}
%
-% \lstinputlisting[style=lstStyleLaTeX]{spine.tex}
+% 由于 Fandol 字体在 \XeTeX 中的竖排存在一些问题,如果书脊使用的字体是 Fandol 仿宋
+%(\option{fontset} 为 \texttt{fandol} 或者 \texttt{ubuntu} 时),则它\textbf{必须作为独立文件生成},
+% 否则可能导致后续内容文字方向错乱的问题。
%
+% \DescribeOption{include-spine}
+% 一些院系要求把书脊插进论文里,需要在 \cs{maketitle} 前设置。
+% \begin{latex}
+% \thusetup{
+% include-spine = true,
+% }
+% \end{latex}
+% 打开此选项后,书籍会出现在中文封面后面的第一个空白页。如果有英文封面,则在英文封面之前。
+% 如果需要书籍出现在其他位置,请手工使用 \cs{spine} 生成,不要使用此命令。
+%
+% 在使用 Fandol 仿宋时,如果打开 \option{include-spine} 选项,
+% 模板将使用 \cs{write18} 来生成独立的 \file{spine.tex},并调用 \XeLaTeX 进行排版后插入论文中。
+% 在这种情况下,请确保编译时打开了 shell escape 功能,或者在论文目录下放置编译完成的 \file{spine.pdf},
+% 否则编译将因为无法正常生成书脊而失败。
%
% \section{致谢}
% \label{sec:thanks}
@@ -987,10 +1045,10 @@
% 欢迎各位到 \href{http://github.com/tuna/thuthesis/}{\thuthesis{} GitHub 主页}贡献!
%
%
-% % redefine some commands in markdown package to remove annoying section numbering
+% ^^A redefine some commands in markdown package to remove annoying section numbering
% \renewcommand{\markdownRendererHeadingTwo}[1]{\subsection*{#1}}
% \renewcommand{\markdownRendererHeadingThree}[1]{\subsubsection*{#1}}
-% % render changelog from markdown
+% ^^A render changelog from markdown
% \markdownInput{CHANGELOG.md}
%
%
@@ -1003,7 +1061,7 @@
% \begin{macrocode}
%<cls>\NeedsTeXFormat{LaTeX2e}[2017/04/15]
%<cls>\ProvidesClass{thuthesis}
-%<cls>[2020/06/08 6.1.0 Tsinghua University Thesis Template]
+%<cls>[2020/06/12 6.1.1 Tsinghua University Thesis Template]
% \end{macrocode}
%
% 报错
@@ -1037,7 +1095,7 @@
%<*cls>
\hyphenation{Thu-Thesis}
\def\thuthesis{ThuThesis}
-\def\version{6.1.0}
+\def\version{6.1.1}
\RequirePackage{kvdefinekeys}
\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
@@ -1263,6 +1321,17 @@
},
default = xits,
},
+% \end{macrocode}
+%
+% 选择打印版还是用于上传的电子版。
+% \begin{macrocode}
+ output = {
+ choices = {
+ print,
+ electronic,
+ },
+ default = print,
+ },
}
\newif\ifthu@degree@graduate
\newcommand\thu@set@graduate{%
@@ -1312,7 +1381,7 @@
%
% 使用 \pkg{ctexbook} 类,优于调用 \pkg{ctex} 宏包。
% \begin{macrocode}
-\PassOptionsToPackage{quiet}{xeCJK}
+\PassOptionsToPackage{quiet}{fontspec}
\LoadClass[a4paper,UTF8,zihao=-4,scheme=plain,fontset=none]{ctexbook}[2017/04/01]
% \end{macrocode}
%
@@ -1451,24 +1520,39 @@
marginparwidth = 2cm,
marginparsep = 0.5cm
}
-\ifthu@degree@bachelor
- \geometry{
- top = 3.8cm,
- bottom = 3.2cm,
- left = 3.2cm,
- right = 3cm,
- headheight = 0.5cm,
- headsep = 1.8cm,
- footskip = 1.45cm,
- }
-\else
- \geometry{
- margin = 3cm,
- headheight = 0.5cm,
- headsep = 0.3cm,
- footskip = 0.8cm,
- }
-\fi
+\newcommand\thu@set@geometry{%
+ \ifthu@degree@bachelor
+ \geometry{
+ top = 3.8cm,
+ bottom = 3.2cm,
+ left = 3.2cm,
+ right = 3cm,
+ headheight = 0.5cm,
+ headsep = 1.8cm,
+ footskip = 1.45cm,
+ }%
+ \ifthu@output@print
+ \geometry{
+ left = 3.2cm,
+ right = 3cm,
+ }%
+ \else
+ \geometry{
+ hmargin = 3cm,
+ }%
+ \fi
+ \else
+ \geometry{
+ margin = 3cm,
+ headheight = 0.5cm,
+ headsep = 0.3cm,
+ footskip = 0.8cm,
+ }%
+ \fi
+}
+\thu@set@geometry
+\thu@option@hook{degree}{\thu@set@geometry}
+\thu@option@hook{output}{\thu@set@geometry}
% \end{macrocode}
%
% \subsection{主文档格式}
@@ -1479,10 +1563,22 @@
% 对于 \textsl{openright} 选项,必须保证章首页右开,且如果前章末页无内容须
% 清空其页眉页脚。
% \begin{macrocode}
-\let\thu@cleardoublepage\cleardoublepage
-\newcommand{\thu@clearemptydoublepage}{%
- \clearpage{\pagestyle{thu@empty}\thu@cleardoublepage}}
-\let\cleardoublepage\thu@clearemptydoublepage
+\def\cleardoublepage{%
+ \clearpage
+ \if@twoside
+ \ifthu@output@print
+ \ifodd\c@page
+ \else
+ \thispagestyle{empty}%
+ \hbox{}
+ \newpage
+ \if@twocolumn
+ \hbox{}\newpage
+ \fi
+ \fi
+ \fi
+ \fi
+}
% \end{macrocode}
% \end{macro}
%
@@ -2859,6 +2955,18 @@
name = end@date,
default = {\the\year-\two@digits{\month}-\two@digits{\day}},
},
+% \end{macrocode}
+%
+% 中文封面后是否生成书脊页。
+% \begin{macrocode}
+ include-spine = {
+ name = include@spine,
+ choices = {
+ false,
+ true,
+ },
+ default = false,
+ },
}
% \end{macrocode}
%
@@ -2964,6 +3072,9 @@
\pagenumbering{Alph}%
\thu@pdfbookmark{-1}{\thu@title}%
\thu@titlepage
+ \ifthu@include@spine@true
+ \thu@spine
+ \fi
\ifthu@degree@graduate
\cleardoublepage
\thu@titlepage@en
@@ -3337,11 +3448,7 @@
\fi\par
}\par
\begingroup
- \ifcsname lishu\endcsname
- \lishu\yihao\ziju{0.5}清华大学%
- \else
- \includegraphics{tsinghua.pdf}%
- \fi
+ \includegraphics{tsinghua-name-bachelor.pdf}%
\par
\endgroup
\vskip 0.94cm%
@@ -3470,7 +3577,8 @@
% \begin{macro}{\copyrightpage}
% 授权说明
% \begin{macrocode}
-\newcommand{\thu@authorization}{%
+\newcommand{\thu@authorization@title}{关于学位论文使用授权的说明}
+\newcommand{\thu@authorization@content}{%
\ifthu@degree@bachelor
本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
@@ -3487,15 +3595,16 @@
本人保证遵守上述规定。
\fi}
-\newcommand{\thu@authorizationaddon}{%
+\newcommand{\thu@authorization@addon}{%
\ifthu@degree@bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
-\newcommand{\thu@authorsig}{\ifthu@degree@bachelor 签\hskip1em名:\else 作者签名:\fi}
-\newcommand{\thu@teachersig}{导师签名:}
-\newcommand{\thu@frontdate}{%
+\newcommand{\thu@authorization@authorsig}{\ifthu@degree@bachelor 签\hskip1em名:\else 作者签名:\fi}
+\newcommand{\thu@authorization@teachersig}{导师签名:}
+\newcommand{\thu@authorization@frontdate}{%
日\ifthu@degree@bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
\newcommand\copyrightpage[1][]{%
\ifthu@degree@postdoc\relax\else
\cleardoublepage
+ \thu@pdfbookmark{0}{\thu@authorization@title}%
\def\thu@@tmp{#1}
\ifx\thu@@tmp\@empty
\ifthu@degree@bachelor\thu@authorization@mk\else%
@@ -3519,21 +3628,21 @@
% \begin{macrocode}
\newcommand{\thu@authorization@mk}{%
\ifthu@degree@bachelor\vspace*{0.2cm}\else\vspace*{0.42cm}\fi % shit code!
- \begin{center}\erhao\heiti 关于学位论文使用授权的说明\end{center}
+ \begin{center}\erhao\heiti \thu@authorization@title\end{center}
\ifthu@degree@bachelor\vskip5pt\else\vskip40pt\sihao[2.03]\fi\par
- \thu@authorization\par
- \textbf{\thu@authorizationaddon}\par
+ \thu@authorization@content\par
+ \textbf{\thu@authorization@addon}\par
\ifthu@degree@bachelor\vskip0.7cm\else\vskip1.0cm\fi
\ifthu@degree@bachelor
- \indent\mbox{\thu@authorsig\thu@underline\relax%
- \thu@teachersig\thu@underline\relax\thu@frontdate\thu@underline\relax}
+ \indent\mbox{\thu@authorization@authorsig\thu@underline\relax%
+ \thu@authorization@teachersig\thu@underline\relax\thu@authorization@frontdate\thu@underline\relax}
\else
\begingroup
\parindent0pt\xiaosi
- \hspace*{1.5cm}\thu@authorsig\thu@underline[7em]\relax\hfill%
- \thu@teachersig\thu@underline[7em]\relax\hspace*{1cm}\\[3pt]
- \hspace*{1.5cm}\thu@frontdate\thu@underline[7em]\relax\hfill%
- \thu@frontdate\thu@underline[7em]\relax\hspace*{1cm}
+ \hspace*{1.5cm}\thu@authorization@authorsig\thu@underline[7em]\relax\hfill%
+ \thu@authorization@teachersig\thu@underline[7em]\relax\hspace*{1cm}\\[3pt]
+ \hspace*{1.5cm}\thu@authorization@frontdate\thu@underline[7em]\relax\hfill%
+ \thu@authorization@frontdate\thu@underline[7em]\relax\hspace*{1cm}
\endgroup
\fi}
% \end{macrocode}
@@ -4283,9 +4392,10 @@
\normalfont \topsep\z@\relax
\trivlist
\item[\hskip\labelsep
- \itshape
+ % \itshape
% #1\@addpunct{.}]\ignorespaces
- \textsf{#1}\@addpunct{\thu@theorem@separator}]\ignorespaces
+ \sffamily
+ #1\@addpunct{\thu@theorem@separator}]\ignorespaces
}{%
\popQED\endtrivlist\@endpefalse
}
@@ -4392,13 +4502,109 @@
% \subsection{书脊}
% \label{sec:spine}
% \begin{macro}{\spine}
-% 单独使用书脊命令会在新的一页产生竖排书脊。
+% 单独使用书脊命令会在新的一页产生竖排书脊,
+% 参考 \url{https://tex.stackexchange.com/a/38585}。
+%
+% 本科生:
+% 书脊的书写要求:用仿宋\_GB2312 字书写,字体大小根据论文的薄厚而定。
+% 书脊上方写论文题目,下方写本科生姓名,距上下页边均为 3cm。
+%
+% 研究生:
+% 示例中上下页边距为 5.5 cm,左右边距为 1 cm。
% \begin{macrocode}
-\NewDocumentCommand{\spine}{O{\thu@title} O{\thu@author}}{%
- \newpage\thispagestyle{empty}%
- \fangsong\addCJKfontfeatures*{RawFeature={vertical:}}
- \xiaosan\ziju{0.4}%
- \noindent\hfill\rotatebox[origin=lt]{-90}{\makebox[\textheight]{#1\hfill#2}}}
+\thu@define@key{
+ spine-font = {
+ name = spine@font,
+ default = {\sanhao},
+ },
+ spine-title = {
+ name = spine@title,
+ },
+ spine-author = {
+ name = spine@author,
+ },
+}
+\newcommand*\CJKmovesymbol[1]{\raise.3em\hbox{#1}}
+\newcommand*\CJKmove{%
+ \punctstyle{plain}%
+ \let\CJKsymbol\CJKmovesymbol
+ \let\CJKpunctsymbol\CJKsymbol
+}
+\NewDocumentCommand{\spine}{
+ O{
+ \ifx\thu@spine@title\@empty
+ \thu@title
+ \else
+ \thu@spine@title
+ \fi
+ }
+ O{
+ \ifx\thu@spine@author\@empty
+ \thu@author
+ \else
+ \thu@spine@author
+ \fi
+ }}{%
+ \clearpage
+ \ifthu@degree@bachelor
+ \newgeometry{
+ vmargin = 3cm,
+ hmargin = 1cm,
+ }%
+ \else
+ \newgeometry{
+ vmargin = 5.5cm,
+ hmargin = 1cm,
+ }%
+ \fi
+ \thispagestyle{empty}%
+ \ifthu@language@chinese
+ \thu@pdfbookmark{0}{书脊}%
+ \else
+ \thu@pdfbookmark{0}{Spine}%
+ \fi
+ \begingroup
+ \noindent\hfill
+ \rotatebox[origin=lt]{-90}{%
+ \makebox[\textheight]{%
+ \fangsong
+ \addCJKfontfeatures*{RawFeature={vertical}}%
+ \thu@spine@font
+ \CJKmove
+ #1\hfill
+ \thu@stretch{4.5em}{#2}%
+ }%
+ }%
+ \endgroup
+ \clearpage
+ \restoregeometry
+}
+% \end{macrocode}
+%
+% Fandol 仿宋无法同时用于横排和竖排
+%(\href{https://github.com/tuna/thuthesis/issues/551}{\#551}),
+% 所以只能独立编译 \file{spine.pdf},然后插入封面后。
+% \begin{macrocode}
+\newcommand\thu@input@spine{%
+ \IfFileExists{spine.pdf}{}{%
+ \immediate\write18{xelatex spine.tex}%
+ \IfFileExists{spine.pdf}{}{%
+ \thu@error{Cannot find file "spine.pdf". Compile "spine.tex" first, or enable shell escape}%
+ }%
+ }%
+ \includepdf[pages=1]{spine.pdf}%
+}
+\newcommand\thu@spine{%
+ \ifthu@cjk@font@fandol
+ \thu@input@spine
+ \else
+ \ifthu@cjk@font@noto
+ \thu@input@spine
+ \else
+ \spine
+ \fi
+ \fi
+}
% \end{macrocode}
% \end{macro}
%
@@ -4443,6 +4649,15 @@
}
}
+\hypersetup{
+ pdflang = zh-CN,
+ pdftitle = {ThuThesis:清华大学学位论文模板},
+ pdfauthor = {清华大学 TUNA 协会},
+ pdfsubject = {清华大学学位论文模板使用说明},
+ pdfkeywords = {论文模板; 清华大学; 使用说明},
+ pdfdisplaydoctitle = true
+}%
+
\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{
\setmainfont{Palatino}
\setsansfont[Scale=MatchLowercase]{Helvetica}
diff --git a/macros/latex/contrib/thuthesis/thuthesis.ins b/macros/latex/contrib/thuthesis/thuthesis.ins
index bd8c34edef..6621dce6d2 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.ins
+++ b/macros/latex/contrib/thuthesis/thuthesis.ins
@@ -58,7 +58,7 @@ through LaTeX.
\Msg{* \space\space thuthesis-author-year.bst}
\Msg{* \space\space thuthesis-numeric.bst}
\Msg{* \space\space thuthesis-bachelor.bst}
- \Msg{* \space\space tsinghua.pdf}
+ \Msg{* \space\space tsinghua-name-bachelor.pdf}
\Msg{*}
\Msg{* To produce the documentation run the files ending with}
\Msg{* `.dtx' through LaTeX.}
diff --git a/macros/latex/contrib/thuthesis/thuthesis.pdf b/macros/latex/contrib/thuthesis/thuthesis.pdf
index 6c74015fc5..919eff6aa3 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.pdf
+++ b/macros/latex/contrib/thuthesis/thuthesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/tsinghua.pdf b/macros/latex/contrib/thuthesis/tsinghua-name-bachelor.pdf
index ac5b358259..ac5b358259 100644
--- a/macros/latex/contrib/thuthesis/tsinghua.pdf
+++ b/macros/latex/contrib/thuthesis/tsinghua-name-bachelor.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/README.md b/macros/latex/contrib/tuda-ci/README.md
index 597987209f..cfcffa8459 100644
--- a/macros/latex/contrib/tuda-ci/README.md
+++ b/macros/latex/contrib/tuda-ci/README.md
@@ -2,7 +2,7 @@
Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2020
- tuda-ci 2020/04/25 v2.10
+ tuda-ci 2020/06/12 v2.11
***************************************************************************
@@ -24,7 +24,7 @@ Das Gesamtpaket wurde in Teilen inspiriert von Clemens von Loewenichs and Joe We
Derzeit existieren diese Templates nur in Deutscher Sprache.
## Verwendungshinweis
-Die Richtlinien des Corporate Designs, sowie die Anforderungen der Universitätsbibliothek erfordern einige spezielle Konfigurationen. Beispielsweise ist für wissenschaftliche Veröffentlichungen und Abschlussarbeiten die Erzeugung einer archivierbaren PDF-Datei (PDF/A) vorgesehen.
+Die Richtlinien des Corporate Designs (https://www.intern.tu-darmstadt.de/media/medien_stabsstelle_km/services/medien_cd/das_bild_der_tu_darmstadt.pdf), sowie die Anforderungen der Universitätsbibliothek erfordern einige spezielle Konfigurationen. Beispielsweise ist für wissenschaftliche Veröffentlichungen und Abschlussarbeiten die Erzeugung einer archivierbaren PDF-Datei (PDF/A) vorgesehen.
Dies ist mit aktuellen LaTeX-Paketen und dem Compiler LuaLaTeX deutlich konsequenter umzusetzen.
Aus diesem Grund wird empfohlen, die verwendete Distribution vorab zu aktualisieren und LuaLaTeX zu verwenden.
Weitere Hinweise finden sich in den Beispieldateien dokumentiert.
@@ -195,3 +195,5 @@ leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls
- add a mechanism for credits in tudaexercise
- captions & headings in leaflets no longer using \accentfont
- fixing marginpar alignment
+ * v2.11 (2020-06-12) add translation for ThesisStatus
+ - add option for a custom status
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
index be3b67c964..5923462a94 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
index ce40b87dce..34994d01fe 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
index 9ec47ff1c2..871c6e49fa 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
index f44471c8c9..289247f768 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
index 2ecc47d827..a6e907d2a8 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
index e4cef1e026..94cc8cd817 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
index f7c9141246..7eb37d8519 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
index 418e25055f..daba90acc6 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
index cd1923820a..2dd1e323ce 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
index 021f3f2c15..aaf35c3331 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
index 13ad606dd1..f68d00fdfc 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis_maschbau.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis_maschbau.pdf
new file mode 100644
index 0000000000..f2e444523c
--- /dev/null
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis_maschbau.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
index 4efb8203b8..fdd98f0064 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaAnnouncement.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaAnnouncement.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
index 05b7badcb0..ada1417fbc 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBeamer.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaBeamer.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
index 5e8b5012d9..5c4ead9e90 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBibliography.bib' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaBibliography.bib' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -53,4 +53,14 @@
date={2015-12-27},
urldate={2020-02-12},
url={http://mirrors.ctan.org/macros/latex/contrib/leaflet/leaflet-manual.pdf}
+}
+
+@online{TUDaGuideline,
+ title={Das Bild der TU Darmstadt},
+ subtitle={Corporate Design Handbuch},
+ edition={3},
+ month={06},
+ year={2011},
+ url={https://www.intern.tu-darmstadt.de/media/medien_stabsstelle_km/services/medien_cd/das_bild_der_tu_darmstadt.pdf},
+ urldate={2020-05-01}
} \ No newline at end of file
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
index f0e9173ec7..cac6446609 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaExercise.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaExercise.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
index eab9a4fe26..525e3d5e51 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaFromaddress.lco' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaFromaddress.lco' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
index 7bbd051f51..fc1af401dc 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLeaflet.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaLeaflet.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
index 0250803bd3..c59ebf93d0 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLetter.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaLetter.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
index e18336f4f5..b262c076e1 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPhD.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaPhD.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
index 7c39f2186b..4db5dde606 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPoster.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaPoster.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
index 2da25184e8..243299d1a8 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPub.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaPub.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -114,7 +114,7 @@ Im folgenden werden die möglichen Optionen beschrieben.
KOMA-Script ist eine Sammlung von Klassen und Paketen für \LaTeX, die neben den typografischen Anpassungen an den Europäischen Raum auch die Konfigurationsmöglichkeiten stark erweitert.
\item[color=<Farbe>] Wählt die Schmuckfarbe für die Nutzung in der Identitätsleiste aus. Die Farbcodes finden sich in der Farbübersicht in den Corporate Design Richtlinien. Neben diesen Farben kann prinzipiell jede beliebige Farbe übergeben werden. Die Optionen \code{accentcolor}, \code{textaccentcolor} und \code{identbarcolor} werden anlog direkt an \pck{tudacolors} übergeben. Auf diesem Weg können die Farben unabhängig voneinander gesetzt werden.
- \item[marginpar] Schaltet die Randnotizspalte um. Voreingestellt ist \code{auto}. Dies bedeutet, dass die Randnotizspalte wie im Corporate Design Handbuch über die fünfte Spalte läuft. \marginpar{Beispiel für eine Randnotiz}.
+ \item[marginpar] Schaltet die Randnotizspalte um. Voreingestellt ist \code{auto}. Dies bedeutet, dass die Randnotizspalte wie im Corporate Design Handbuch \cite{TUDaGuideline} über die fünfte Spalte läuft. \marginpar{Beispiel für eine Randnotiz}.
Darüber werden auch die Werte \code{true} und \code{false} akzeptiert. \code{false} setzt die Breite der Randnotizspalte auf 0. Der Mechanismus selbst wird nicht deaktiviert.
Randnotizen werden über den komafont-Mechanismus \cite[vgl.][]{scrguide} im Element \code{marginpar} gesetzt. Seine Voreinstellung entspricht
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
index 353181c3f7..cb7a06dacd 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaReport.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaReport.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
index f437db453a..58b96b279d 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaSciPoster.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaSciPoster.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
index fae5737569..78b0a6914a 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaThesis.tex' version 2.10 (2020/04/25),
+%% This is file `DEMO-TUDaThesis.tex' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis_maschbau.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis_maschbau.tex
new file mode 100644
index 0000000000..62e354b4f4
--- /dev/null
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis_maschbau.tex
@@ -0,0 +1,438 @@
+%% This is file `DEMO-TUDaThesis_maschbau.tex' version 2.11 (2020/06/12),
+%% it is part of
+%% TUDa-CI -- Corporate Design for TU Darmstadt
+%% ----------------------------------------------------------------------------
+%%
+%% Copyright (C) 2018--2020 by Marei Peischl <marei@peitex.de>
+%%
+%% ============================================================================
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008/05/04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainers of this work are
+%% Marei Peischl <tuda-ci@peitex.de>
+%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
+%%
+%% The development respository can be found at
+%% https://github.com/tudace/tuda_latex_templates
+%% Please use the issue tracker for feedback!
+%%
+%% ============================================================================
+%%
+% !TeX program = lualatex
+%%
+
+%% This is file `DEMO-TUDaThesis_maschbau.tex' version 2.11 (2020/06/12),
+%% it is part of
+%% TUDa-CI -- Corporate Design for TU Darmstadt
+%% ----------------------------------------------------------------------------
+%%
+%% Copyright (C) 2018--2020 by Marei Peischl <marei@peitex.de>
+%%
+%% ============================================================================
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008/05/04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainers of this work are
+%% Marei Peischl <tuda-ci@peitex.de>
+%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
+%%
+%% The development respository can be found at
+%% https://github.com/tudace/tuda_latex_templates
+%% Please use the issue tracker for feedback!
+%%
+%% ============================================================================
+%%
+% !TeX program = lualatex
+%%
+
+%% This is file `DEMO-TUDaThesis_maschbau.tex' version 2.11 (2020/06/12),
+%% it is part of
+%% TUDa-CI -- Corporate Design for TU Darmstadt
+%% ----------------------------------------------------------------------------
+%%
+%% Copyright (C) 2018--2020 by Marei Peischl <marei@peitex.de>
+%%
+%% ============================================================================
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008/05/04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainers of this work are
+%% Marei Peischl <tuda-ci@peitex.de>
+%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
+%%
+%% The development respository can be found at
+%% https://github.com/tudace/tuda_latex_templates
+%% Please use the issue tracker for feedback!
+%%
+%% ============================================================================
+%%
+% !TeX program = lualatex
+%%
+
+%% This is file `DEMO-TUDaThesis.tex' version 2.10 (2020/06/12),
+%% it is part of
+%% TUDa-CI -- Corporate Design for TU Darmstadt
+%% ----------------------------------------------------------------------------
+%%
+%% Copyright (C) 2018--2020 by Marei Peischl <marei@peitex.de>
+%%
+%% ============================================================================
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008/05/04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainers of this work are
+%% Marei Peischl <tuda-ci@peitex.de>
+%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
+%%
+%% The development respository can be found at
+%% https://github.com/tudace/tuda_latex_templates
+%% Please use the issue tracker for feedback!
+%%
+%% ============================================================================
+%%
+% !TeX program = lualatex
+%%
+
+\documentclass[
+ ngerman,
+ ruledheaders=section,%Ebene bis zu der die Überschriften mit Linien abgetrennt werden, vgl. DEMO-TUDaPub
+ class=report,% Basisdokumentenklasse. Wählt die Korrespondierende KOMA-Script Klasse
+ thesis={type=bachelor},% Dokumententyp Thesis, für Dissertationen siehe die Demo-Datei DEMO-TUDaPhd
+% accentcolor=9c,% Auswahl der Akzentfarbe
+ custommargins=false,% Ränder werden mithilfe von typearea automatisch berechnet
+ marginpar=false,% Kopfzeile und Fußzeile erstrecken sich nicht über die Randnotizspalte
+ %BCOR=5mm,%Bindekorrektur, falls notwendig
+ parskip=half-,%Absatzkennzeichnung durch Abstand vgl. KOMA-Sript
+ fontsize=11pt,%Basisschriftgröße laut Corporate Design ist mit 9pt häufig zu klein
+% logofile=example-image, %Falls die Logo Dateien nicht vorliegen
+ maschinenbau
+]{tudapub}
+
+
+% Der folgende Block ist nur bei pdfTeX auf Versionen vor April 2018 notwendig
+\usepackage{iftex}
+\ifPDFTeX
+ \usepackage[utf8]{inputenc}%kompatibilität mit TeX Versionen vor April 2018
+\fi
+
+%%%%%%%%%%%%%%%%%%%
+%Sprachanpassung & Verbesserte Trennregeln
+%%%%%%%%%%%%%%%%%%%
+\usepackage[english, main=ngerman]{babel}
+\usepackage[autostyle]{csquotes}% Anführungszeichen vereinfacht
+\usepackage{microtype}
+
+
+%%%%%%%%%%%%%%%%%%%
+%Literaturverzeichnis
+%%%%%%%%%%%%%%%%%%%
+\usepackage{biblatex} % Literaturverzeichnis
+\bibliography{DEMO-TUDaBibliography}
+
+
+%%%%%%%%%%%%%%%%%%%
+%Paketvorschläge Tabellen
+%%%%%%%%%%%%%%%%%%%
+%\usepackage{array} % Basispaket für Tabellenkonfiguration, wird von den folgenden automatisch geladen
+\usepackage{tabularx} % Tabellen, die sich automatisch der Breite anpassen
+%\usepackage{longtable} % Mehrseitige Tabellen
+%\usepackage{xltabular} % Mehrseitige Tabellen mit anpassarer Breite
+\usepackage{booktabs} % Verbesserte Möglichkeiten für Tabellenlayout über horizontale Linien
+
+%%%%%%%%%%%%%%%%%%%
+%Paketvorschläge Mathematik
+%%%%%%%%%%%%%%%%%%%
+%\usepackage{mathtools} % erweiterte Fassung von amsmath
+%\usepackage{amssymb} % erweiterter Zeichensatz
+%\usepackage{siunitx} % Einheiten
+
+%Formatierungen für Beispiele in diesem Dokument. Im Allgemeinen nicht notwendig!
+\let\file\texttt
+\let\code\texttt
+\let\tbs\textbackslash
+
+\usepackage{pifont}% Zapf-Dingbats Symbole
+\newcommand*{\FeatureTrue}{\ding{52}}
+\newcommand*{\FeatureFalse}{\ding{56}}
+
+\begin{document}
+
+\Metadata{
+ title=TUDaThesis - Abschlussarbeiten im CD der TU Darmstadt,
+ author=Marei Peischl
+}
+
+\title{TUDaThesis -- Abschlussarbeiten im CD der TU Darmstadt}
+\subtitle{\LaTeX{} using TU Darmstadt's Corporate Design}
+\author[M. Peischl]{Marei Peischl}%optionales Argument ist die Signatur,
+\birthplace{Geburtsort}%Geburtsort, bei Dissertationen zwingend notwendig
+\reviewer{Gutachter 1 \and Gutachter 2 \and noch einer \and falls das immernoch nicht reicht}%Gutachter
+
+%Diese Felder erden untereinander auf der Titelseite platziert.
+%\department ist eine notwendige Angabe, siehe auch dem Abschnitt `Abweichung von den Vorgaben für die Titelseite'
+\department{ce} % Das Kürzel wird automatisch ersetzt und als Studienfach gewählt, siehe Liste der Kürzel im Dokument.
+\institute{Institut}
+\group{Arbeitsgruppe}
+
+\submissiondate{\today}
+\examdate{\today}
+
+% \tuprints{urn=1234,printid=12345}
+% \dedication{Für alle, die \TeX{} nutzen.}
+
+\maketitle
+
+\affidavit
+
+\tableofcontents
+
+
+\chapter{Über diese Datei}
+Die Datei \file{DEMO-TUDaThesis.tex} ist ein Template für Abschlussarbeiten im Stil des Corporate Designs der TU Darmstadt.
+Sie ist Teil des TUDa-CI-Bundles wurde vom in Teilen tuddesign-Paket von C.~v.~Loewenich und J.~Werner inspiriert.
+
+Sie verwendet die Dokumentenklasse \file{tudapub.cls}, allerdings mit erweiterten Einstellungen. In diesem Dokument werden überwiegend die speziell auf Abschlussarbeiten ausgelegten Möglichkeiten beschrieben.
+
+Es ist voreingestellt, dass eine PDF/A-Datei erzeugt wird. Die beste Kompatibilität hierfür bietet Lua\LaTeX. Bei anderen Compilern kann dies entsprechend der Informationen in DEMO-TUDaPub zu Problemen führen. In diesem Fall sollte entweder der Compiler gewechselt oder \code{pdfa=false} aktiviert werden.
+
+Für weitere Informationen kann ein Blick in die zur Dokumentenklasse gehörigen Dokumentation (tudapub.pdf) hilfreich sein. Sie wird zusammen mit den Quelldateien verteilt.
+
+\minisec{Unterschiede der Demodateien DEMO-TUDaThesis und DEMO-TUDaPhD}
+Zwar basieren alle drei DEMO-Dateien auf der Klasse \code{tudapub}, allerdings sind die Basiseinstelungen dem Dokumententyp angepasst.
+Für Erläuterungen zu den TUDaPub spezifischen Optionen, sei auf die Datei DEMO-TUDaPub verwiesen.
+Da die Basisklasse für beide identisch ist, kann jede Option abgeändert werden. Die Folgende Liste zeigt lediglich die gezeigten Features bei Standardeinstellungen.
+
+\begin{tabularx}{\linewidth}{@{}p{.25\linewidth}*3{>{\centering\arraybackslash}X}@{}}
+ \toprule
+ Option&DEMO-TUDaThesis&DEMO-TUDaPhD&DEMO-TUDapub\\
+ \midrule
+ twoside&\FeatureFalse&\FeatureTrue&\FeatureFalse\\\midrule
+ parskip&\FeatureTrue&\FeatureFalse&\FeatureTrue\\\midrule
+ Kolophon&\FeatureFalse&\FeatureTrue&\FeatureFalse\\\midrule
+ Widmung&\FeatureFalse&\FeatureTrue&\FeatureFalse\\\midrule
+ Schriftgröße&11pt&11pt&9pt\\\midrule
+ ruledheaders&section&chapter&all\\\midrule
+ Basisklasse&scrreprt&scrbook&scrartcl\\\midrule
+ thesis&\ttfamily type=bachelor&\ttfamily type=dr, dr=rernat
+ &\FeatureFalse\\\midrule
+ marginpar&\FeatureFalse&\FeatureFalse&\FeatureTrue\\\midrule
+ Affidavit\newline\rlap{(Selbstständigkeitserklärung)}&\FeatureTrue&\FeatureTrue&\FeatureFalse\\\midrule
+ abstract&\FeatureFalse&\FeatureTrue&\FeatureTrue\\\midrule
+ custommargins&\FeatureTrue&\FeatureTrue&\FeatureFalse\\
+ \bottomrule
+\end{tabularx}
+
+
+\chapter{Verwendung}
+Die Klasse kann wie für Dokumentenklassen üblich eingebunden werden
+\begin{verbatim}
+\documentclass[thesis]{tudapub}
+\end{verbatim}
+Die Option \code{thesis} wechselt hierbei in den Modus, der spezielle Features für Abschlussarbeiten freischaltet, die in diesem Dokument beschrieben werden.
+
+Darüber hinaus lässt sich die Klasse verwenden wie die Standard-KOMA-Script-Klasse, auf der sie basiert.
+Voreingstellt ist hierbei \code{scrreprt}.
+
+Allgemein bietet \KOMAScript{} viele Möglichkeiten zu Anpassungen. Wie in der tudapub-Demo-Datei beschrieben, können hier jedoch nicht alle erläutert werden, ein Blick in die offizielle Dokumentation ist daher häufig hilfreich \cite{scrguide}.
+
+\section{Übergabe der Titelinformationen}
+
+Die Titelinformationen werden analog zur klassichen Titelerzeugung mit \verb+\maketitle+ übergeben. Allerdings wurden die Felder um ein paar speziellere Daten erweitert. Sofern nicht anders angegeben, verfügen alle Makros über ein notwendiges Argument für die Datenübergabe, z.\,B.
+\begin{verbatim}
+\title{\LaTeX{} im Corporate Design der TU Darmstadt}
+\end{verbatim}
+Es ist zu beachten, dass für die Erzeugung der Titelseite nach Übergabe aller Daten \verb+\maketitle+ aufgerufen werden muss.
+
+\begin{description}\setkomafont{descriptionlabel}{\ttfamily\textbackslash}
+ \item[title] Titel, wird in sehr großer Schrift im obersten Block der Titelseite platziert. Die Schriftgröße ist aufgrund der Häufigkeit für lange Titel kleiner gewählt als für andere Publikationen.
+ \item[subtitle] Untertitel. Dieses Feld kann alternativ für eine Übersetzung genutzt werden.
+ \item[author] Der Autor/dir Autoren. Mehere Autoren werden durch \verb+\and+ getrennt.
+ \item[studentID] Matrikelnummer. Nach den Vorgaben des Templates ist diese Angabe immer optional.
+ \item[birthplace] Geburtsort. Angabe ist bei Dissertationen notwendig.
+ \item[reviewer] Gutachter. Mehrere Gutachter werden, wie Autoren durch \verb+\and+ getrennt. Die Nummerierung läuft von links nach rechts.
+ \item[institution] Einrichtung. Dieser Eintrag, wie auch die beiden folgenden, werden unterhalb des Logos auf der Titelseite platziert.
+ \item[department] Fach-/Studienbereich, allerdings ist die oben genannte Option zu bevorzugen. Die Verarbeitung des Arguments erfolgt jedoch analog.
+
+ Dieses Makro verfügt jedoch zusätzlich über die Möglichkeit abweichende Einträge gegenüber den Vorgaben anzugeben. Insbesondere wenn eine gesonderte Formulierung gegenüber der voreingestellten \enquote{im Fachbereich} und ihren Varianten notwendig ist. Hierfür liefert \code{\textbackslash{}department} ein optionales Argument:
+
+ \begin{verbatim}
+ \department[Ersatztext]{Kürzel/Bezeichnung}
+ \end{verbatim}
+ Zusätzlich gibt es ab Version 2.01 auch die Möglichkeit den gesamten Text \enquote{im Fachbereich <Bereichsbezeichnung>}, sowie die Angabe in der Infobox auf der Titelseite zu ersetzen. Dies geschieht über die gesternte Variante:
+ \begin{verbatim}
+ \department*[Text für die Box]{Text zwischen Typ und Autor}
+ \end{verbatim}
+ \item[group] Arbeitsgruppe.
+ \item[submissiondate] Datum der Einreichung
+ \item[examdate] Datum der Disputation
+ \item[date] Beliebiges Datum. Wird über \verb|datename| bezeichnet.
+ \item[publishers] Wird hier für die Ortsangabe verwendet und ist mit \enquote{Darmstadt}, bzw. \enquote{Darmstadt -- D17} (bei Dissertationen) vorbelegt.
+ \item[tuprints] \label{page:tuprints}Übergabe der Daten, sofern das dokument über tuprints Veröffentlicht werden soll.
+ \begin{verbatim}
+ \tuprints{urn=1234, printid=12345}
+ \end{verbatim}
+ Falls das Argument kein Gleichheitszeichen erkennt, wird der Wert als \code{printid} gesetzt und keine URN angegeben.
+
+ \item[titleimage] Hier kann Code übergeben werden, der den farbigen Block im unteren Teil der Titelseite ersetzt. Als Maße können hier die Längen \verb+\layerwidth+ und \verb+\layerheight+ verwendet werden. Sie passen sich dem Verfügbaren Platz an. Für ein Beispiel sei auf die TUDapub-Dokumentation verwiesen.
+ \item[titleintro] Ab Version 2.03 kann zusätzlich über diesen Hook ein beliebiger Text direkt nach dem Untertitel und vor den automatischen Informationen ergänzt werden.
+ \item[titleaddendum] Wie \code{\tbs{}titleintro} jedoch als letztes Element des Blocks.
+\end{description}
+
+\section{Weitere Macros}
+Das Makro \verb+\affidavit+ erzeugt eine Selbstständigkeitserklärung mit Unterschriftenzeile. Hier wird der oben übergebene Name/Signatur eingefügt.
+In diesem Dokument findet sich das Affidavit direkt nach der Titelei.
+
+Es besteht zusätzlich die Möglichkeit ein anderssprachiges Affidavit als Ergänzung mit abzudrucken. Um die Struktur und die ggf. notwendige Sprachumschaltung zu erledigen, existiert hierfür ab Version 2.03 eine Umgebung:
+
+\begin{verbatim}
+\begin{affidavit*}[Babel-Sprachoption]{Überschrift}
+Text
+\end{affidavit*}
+\end{verbatim}
+
+Diese Variante verfügt bewusst über keine Unterschriftenzeile, da diese Version laut Verständnis der Entwickler keine rechtliche Verbindlichkeit besitzt.
+
+Die Umgebung kann jedoch auch für besondere Formen der Erklärung genutzt werden. In diesem Fall kann eine zusätzliche Signaturzeile über
+\begin{verbatim}
+\AffidavitSignature[Stadt]
+\end{verbatim}
+hinzugefügt werden. Die Vorbelegung für Stadt ist hierbei \enquote{Darmstadt}.
+
+\section{Layout-Optionen mit Verstoß gegen das Corporate Design}
+Die Zeilenlängen sind laut Corporate Design aus typografischer Sicht zu lang.
+Daher existiert die Klassenoption \code{custommargins}, die für dieses Dokument aktiviert wurde.
+
+Die Option \code{custommargins} verfügt ab Version 1.10 auch über den Wert \code{geometry}. Damit können die Ränder auch durch einen Aufruf von \code{\tbs{}geometry} vor Beginn des Dokuments manuell angepasst werden.
+
+Hierbei ist zu beachten, dass die Einstellungen als Ausgangspunkt den Voreingestellten Satzspiegel nutzen (je nach Option mit Randnotizspalte oder ohne). Es ist möglich diese Optionen vor den eigenen mit zurückzusetzen:
+\begin{verbatim}
+\geometry{
+ reset,
+ <Eigene Anpassungen>
+}
+\end{verbatim}
+Die gilt insbesondere für die Optionen \code{includehead}, \code{includefoot} und \code{includemp}.
+
+Diese Variante wird auf Wunsch zur Verfügung gestellt, allerdings wird darauf hingewiesen, dass manuelle Randeinstellungen oft nicht zu einem harmonischen Satzspiegel führen.
+
+Auch ist das Standard-Layout der Kolumnentitel wenig vorteilhaft, da die Kolumnentitel damit local größer sein können als die eigentliche Überschrift.
+
+
+Dadurch werden die Ränder nicht fest definiert, sondern auf Basis des typearea-Paketes optimiert.
+
+Wenn die option \code{marginpar=true} gesetzt bleibt, ragen die Kopf- und Fußzeile über die Marginalspalte hinaus. Aus ästhetischen Gründen wird daher empfohlen in diesem Fall die Kopf- und Fußzeile mit \code{marginpar=false} auf den Textbereich zu beschränken.
+
+
+Darüber hinaus kann über
+\begin{verbatim}
+\pagestyle{TUDa.headings}
+\end{verbatim}
+ein einfacherer Seitenstil ausgewählt werden, der die Nutzung mit lebenden Kolumnentitel erheblich vereinfacht.
+
+
+\section{Spezielle Optionen für Abschlussarbeiten}
+Die Klasse unterstützt alle Optionen der \file{tudapub}-Klasse. Darüber hinaus besteht über Wertzuweisung der Option \code{thesis} die Möglichkeit spezielle Einstellungen zu wählen.
+Es ist prinzipiell möglich die Optionen auch direkt als Optionen zur \file{tudapub}-Klasse zu übergeben, allerdings ist dies aufgrund der schlechteren Übersicht nicht zu empfehlen.
+
+Für dieses Dokument wurden beispielsweise die Optionen als
+\begin{verbatim}
+thesis={type=drfinal,dr=phil}
+\end{verbatim}
+übergeben.
+
+Im folgenden findet sich die Bedeutung der einzelnen Optionen:
+\begin{description}
+\item[type=<Wert>] Auswahl des Typus. Dieser wird auf die Titelseite gesetzt und wählt zudem aus welche Informationen für die Titelseite zwingend übergeben werden müssen.
+ Es stehen die folgenden Werte zur Verfügung (die Werte in Klammern sind die notwendigen Titeldaten):
+ \begin{itemize}
+ \item \code{sta}: Studienarbeit (title, author, date)
+ \item \code{diplom}: Diplomarbeit (title, author, submissiondate, reviewer, department)
+ \item \code{bachelor}: Bachelorarbeit (title, author, submissiondate, department, reviewer)
+ \item \code{master}: Masterarbeit (title, author, submissiondate, department, reviewer)
+ \item \code{pp}: Project-Proposal (title, author, date, department)
+ \item \code{dr}: vorgelegte Dissertation (title, author, submissiondate , birthplace, department, reviewer)
+ \item \code{drfinal}: genehmigte Dissertation (title, author, submissiondate,examdate, birthplace, department, reviewer)
+ \end{itemize}
+ Wird ein Typus angegeben, der nicht erkannt wird, so wird der Text direkt übergeben. Notwendige Titelfelder über den Titel hinaus gibt es in diesem Fall nicht.
+\item[dr=<Kürzel>] Lädt einen der vordefinierten Texte für die Titelseite. Als Werte stehen bislang \code{rernat}, \code{ing} und \code{phil} zur Verfügung. Zum Beispiel lädt der Wert \code{phil}:
+ \begin{quote}
+ Zur Erlangung des Grades eines Doktor der Philosophie (Dr.\,phil.)
+ \end{quote}
+ Sofern keiner dieser Werte dem angestrebten Titel entspricht, kann ein Text direkt übergeben werden.
+ \begin{verbatim}
+ \drtext{Zur Erlangung des Grades \ldots}
+ \end{verbatim}
+\item[department=<Kürzel>] Die Fachbereiche sind fest als Textbausteine in Deutscher sowie Englischer Sprache hinterlegt. Diese Option ermöglicht die Auswahl als Dokumentenklassenoption. Aus Kompatibilitätsgründen kann jedoch auch das Makro \code{department}-Makro hierfür genutzt werden. Zur Verfügung stehen:\par
+ \begin{tabular}{@{}l@{${}\to{}$}l@{}}
+ arch & Architektur\\
+ bauing& Bau- und Umweltingenieurwissenschaften\\
+ bio &Biologie\\
+ chem &Chemie\\
+ etit &Elektrotechnik und Informationstechnik\\
+ gugw &Gesellschafts- und Geschichtswissenschaften\\
+ humanw&Humanwissenschaften\\
+ inf &Informatik\\
+ mb &Maschinenbau\\
+ matgeo&Material- und Geowissenschaften\\
+ math &Mathematik\\
+ phys &Physik\\
+ wi &Rechts- und Wirtschaftswissenschaften
+ \end{tabular}
+
+ Neben den Fachbereichen existieren für Abschlussarbeiten, die keine Dissertationen sind auch Studienbereiche.
+ Falls das Kürzel nicht als Fachbereich hinterlegt ist, wird automatisch auf die Studienbereiche geprüft. Die Studienbereiche haben die folgenden Kürzel:
+
+ \begin{tabular}{@{}l@{${}\to{}$}l@{}}
+ ce&Computational Engineering\\
+ ese&Energy Science and Engineering\\
+ ist&Information Systems Engineering\\
+ mech&Mechanik\\
+ metro&Mechatronik
+ \end{tabular}
+
+ Falls etwas anderes als eines dieser Kürzel übergeben wird, wird der Text direkt verwendet und eine entsprechende Warnung ausgegeben.
+
+ Die Auswahl der Fachrichtung erzeugt zusätzlich eine Box auf der Titelseite unterhalb des Logos. Falls diese automatische Erstellung nicht gewünscht ist, kann dies über die Option \code{instbox=false} deaktiviert werden.
+\item[ignore-missing-data] Diese Option ist ein Schalter, der es ermöglicht die Fehlermeldung über nicht übergebene Titeldaten auszuschalten. In diesem Fall wird lediglich eine Warnung erzeugt, falls die angegeben Daten nicht mit den Anforderungen übereinstimmen.
+\end{description}
+
+\minisec{Abweichung von den Vorgaben für die Titelseite}
+Da es möglich sein kann von dieser Vorgabe abzuweichen, existiert für Sonderfälle die Dokumentenklassenoption \code{instbox=false}. Damit wird die automatische Verarbeitung der Daten für die Boxen auf der der Titelseite unterdrückt. In diesem Fall ist der Autor jedoch selbst für die Einhaltung der Vorschriften verantwortlich. Weitere Informationen zur Konstruktion der Boxen findet sich in den Verwendungshinweisen zu Basisklasse TUDaPub. Zusätzlich sei auf die Möglichkeiten des \code{\textbackslash{}department}-Makros verwiesen, sofern die Abweichung sich auf den Text beschränkt.
+
+\section{Erhöhter Zeilenabstand -- Informationen zum setspace-Paket}
+Sofern die Vorgaben es erfordern, ist es möglich mit dem setspace-Paket den Durchschuss zu erhöhen. Allerdings beeinflusst dies natürlich sämtliche Zeilenabstände. Ein erhöhter Zeilenabstand sollte daher erst nach der Titelseite aktiviert werden. Allgemein ist es jedoch empfehlenswert auch für Verzeichnisse und sonstige Sonderelemente außerhalb des Fließtextes auf bei normalen Einstellungen zu bleiben.
+
+Setspace liefert hierfür die Möglichkeit, das Paket ohne Optionen zu laden und später über Makros, wie \code{\tbs{}onehalfspacing} das Umschalten zu verzögern. Alternativ kann auch durch die Umgebungen, wie \code{singlespace} lokal wieder zum Normalzustand gewechselt werden, sofern dies erforderlich ist.
+
+\printbibliography
+
+\end{document}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
index 0aae6a8079..1160ffe48f 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa.sty' version 2.10 (2020/04/25),
+%% This is file `beamercolorthemeTUDa.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamercolorthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
index 5b2c119339..a5c6b1568c 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa.sty' version 2.10 (2020/04/25),
+%% This is file `beamerfontthemeTUDa.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerfontthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
index 085cb795a7..76c6dd3e02 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa.sty' version 2.10 (2020/04/25),
+%% This is file `beamerinnerthemeTUDa.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
%% This is file `beamerinnerthemeTUDa.sty' version 1.11 (2019/10/15),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
index e72078fdce..52389e9d59 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa.sty' version 2.10 (2020/04/25),
+%% This is file `beamerouterthemeTUDa.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerouterthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
index 7f102a4e9e..c3c4cf8052 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa.sty' version 2.10 (2020/04/25),
+%% This is file `beamerthemeTUDa.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemeTUDa}
[\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt]
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
index b081ea671f..d91a49f15c 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a0paper.clo' version 2.10 (2020/04/25),
+%% This is file `tuda-a0paper.clo' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\ProvidesExplFile{tuda-a0paper.clo}{\filedate}{\fileversion}{tuda-ci size adjustments for a0paper}
\cs_set:Nn \TUDa_setup_title_sizes: {
\cs_set:Nn \TUDa_title_fontsize: {{125pt}{165pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
index f8116c0871..d42ccca4c7 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a1paper.clo' version 2.10 (2020/04/25),
+%% This is file `tuda-a1paper.clo' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci size adjustments for a0paper}
\cs_set:Nn \TUDa_setup_title_sizes: {
\cs_set:Nn \TUDa_title_fontsize: {{86pt}{120pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
index f5934603a0..524c7be21d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a2paper.clo' version 2.10 (2020/04/25),
+%% This is file `tuda-a2paper.clo' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\ProvidesExplFile{tuda-a2paper.clo}{\filedate}{\fileversion}{tuda-ci size adjustments for a0paper}
\cs_set:Nn \TUDa_setup_title_sizes: {
\cs_set:Nn \TUDa_title_fontsize: {{65pt}{82pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
index fcc6f0d8a7..2ea4782a79 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a3paper.clo' version 2.10 (2020/04/25),
+%% This is file `tuda-a3paper.clo' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\ProvidesExplFile{tuda-a3paper.clo}{\filedate}{\fileversion}{tuda-ci size adjustments for a3paper}
\cs_set:Nn \TUDa_setup_title_sizes: {
\cs_set:Nn \TUDa_title_fontsize: {{47pt}{61pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
index aea71a749f..351d8ec4fd 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a4paper.clo' version 2.10 (2020/04/25),
+%% This is file `tuda-a4paper.clo' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\ProvidesExplFile{tuda-a4paper.clo}{\filedate}{\fileversion}{tuda-ci size adjustments for a4paper}
\cs_set:Nn \TUDa_setup_title_sizes: {
\cs_set:Nn \TUDa_title_fontsize: {{36pt}{47pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
index b08a8b0e69..800de12c62 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a5paper.clo' version 2.10 (2020/04/25),
+%% This is file `tuda-a5paper.clo' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\ProvidesExplFile{tuda-a5paper.clo}{\filedate}{\fileversion}{tuda-ci size adjustments for a5paper}
\cs_set:Nn \TUDa_setup_title_sizes: {
\cs_set:Nn \TUDa_title_fontsize: {{22pt}{28pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
index 96c2a3c563..d1d928d5cc 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
@@ -1,4 +1,4 @@
-%% This is file `tuda-pgfplots.sty' version 2.10 (2020/04/25),
+%% This is file `tuda-pgfplots.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
% Special thanks to: Sebastian Schöps Institut Theorie Elektromagnetischer Felder (TEMF), TU Darmstadt
% The original version of this file has been inspired by the colorscheme in the Metropolis beamer theme by Matthias Vogelgesang https://github.com/matze/mtheme
\ProvidesPackage{tuda-pgfplots}[\filedate\space\fileversion\space tuda-ci pgfplots color schemes]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
index b5c4927730..32a4d6b633 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
@@ -1,4 +1,4 @@
-%% This is file `tudabeamer.cls' version 2.10 (2020/04/25),
+%% This is file `tudabeamer.cls' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
[\filedate\space\fileversion\space]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.def b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
index 70ea98ff46..3fa655b7b1 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.def
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.def' version 2.10 (2020/04/25),
+%% This is file `tudacolors.def' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\ProvidesFile{tudacolors.def}
[\filedate\space\fileversion\space Color definitions for tuda-ci]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
index 317f62acf8..2b604e9d56 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.sty' version 2.10 (2020/04/25),
+%% This is file `tudacolors.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
index a6398ec3b4..6c27255e47 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaexercise.cls' version 2.10 (2020/04/25),
+%% This is file `tudaexercise.cls' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudaexercise}
@@ -131,6 +131,8 @@
}
}
+\bool_new:N \g_TUDa_smalltitle_bool
+
\keys_define:nn {TUDa/pub} {
color .code:n = {\PassOptionsToPackage{color=#1}{tudacolors}},
accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
@@ -171,16 +173,21 @@
paper .initial:n = a4,
logofile .tl_gset:N = \g_TUDa_logofile_tl,
logofile .initial:n = tuda_logo,
- solution .meta:nn = {TUDa/exercise}{solution=#1},
- compat .meta:nn = {TUDa/exercise}{compat=#1},
- compatibility .meta:nn = {TUDa/exercise}{compat=#1},
- compatibility .default:n = true,
- headontitle .bool_gset:N = \g_TUDa_headontitle_bool,
- headontitle .initial:n = false,
- headontitle .default:n =true,
- colorback .bool_gset:N = \g_TUDa_colorback_bool,
- colorback .default:n = true,
- colorback .initial:n = true,
+ solution .meta:nn = {TUDa/exercise}{solution=#1},
+ compat .meta:nn = {TUDa/exercise}{compat=#1},
+ compatibility .meta:nn = {TUDa/exercise}{compat=#1},
+ compatibility .default:n = true,
+ headontitle .bool_gset:N = \g_TUDa_headontitle_bool,
+ headontitle .initial:n = false,
+ headontitle .default:n =true,
+ colorback .bool_gset:N = \g_TUDa_colorback_bool,
+ colorback .default:n = true,
+ colorback .initial:n = true,
+ title .choice:,
+ title / default .meta:n = {title=large},
+ title / large .code:n = \bool_gset_false:N \g_TUDa_smalltitle_bool,
+ title / small .code:n = \bool_gset_true:N \g_TUDa_smalltitle_bool,
+ title .initial:n = default,
}
@@ -279,15 +286,6 @@
}
}
-%TODO pubched
-%%punched
-%\dim_gset:Nn \g_TUDa_outerMargin_dim {15mm}
-%\dim_gset:Nn \g_TUDa_innerMargin_dim {20mm}
-%\if@twoside
-%\else
-%\dim_gset_eq:NN \g_TUDa_innerMargin_dim \g_TUDa_outerMargin_dim
-%\fi
-
\dim_new:N \g_TUDa_columnSep_dim
\dim_gset:Nn \g_TUDa_columnSep_dim {10pt}
@@ -519,10 +517,9 @@
\nointerlineskip
\raisebox{\dim_eval:n {
-.5\c_TUDa_logoheight_dim
- }}[0pt][.5\c_TUDa_logoheight_dim]{
+ }}[0pt][\dim_eval:n {\bool_if:NTF \g_TUDa_smalltitle_bool {.25} {.5}\c_TUDa_logoheight_dim}]{
\bool_if:NT \g_TUDa_colorback_bool {\color{accentcolor}\rule{\linewidth}{.5\c_TUDa_logoheight_dim}}
-
- }
+ }
\par\nointerlineskip
\begingroup
\setlength{\fboxsep}{\z@}
@@ -534,7 +531,7 @@
\bool_if:NT \g_TUDa_colorback_bool {\color{textonaccentcolor}}
\tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}}
\leavevmode\usekomafont{title}%
- {\usekomafont{title}{\huge \@title \par}}%
+ {\usekomafont{title}\bool_if:NTF \g_TUDa_smalltitle_bool {\LARGE} {\huge} {\@title\par}}%
\vskip 1em
\bool_if:NF \g_TUDa_ex_compatibility_bool
{
@@ -546,10 +543,20 @@
\vskip .5em
\bool_if:NTF \g_TUDa_colorback_bool {\end{addmargin}} {\par}
\end{minipage}}
- \hfill\raisebox{\dim_eval:n {\bool_if:NTF \g_TUDa_colorback_bool
+ \tl_if_empty:NF \g_TUDa_logofile_tl {
+ \hfill\raisebox{\dim_eval:n {
+ \bool_if:NTF \g_TUDa_colorback_bool
{-\height}
{-.9\c_TUDa_logoheight_dim}
- }}[0pt][\dim_eval:n {\bool_if:NTF \g_TUDa_colorback_bool {1.5}{1.3}\c_TUDa_logoheight_dim}]{\makebox[2.2\c_TUDa_logoheight_dim][l]{\includegraphics[height=\c_TUDa_logoheight_dim]{\g_TUDa_logofile_tl}}}
+ }}
+ [0pt]
+ [\dim_eval:n {
+ \bool_if:NTF \g_TUDa_smalltitle_bool
+ {\bool_if:NTF \g_TUDa_colorback_bool {1.15}{1}}
+ {\bool_if:NTF \g_TUDa_colorback_bool {1.5}{1.3}
+ }\c_TUDa_logoheight_dim}]
+ {\makebox[2.2\c_TUDa_logoheight_dim][l]{\includegraphics[height=\c_TUDa_logoheight_dim]{\g_TUDa_logofile_tl}}}
+ }
\par\medskip
}}
\par
diff --git a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
index 8dd0f93dbe..cf9ec3e5d9 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
@@ -1,4 +1,4 @@
-%% This is file `tudafonts.sty' version 2.10 (2020/04/25),
+%% This is file `tudafonts.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tudafonts}
[\filedate\space\fileversion\space
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
index dfa62f4e83..ad49fdd38d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaleaflet.cls' version 2.10 (2020/04/25),
+%% This is file `tudaleaflet.cls' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\def\filedate{2020/02/02}
\def\fileversion{}
\NeedsTeXFormat{LaTeX2e}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
index 48f31539bb..692b271239 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaletter.cls' version 2.10 (2020/04/25),
+%% This is file `tudaletter.cls' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudaletter}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
index 567f70bb40..6c58267307 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudalettersize10pt.clo' version 2.10 (2020/04/25),
+%% This is file `tudalettersize10pt.clo' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
%% This is file `tudalettersize10pt.clo' version 1.0 (2018/12/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
index 3b8b849b4d..403abef8e7 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaposter.cls' version 2.10 (2020/04/25),
+%% This is file `tudaposter.cls' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudapub.cls b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
index de7e72237b..700fbd0c6a 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudapub.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
@@ -1,4 +1,4 @@
-%% This is file `tudapub.cls' version 2.10 (2020/04/25),
+%% This is file `tudapub.cls' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudapub}
@@ -288,15 +288,6 @@
}
}
-%TODO pubched
-%%punched
-%\dim_gset:Nn \g_TUDa_outerMargin_dim {15mm}
-%\dim_gset:Nn \g_TUDa_innerMargin_dim {20mm}
-%\if@twoside
-%\else
-%\dim_gset_eq:NN \g_TUDa_innerMargin_dim \g_TUDa_outerMargin_dim
-%\fi
-
\dim_new:N \g_TUDa_columnSep_dim
\dim_gset:Nn \g_TUDa_columnSep_dim {10pt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudarules.sty b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
index 2b7ec409ac..57b31b919d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudarules.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
@@ -1,4 +1,4 @@
-%% This is file `tudarules.sty' version 2.10 (2020/04/25),
+%% This is file `tudarules.sty' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
index 4d8a594e74..e5c121fbec 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudasciposter.cls' version 2.10 (2020/04/25),
+%% This is file `tudasciposter.cls' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
index 6a1558dc29..32653895d5 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudasize9pt.clo' version 2.10 (2020/04/25),
+%% This is file `tudasize9pt.clo' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
%% This is file `tudasize9pt.clo' version 1.0 (2018/12/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
diff --git a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
index d4024eb214..8cb5f2209c 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudathesis.cfg' version 2.10 (2020/04/25),
+%% This is file `tudathesis.cfg' version 2.11 (2020/06/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.10}
-\def\filedate{2020/04/25}
+\def\fileversion{2.11}
+\def\filedate{2020/06/12}
\RequirePackage{expl3}
\ProvidesExplFile{tudathesis.cfg}
{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Coporate Design (tuda-ci)}
@@ -119,6 +119,7 @@
\newcommand*\TUDa@box_department {\cs_if_exist_use:NF \departmentfullname {\TUDa@department}}
\newcommand*\TUDa@in_department {}
+\providecommand*{\TUDa@thesisStatus}{}
\keys_define:nn {TUDa/thesis} {
dr .choice:,
@@ -136,13 +137,13 @@
type/pp .code:n = {\def\TUDa@thesisType{Project-Proposal}\clist_gset:Nn \g_TUDa_Required_title_data_clist {title, author, date, department}\bool_gset_false:N \g_TUDa_dr_bool},
type/msc .meta:n = {type=master},
type/master .code:n = \TUDa_declare_caption:Nnn \TUDa@thesisType{Masterarbeit}{master~ thesis} \clist_gset:Nn \g_TUDa_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_TUDa_dr_bool,
- type/dr .code:n = \TUDa_declare_caption:Nnn \TUDa@thesisType{Dissertation}{doctoral~ thesis}\TUDa_declare_caption:Nnn\TUDa@thesisStatus{vorgelegte}{}\clist_gset:Nn \g_TUDa_Required_title_data_clist {title, author, submissiondate , birthplace, department, reviewer}\bool_gset_true:N \g_TUDa_dr_bool,
- type/drfinal .code:n = \TUDa_declare_caption:Nnn \TUDa@thesisType {Dissertation}{doctoral~ thesis}\TUDa_declare_caption:Nnn\TUDa@thesisStatus{genehmigte}{}\clist_gset:Nn \g_TUDa_Required_title_data_clist {title, author, submissiondate,examdate, birthplace, department, reviewer}\bool_gset_true:N \g_TUDa_dr_bool,
+ type/dr .code:n = \TUDa_declare_caption:Nnn \TUDa@thesisType{Dissertation}{doctoral~ thesis}\TUDa_declare_caption:Nnn\TUDa@thesisStatus{vorgelegte}{submitted}\clist_gset:Nn \g_TUDa_Required_title_data_clist {title, author, submissiondate , birthplace, department, reviewer}\bool_gset_true:N \g_TUDa_dr_bool,
+ type/drfinal .code:n = \TUDa_declare_caption:Nnn \TUDa@thesisType {Dissertation}{doctoral~ thesis}\TUDa_declare_caption:Nnn\TUDa@thesisStatus{genehmigte}{accepted}\clist_gset:Nn \g_TUDa_Required_title_data_clist {title, author, submissiondate,examdate, birthplace, department, reviewer}\bool_gset_true:N \g_TUDa_dr_bool,
type/unknown .code:n = \def\TUDa@thesisType{#1}\clist_gset:Nn \g_TUDa_Required_title_data_clist {}\bool_gset_false:N \g_TUDa_dr_bool,
ignore-missing-data .bool_gset:N = \g_TUDa_missing_data_warning_bool,
ignore-missing-data .initial:n = false,
department .tl_gset:N = \g_TUDa_department_choice_tl,
-% study .tl_gset:N = \g_TUDa_field_of_study_choice_tl,
+ status .code:n = \tl_if_head_is_group:nTF {#1} {\TUDa_declare_caption:Nnn\TUDa@thesisStatus #1 {}} {\TUDa_declare_caption:Nnn\TUDa@thesisStatus{#1}{#1}},
fieldofstudy .meta:n ={department = #1},
ignore-title-language .bool_gset:N = \g_TUDa_ignore_title_language_bool,
ignore-title-language .initial:n ={false},
@@ -313,8 +314,7 @@
}
\gdef\@subject{
- \cs_if_exist:NT \TUDa@thesisStatus {\TUDa@thesisStatus{}~ }
- \text_titlecase:n{\TUDa@thesisType}~
+ \text_titlecase_first:n{\tl_if_empty:NF \TUDa@thesisStatus {\TUDa@thesisStatus{}~}\TUDa@thesisType}~
\tl_if_empty:NF \TUDa@in_department {\TUDa@in_department{}~}
\seq_if_empty:NF \g_TUDa_author_seq {\TUDa@byname\nobreakspace\@author}
\tl_if_empty:NF \TUDa@birthplace {\space\TUDa@fromname\space\TUDa@birthplace}
diff --git a/macros/xetex/latex/quran/README b/macros/xetex/latex/quran/README
index 5fdc2a77d8..10bf2560b3 100644
--- a/macros/xetex/latex/quran/README
+++ b/macros/xetex/latex/quran/README
@@ -1,6 +1,6 @@
_____________________
The quran package
-v1.63
+v1.7a
The package is prepared for typesetting the holy Quran.
This work provides several macros for typesetting the whole or
@@ -8,7 +8,7 @@ any parts of the holy Quran based on its popular divisions.
For more information, please see the documentation.
-Current version release date: 2020/03/14
+Current version release date: 2020/06/12
___________________
Seiied-Mohammad-Javad Razvian
javadr@gmail.com
diff --git a/macros/xetex/latex/quran/doc/quran-doc.pdf b/macros/xetex/latex/quran/doc/quran-doc.pdf
index adbc70245e..0d4e50e6e3 100644
--- a/macros/xetex/latex/quran/doc/quran-doc.pdf
+++ b/macros/xetex/latex/quran/doc/quran-doc.pdf
Binary files differ
diff --git a/macros/xetex/latex/quran/doc/quran-doc.tex b/macros/xetex/latex/quran/doc/quran-doc.tex
index 585c0ba6b5..11c342bb76 100644
--- a/macros/xetex/latex/quran/doc/quran-doc.tex
+++ b/macros/xetex/latex/quran/doc/quran-doc.tex
@@ -129,7 +129,7 @@ The \xpackage{quran} package\footnote{This work has been inspired by \xpackage{l
has been prepared for typesetting the holy Quran.
It provides several macros for typesetting not only the whole or any parts of the holy Quran based on its popular divisions,
but also any chunks of an ayah.
-Three translations of the holy Quran in German, English, and Persian in addition to its transliteration are also supported.%
+Four translations of the holy Quran in German, English, French, and Persian in addition to its transliteration are also supported.%
\footnote{There are two packages, \xpackage{quran-de} and \xpackage{quran-ur}, in companion with, which provide several other translations in Deutsch and Urdu.}
Please, report any issues including bugs, typos in the documentation
or feature requests on \url{https://github.com/javadr/quran/issues}.
@@ -567,17 +567,17 @@ the following macros are added by this option:
\medskip
-By version 1.4, the package can typeset some translations of the holy Quran in other languages.
+The package can typeset some translations of the holy Quran in other languages.
These options were added because of some requests from users who had required the translation of the holy Quran in their languages.
-Loading \xmgpar{transde}, \xmgpar{transen}, or \xmgpar{transfa} brings some other macros for typesetting the translation in
-German, English, and Persian, respectively.
+Loading \xmgpar{transde}, \xmgpar{transen}, \xmgpar{transfr}, or \xmgpar{transfa} brings some other macros for typesetting the translation in
+German, English, French, and Persian, respectively.
By loading each of these options, all macros defined in section~\ref{sec:qurantypesetting} will have
-a ``\texttt{de}"/``\texttt{en}"/``\texttt{fa}" version. In other words,
+a ``\texttt{de}"/``\texttt{en}"/``\texttt{fr}"/``\texttt{fa}" version. In other words,
these options will add the following macros:
-\begin{multicols}{3}
+\begin{multicols}{2}
\texttt{transde} option:
\begin{itemize}
\item \cs{quransurahde}
@@ -604,6 +604,19 @@ these options will add the following macros:
\item \cs{qurantexten}
\end{itemize}
+\texttt{transfr} option:
+\begin{itemize}
+ \item \cs{quransurahfr}
+ \item \cs{quranayahfr}
+ \item \cs{quranpagefr}
+ \item \cs{quranjuzfr}
+ \item \cs{quranhizbfr}
+ \item \cs{quranquarterfr}
+ \item \cs{quranrukufr}
+ \item \cs{quranmanzilfr}
+ \item \cs{qurantextfr}
+\end{itemize}
+
\texttt{transfa} option:
\begin{itemize}
\item \cs{quransurahfa}
@@ -616,22 +629,30 @@ these options will add the following macros:
\item \cs{quranmanzilfa}
\item \cs{qurantextfa}
\end{itemize}
+
\end{multicols}
- All translations are from \url{tanzil.net}. For Germen, English, and Persian languages the ``Abu Rida Muhammad ibn Ahmad ibn Rassoul", ``Ahmed Ali", ``Mohammad Mahdi Fooladvand" have been chosen respectively, by suggestion of the package's users.
+ All translations are from \url{tanzil.net}. For Germen, English, French, and Persian languages the ``Abu Rida Muhammad ibn Ahmad ibn Rassoul", ``Ahmed Ali", ``Muhammad Hamidullah", and ``Mohammad Mahdi Fooladvand" have been chosen respectively, by suggestion of the package's users.
\medskip
The \xmgpar{trans} option has been prepared to simplify the usage of mutiple translations simultaneously. This option accepts
- any permutation of ``\texttt{lt}", ``\texttt{de}", ``\texttt{en}", and ``\texttt{fa}", e.g. this document is loaded
- with ``\xmgpar{trans=\{lt, de, en, fa\}}" option with some others.
+ any permutation of ``\texttt{lt}", ``\texttt{de}", ``\texttt{en}", ``\texttt{fr}", and ``\texttt{fa}", e.g.
+ ``\xoption{trans=\{de, en, lt\}}".
- \centerline{\mx{quransurahfa[108]}{\quransurahfa[108]}
- \hfill
- \mx{quransurah[108]}{\quransurah[108]}}
+ \marginpar{\dbend} There is no way to load all of the translations together. It is out of \TeX{} memory capacity. For more details, see \emph{Why do I get the “! TeX capacity exceeded” error?} on page \pageref{sec:texcapacity}.
+
+\protected\def\frkothar{Au nom d'Allah, le Tout Miséricordieux, le Très Miséricordieux.\par Nous t'avons certes, accordé l'Abondance. (1)\par Accomplis la Salât pour ton Seigneur et sacrifie. (2)\par Celui qui te hait sera certes, sans postérité. (3)}
+
+ \centerline{\mxf{quransurah*[108]}{\quransurah*[108]}}
+
\centerline{\mx{quransurahen[108]}{\setLTR\small\quransurahen[108]}
\hfill
- \mx{quransurahde[108]}{\setLTR\small\quransurahde[108]}}
+ \mx{quransurahde[108]}{\setLTR\small\quransurahde[108]}}
+
+ \centerline{\mx{quransurahfr[108]}{\setLTR\quran\small\frkothar}
+ \hfill
+ \mx{quransurahfa[108]}{\quransurahfa[108]}}
\section{Frequently Asked Questions}
\subsection{What is the best font for typesetting quran text?}
@@ -788,6 +809,7 @@ fontspec{,} and bidi"]
{\quransurah* »{\ToggleAyahNumber\quransurah*}« \quransurah*}
\subsection{Why do I get the ``\tt{! TeX capacity exceeded}'' error?}
+ \label{sec:texcapacity}
Invention of \TeX{} dates back to many years ago. Although we have great hardware nowadays,
\TeX{} engine has been designed so that to use a very small amount of computer hardware
@@ -1007,7 +1029,17 @@ fontspec{,} and bidi"]
\item Pause marks (waqf symbols) have been removed from \cs{quranayah} and \cs{qurantext}
whenever \oarg{chunk range} optional parameter is used.
\end{Version}
-
+
+ \begin{Version}{2020/06/10 v1.7}
+ \item French translation added and ``fr'' version of macros defined for it. New option, \xoption{transfr}, is defined for this translation.
+ \item There is also a new value `\xoption{fr}' for \xoption{trans} option.
+ \item Documentation updates.
+ \end{Version}
+
+ \begin{Version}{2020/06/12 v1.7a}
+ \item Some of missed files (the French part) uploaded to CTAN.
+ \end{Version}
+
\def\cb{{\tiny$\bullet$\space}}
\def\mrule{\leaders\vrule height 2.5pt depth -1.5pt \hfill}
\begin{small}
@@ -1074,6 +1106,10 @@ fontspec{,} and bidi"]
2020/03/09 & 1.61 & \cb Minor update in \cs{quranayah} and \cs{qurantext} \\
2020/03/12 & 1.62 & \cb License update to LPPL Version 1.3c \\
2020/03/14 & 1.63 & \cb Removing pause marks with \meta{chunk range} optional parameter\\
+ 2020/06/10 & 1.7 & \cb French translation available via
+ \xoption{transfr} option, or
+ \xoption{trans} option with ‘\xoption{fr}’ value\\
+ 2020/06/12 & 1.7a & \cb CTAN upload correction. \\
\bottomrule
\end{longtable}
\end{small}
diff --git a/macros/xetex/latex/quran/doc/quran-test.pdf b/macros/xetex/latex/quran/doc/quran-test.pdf
index 3f045733d9..0e95ceecdd 100644
--- a/macros/xetex/latex/quran/doc/quran-test.pdf
+++ b/macros/xetex/latex/quran/doc/quran-test.pdf
Binary files differ
diff --git a/macros/xetex/latex/quran/doc/quran-test1.pdf b/macros/xetex/latex/quran/doc/quran-test1.pdf
index 06a32b8da0..175b03ad31 100644
--- a/macros/xetex/latex/quran/doc/quran-test1.pdf
+++ b/macros/xetex/latex/quran/doc/quran-test1.pdf
Binary files differ
diff --git a/macros/xetex/latex/quran/doc/quran-test2.pdf b/macros/xetex/latex/quran/doc/quran-test2.pdf
index ea134ee1ad..cbb9441af3 100644
--- a/macros/xetex/latex/quran/doc/quran-test2.pdf
+++ b/macros/xetex/latex/quran/doc/quran-test2.pdf
Binary files differ
diff --git a/macros/xetex/latex/quran/tex/quran-transfr.def b/macros/xetex/latex/quran/tex/quran-transfr.def
new file mode 100644
index 0000000000..4e970e3429
--- /dev/null
+++ b/macros/xetex/latex/quran/tex/quran-transfr.def
@@ -0,0 +1,137 @@
+%% This is file `quran-transfr.def',
+%%
+%% Copyright © 2015-2020
+%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% This work is “author-maintained” (as per LPPL maintenance status).
+%%
+%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
+%%
+%% to one who has devoted his life to Quran
+%%
+\let\qt@doqt@orig\qt@doqt%
+\let\ToggleBasmalah@orig\ToggleBasmalah%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\basmalahfr{Au nom d'Allah, le Tout Miséricordieux, le Très Miséricordieux.\qt@par\space}%
+\bidi@newrobustcmd\ToggleBasmalahfr{%
+ \ifx\basmalahfr\relax%
+ \def\basmalahfr{Au nom d'Allah, le Tout Miséricordieux, le Très Miséricordieux.\qt@par\space}%
+ \else%
+ \let\basmalahfr\relax%
+ \fi%
+}%
+\def\Basmalahfr{%
+ \begingroup%
+ \let\par\relax%
+ \def\qt@no##1{\relax}%
+ \quranayahfr[1][1][1]%
+ \endgroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand\qt@dofr{ o o }{%
+ \addtocounter{qt@count}{1}%
+ \def\@qtexp{}%
+ \loop%
+ \global\xdef\@qtexp{\@qtexp\csname qurantrans@fr@\roman{qt@count}\endcsname\ifnum\value{qt@count}=\qt@max\else\space\fi\qt@par}%
+ \ifnum\value{qt@count}<\qt@max\relax%
+ \addtocounter{qt@count}{1}%
+ \repeat%
+ \IfNoValueTF{#1}%
+ {\@qtexp}%true
+ {\qt@WordCount=0\relax\c@qt@start=\numexpr#1-1\relax%
+ \readlist*\qt@words{\@qtexp}%
+ \IfNoValueTF{#2}%
+ {\c@qt@end=\numexpr\qt@wordslen+1\relax}{\c@qt@end=\numexpr#2+1\relax}%
+ \foreachitem\qt@word\in\qt@words{%
+ \ifnum\qt@wordcnt>\c@qt@start\ifnum\qt@wordcnt<\c@qt@end\qt@word\ifnum\qt@wordcnt=\numexpr\c@qt@end-1\relax\else\xspace\fi\fi\fi%
+ }%
+ \qt@showitems{\ifdefined\arabicfont\arabicfont\fi\showitems\qt@words}%
+ }%false
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\qurantextfr}{ s O{\qt@default} o t{+} }{%
+ \IfBooleanTF{#4}{\def\qt@showitems##1{\footnote{##1}}}{\def\qt@showitems##1{\relax}}%
+ \let\qt@doqt\qt@dofr%
+ \IfBooleanTF{#1}%
+ {\IfBooleanTF{#4}{\qurantext*[#2][#3]+}{\qurantext*[#2][#3]}}%
+ {\IfBooleanTF{#4}{\qurantext[#2][#3]+}{\qurantext[#2][#3]}}%
+ \let\qt@doqt\qt@doqt@orig%
+ \def\qt@showitems##1{\relax}%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand\quransurahfr{ s O{\qt@surah@default} }{%
+ \let\qt@doqt\qt@dofr%
+ \IfBooleanTF{#1}%
+ {\quransurah*[#2]}%
+ {\quransurah[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranayahfr}{ s o o o t{+} }{%
+ \let\qt@doqt\qt@dofr%
+ \let\ToggleBasmalah\ToggleBasmalahfr%
+ \IfBooleanTF{#1}%
+ {\IfBooleanTF{#5}{\quranayah*[#2][#3][#4]+}{\quranayah*[#2][#3][#4]}}%
+ {\IfBooleanTF{#5}{\quranayah[#2][#3][#4]+}{\quranayah[#2][#3][#4]}}%
+ \let\qt@doqt\qt@doqt@orig%
+ \let\ToggleBasmalah\ToggleBasmalah@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranjuzfr}{ s o }{%
+ \let\qt@doqt\qt@dofr%
+ \IfBooleanTF{#1}%
+ {\quranjuz*[#2]}%
+ {\quranjuz[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranpagefr}{ s o }{%
+ \let\qt@doqt\qt@dofr%
+ \IfBooleanTF{#1}%
+ {\quranpage*[#2]}%
+ {\quranpage[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranquarterfr}{ s o }{%
+ \let\qt@doqt\qt@dofr%
+ \IfBooleanTF{#1}%
+ {\quranquarter*[#2]}%
+ {\quranquarter[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranrukufr}{ s o }{%
+ \let\qt@doqt\qt@dofr%
+ \IfBooleanTF{#1}%
+ {\quranruku*[#2]}%
+ {\quranruku[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranhizbfr}{ s o }{%
+ \let\qt@doqt\qt@dofr%
+ \IfBooleanTF{#1}%
+ {\quranhizb*[#2]}%
+ {\quranhizb[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranmanzilfr}{ s o }{%
+ \let\qt@doqt\qt@dofr%
+ \IfBooleanTF{#1}%
+ {\quranmanzil*[#2]}%
+ {\quranmanzil[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/xetex/latex/quran/tex/quran.sty b/macros/xetex/latex/quran/tex/quran.sty
index ecc1a85c73..baad0376d4 100644
--- a/macros/xetex/latex/quran/tex/quran.sty
+++ b/macros/xetex/latex/quran/tex/quran.sty
@@ -20,8 +20,8 @@
%% to one who has devoted his life to Quran
%%
\NeedsTeXFormat{LaTeX2e}
-\def\qurandate{2020/03/14}
-\def\quranversion{1.63}
+\def\qurandate{2020/06/12}
+\def\quranversion{1.7a}
\ProvidesPackage{quran}[\qurandate\space v\quranversion^^JAn easy way to typeset the whole or any parts of the holy Quran]
\RequirePackage{ifxetex}
\RequirePackage{biditools}
@@ -39,6 +39,7 @@
\newif\ifqt@transen%
\newif\ifqt@transde%
\newif\ifqt@transfa%
+\newif\ifqt@transfr%
\newif\ifqt@wordwise
\def\qt@par{\par}%
\def\basmalah{بِسمِ اللَّهِ الرَّحمٰنِ الرَّحيمِ\qt@par\space}%
@@ -60,11 +61,13 @@
\DeclareOptionX{transen}{\qt@transentrue}
\DeclareOptionX{transde}{\qt@transdetrue}
\DeclareOptionX{transfa}{\qt@transfatrue}
+\DeclareOptionX{transfr}{\qt@transfrtrue}
\DeclareOptionX{trans}[lt]{%
\IfSubStr{#1}{lt}{\qt@translttrue}{}%
\IfSubStr{#1}{de}{\qt@transdetrue}{}%
\IfSubStr{#1}{en}{\qt@transentrue}{}%
\IfSubStr{#1}{fa}{\qt@transfatrue}{}%
+ \IfSubStr{#1}{fr}{\qt@transfrtrue}{}%
}%
\DeclareOptionX{wordwise}{\qt@wordwisetrue}
\DeclareOptionX*{\PackageWarning{quran}{Unknown option ‘\CurrentOption’}}
@@ -551,4 +554,8 @@
\input{qurantext-fa.translation.def}%
\input{quran-transfa.def}%
\fi%
+\ifqt@transfr%
+ \input{qurantext-fr.translation.def}%
+ \input{quran-transfr.def}%
+\fi%
%% End of file `quran.sty'.
diff --git a/macros/xetex/latex/quran/tex/qurantext-fr.translation.def b/macros/xetex/latex/quran/tex/qurantext-fr.translation.def
new file mode 100644
index 0000000000..19a86ebee7
--- /dev/null
+++ b/macros/xetex/latex/quran/tex/qurantext-fr.translation.def
@@ -0,0 +1,6257 @@
+%% This is file `qurantext-fr.translation.def',
+%%
+%% Copyright © 2015-2020
+%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% This work is “author-maintained” (as per LPPL maintenance status).
+%%
+%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
+%%
+%% to one who has devoted his life to Quran
+%%
+\qt@newcmd\qurantrans@fr@i{Au nom d'Allah, le Tout Miséricordieux, le Très Miséricordieux.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@ii{Louange à Allah, Seigneur de l'univers.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@iii{Le Tout Miséricordieux, le Très Miséricordieux,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@iv{Maître du Jour de la rétribution.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@v{C'est Toi [Seul] que nous adorons, et c'est Toi [Seul] dont nous implorons secours.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@vi{Guide-nous dans le droit chemin,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@vii{le chemin de ceux que Tu as comblés de faveurs, non pas de ceux qui ont encouru Ta colère, ni des égarés.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@viii{\basmalahfr Alif, Lâm, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@ix{C'est le Livre au sujet duquel il n'y a aucun doute, c'est un guide pour les pieux,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@x{qui croient à l'invisible et accomplissent la Salât et dépensent (dans l'obéissance à Allah), de ce que Nous leur avons attribué,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@xi{Ceux qui croient à ce qui t'a été descendu (révélé) et à ce qui a été descendu avant toi et qui croient fermement à la vie future.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@xii{Ceux-là sont sur le bon chemin de leur Seigneur, et ce sont eux qui réussissent (dans cette vie et dans la vie future).\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@xiii{[Mais] certes les infidèles que tu les avertisses ou que tu ne les avertisses pas, ils ne croient pas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@xiv{Allah a scellé leurs cœurs et leurs oreilles; et un voile épais leur couvre la vue; et pour eux il y aura un grand châtiment.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@xv{Parmi les gens, il y a ceux qui disent: «Nous croyons en Allah et au Jour dernier!» tandis qu'en fait, ils n'y croient pas.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@xvi{Ils cherchent à tromper Allah et les croyants; mais ils ne trompent qu'eux-mêmes, et ils ne s'en rendent pas compte.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@xvii{Il y a dans leurs cœurs une maladie (de doute et d'hypocrisie), et Allah laisse croître leur maladie. Ils auront un châtiment douloureux, pour avoir menti.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@xviii{Et quand on leur dit: «Ne semez pas la corruption sur la terre», ils disent: «Au contraire nous ne sommes que des réformateurs!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@xix{Certes, ce sont eux les véritables corrupteurs, mais ils ne s'en rendent pas compte.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@xx{Et quand on leur dit: «Croyez comme les gens ont cru», ils disent: «Croirons-nous comme ont cru les faibles d'esprit?» Certes, ce sont eux les véritables faibles d'esprit, mais ils ne le savent pas.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@xxi{Quand ils rencontrent ceux qui ont cru, ils disent: «Nous croyons» mais quand ils se trouvent seuls avec leurs diables, ils disent: «Nous sommes avec vous; en effet nous ne faisions que nous moquer (d'eux)».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@xxii{C'est Allah qui Se moque d'eux et les endurcira dans leur révolte et prolongera sans fin leur égarement.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@xxiii{Ce sont eux qui ont troqué le droit chemin contre l'égarement. Eh bien, leur négoce n'a point profité. Et ils ne sont pas sur la bonne voie.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@xxiv{Ils ressemblent à quelqu'un qui a allumé un feu; puis quand le feu a illuminé tout à l'entour, Allah a fait disparaître leur lumière et les a abandonnés dans les ténèbres où ils ne voient plus rien.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@xxv{Sourds, muets, aveugles, ils ne peuvent donc pas revenir (de leur égarement).\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@xxvi{(On peut encore les comparer à ces gens qui,) au moment où les nuées éclatent en pluies, chargées de ténèbres, de tonnerre et éclairs, se mettent les doigts dans les oreilles, terrorisés par le fracas de la foudre et craignant la mort; et Allah encercle de tous côtés les infidèles.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@xxvii{L'éclair presque leur emporte la vue: chaque fois qu'il leur donne de la lumière, ils avancent; mais dès qu'il fait obscur, ils s'arrêtent. Si Allah le voulait Il leur enlèverait certes l'ouïe et la vue, car Allah a pouvoir sur toute chose.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@xxviii{O hommes! Adorez votre Seigneur, qui vous a créés vous et ceux qui vous ont précédés. Ainsi atteindriez-vous à la piété.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@xxix{C'est Lui qui vous a fait la terre pour lit, et le ciel pour toit; qui précipite la pluie du ciel et par elle fait surgir toutes sortes de fruits pour vous nourrir, ne Lui cherchez donc pas des égaux, alors que vous savez (tout cela).\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@xxx{Si vous avez un doute sur ce que Nous avons révélé à Notre Serviteur, tâchez donc de produire une sourate semblable et appelez vos témoins, (les idoles) que vous adorez en dehors d'Allah, si vous êtes véridiques.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@xxxi{Si vous n'y parvenez pas et, à coup sûr, vous n'y parviendrez jamais, parez-vous donc contre le feu qu'alimenteront les hommes et les pierres, lequel est réservé aux infidèles.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@xxxii{Annonce à ceux qui croient et pratiquent de bonnes œuvres qu'ils auront pour demeures des jardins sous lesquels coulent les ruisseaux; chaque fois qu'ils seront gratifiés d'un fruit des jardins ils diront: «C'est bien là ce qui nous avait été servi auparavant». Or c'est quelque chose de semblable (seulement dans la forme); ils auront là des épouses pures, et là ils demeureront éternellement.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@xxxiii{Certes, Allah ne se gêne point de citer en exemple n'importe quoi: un moustique ou quoi que ce soit au-dessus; quant aux croyants, ils savent bien qu'il s'agit de la vérité venant de la part de leur Seigneur; quant aux infidèles, ils se demandent «Qu'a voulu dire Allah par un tel exemple?» Par cela, nombreux sont ceux qu'Il égare et nombreux sont ceux qu'Il guide; mais Il n'égare par cela que les pervers,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@xxxiv{qui rompent le pacte qu'ils avaient fermement conclu avec Allah, coupent ce qu'Allah a ordonné d'unir, et sèment la corruption sur la terre. Ceux-là sont les vrais perdants.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@xxxv{Comment pouvez-vous renier Allah alors qu'Il vous a donné la vie, quand vous en étiez privés? Puis Il vous fera mourir; puis Il vous fera revivre et enfin c'est à Lui que vous retournerez.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@xxxvi{C'est Lui qui a créé pour vous tout ce qui est sur la terre, puis Il a orienté Sa volonté vers le ciel et en fit sept cieux. Et Il est Omniscient.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@xxxvii{Lorsque Ton Seigneur confia aux Anges: «Je vais établir sur la terre un vicaire «Khalifa». Ils dirent: «Vas-Tu y désigner un qui y mettra le désordre et répandra le sang, quand nous sommes là à Te sanctifier et à Te glorifier?» - Il dit: «En vérité, Je sais ce que vous ne savez pas!».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@xxxviii{Et Il apprit à Adam tous les noms (de toutes choses), puis Il les présenta aux Anges et dit: «Informez-Moi des noms de ceux-là, si vous êtes véridiques!» (dans votre prétention que vous êtes plus méritants qu'Adam).\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@xxxix{- Ils dirent: «Gloire à Toi! Nous n'avons de savoir que ce que Tu nous a appris. Certes c'est Toi l'Omniscient, le Sage».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@xl{Il dit: «O Adam, informe-les de ces noms ;» Puis quand celui-ci les eut informés de ces noms, Allah dit: «Ne vous ai-Je pas dit que Je connais les mystères des cieux et de la terre, et que Je sais ce que vous divulguez et ce que vous cachez?»\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@xli{Et lorsque Nous demandâmes aux Anges de se prosterner devant Adam, ils se prosternèrent à l'exception d'Iblis qui refusa, s'enfla d'orgueil et fut parmi les infidèles.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@xlii{Et Nous dîmes: «O Adam, habite le Paradis toi et ton épouse, et nourrissez-vous-en de partout à votre guise; mais n'approchez pas de l'arbre que voici: sinon vous seriez du nombre des injustes».\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@xliii{Peu de temps après, Satan les fit glisser de là et les fit sortir du lieu où ils étaient. Et Nous dîmes: «Descendez (du Paradis); ennemis les uns des autres. Et pour vous il y aura une demeure sur la terre, et un usufruit pour un temps.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@xliv{Puis Adam reçut de son Seigneur des paroles, et Allah agréa son repentir car c'est Lui certes, le Repentant, le Miséricordieux.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@xlv{- Nous dîmes: «Descendez d'ici, vous tous! Toutes les fois que Je vous enverrai un guide, ceux qui [le] suivront n'auront rien à craindre et ne seront point affligés».\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@xlvi{Et ceux qui ne croient pas (à nos messagers) et traitent de mensonge Nos révélations, ceux-là sont les gens du Feu où ils demeureront éternellement.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@xlvii{O enfants d'Israël, rappelez-vous Mon bienfait dont Je vous ai comblés. Si vous tenez vos engagements vis-à-vis de Moi, Je tiendrai les miens. Et c'est Moi que vous devez redouter.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@xlviii{Et croyez à ce que J'ai fait descendre, en confirmation de ce qui était déjà avec vous; et ne soyez pas les premiers à le rejeter. Et n'échangez pas Mes révélations contre un vil prix. Et c'est Moi que vous devez craindre.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@xlix{Et ne mêlez pas le faux à la vérité. Ne cachez pas sciemment la vérité.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@l{Et accomplissez la Salât, et acquittez la Zakât, et inclinez-vous avec ceux qui s'inclinent.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@li{Commanderez-vous aux gens de faire le bien, et vous oubliez vous-mêmes de le faire, alors que vous récitez le Livre? Etes-vous donc dépourvus de raison?\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@lii{Et cherchez secours dans l'endurance et la salât: certes, la Salât est une lourde obligation, sauf pour les humbles,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@liii{qui ont la certitude de rencontrer leur Seigneur (après leur résurrection) et retourner à Lui seul.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@liv{O Enfants d'Israël, rappelez-vous Mon bienfait dont Je vous ai comblés, (Rappelez-vous) que Je vous ai préférés à tous les peuples (de l'époque).\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@lv{Et redoutez le jour où nulle âme ne suffira en quoi que ce soit à une autre; où l'on n'acceptera d'elle aucune intercession; et où on ne recevra d'elle aucune compensation. Et ils ne seront point secourus.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@lvi{Et [rappelez-vous] lorsque Nous vous avons délivrés des gens de Pharaon; qui vous infligeaient le pire châtiment: en égorgeant vos fils et épargnant vos femmes. C'était là une grande épreuve de la part de votre Seigneur.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@lvii{Et [rappelez-vous] lorsque Nous avons fendu la mer pour vous donner passage!... Nous vous avons donc délivrés, et noyé les gens de Pharaon, tandis que vous regardiez.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@lviii{Et [rappelez-vous] lorsque Nous donnâmes rendez-vous à Moïse pendant quarante nuits!... Puis en son absence vous avez pris le Veau pour idole alors que vous étiez injustes (à l'égard de vous-mêmes en adorant autre qu'Allah).\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@lix{Mais en dépit de cela Nous vous pardonnâmes, afin que vous reconnaissiez (Nos bienfaits à votre égard).\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@lx{Et [rappelez-vous] lorsque Nous avons donné à Moïse le Livre et le Discernement afin que vous soyez guidés.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@lxi{Et [rappelez-vous] lorsque Moïse dit à son peuple: «O mon peuple, certes vous vous êtes fait du tort à vous-mêmes en prenant le Veau pour idole. Revenez donc à votre Créateur; puis, tuez donc les coupables vous-mêmes: ce serait mieux pour vous, auprès de votre Créateur!»... C'est ainsi qu'Il agréa votre repentir; car c'est Lui, certes, le Repentant et le Miséricordieux!\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@lxii{Et [rappelez-vous] lorsque vous dites: «O Moïse, nous ne te croirons qu'après avoir vu Allah clairement»!... Alors la foudre vous saisit tandis que vous regardiez.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@lxiii{Puis Nous vous ressuscitâmes après votre mort afin que vous soyez reconnaissants.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@lxiv{Et Nous vous couvrîmes de l'ombre d'un nuage; et fîmes descendre sur vous la manne et les cailles: - «Mangez des délices que Nous vous avons attribués!» - Ce n'est pas à Nous qu'ils firent du tort, mais ils se firent tort à eux-mêmes.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@lxv{Et [rappelez-vous] lorsque Nous dîmes: «Entrez dans cette ville, et mangez-y à l'envie où il vous plaira; mais entrez par la porte en vous prosternant et demandez la «rémission» (de vos péchés); Nous vous pardonnerons vos fautes si vous faites cela et donnerons davantage de récompense pour les bienfaisants.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@lxvi{Mais, à ces paroles, les pervers en substituèrent d'autres, et pour les punir de leur fourberie Nous leur envoyâmes du ciel un châtiment avilissant.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@lxvii{Et [rappelez-vous] quand Moïse demanda de l'eau pour désaltérer son peuple, c'est alors que Nous dîmes: «Frappe le rocher avec ton bâton». Et tout d'un coup, douze sources en jaillirent, et certes, chaque tribu sut où s'abreuver! - «Mangez et buvez de ce qu'Allah vous accorde; et ne semez pas de troubles sur la terre comme des fauteurs de désordre».\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@lxviii{Et [rappelez-vous] quand vous dîtes: «O Moïse, nous ne pouvons plus tolérer une seule nourriture. Prie donc ton Seigneur pour qu'Il nous fasse sortir de la terre ce qu'elle fait pousser, de ses légumes, ses concombres, son ail (ou blé), ses lentilles et ses oignons!» - Il vous répondit: «Voulez-vous échanger le meilleur pour le moins bon? Descendez donc à n'importe quelle ville; vous y trouverez certainement ce que vous demandez!». L'avilissement et la misère s'abattirent sur eux; ils encoururent la colère d'Allah. Cela est parce qu'ils reniaient les révélations d'Allah, et qu'ils tuaient sans droit les prophètes. Cela parce qu'ils désobéissaient et transgressaient.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@lxix{Certes, ceux qui ont cru, ceux qui se sont judaïsés, les Nazaréens, et les sabéens, quiconque d'entre eux a cru en Allah au Jour dernier et accompli de bonnes œuvres, sera récompensé par son Seigneur; il n'éprouvera aucune crainte et il ne sera jamais affligé.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@lxx{(Et rappelez-vous) quand Nous avons contracté un engagement avec vous et brandi sur vous le Mont -: «Tenez ferme ce que Nous vous avons donné et souvenez-vous de ce qui s'y trouve afin que vous soyez pieux!»\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@lxxi{Puis vous vous en détournâtes après vos engagements, n'eût été donc la grâce d'Allah et Sa miséricorde, vous seriez certes parmi les perdants.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@lxxii{Vous avez certainement connu ceux des vôtres qui transgressèrent le Sabbat. Et bien Nous leur dîmes: «Soyez des singes abjects!»\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@lxxiii{Nous fîmes donc de cela un exemple pour les villes qui l'entouraient alors et une exhortation pour les pieux.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@lxxiv{(Et rappelez-vous) lorsque Moïse dit à son peuple: «Certes Allah vous ordonne d'immoler une vache». Ils dirent: «Nous prends-tu en moquerie?» «Qu'Allah me garde d'être du nombre des ignorants» dit-il.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@lxxv{- Ils dirent: «Demande pour nous à ton Seigneur qu'Il nous précise ce qu'elle doit être». - Il dit: «Certes Allah dit que c'est bien une vache, ni vieille ni vierge, d'un âge moyen, entre les deux. Faites donc ce qu'on vous commande».\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@lxxvi{- Ils dirent: «Demande donc pour nous à ton Seigneur qu'Il nous précise sa couleur». - Il dit: «Allah dit que c'est une vache jaune, de couleur vive et plaisante à voir».\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@lxxvii{- Ils dirent: «Demande pour nous à ton Seigneur qu'Il nous précise ce qu'elle est car pour nous, les vaches se confondent. Mais, nous y serions certainement bien guidés, si Allah le veut».\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@lxxviii{- Il dit: «Allah dit que c'est bien une vache qui n'a pas été asservie à labourer la terre ni à arroser le champ, indemne d'infirmité et dont la couleur est unie». - Ils dirent: «Te voilà enfin, tu nous as apporté la vérité!» Ils l'immolèrent alors mais il s'en fallut qu'ils ne l'eussent pas fait.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@lxxix{Et quand vous aviez tué un homme et que chacun de vous cherchait à se disculper!... Mais Allah démasque ce que vous dissimuliez.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@lxxx{Nous dîmes donc: «Frappez le tué avec une partie de la vache». - Ainsi Allah ressuscite les morts et vous montre les signes (de Sa puissance) afin que vous raisonniez\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@lxxxi{Puis, et en dépit de tout cela, vos cœurs se sont endurcis; ils sont devenus comme des pierres ou même plus durs encore; car il y a des pierres d'où jaillissent les ruisseaux, d'autres se fendent pour qu'en surgisse l'eau, d'autres s'affaissent par crainte d'Allah. Et Allah n'est certainement jamais inattentif à ce que vous faites\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@lxxxii{- Eh bien, espérez-vous [Musulmans] que des pareils gens (les Juifs) vous partageront la foi? alors qu'un groupe d'entre eux; après avoir entendu et compris la parole d'Allah, la falsifièrent sciemment.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@lxxxiii{Et quand ils rencontrent des croyants, ils disent: «Nous croyons» et, une fois seuls entre eux, ils disent: «Allez-vous confier aux musulmans ce qu'Allah vous a révélé pour leur fournir, ainsi, un argument contre vous devant votre Seigneur! Etes-vous donc dépourvus de raison?».\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@lxxxiv{- Ne savent-ils pas qu'en vérité Allah sait ce qu'ils cachent et ce qu'ils divulguent?\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@lxxxv{Et il y a parmi eux des illettrés qui ne savent rien du Livre hormis des prétentions et ils ne font que des conjectures.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@lxxxvi{Malheur, donc, à ceux qui de leurs propres mains composent un livre puis le présentent comme venant d'Allah pour en tirer un vil profit! - Malheur à eux, donc, à cause de ce que leurs mains ont écrit, et malheur à eux à cause de ce qu'ils en profitent!\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@lxxxvii{Et ils ont dit: «Le Feu ne nous touchera que pour quelques jours comptés!». Dis: «Auriez-vous pris un engagement avec Allah - car Allah ne manque jamais à Son engagement; - non, mais vous dites sur Allah ce que vous ne savez pas».\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@lxxxviii{Bien au contraire! Ceux qui font le mal et qui se font cerner par leurs péchés, ceux-là sont les gens du Feu où ils demeureront éternellement.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@lxxxix{Et ceux qui croient et pratiquent les bonnes œuvres, ceux-là sont les gens du Paradis où ils demeureront éternellement.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@xc{Et [rappelle-toi], lorsque Nous avons pris l'engagement des enfants d'Israël de n'adorer qu'Allah, de faire le bien envers les pères, les mères, les proches parents, les orphelins et les nécessiteux, d'avoir de bonnes paroles avec les gens; d'accomplir régulièrement la Salât et d'acquitter la Zakât! - Mais à l'exception d'un petit nombre de vous, vous manquiez à vos engagements en vous détournant de Nos commandements.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@xci{Et rappelez-vous, lorsque Nous obtînmes de vous l'engagement de ne pas vous verser le sang, [par le meurtre] de ne pas vous expulser les uns les autres de vos maisons. Puis vous y avez souscrit avec votre propre témoignage.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@xcii{Quoique ainsi engagés, voilà que vous vous entretuez, que vous expulsez de leurs maisons une partie d'entre vous contre qui vous prêtez main forte par péché et agression. Mais quelle contradiction! Si vos coreligionnaires vous viennent captifs vous les rançonnez alors qu'il vous était interdit de les expulser (de chez eux). Croyez-vous donc en une partie du Livre et rejetez-vous le reste? Ceux d'entre vous qui agissent de la sorte ne méritent que l'ignominie dans cette vie, et au Jour de la Résurrection ils seront refoulés au plus dur châtiment, et Allah n'est pas inattentif à ce que vous faites.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@xciii{Voilà ceux qui échangent la vie présente contre la vie future. Eh bien, leur châtiment ne sera pas diminué. Et ils ne seront point secourus.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@xciv{Certes, Nous avons donné le Livre à Moïse; Nous avons envoyé après lui des prophètes successifs. Et Nous avons donné des preuves à Jésus fils de Marie, et Nous l'avons renforcé du Saint-Esprit. Est-ce qu'à chaque fois, qu'un Messager vous apportait des vérités contraires à vos souhaits vous vous enfliez d'orgueil? Vous traitiez les uns d'imposteurs et vous tuiez les autres.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@xcv{Et ils dirent: «Nos cœurs sont enveloppés et impénétrables» - Non mais Allah les a maudits à cause de leur infidélité, leur foi est donc médiocre.\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@xcvi{Et quand leur vint d'Allah un Livre confirmant celui qu'ils avaient déjà, - alors qu'auparavant ils cherchaient la suprématie sur les mécréants, - quand donc leur vint cela même qu'ils reconnaissaient, ils refusèrent d'y croire. Que la malédiction d'Allah soit sur les mécréants!\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@xcvii{Comme est vil ce contre quoi ils ont troqué leurs âmes! Ils ne croient pas en ce qu'Allah a fait descendre, révoltés à l'idée qu'Allah, de par Sa grâce, fasse descendre la révélation sur ceux de Ses serviteurs qu'Il veut. Ils ont donc acquis colère sur colère, car un châtiment avilissant attend les infidèles!\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@xcviii{Et quand on leur dit: «Croyez à ce qu'Allah a fait descendre», ils disent: «Nous croyons à ce qu'on a fait descendre à nous». Et ils rejettent le reste, alors qu'il est la vérité confirmant ce qu'il y avait déjà avec eux. - Dis: «Pourquoi donc avez-vous tué auparavant les prophètes d'Allah, si vous étiez croyants?».\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@xcix{Et en effet Moïse vous est venu avec les preuves. Malgré cela, une fois absent, vous avez pris le Veau pour idole, alors que vous étiez injustes.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@c{Et rappelez-vous, lorsque Nous avons pris l'engagement de vous, et brandi sur vous AT-Tûr (le Mont Sinaï) en vous disant: «Tenez ferme à ce que Nous vous avons donné, et écoutez!». Ils dirent: «Nous avons écouté et désobéi». Dans leur impiété, leurs cœurs étaient passionnément épris du Veau (objet de leur culte). Dis-[leur]: «Quelles mauvaises prescriptions ordonnées par votre foi, si vous êtes croyants».\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@ci{- Dis: «Si l'Ultime demeure auprès d'Allah est pour vous seuls, à l'exclusion des autres gens, souhaitez donc la mort [immédiate] si vous êtes véridiques!»\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@cii{Or, ils ne la souhaiteront jamais, sachant tout le mal qu'ils ont perpétré de leurs mains. Et Allah connait bien les injustes.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@ciii{Et certes tu les trouveras les plus attachés à la vie [d'ici-bas], pire en cela que les Associateurs. Tel d'entre eux aimerait vivre mille ans. Mais une pareille longévité ne le sauvera pas du châtiment! Et Allah voit bien leurs actions.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@civ{Dis: «Quiconque est ennemi de Gabriel doit connaître que c'est lui qui, avec la permission d'Allah, a fait descendre sur ton cœur cette révélation qui déclare véridiques les messages antérieurs et qui sert aux croyants de guide et d'heureuse annonce»\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@cv{[Dis:] «Quiconque est ennemi d'Allah, de Ses anges, de Ses messagers, de Gabriel et de Michaël... [Allah sera son ennemi] car Allah est l'ennemi des infidèles».\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@cvi{Et très certainement Nous avons fait descendre vers toi des signes évidents. Et seuls les pervers n'y croient pas.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@cvii{Faudrait-il chaque fois qu'ils concluent un pacte, qu'une partie d'entre eux le dénonce? C'est que plutôt la plupart d'entre eux ne sont pas croyants.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@cviii{Et quand leur vint d'Allah un messager confirmant ce qu'il y avait déjà avec eux, certains à qui le Livre avait été donné, jetèrent derrière leur dos le Livre d'Allah comme s'ils ne savaient pas!\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@cix{Et ils suivirent ce que les diables racontent contre le règne de Solayman. Alors que Solayman n'a jamais été mécréant mais bien les diables: ils enseignent aux gens la magie ainsi que ce qui est descendu aux deux anges Hârout et Mârout, à Babylone; mais ceux-ci n'enseignaient rien à personne, qu'ils n'aient dit d'abord: «Nous ne sommes rien qu'une tentation: ne sois pas mécréant» ils apprennent auprès d'eux ce qui sème la désunion entre l'homme et son épouse. Or ils ne sont capables de nuire à personne qu'avec la permission d'Allah. Et les gens apprennent ce qui leur nuit et ne leur est pas profitable. Et ils savent, très certainement, que celui qui acquiert [ce pouvoir] n'aura aucune part dans l'au-delà. Certes, quelle détestable marchandise pour laquelle ils ont vendu leurs âmes! Si seulement ils savaient!\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@cx{Et s'ils croyaient et vivaient en piété, une récompense de la part d'Allah serait certes meilleure. Si seulement ils savaient!\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@cxi{O vous qui croyez! Ne dites pas: «Râ'inâ» (favorise-nous) mais dites: «Onzurnâ» (regarde-nous); et écoutez! Un châtiment douloureux sera pour les infidèles.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@cxii{Ni les mécréants parmi les gens du Livre, ni les Associateurs n'aiment qu'on fasse descendre sur vous un bienfait de la part de votre Seigneur, alors qu'Allah réserve à qui Il veut sa Miséricorde. Et c'est Allah le Détenteur de l'abondante grâce.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@cxiii{Si Nous abrogeons un verset quelconque ou que Nous le fassions oublier, Nous en apportons un meilleur, ou un semblable. Ne sais-tu pas qu'Allah est Omnipotent?\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@cxiv{Ne sais-tu pas qu'à Allah, appartient le royaume des cieux et de la terre, et qu'en dehors d'Allah vous n'avez ni protecteur ni secoureur?\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@cxv{Voudriez-vous interroger votre Messager comme auparavant on interrogea Moïse? Quiconque substitue la mécréance à la foi s'égare certes du droit chemin.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@cxvi{Nombre de gens du Livre aimeraient par jalousie de leur part, pouvoir vous rendre mécréants après que vous ayez cru. Et après que la vérité s'est manifestée à eux! Pardonnez et oubliez jusqu'à ce qu'Allah fasse venir Son commandement. Allah est très certainement Omnipotent!\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@cxvii{Et accomplissez la Salât et acquittez la Zakât. Et tout ce que vous avancez de bien pour vous-mêmes, vous le retrouverez auprès d'Allah, car Allah voit parfaitement ce que vous faites.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@cxviii{Et ils ont dit: «Nul n'entrera au Paradis que Juifs ou Chrétiens». Voilà leurs chimères. - Dis: «Donnez votre preuve, si vous êtes véridiques».\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@cxix{Non, mais quiconque soumet à Allah son être tout en faisant le bien, aura sa rétribution auprès de son Seigneur. Pour eux, nulle crainte, et ils ne seront point attristés.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@cxx{Et les Juifs disent: «Les Chrétiens ne tiennent sur rien» et les Chrétiens disent: «Les Juifs ne tiennent sur rien», alors qu'ils lisent le Livre! De même ceux qui ne savent rien tiennent un langage semblable au leur. Eh bien, Allah jugera sur ce quoi ils s'opposent, au Jour de la Résurrection.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@cxxi{Qui est plus injuste que celui qui empêche que dans les mosquées d'Allah, on mentionne Son Nom, et qui s'efforce à les détruire? De tels gens ne devraient y entrer qu'apeurés. Pour eux, ignominie ici-bas; et dans l'au-delà un énorme châtiment.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@cxxii{A Allah seul appartiennent l'Est et l'Ouest. Où que vous vous tourniez, la Face (direction) d'Allah est donc là, car Allah a la grâce immense; Il est Omniscient.\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@cxxiii{Et ils ont dit: «Allah s'est donné un fils»! Gloire à Lui! Non! mais c'est à Lui qu'appartient ce qui est dans les cieux et la terre et c'est à Lui que tous obéissent.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@cxxiv{Il est le Créateur des cieux et de la terre à partir du néant. Lorsqu'Il décide une chose, Il dit seulement: «Sois», et elle est aussitôt.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@cxxv{Et ceux qui ne savent pas ont dit: «Pourquoi Allah ne nous parle-t-Il pas [directement], ou pourquoi un signe ne nous vient-il pas?» De même, ceux d'avant eux disaient une parole semblable. Leurs cœurs se ressemblent. Nous avons clairement exposé les signes pour des gens qui ont la foi ferme.\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@cxxvi{Certes, Nous t'avons envoyé avec la vérité, en annonciateur et avertisseur; et on ne te demande pas compte des gens de l'Enfer.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@cxxvii{Ni les Juifs, ni les Chrétiens ne seront jamais satisfaits de toi, jusqu'à ce que tu suives leur religion. - Dis: «Certes, c'est la direction d'Allah qui est la vraie direction». Mais si tu suis leurs passions après ce que tu as reçu de science, tu n'auras contre Allah ni protecteur ni secoureur.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@cxxviii{Ceux à qui Nous avons donné le Livre, qui le récitent comme il se doit, ceux-là y croient. Et ceux qui n'y croient pas sont les perdants.\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@cxxix{O Enfants d'Israël, rappelez-vous Mon bienfait dont Je vous ai comblés et que Je vous ai favorisés par-dessus le reste du monde (de leur époque).\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@cxxx{Et redoutez le jour où nulle âme ne bénéficiera à une autre, où l'on n'acceptera d'elle aucune compensation, et où aucune intercession ne lui sera utile. Et ils ne seront point secourus.\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@cxxxi{[Et rappelle-toi] quand ton Seigneur eut éprouvé Abraham par certains commandements, et qu'il les eut accomplis, le Seigneur lui dit: «Je vais faire de toi un exemple à suivre pour les gens». - «Et parmi ma descendance?» demanda-t-il. - «Mon engagement, dit Allah, ne s'applique pas aux injustes»\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@cxxxii{[Et rappelle-toi], quand nous fîmes de la Maison un lieu de visite et un asile pour les gens - Adoptez donc pour lieu de prière, ce lieu où Abraham se tint debout - Et Nous confiâmes à Abraham et à Ismaël ceci: «Purifiez Ma Maison pour ceux qui tournent autour, y font retraite pieuse, s'y inclinent et s'y prosternent.\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@cxxxiii{Et quand Abraham supplia: «O mon Seigneur, fais de cette cité un lieu de sécurité, et fais attribution des fruits à ceux qui parmi ses habitants auront cru en Allah et au Jour dernier», le Seigneur dit: «Et quiconque n'y aura pas cru, alors Je lui concèderai une courte jouissance [ici-bas], puis Je le contraindrai au châtiment du Feu [dans l'au-delà]. Et quelle mauvaise destination!»\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@cxxxiv{Et quand Abraham et Ismaël élevaient les assises de la Maison: «O notre Seigneur, accepte ceci de notre part! Car c'est Toi l'Audient, l'Omniscient.\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@cxxxv{Notre Seigneur! Fais de nous Tes Soumis, et de notre descendance une communauté soumise à Toi. Et montre nous nos rites et accepte de nous le repentir. Car c'est Toi certes l'Accueillant au repentir, le Miséricordieux.\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@cxxxvi{Notre Seigneur! Envoie l'un des leurs comme messager parmi eux, pour leur réciter Tes versets, leur enseigner le Livre et la Sagesse, et les purifier. Car c'est Toi certes le Puissant, le Sage!\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@cxxxvii{Qui donc aura en aversion la religion d'Abraham, sinon celui qui sème son âme dans la sottise? Car très certainement Nous l'avons choisi en ce monde; et, dans l'au-delà, il est certes du nombre des gens de bien.\qt@no{(130)}}
+\qt@newcmd\qurantrans@fr@cxxxviii{Quand son Seigneur lui avait dit: «Soumets-toi», il dit: «Je me soumets au Seigneur de l'Univers».\qt@no{(131)}}
+\qt@newcmd\qurantrans@fr@cxxxix{Et c'est ce qu'Abraham recommanda à ses fils, de même que Jacob: «O mes fils, certes Allah vous a choisi la religion: ne mourrez point, donc, autrement qu'en Soumis!» (à Allah).\qt@no{(132)}}
+\qt@newcmd\qurantrans@fr@cxl{Etiez-vous témoins quand la mort se présenta à Jacob et qu'il dit à ses fils: «Qu'adorerez-vous après moi?» - Ils répondirent: «Nous adorerons ta divinité et la divinité de tes pères, Abraham, Ismaël et Isaac, Divinité Unique et à laquelle nous sommes Soumis».\qt@no{(133)}}
+\qt@newcmd\qurantrans@fr@cxli{Voilà une génération bel et bien révolue. A elle ce qu'elle a acquis, et à vous ce que vous avez acquis. On ne vous demandera pas compte de ce qu'ils faisaient.\qt@no{(134)}}
+\qt@newcmd\qurantrans@fr@cxlii{Ils ont dit : «Soyez Juifs ou Chrétiens, vous serez donc sur la bonne voie». - Dis: «Non, mais nous suivons la religion d'Abraham le modèle même de la droiture et qui ne fut point parmi les Associateurs».\qt@no{(135)}}
+\qt@newcmd\qurantrans@fr@cxliii{Dites: «Nous croyons en Allah et en ce qu'on nous a révélé, et en ce qu'on a fait descendre vers Abraham et Ismaël et Isaac et Jacob et les Tribus, et en ce qui a été donné à Moïse et à Jésus, et en ce qui a été donné aux prophètes, venant de leur Seigneur: nous ne faisons aucune distinction entre eux. Et à Lui nous sommes Soumis».\qt@no{(136)}}
+\qt@newcmd\qurantrans@fr@cxliv{Alors, s'ils croient à cela même à quoi vous croyez, ils seront certainement sur la bonne voie. Et s'ils s'en détournent, ils seront certes dans le schisme! Alors Allah te suffira contre eux. Il est l'Audient, l'Omniscient.\qt@no{(137)}}
+\qt@newcmd\qurantrans@fr@cxlv{«Nous suivons la religion d'Allah! Et qui est meilleur qu'Allah en Sa religion? C'est Lui que nous adorons».\qt@no{(138)}}
+\qt@newcmd\qurantrans@fr@cxlvi{Dis: «Discutez vous avec nous au sujet d'Allah, alors qu'Il est notre Seigneur et le vôtre? A nous nos actions et à vous les vôtres! C'est à Lui que nous sommes dévoués.\qt@no{(139)}}
+\qt@newcmd\qurantrans@fr@cxlvii{Ou dites-vous qu'Abraham, Ismaël, Isaac et Jacob et les tribus étaient Juifs ou Chrétiens?» - Dis: «Est-ce vous les plus savants ou Allah?» - Qui est plus injuste que celui qui cache un témoignage qu'il détient d'Allah? Et Allah n'est pas inattentif à ce que vous faites.\qt@no{(140)}}
+\qt@newcmd\qurantrans@fr@cxlviii{Voilà une génération bel et bien révolue. A elle ce qu'elle a acquis, et à vous ce que vous avez acquis. Et on ne vous demandera pas compte de ce qu'ils faisaient.\qt@no{(141)}}
+\qt@newcmd\qurantrans@fr@cxlix{Les faibles d'esprit parmi les gens vont dire: «Qui les a détournés de la direction (Qibla) vers laquelle ils s'orientaient auparavant?» - Dis: «C'est à Allah qu'appartiennent le Levant et le Couchant. Il guide qui Il veut vers un droit chemin».\qt@no{(142)}}
+\qt@newcmd\qurantrans@fr@cl{Et aussi Nous avons fait de vous une communauté de justes pour que vous soyez témoins aux gens, comme le Messager sera témoin à vous. Et Nous n'avions établi la direction (Qibla) vers laquelle tu te tournais que pour savoir qui suit le Messager [Muhammad] et qui s'en retourne sur ses talons. C'était un changement difficile, mais pas pour ceux qu'Allah guide. Et ce n'est pas Allah qui vous fera perdre [la récompense de] votre foi, car Allah, certes est Compatissant et Miséricordieux pour les hommes.\qt@no{(143)}}
+\qt@newcmd\qurantrans@fr@cli{Certes nous te voyons tourner le visage en tous sens dans le ciel. Nous te faisons donc orienter vers une direction qui te plaît. Tourne donc ton visage vers la Mosquée sacrée. Où que vous soyez, tournez-y vos visages. Certes, ceux à qui le Livre a été donné savent bien que c'est la vérité venue de leur Seigneur. Et Allah n'est pas inattentif à ce qu'ils font.\qt@no{(144)}}
+\qt@newcmd\qurantrans@fr@clii{Certes si tu apportais toutes les preuves à ceux à qui le Livre a été donné, ils ne suivraient pas ta direction (Qibla)! Et tu ne suivras pas la leur; et entre eux, les uns ne suivent pas la direction des autres. Et si tu suivais leurs passions après ce que tu as reçu de science, tu serais, certes, du nombre des injustes.\qt@no{(145)}}
+\qt@newcmd\qurantrans@fr@cliii{Ceux à qui Nous avons donné le Livre, le reconnaissent comme ils reconnaissent leurs enfants. Or une partie d'entre eux cache la vérité, alors qu'ils la savent!\qt@no{(146)}}
+\qt@newcmd\qurantrans@fr@cliv{La vérité vient de ton Seigneur. Ne sois donc pas de ceux qui doutent.\qt@no{(147)}}
+\qt@newcmd\qurantrans@fr@clv{A chacun une orientation vers laquelle il se tourne. Rivalisez donc dans les bonnes œuvres. Où que vous soyez, Allah vous ramènera tous vers Lui, car Allah est, certes Omnipotent.\qt@no{(148)}}
+\qt@newcmd\qurantrans@fr@clvi{Et d'où que tu sortes, tourne ton visage vers la Mosquée sacrée. Oui voilà bien la vérité venant de ton Seigneur. Et Allah n'est pas inattentif à ce que vous faites.\qt@no{(149)}}
+\qt@newcmd\qurantrans@fr@clvii{Et d'où que tu sortes, tourne ton visage vers la Mosquée sacrée. Et où que vous soyez, tournez-y vos visages, afin que les gens n'aient pas d'argument contre vous, sauf ceux d'entre eux qui sont de vrais injustes. Ne les craignez donc pas; mais craignez-Moi pour que Je parachève Mon bienfait à votre égard, et que vous soyez bien guidés!\qt@no{(150)}}
+\qt@newcmd\qurantrans@fr@clviii{Ainsi, Nous avons envoyé parmi vous un messager de chez vous qui vous récite Nos versets, vous purifie, vous enseigne le Livre et la Sagesse et vous enseigne ce que vous ne saviez pas.\qt@no{(151)}}
+\qt@newcmd\qurantrans@fr@clix{Souvenez-vous de Moi donc. Je vous récompenserai. Remerciez-Moi et ne soyez pas ingrats envers Moi!\qt@no{(152)}}
+\qt@newcmd\qurantrans@fr@clx{O les croyants! Cherchez secours dans l'endurance et la Salât. Car Allah est avec ceux qui sont endurants.\qt@no{(153)}}
+\qt@newcmd\qurantrans@fr@clxi{Et ne dites pas de ceux qui sont tués dans le sentier d'Allah qu'ils sont morts. Au contraire ils sont vivants, mais vous en êtes inconscients.\qt@no{(154)}}
+\qt@newcmd\qurantrans@fr@clxii{Très certainement, Nous vous éprouverons par un peu de peur, de faim et de diminution de biens, de personnes et de fruits. Et fais la bonne annonce aux endurants,\qt@no{(155)}}
+\qt@newcmd\qurantrans@fr@clxiii{qui disent, quand un malheur les atteint: «Certes nous sommes à Allah, et c'est à Lui que nous retournerons.\qt@no{(156)}}
+\qt@newcmd\qurantrans@fr@clxiv{Ceux-là reçoivent des bénédictions de leur Seigneur, ainsi que la miséricorde; et ceux-là sont les biens guidés.\qt@no{(157)}}
+\qt@newcmd\qurantrans@fr@clxv{AS-Safâ et Al-Marwah sont vraiment parmi les lieux sacrés d'Allah. Donc, quiconque fait pèlerinage à la Maison ou fait l'Umra ne commet pas de péché en faisant le va-et-vient entre ces deux monts. Et quiconque fait de son propre gré une bonne œuvre, alors Allah est Reconnaissant, Omniscient.\qt@no{(158)}}
+\qt@newcmd\qurantrans@fr@clxvi{Certes ceux qui cachent ce que Nous avons fait descendre en fait de preuves et de guide après l'exposé que Nous en avons fait aux gens, dans le Livre, voilà ceux qu'Allah maudit et que les maudisseurs maudissent,\qt@no{(159)}}
+\qt@newcmd\qurantrans@fr@clxvii{sauf ceux qui se sont repentis, corrigés et déclarés: d'eux Je reçois le repentir. Car c'est Moi, l'Accueillant au repentir, le Miséricordieux.\qt@no{(160)}}
+\qt@newcmd\qurantrans@fr@clxviii{Ceux qui ne croient pas et meurent mécréants, recevront la malédiction d'Allah, des Anges et de tous les hommes.\qt@no{(161)}}
+\qt@newcmd\qurantrans@fr@clxix{Ils y demeureront éternellement; le châtiment ne leur sera pas allégé, et on ne leur accordera pas de répit.\qt@no{(162)}}
+\qt@newcmd\qurantrans@fr@clxx{Et votre Divinité est une divinité unique. Pas de divinité à part Lui, le Tout Miséricordieux, le Très Miséricordieux.\qt@no{(163)}}
+\qt@newcmd\qurantrans@fr@clxxi{Certes dans la création des cieux et de la terre, dans l'alternance de la nuit et du jour, dans le navire qui vogue en mer chargé de choses profitables aux gens, dans l'eau qu'Allah fait descendre du ciel, par laquelle Il rend la vie à la terre une fois morte et y répand des bêtes de toute espèce dans la variation des vents, et dans les nuages soumis entre le ciel et la terre, en tout cela il y a des signes, pour un peuple qui raisonne.\qt@no{(164)}}
+\qt@newcmd\qurantrans@fr@clxxii{Parmi les hommes, il en est qui prennent, en dehors d'Allah, des égaux à Lui, en les aimant comme on aime Allah. Or les croyants sont les plus ardents en l'amour d'Allah. Quand les injustes verront le châtiment, ils sauront que la force tout entière est à Allah et qu'Allah est dur en châtiment!...\qt@no{(165)}}
+\qt@newcmd\qurantrans@fr@clxxiii{Quand les meneurs désavoueront les suiveurs à la vue du châtiment, les liens entre eux seront bien brisés!\qt@no{(166)}}
+\qt@newcmd\qurantrans@fr@clxxiv{Et les suiveurs diront: «Ah! Si un retour nous était possible! Alors nous les désavouerions comme ils nous ont désavoués!» - Ainsi Allah leur montra leurs actions; source de remords pour eux; mais ils ne pourront pas sortir du Feu.\qt@no{(167)}}
+\qt@newcmd\qurantrans@fr@clxxv{O gens! De ce qui existe sur la terre; mangez le licite pur; ne suivez point les pas du Diable car il est vraiment pour vous, un ennemi déclaré.\qt@no{(168)}}
+\qt@newcmd\qurantrans@fr@clxxvi{Il ne vous commande que le mal et la turpitude et de dire contre Allah ce que vous ne savez pas.\qt@no{(169)}}
+\qt@newcmd\qurantrans@fr@clxxvii{Et quand on leur dit: «Suivez ce qu'Allah a fait descendre», ils disent: «Non, mais nous suivrons les coutumes de nos ancêtres.» - Quoi! et si leurs ancêtres n'avaient rien raisonné et s'ils n'avaient pas été dans la bonne direction?\qt@no{(170)}}
+\qt@newcmd\qurantrans@fr@clxxviii{Les mécréants ressemblent à [du bétail] auquel on crie et qui entend seulement appel et voix confus. Sourds, muets, aveugles, ils ne raisonnent point.\qt@no{(171)}}
+\qt@newcmd\qurantrans@fr@clxxix{O les croyants! Mangez des (nourritures) licites que Nous vous avons attribuées. Et remerciez Allah, si c'est Lui que vous adorez.\qt@no{(172)}}
+\qt@newcmd\qurantrans@fr@clxxx{Certes, Il vous interdit la chair d'une bête morte, le sang, la viande de porc et ce sur quoi on a invoqué un autre qu'Allah. Il n'y a pas de péché sur celui qui est contraint sans toutefois abuser ni transgresser, car Allah est Pardonneur et Miséricordieux.\qt@no{(173)}}
+\qt@newcmd\qurantrans@fr@clxxxi{Ceux qui cachent ce qu'Allah a fait descendre du Livre et le vendent à vil prix, ceux-là ne s'emplissent le ventre que de Feu. Allah ne leur adressera pas la parole, au Jour de la Résurrection, et ne les purifiera pas. Et il y aura pour eux un douloureux châtiment.\qt@no{(174)}}
+\qt@newcmd\qurantrans@fr@clxxxii{Ceux-là ont échangé la bonne direction contre l'égarement et le pardon contre le châtiment. Qu'est-ce qui leur fera supporter le Feu?!\qt@no{(175)}}
+\qt@newcmd\qurantrans@fr@clxxxiii{C'est ainsi, car c'est avec la vérité qu'Allah a fait descendre le Livre; et ceux qui s'opposent au sujet du Livre sont dans une profonde divergence.\qt@no{(176)}}
+\qt@newcmd\qurantrans@fr@clxxxiv{La bonté pieuse ne consiste pas à tourner vos visages vers le Levant ou le Couchant. Mais la bonté pieuse est de croire en Allah, au Jour dernier, aux Anges, au Livre et aux prophètes, de donner de son bien, quelqu'amour qu'on en ait, aux proches, aux orphelins, aux nécessiteux, aux voyageurs indigents et à ceux qui demandent l'aide et pour délier les jougs, d'accomplir la Salât et d'acquitter la Zakât. Et ceux qui remplissent leurs engagements lorsqu'ils se sont engagés, ceux qui sont endurants dans la misère, la maladie et quand les combats font rage, les voilà les véridiques et les voilà les vrais pieux!\qt@no{(177)}}
+\qt@newcmd\qurantrans@fr@clxxxv{O les croyants! On vous a prescrit le talion au sujet des tués: homme libre pour homme libre, esclave pour esclave, femme pour femme. Mais celui à qui son frère aura pardonné en quelque façon doit faire face à une requête convenable et doit payer des dommages de bonne grâce. Ceci est un allègement de la part de votre Seigneur, et une miséricorde. Donc, quiconque après cela transgresse, aura un châtiment douloureux.\qt@no{(178)}}
+\qt@newcmd\qurantrans@fr@clxxxvi{C'est dans le talion que vous aurez la préservation de la vie, ô vous doués d'intelligence, ainsi atteindrez-vous la piété.\qt@no{(179)}}
+\qt@newcmd\qurantrans@fr@clxxxvii{On vous a prescrit, quand la mort est proche de l'un de vous et s'il laisse des biens, de faire un testament en règle en faveur de ses père et mère et de ses plus proches. C'est un devoir pour les pieux.\qt@no{(180)}}
+\qt@newcmd\qurantrans@fr@clxxxviii{Quiconque l'altère après l'avoir entendu, le péché ne reposera que sur ceux qui l'ont altéré; certes, Allah est Audient et Omniscient.\qt@no{(181)}}
+\qt@newcmd\qurantrans@fr@clxxxix{Mais quiconque craint d'un testateur quelque partialité (volontaire ou involontaire), et les réconcilie, alors, pas de péché sur lui car Allah est certes Pardonneur et Miséricordieux!\qt@no{(182)}}
+\qt@newcmd\qurantrans@fr@cxc{O les croyants! On vous a prescrit aS-Siyâm comme on l'a prescrit à ceux d'avant vous, ainsi atteindrez-vous la piété,\qt@no{(183)}}
+\qt@newcmd\qurantrans@fr@cxci{pendant un nombre déterminé de jours. Quiconque d'entre vous est malade ou en voyage, devra jeûner un nombre égal d'autres jours. Mais pour ceux qui ne pourraient le supporter qu'(avec grande difficulté), il y a une compensation: nourrir un pauvre. Et si quelqu'un fait plus de son propre gré, c'est pour lui; mais il est mieux pour vous de jeûner; si vous saviez!\qt@no{(184)}}
+\qt@newcmd\qurantrans@fr@cxcii{(Ces jours sont) le mois de Ramadân au cours duquel le Coran a été descendu comme guide pour les gens, et preuves claires de la bonne direction et du discernement. Donc, quiconque d'entre vous est présent en ce mois, qu'il jeûne! Et quiconque est malade ou en voyage, alors qu'il jeûne un nombre égal d'autres jours. - Allah veut pour vous la facilité, Il ne veut pas la difficulté pour vous, afin que vous en complétiez le nombre et que vous proclamiez la grandeur d'Allah pour vous avoir guidés, et afin que vous soyez reconnaissants!\qt@no{(185)}}
+\qt@newcmd\qurantrans@fr@cxciii{Et quand Mes serviteurs t'interrogent sur Moi.. alors Je suis tout proche: Je réponds à l'appel de celui qui Me prie quand il Me prie. Qu'ils répondent à Mon appel, et qu'ils croient en Moi, afin qu'ils soient bien guidés.\qt@no{(186)}}
+\qt@newcmd\qurantrans@fr@cxciv{On vous a permis, la nuit d'as-Siyâm, d'avoir des rapports avec vos femmes; elles sont un vêtement pour vous et vous êtes un vêtement pour elles. Allah sait que vous aviez clandestinement des rapports avec vos femmes. Il vous a pardonné et vous a graciés. Cohabitez donc avec elles, maintenant, et cherchez ce qu'Allah a prescrit en votre faveur; mangez et buvez jusqu'à ce que se distingue, pour vous, le fil blanc de l'aube du fil noir de la nuit. Puis accomplissez le jeûne jusqu'à la nuit. Mais ne cohabitez pas avec elles pendant que vous êtes en retraite rituelle dans les mosquées. Voilà les lois d'Allah: ne vous en approchez donc pas (pour les transgresser). C'est ainsi qu'Allah expose aux hommes Ses enseignements, afin qu'ils deviennent pieux!\qt@no{(187)}}
+\qt@newcmd\qurantrans@fr@cxcv{Et ne dévorez pas mutuellement et illicitement vos biens; et ne vous en servez pas pour corrompre des juges pour vous permettre de dévorer une partie des biens des gens, injustement et sciemment.\qt@no{(188)}}
+\qt@newcmd\qurantrans@fr@cxcvi{Ils t'interrogent sur les nouvelles lunes - Dis: «Elles servent aux gens pour compter le temps, et aussi pour le hajj [pèlerinage]. Et ce n'est pas un acte de bienfaisance que de rentrer chez vous par l'arrière des maisons. Mais la bonté pieuse consiste à craindre Allah. Entrez donc dans les maisons par leurs portes. Et craignez Allah, afin que vous réussissiez!\qt@no{(189)}}
+\qt@newcmd\qurantrans@fr@cxcvii{Combattez dans le sentier d'Allah ceux qui vous combattent, et ne transgressez pas. Certes, Allah n'aime pas les transgresseurs!\qt@no{(190)}}
+\qt@newcmd\qurantrans@fr@cxcviii{Et tuez-les, où que vous les rencontriez; et chassez-les d'où ils vous ont chassés: l'association est plus grave que le meurtre. Mais ne les combattez pas près de la Mosquée sacrée avant qu'ils ne vous y aient combattus. S'ils vous y combattent, tuez-les donc. Telle est la rétribution des mécréants.\qt@no{(191)}}
+\qt@newcmd\qurantrans@fr@cxcix{S'ils cessent, Allah est, certes, Pardonneur et Miséricordieux.\qt@no{(192)}}
+\qt@newcmd\qurantrans@fr@cc{Et combattez-les jusqu'à ce qu'il n'y ait plus d'association et que la religion soit entièrement à Allah seul. S'ils cessent, donc plus d'hostilités, sauf contre les injustes.\qt@no{(193)}}
+\qt@newcmd\qurantrans@fr@cci{Le Mois sacré pour le mois sacré! - Le talion s'applique à toutes choses sacrées -. Donc, quiconque transgresse contre vous, transgressez contre lui, à transgression égale. Et craignez Allah. Et sachez qu'Allah est avec les pieux.\qt@no{(194)}}
+\qt@newcmd\qurantrans@fr@ccii{Et dépensez dans le sentier d'Allah. Et ne vous jetez pas par vos propres mains dans la destruction. Et faites le bien. Car Allah aime les bienfaisants.\qt@no{(195)}}
+\qt@newcmd\qurantrans@fr@cciii{Et accomplissez pour Allah le pèlerinage et l'Umra. Si vous en êtes empêchés, alors faites un sacrifice qui vous soit facile. Et ne rasez pas vos têtes avant que l'offrande [l'animal à sacrifier] n'ait atteint son lieu d'immolation. Si l'un d'entre vous est malade ou souffre d'une affection de la tête (et doit se raser), qu'il se rachète alors par un Siyâm ou par une aumône ou par un sacrifice. Quand vous retrouverez ensuite la paix, quiconque a joui d'une vie normale après avoir fait l'Umra en attendant le pèlerinage, doit faire un sacrifice qui lui soit facile. S'il n'a pas les moyens qu'il jeûne trois jours pendant le pèlerinage et sept jours une fois rentré chez lui, soit en tout dix jours. Cela est prescrit pour celui dont la famille n'habite pas auprès de la Mosquée sacrée. Et craignez Allah. Et sachez qu'Allah est dur en punition.\qt@no{(196)}}
+\qt@newcmd\qurantrans@fr@cciv{Le pèlerinage a lieu dans des mois connus. Si l'on se décide de l'accomplir, alors point de rapport sexuel, point de perversité, point de dispute pendant le pèlerinage. Et le bien que vous faites, Allah le sait. Et prenez vos provisions; mais vraiment la meilleure provision est la piété. Et redoutez-Moi, ô doués d'intelligence\qt@no{(197)}}
+\qt@newcmd\qurantrans@fr@ccv{Ce n'est pas un péché que d'aller en quête de quelque grâce de votre Seigneur. Puis, quand vous déferlez depuis 'Arafât, invoquez Allah, à Al-Mach'ar-al-haram (Al-Muzdalifa). Et invoquez-Le comme Il vous a montré la bonne voie, quoiqu'auparavant vous étiez du nombre des égarés.\qt@no{(198)}}
+\qt@newcmd\qurantrans@fr@ccvi{Ensuite déferlez par où les gens déferlèrent, et demandez pardon à Allah. Car Allah est Pardonneur et Miséricordieux.\qt@no{(199)}}
+\qt@newcmd\qurantrans@fr@ccvii{Et quand vous aurez achevé vos rites, alors invoquez Allah comme vous invoquez vos pères, et plus ardemment encore. Mais il est des gens qui disent seulement: «Seigneur! Accorde nous [le bien] ici-bas!» - Pour ceux-là, nulle part dans l'au-delà.\qt@no{(200)}}
+\qt@newcmd\qurantrans@fr@ccviii{Et il est des gens qui disent: «Seigneur! Accorde nous belle part ici-bas, et belle part aussi dans l'au-delà; et protège-nous du châtiment du Feu!»\qt@no{(201)}}
+\qt@newcmd\qurantrans@fr@ccix{Ceux-là auront une part de ce qu'ils auront acquis. Et Allah est prompt à faire rendre compte.\qt@no{(202)}}
+\qt@newcmd\qurantrans@fr@ccx{Et invoquez Allah pendant un nombre de jours déterminés. Ensuite, il n'y a pas de péché, pour qui se comporte en piété, à partir au bout de deux jours, à s'attarder non plus. Et craignez Allah. Et sachez que c'est vers Lui que vous serez rassemblés.\qt@no{(203)}}
+\qt@newcmd\qurantrans@fr@ccxi{Il y a parmi les gens celui dont la parole sur la vie présente te plaît, et qui prend Allah à témoin de ce qu'il a dans le cœur, tandis que c'est le plus acharné disputeur.\qt@no{(204)}}
+\qt@newcmd\qurantrans@fr@ccxii{Dès qu'il tourne le dos, il parcourt la terre pour y semer le désordre et saccager culture et bétail. Et Allah n'aime pas le désordre!\qt@no{(205)}}
+\qt@newcmd\qurantrans@fr@ccxiii{Et quand on lui dit: «Redoute Allah», l'orgueil criminel s'empare de lui. L'Enfer lui suffira, et quel mauvais lit, certes!\qt@no{(206)}}
+\qt@newcmd\qurantrans@fr@ccxiv{Et il y a parmi les gens celui qui se sacrifie pour la recherche de l'agrément d'Allah. Et Allah est Compatissant envers Ses serviteurs.\qt@no{(207)}}
+\qt@newcmd\qurantrans@fr@ccxv{O les croyants! Entrez en plein dans l'Islam, et ne suivez point les pas du diable, car il est certes pour vous un ennemi déclaré.\qt@no{(208)}}
+\qt@newcmd\qurantrans@fr@ccxvi{Puis, si vous bronchez, après que les preuves vous soient venues, sachez alors qu'Allah est Puissant et Sage.\qt@no{(209)}}
+\qt@newcmd\qurantrans@fr@ccxvii{Qu'attendent-ils sinon qu'Allah leur vienne à l'ombre des nuées de même que les Anges et que leur sort soit réglé? Et c'est à Allah que toute chose est ramenée.\qt@no{(210)}}
+\qt@newcmd\qurantrans@fr@ccxviii{Demande aux enfants d'Israël combien de miracles évidents Nous leur avons apportés! Or, quiconque altère le bienfait d'Allah après qu'il lui soit parvenu... alors, Allah vraiment est dur en punition.\qt@no{(211)}}
+\qt@newcmd\qurantrans@fr@ccxix{On a enjolivé la vie présente à ceux qui ne croient pas, et ils se moquent de ceux qui croient. Mais les pieux seront au-dessus d'eux, au Jour de la Résurrection. Et Allah accorde Ses bienfaits à qui Il veut, sans compter.\qt@no{(212)}}
+\qt@newcmd\qurantrans@fr@ccxx{Les gens formaient (à l'origine) une seule communauté (croyante). Puis, (après leurs divergences,) Allah envoya des prophètes comme annonciateurs et avertisseurs; et Il fit descendre avec eux le Livre contenant la vérité, pour régler parmi les gens leurs divergences. Mais, ce sont ceux-là mêmes à qui il avait été apporté, qui se mirent à en disputer, après que les preuves leur furent venues, par esprit de rivalité! Puis Allah, de par Sa Grâce, guida ceux qui crurent vers cette Vérité sur laquelle les autres disputaient. Et Allah guide qui Il veut vers le chemin droit.\qt@no{(213)}}
+\qt@newcmd\qurantrans@fr@ccxxi{Pensez-vous entrer au Paradis alors que vous n'avez pas encore subi des épreuves semblables à celles que subirent ceux qui vécurent avant vous? Misère et maladie les avaient touchés; et ils furent secoués jusqu'à ce que le Messager, et avec lui, ceux qui avaient cru, se fussent écriés: «Quand viendra le secours d'Allah?» - Quoi! le secours d'Allah est sûrement proche.\qt@no{(214)}}
+\qt@newcmd\qurantrans@fr@ccxxii{Ils t'interrogent: «Qu'est-ce qu'on doit dépenser?» Dis: «Ce que vous dépensez de bien devrait être pour les père et mère, les proches, les orphelins, les pauvres et les voyageurs indigents. Et tout ce que vous faites de bien, vraiment Allah le sait».\qt@no{(215)}}
+\qt@newcmd\qurantrans@fr@ccxxiii{Le combat vous a été prescrit alors qu'il vous est désagréable. Or, il se peut que vous ayez de l'aversion pour une chose alors qu'elle vous est un bien. Et il se peut que vous aimiez une chose alors qu'elle vous est mauvaise. C'est Allah qui sait, alors que vous ne savez pas.\qt@no{(216)}}
+\qt@newcmd\qurantrans@fr@ccxxiv{Ils t'interrogent sur le fait de faire la guerre pendant les mois sacrés. - Dis: «Y combattre est un péché grave, mais plus grave encore auprès d'Allah est de faire obstacle au sentier d'Allah, d'être impie envers Celui-ci et la Mosquée sacrée, et d'expulser de là ses habitants. L'association est plus grave que le meurtre.» Or, ils ne cesseront de vous combattre jusqu'à, s'ils peuvent, vous détourner de votre religion. Et ceux qui parmi vous abjureront leur religion et mourront infidèles, vaines seront pour eux leurs actions dans la vie immédiate et la vie future. Voilà les gens du Feu: ils y demeureront éternellement.\qt@no{(217)}}
+\qt@newcmd\qurantrans@fr@ccxxv{Certes, ceux qui ont cru, émigré et lutté dans le sentier d'Allah, ceux-là espèrent la miséricorde d'Allah. Et Allah est Pardonneur et Miséricordieux.\qt@no{(218)}}
+\qt@newcmd\qurantrans@fr@ccxxvi{Ils t'interrogent sur le vin et les jeux de hasard. Dis: «Dans les deux il y a un grand péché et quelques avantages pour les gens; mais dans les deux, le péché est plus grand que l'utilité». Et ils t'interrogent: «Que doit-on dépenser (en charité)?» Dis: «L'excédent de vos biens.» Ainsi, Allah vous explique Ses versets afin que vous méditiez\qt@no{(219)}}
+\qt@newcmd\qurantrans@fr@ccxxvii{sur ce monde et sur l'au-delà! Et ils t'interrogent au sujet des orphelins. Dis: «Leur faire du bien est la meilleure action. Si vous vous mêlez à eux, ce sont alors vos frères [en religion]. Allah distingue celui qui sème le désordre de celui qui fait le bien. Et si Allah avait voulu, Il vous aurait accablés. Certes Allah est Puissant et Sage.\qt@no{(220)}}
+\qt@newcmd\qurantrans@fr@ccxxviii{Et n'épousez pas les femmes associatrices tant qu'elles n'auront pas la foi, et certes, une esclave croyante vaut mieux qu'une associatrice même si elle vous enchante. Et ne donnez pas d'épouses aux associateurs tant qu'ils n'auront pas la foi, et certes, un esclave croyant vaut mieux qu'un associateur même s'il vous enchante. Car ceux-là [les associateurs] invitent au Feu; tandis qu'Allah invite, de par Sa Grâce, au Paradis et au pardon Et Il expose aux gens Ses enseignements afin qu'ils se souviennent!\qt@no{(221)}}
+\qt@newcmd\qurantrans@fr@ccxxix{- Et ils t'interrogent sur la menstruation des femmes. - Dis: «C'est un mal. Eloignez-vous donc des femmes pendant les menstrues, et ne les approchez que quand elles sont pures. Quand elles se sont purifiées, alors cohabitez avec elles suivant les prescriptions d'Allah car Allah aime ceux qui se repentent, et Il aime ceux qui se purifient».\qt@no{(222)}}
+\qt@newcmd\qurantrans@fr@ccxxx{Vos épouses sont pour vous un champ de labour; allez à votre champ comme [et quand] vous le voulez et œuvrez pour vous-mêmes à l'avance. Craignez Allah et sachez que vous Le rencontrerez. Et fais gracieuse annonce aux croyants!\qt@no{(223)}}
+\qt@newcmd\qurantrans@fr@ccxxxi{Et n'usez pas du nom d'Allah, dans vos serments, pour vous dispenser de faire le bien, d'être pieux et de réconcilier les gens. Et Allah est Audient et Omniscient.\qt@no{(224)}}
+\qt@newcmd\qurantrans@fr@ccxxxii{Ce n'est pas pour les expressions gratuites dans vos serments qu'Allah vous saisit: Il vous saisit pour ce que vos cœurs ont acquis. Et Allah est Pardonneur et Patient.\qt@no{(225)}}
+\qt@newcmd\qurantrans@fr@ccxxxiii{Pour ceux qui font le serment de se priver de leurs femmes, il y a un délai d'attente de quatre mois. Et s'ils reviennent (de leur serment) celui-ci sera annulé, car Allah est certes Pardonneur et Miséricordieux!\qt@no{(226)}}
+\qt@newcmd\qurantrans@fr@ccxxxiv{Mais s'ils se décident au divorce, (celui-ci devient exécutoire) car Allah est certes Audient et Omniscient.\qt@no{(227)}}
+\qt@newcmd\qurantrans@fr@ccxxxv{Et les femmes divorcées doivent observer un délai d'attente de trois menstrues; et il ne leur est pas permis de taire ce qu'Allah a créé dans leurs ventres, si elles croient en Allah et au Jour dernier. Et leurs époux seront plus en droit de les reprendre pendant cette période, s'ils veulent la réconciliation. Quant à elles, elles ont des droits équivalents à leurs obligations, conformément à la bienséance. Mais les hommes ont cependant une prédominance sur elles. Et Allah est Puissant et Sage.\qt@no{(228)}}
+\qt@newcmd\qurantrans@fr@ccxxxvi{Le divorce est permis pour seulement deux fois. Alors, c'est soit la reprise conformément à la bienséance, ou la libération avec gentillesse. Et il ne vous est pas permis de reprendre quoi que ce soit de ce que vous leur aviez donné, - à moins que tous deux ne craignent de ne point pouvoir se conformer aux ordres imposés par Allah. Si donc vous craignez que tous deux ne puissent se conformer aux ordres d'Allah, alors ils ne commettent aucun péché si la femme se rachète avec quelque bien. Voilà les ordres d'Allah. Ne les transgressez donc pas. Et ceux qui transgressent les ordres d'Allah ceux-là sont les injustes.\qt@no{(229)}}
+\qt@newcmd\qurantrans@fr@ccxxxvii{S'il divorce avec elle (la troisième fois) alors elle ne lui sera plus licite tant qu'elle n'aura pas épousé un autre. Et si ce (dernier) la répudie alors les deux ne commettent aucun péché en reprenant la vie commune, pourvu qu'ils pensent pouvoir tous deux se conformer aux ordres d'Allah. Voilà les ordres d'Allah, qu'Il expose aux gens qui comprennent.\qt@no{(230)}}
+\qt@newcmd\qurantrans@fr@ccxxxviii{Et quand vous divorcez d'avec vos épouses, et que leur délai expire, alors, reprenez-les conformément à la bienséance ou libérez-les conformément à la bienséance. Mais ne les retenez pas pour leur faire du tort: vous transgresseriez alors et quiconque agit ainsi se fait du tort à lui-même. Ne prenez pas en moquerie les versets d'Allah. Et rappelez-vous le bienfait d'Allah envers vous, ainsi que le Livre et la Sagesse qu'Il vous a fait descendre; par lesquels Il vous exhorte. Et craignez Allah, et sachez qu'Allah est Omniscient.\qt@no{(231)}}
+\qt@newcmd\qurantrans@fr@ccxxxix{Et quand vous divorcez d'avec vos épouses, et que leur délai expire, alors ne les empêchez pas de renouer avec leurs époux, s'ils s'agréent l'un l'autre, et conformément à la bienséance. Voilà à quoi est exhorté celui d'entre vous qui croit en Allah et au Jour dernier. Ceci est plus décent et plus pur pour vous. Et Allah sait, alors que vous ne savez pas.\qt@no{(232)}}
+\qt@newcmd\qurantrans@fr@ccxl{Et les mères, qui veulent donner un allaitement complet, allaiteront leurs bébés deux ans complets. Au père de l'enfant de les nourrir et vêtir de manière convenable. Nul ne doit supporter plus que ses moyens. La mère n'a pas à subir de dommage à cause de son enfant, ni le père, à cause de son enfant. Même obligation pour l'héritier. Et si, après s'être consultés, tous deux tombent d'accord pour décider le sevrage, nul grief à leur faire. Et si vous voulez mettre vos enfants en nourrice, nul grief à vous faire non plus, à condition que vous acquittiez la rétribution convenue, conformément à l'usage. Et craignez Allah, et sachez qu'Allah observe ce que vous faites.\qt@no{(233)}}
+\qt@newcmd\qurantrans@fr@ccxli{Ceux des vôtres que la mort frappe et qui laissent des épouses: celles-ci doivent observer une période d'attente de quatre mois et dix jours. Passé ce délai, on ne vous reprochera pas la façon dont elles disposeront d'elles-mêmes d'une manière convenable. Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(234)}}
+\qt@newcmd\qurantrans@fr@ccxlii{Et on ne vous reprochera pas de faire, aux femmes, allusion à une proposition de mariage, ou d'en garder secrète l'intention. Allah sait que vous allez songer à ces femmes. Mais ne leur promettez rien secrètement sauf à leur dire des paroles convenables. Et ne vous décidez au contrat de mariage qu'à l'expiration du délai prescrit. Et sachez qu'Allah sait ce qu'il y a dans vos âmes. Prenez donc garde à Lui, et sachez aussi qu'Allah est Pardonneur et Plein de mansuétude.\qt@no{(235)}}
+\qt@newcmd\qurantrans@fr@ccxliii{Vous ne faites point de péché en divorçant d'avec des épouses que vous n'avez pas touchées, et à qui vous n'avez pas fixé leur mahr. Donnez-leur toutefois - l'homme aisé selon sa capacité, l'indigent selon sa capacité - quelque bien convenable dont elles puissent jouir. C'est un devoir pour les bienfaisants..\qt@no{(236)}}
+\qt@newcmd\qurantrans@fr@ccxliv{Et si vous divorcez d'avec elles sans les avoir touchées, mais après fixation de leur mahr versez-leur alors la moitié de ce que vous avez fixé, à moins qu'elles ne s'en désistent, ou que ne se désiste celui entre les mains de qui est la conclusion du mariage. Le désistement est plus proche de la piété. Et n'oubliez pas votre faveur mutuelle. Car Allah voit parfaitement ce que vous faites.\qt@no{(237)}}
+\qt@newcmd\qurantrans@fr@ccxlv{Soyez assidus aux Salâts et surtout la Salât médiane; et tenez-vous debout devant Allah, avec humilité.\qt@no{(238)}}
+\qt@newcmd\qurantrans@fr@ccxlvi{Mais si vous craignez (un grand danger), alors priez en marchant ou sur vos montures. Puis quand vous êtes en sécurité, invoquez Allah comme Il vous a enseigné ce que vous ne saviez pas.\qt@no{(239)}}
+\qt@newcmd\qurantrans@fr@ccxlvii{Ceux d'entre vous que la mort frappe et qui laissent des épouses, doivent laisser un testament en faveur de leurs épouses pourvoyant à un an d'entretien sans les expulser de chez elles. Si ce sont elles qui partent, alors on ne vous reprochera pas ce qu'elles font de convenable pour elles-mêmes. Allah est Puissant et Sage.\qt@no{(240)}}
+\qt@newcmd\qurantrans@fr@ccxlviii{Les divorcées ont droit à la jouissance d'une allocation convenable, [constituant] un devoir pour les pieux.\qt@no{(241)}}
+\qt@newcmd\qurantrans@fr@ccxlix{C'est ainsi qu'Allah vous explique Ses versets, afin que vous raisonniez!\qt@no{(242)}}
+\qt@newcmd\qurantrans@fr@ccl{N'as-tu pas vu ceux qui sortirent de leurs demeures, - il y en avait des milliers -, par crainte de la mort? Puis Allah leur dit: «Mourez». Après quoi Il les rendit à la vie. Certes, Allah est Détenteur de la Faveur, envers les gens; mais la plupart des gens ne sont pas reconnaissants.\qt@no{(243)}}
+\qt@newcmd\qurantrans@fr@ccli{Et combattez dans le sentier d'Allah. Et sachez qu'Allah est Audient et Omniscient.\qt@no{(244)}}
+\qt@newcmd\qurantrans@fr@cclii{Quiconque prête à Allah de bonne grâce, Il le lui rendra multiplié plusieurs fois. Allah restreint ou étend (Ses faveurs.) Et c'est à Lui que vous retournerez.\qt@no{(245)}}
+\qt@newcmd\qurantrans@fr@ccliii{N'as-tu pas su l'histoire des notables, parmi les enfants d'Israël, lorsqu'après Moïse ils dirent à un prophète à eux: «Désigne-nous un roi, pour que nous combattions dans le sentier d'Allah». Il dit: «Et si vous ne combattez pas, quand le combat vous sera prescrit?» Ils dirent: «Et qu'aurions-nous à ne pas combattre dans le sentier d'Allah, alors qu'on nous a expulsés de nos maisons et qu'on a capturé nos enfants?» Et quand le combat leur fut prescrit, ils tournèrent le dos, sauf un petit nombre d'entre eux. Et Allah connaît bien les injustes.\qt@no{(246)}}
+\qt@newcmd\qurantrans@fr@ccliv{Et leur prophète leur dit: «Voici qu'Allah vous a envoyé Tâlût pour roi.» Ils dirent: «Comment règnerait-il sur nous? Nous avons plus de droit que lui à la royauté. On ne lui a même pas prodigué beaucoup de richesses!» Il dit: «Allah, vraiment l'a élu sur vous, et a accru sa part quant au savoir et à la condition physique.» - Et Allah alloue Son pouvoir à qui Il veut. Allah a la grâce immense et Il est Omniscient.\qt@no{(247)}}
+\qt@newcmd\qurantrans@fr@cclv{Et leur prophète leur dit: «Le signe de son investiture sera que le Coffre va vous revenir; objet de quiétude inspiré par votre Seigneur, et contenant les reliques de ce que laissèrent la famille de Moïse et la famille d'Aaron. Les Anges le porteront. Voilà bien là un signe pour vous, si vous êtes croyants!»\qt@no{(248)}}
+\qt@newcmd\qurantrans@fr@cclvi{Puis, au moment de partir avec les troupes, Tâlût dit: «Voici: Allah va vous éprouver par une rivière: quiconque y boira ne sera plus des miens; et quiconque n'y goûtera pas sera des miens; - passe pour celui qui y puisera un coup dans le creux de sa main.» Ils en burent, sauf un petit nombre d'entre eux. Puis, lorsqu'ils l'eurent traversée, lui et ceux des croyants qui l'accompagnaient, ils dirent: «Nous voilà sans force aujourd'hui contre Goliath et ses troupes!» Ceux qui étaient convaincus qu'ils auront à rencontrer Allah dirent: «Combien de fois une troupe peu nombreuse a, par la grâce d'Allah, vaincu une troupe très nombreuse! Et Allah est avec les endurants»\qt@no{(249)}}
+\qt@newcmd\qurantrans@fr@cclvii{Et quand ils affrontèrent Goliath et ses troupes, ils dirent: «Seigneur! Déverse sur nous l'endurance, affermis nos pas et donne-nous la victoire sur ce peuple infidèle».\qt@no{(250)}}
+\qt@newcmd\qurantrans@fr@cclviii{Ils les mirent en déroute, par la grâce d'Allah. Et David tua Goliath; et Allah lui donna la royauté et la sagesse, et lui enseigna ce qu'Il voulut. Et si Allah ne neutralisait pas une partie des hommes par une autre, la terre serait certainement corrompue. Mais Allah est Détenteur de la Faveur pour les mondes.\qt@no{(251)}}
+\qt@newcmd\qurantrans@fr@cclix{Voilà les versets d'Allah, que Nous te (Muhammad) récitons avec la vérité. Et tu es, certes parmi les Envoyés.\qt@no{(252)}}
+\qt@newcmd\qurantrans@fr@cclx{Parmi ces messagers, Nous avons favorisé certains par rapport à d'autres. Il en est à qui Allah a parlé; et Il en a élevé d'autres en grade. A Jésus fils de Marie Nous avons apporté les preuves, et l'avons fortifié par le Saint-Esprit. Et si Allah avait voulu, les gens qui vinrent après eux ne se seraient pas entretués, après que les preuves leur furent venues; mais ils se sont opposés: les uns restèrent croyants, les autres furent infidèles. Si Allah avait voulu, ils ne se seraient pas entretués; mais Allah fait ce qu'Il veut.\qt@no{(253)}}
+\qt@newcmd\qurantrans@fr@cclxi{O les croyants! Dépensez de ce que Nous vous avons attribué, avant que vienne le jour où il n'y aura ni rançon ni amitié ni intercession. Et ce sont les mécréants qui sont les injustes.\qt@no{(254)}}
+\qt@newcmd\qurantrans@fr@cclxii{Allah! Point de divinité à part Lui, le Vivant, Celui qui subsiste par lui-même «Al-Qayyûm». Ni somnolence ni sommeil ne Le saisissent. A Lui appartient tout ce qui est dans les cieux et sur la terre. Qui peut intercéder auprès de Lui sans Sa permission? Il connaît leur passé et leur futur. Et, de Sa science, ils n'embrassent que ce qu'Il veut. Son Trône «Kursiy», déborde les cieux et la terre, dont la garde ne Lui coûte aucune peine. Et Il est le Très Haut, le Très Grand.\qt@no{(255)}}
+\qt@newcmd\qurantrans@fr@cclxiii{Nulle contrainte en religion! Car le bon chemin s'est distingué de l'égarement. Donc, quiconque mécroit au Rebelle tandis qu'il croit en Allah saisit l'anse la plus solide, qui ne peut se briser. Et Allah est Audient et Omniscient.\qt@no{(256)}}
+\qt@newcmd\qurantrans@fr@cclxiv{Allah est le défenseur de ceux qui ont la foi: Il les fait sortir des ténèbres à la lumière. Quant à ceux qui ne croient pas, ils ont pour défenseurs les Tâghût, qui les font sortir de la lumière aux ténèbres. Voilà les gens du Feu, où ils demeurent éternellement.\qt@no{(257)}}
+\qt@newcmd\qurantrans@fr@cclxv{N'as-tu pas su (l'histoire de) celui qui, parce qu'Allah l'avait fait roi, argumenta contre Abraham au sujet de son Seigneur? Abraham ayant dit: «J'ai pour Seigneur Celui qui donne la vie et la mort», «Moi aussi, dit l'autre, je donne la vie et la mort.» Alors dit Abraham: «Puisqu'Allah fait venir le soleil du Levant, fais-le donc venir du Couchant.» Le mécréant resta alors confondu. Allah ne guide pas les gens injustes.\qt@no{(258)}}
+\qt@newcmd\qurantrans@fr@cclxvi{Ou comme celui qui passait par un village désert et dévasté: «Comment Allah va-t-Il redonner la vie à celui-ci après sa mort?» dit-il. Allah donc le fit mourir et le garda ainsi pendant cent ans. Puis Il le ressuscita en disant: «Combien de temps as-tu demeuré ainsi?» «Je suis resté un jour, dit l'autre, ou une partie d'une journée.» «Non! dit Allah, tu es resté cent ans. Regarde donc ta nourriture et ta boisson: rien ne s'est gâté; mais regarde ton âne... Et pour faire de toi un signe pour les gens, et regarde ces ossements, comment Nous les assemblons et les revêtons de chair». Et devant l'évidence, il dit: «Je sais qu'Allah est Omnipotent».\qt@no{(259)}}
+\qt@newcmd\qurantrans@fr@cclxvii{Et quand Abraham dit: «Seigneur! Montre-moi comment Tu ressuscites les morts», Allah dit: «Ne crois-tu pas encore?» «Si! dit Abraham; mais que mon cœur soit rassuré». «Prends donc, dit Allah, quatre oiseaux, apprivoise-les (et coupe-les) puis, sur des monts séparés, mets-en un fragment ensuite appelle-les: ils viendront à toi en toute hâte. Et sache qu'Allah est Puissant et sage.»\qt@no{(260)}}
+\qt@newcmd\qurantrans@fr@cclxviii{Ceux qui dépensent leurs biens dans le sentier d'Allah ressemblent à un grain d'où naissent sept épis, à cent grains l'épi. Car Allah multiplie la récompense à qui Il veut et la grâce d'Allah est immense, et Il est Omniscient.\qt@no{(261)}}
+\qt@newcmd\qurantrans@fr@cclxix{Ceux qui dépensent leurs biens dans le sentier d'Allah sans faire suivre leurs largesses ni d'un rappel ni d'un tort, auront leur récompense auprès de leur Seigneur. Nulle crainte pour eux, et ils ne seront point affligés.\qt@no{(262)}}
+\qt@newcmd\qurantrans@fr@cclxx{Une parole agréable et un pardon valent mieux qu'une aumône suivie d'un tort. Allah n'a besoin de rien, et Il est Indulgent.\qt@no{(263)}}
+\qt@newcmd\qurantrans@fr@cclxxi{O les croyants! N'annulez pas vos aumônes par un rappel ou un tort, comme celui qui dépense son bien par ostentation devant les gens sans croire en Allah et au Jour dernier. Il ressemble à un rocher recouvert de terre: qu'une averse l'atteigne, elle le laisse dénué. De pareils hommes ne tirent aucun profit de leurs actes. Et Allah ne guide pas les gens mécréants.\qt@no{(264)}}
+\qt@newcmd\qurantrans@fr@cclxxii{Et ceux qui dépensent leurs biens cherchant l'agrément d'Allah, et bien rassurés (de Sa récompense), ils ressemblent à un jardin sur une colline. Qu'une averse l'atteigne, il double ses fruits; à défaut d'une averse qui l'atteint, c'est la rosée. Et Allah voit parfaitement ce que vous faites.\qt@no{(265)}}
+\qt@newcmd\qurantrans@fr@cclxxiii{L'un de vous aimerait-il avoir un jardin de dattiers et de vignes sous lequel coulent les ruisseaux, et qui lui donne toutes espèces de fruits, que la vieillesse le rattrape, tandis que ses enfants sont encore petits, et qu'un tourbillon contenant du feu s'abatte sur son jardin et le brûle? Ainsi Allah vous explique les signes afin que vous méditiez!\qt@no{(266)}}
+\qt@newcmd\qurantrans@fr@cclxxiv{O les croyants! Dépensez des meilleures choses que vous avez gagnées et des récoltes que Nous avons fait sortir de la terre pour vous. Et ne vous tournez pas vers ce qui est vil pour en faire dépense. Ne donnez pas ce que vous-mêmes n'accepteriez qu'en fermant les yeux! Et sachez qu'Allah n'a besoin de rien et qu'Il est digne de louange.\qt@no{(267)}}
+\qt@newcmd\qurantrans@fr@cclxxv{Le Diable vous fait craindre l'indigence et vous commande des actions honteuses; tandis qu'Allah vous promet pardon et faveur venant de Lui. La grâce d'Allah est immense et Il est Omniscient.\qt@no{(268)}}
+\qt@newcmd\qurantrans@fr@cclxxvi{Il donne la sagesse à qui Il veut. Et celui à qui la sagesse est donnée, vraiment, c'est un bien immense qui lui est donné. Mais les doués d'intelligence seulement s'en souviennent.\qt@no{(269)}}
+\qt@newcmd\qurantrans@fr@cclxxvii{Quelles que soient les dépenses que vœus avez faites, ou le vou que vous avez voué, Allah le sait. Et pour les injustes, pas de secoureurs!\qt@no{(270)}}
+\qt@newcmd\qurantrans@fr@cclxxviii{Si vous donnez ouvertement vos aumônes, c'est bien; c'est mieux encore, pour vous, si vous êtes discrets avec elles et vous les donniez aux indigents. Allah effacera une partie de vos méfaits. Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(271)}}
+\qt@newcmd\qurantrans@fr@cclxxix{Ce n'est pas à toi de les guider (vers la bonne voie), mais c'est Allah qui guide qui Il veut. Et tout ce que vous dépensez de vos biens sera à votre avantage et vous ne dépensez que pour la recherche de la Face «Wajh» d'Allah. Et tout ce que vous dépensez de vos biens dans les bonnes œuvres vous sera récompensé pleinement. Et vous ne serez pas lésés.\qt@no{(272)}}
+\qt@newcmd\qurantrans@fr@cclxxx{Aux nécessiteux qui se sont confinés dans le sentier d'Allah, ne pouvant pas parcourir le monde, et que l'ignorant croit riches parce qu'ils ont honte de mendier - tu les reconnaîtras à leur aspect - Ils n'importunent personne en mendiant. Et tout ce que vous dépensez de vos biens, Allah le sait parfaitement.\qt@no{(273)}}
+\qt@newcmd\qurantrans@fr@cclxxxi{Ceux qui, de nuit et de jour, en secret et ouvertement, dépensent leurs biens (dans les bonnes œuvres), ont leur salaire auprès de leur Seigneur. Ils n'ont rien à craindre et ils ne seront point affligés.\qt@no{(274)}}
+\qt@newcmd\qurantrans@fr@cclxxxii{Ceux qui mangent [pratiquent] de l'intérêt usuraire ne se tiennent (au jour du Jugement dernier) que comme se tient celui que le toucher de Satan a bouleversé. Cela, parce qu'ils disent: «Le commerce est tout à fait comme l'intérêt». Alors qu'Allah a rendu licite le commerce, et illicite l'intérêt. Celui, donc, qui cesse dès que lui est venue une exhortation de son Seigneur, peut conserver ce qu'il a acquis auparavant; et son affaire dépend d'Allah. Mais quiconque récidive... alors les voilà, les gens du Feu! Ils y demeureront éternellement.\qt@no{(275)}}
+\qt@newcmd\qurantrans@fr@cclxxxiii{Allah anéantit l'intérêt usuraire et fait fructifier les aumônes. Et Allah n'aime pas le mécréant pécheur.\qt@no{(276)}}
+\qt@newcmd\qurantrans@fr@cclxxxiv{Ceux qui ont la foi, ont fait de bonnes œuvres, accompli la Salât et acquitté la Zakât auront certes leur récompense auprès de leur Seigneur. Pas de crainte pour eux, et ils ne seront point affligés.\qt@no{(277)}}
+\qt@newcmd\qurantrans@fr@cclxxxv{O les croyants! Craignez Allah; et renoncez au reliquat de l'intérêt usuraire, si vous êtes croyants.\qt@no{(278)}}
+\qt@newcmd\qurantrans@fr@cclxxxvi{Et si vous ne le faites pas, alors recevez l'annonce d'une guerre de la part d'Allah et de Son messager. Et si vous vous repentez, vous aurez vos capitaux. Vous ne léserez personne, et vous ne serez point lésés.\qt@no{(279)}}
+\qt@newcmd\qurantrans@fr@cclxxxvii{A celui qui est dans la gêne, accordez un sursis jusqu'à ce qu'il soit dans l'aisance. Mais il est mieux pour vous de faire remise de la dette par charité! Si vous saviez!\qt@no{(280)}}
+\qt@newcmd\qurantrans@fr@cclxxxviii{Et craignez le jour où vous serez ramenés vers Allah. Alors chaque âme sera pleinement rétribuée de ce qu'elle aura acquis. Et ils ne seront point lésés.\qt@no{(281)}}
+\qt@newcmd\qurantrans@fr@cclxxxix{O les croyants! Quand vous contractez une dette à échéance déterminée, mettez-la en écrit; et qu'un scribe l'écrive, entre vous, en toute justice; un scribe n'a pas à refuser d'écrire selon ce qu'Allah lui a enseigné; qu'il écrive donc, et que dicte le débiteur: qu'il craigne Allah son Seigneur, et se garde d'en rien diminuer. Si le débiteur est gaspilleur ou faible, ou incapable de dicter lui-même, que son représentant dicte alors en toute justice. Faites-en témoigner par deux témoins d'entre vos hommes; et à défaut de deux hommes, un homme et deux femmes d'entre ceux que vous agréez comme témoins, en sorte que si l'une d'elles s'égare, l'autre puisse lui rappeler. Et que les témoins ne refusent pas quand ils sont appelés. Ne vous lassez pas d'écrire la dette, ainsi que son terme, qu'elle soit petite ou grande: c'est plus équitable auprès d'Allah, et plus droit pour le témoignage, et plus susceptible d'écarter les doutes. Mais s'il s'agit d'une marchandise présente que vous négociez entre vous: dans ce cas, il n'y a pas de péché à ne pas l'écrire. Mais prenez des témoins lorsque vous faites une transaction entre vous; et qu'on ne fasse aucun tort à aucun scribe ni à aucun témoin. Si vous le faisiez, cela serait une perversité en vous. Et craignez Allah. Alors Allah vous enseigne et Allah est Omniscient.\qt@no{(282)}}
+\qt@newcmd\qurantrans@fr@ccxc{Mais si vous êtes en voyage et ne trouvez pas de scribe, un gage reçu suffit. S'il y a entre vous une confiance réciproque, que celui à qui on a confié quelque chose la restitue; et qu'il craigne Allah son Seigneur. Et ne cachez pas le témoignage: quiconque le cache a, certes, un cœur pécheur. Allah, de ce que vous faites, est Omniscient.\qt@no{(283)}}
+\qt@newcmd\qurantrans@fr@ccxci{C'est à Allah qu'appartient tout ce qui est dans les cieux et sur la terre. Que vous manifestiez ce qui est en vous ou que vous le cachiez, Allah vous en demandera compte. Puis Il pardonnera à qui Il veut, et châtiera qui Il veut. Et Allah est Omnipotent.\qt@no{(284)}}
+\qt@newcmd\qurantrans@fr@ccxcii{Le Messager a cru en ce qu'on a fait descendre vers lui venant de son Seigneur, et aussi les croyants: tous ont cru en Allah, en Ses anges, à Ses livres et en Ses messagers; (en disant): «Nous ne faisons aucune distinction entre Ses messagers». Et ils ont dit: «Nous avons entendu et obéi. Seigneur, nous implorons Ton pardon. C'est à Toi que sera le retour».\qt@no{(285)}}
+\qt@newcmd\qurantrans@fr@ccxciii{Allah n'impose à aucune âme une charge supérieure à sa capacité. Elle sera récompensée du bien qu'elle aura fait, punie du mal qu'elle aura fait. Seigneur, ne nous châtie pas s'il nous arrive d'oublier ou de commettre une erreur. Seigneur! Ne nous charge pas d'un fardeau lourd comme Tu as chargé ceux qui vécurent avant nous. Seigneur! Ne nous impose pas ce que nous ne pouvons supporter, efface nos fautes, pardonne-nous et fais nous miséricorde. Tu es Notre Maître, accorde-nous donc la victoire sur les peuples infidèles.\qt@no{(286)}}
+\qt@newcmd\qurantrans@fr@ccxciv{\basmalahfr Alif, Lâm, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@ccxcv{Allah! Pas de divinité à part Lui, le Vivant, Celui qui subsiste par Lui-même «Al-Qayyum».\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@ccxcvi{Il a fait descendre sur toi le Livre avec la vérité, confirmant les Livres descendus avant lui. Et Il fit descendre la Thora et l'Evangile.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@ccxcvii{auparavant, en tant que guide pour les gens. Et Il a fait descendre le Discernement. Ceux qui ne croient pas aux Révélations d'Allah auront, certes, un dur châtiment! Et, Allah est Puissant, Détenteur du pouvoir de punir.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@ccxcviii{Rien, vraiment, ne se cache d'Allah de ce qui existe sur la terre ou dans le ciel.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@ccxcix{C'est Lui qui vous donne forme dans les matrices comme Il veut. Point de divinité à part Lui, le Puissant, le Sage.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@ccc{C'est Lui qui a fait descendre sur toi le Livre: il s'y trouve des versets sans équivoque, qui sont la base du Livre, et d'autres versets qui peuvent prêter à d'interprétations diverses. Les gens, donc, qui ont au cœur une inclination vers l'égarement, mettent l' accent sur les versets à équivoque cherchant la dissension en essayant de leur trouver une interprétation, alors que nul n'en connaît l'interprétation, à part Allah. Mais ceux qui sont bien enracinés dans la science disent: «Nous y croyons: tout est de la part de notre Seigneur!» Mais, seuls les doués d'intelligence s'en rappellent.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@ccci{«Seigneur! Ne laisse pas dévier nos cœurs après que Tu nous aies guidés; et accorde-nous Ta miséricorde. C'est Toi, certes, le Grand Donateur!\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@cccii{Seigneur! C'est Toi qui rassembleras les gens, un jour - en quoi il n'y a point de doute - Allah, vraiment, ne manque jamais à Sa promesse.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@ccciii{Ceux qui ne croient pas, ni leurs biens ni leurs enfants ne les mettront aucunement à l' abri de la punition d'Allah. Ils seront du combustible pour le Feu,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@ccciv{comme les gens de Pharaon et ceux qui vécurent avant eux. Ils avaient traité de mensonges Nos preuves. Allah les saisit donc, pour leurs péchés. Et Allah est dur en punition.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@cccv{Dis à ceux qui ne croient pas: «Vous serez vaincus bientôt; et vous serez rassemblés vers l'Enfer. Et quel mauvais endroit pour se reposer!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@cccvi{Il y eut déjà pour vous un signe dans ces deux troupes qui s'affrontèrent: l'une combattait dans le sentier d'Allah; et l'autre, était mécréante. Ces derniers voyaient (les croyants) de leurs propres yeux, deux fois plus nombreux qu'eux-mêmes. Or Allah secourt qui Il veut de Son aide. Voilà bien là un exemple pour les doués de clairvoyance!\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@cccvii{On a enjolivé aux gens l'amour des choses qu'ils désirent: femmes, enfants, trésors thésaurisés d'or et d'argent, chevaux marqués, bétail et champs; tout cela est l'objet de jouissance pour la vie présente, alors que c'est près d'Allah qu'il y a bon retour.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@cccviii{Dis: «Puis-je vous apprendre quelque chose de meilleur que tout cela? Pour les pieux, il y a, auprès de leur Seigneur, des jardins sous lesquels coulent les ruisseaux, pour y demeurer éternellement, et aussi, des épouses purifiées, et l'agrément d'Allah.» Et Allah est Clairvoyant sur [Ses] serviteurs,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@cccix{qui disent: «O notre Seigneur, nous avons la foi; pardonne-nous donc nos péchés, et protège-nous du châtiment du Feu»,\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@cccx{ce sont les endurants, les véridiques, les obéissants, ceux qui dépensent [dans le sentier d'Allah] et ceux qui implorent pardon juste avant l'aube.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@cccxi{Allah atteste, et aussi les Anges et les doués de science, qu'il n'y a point de divinité à part Lui, le Mainteneur de la justice. Point de divinité à part Lui, le Puissant, le Sage!\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@cccxii{Certes, la religion acceptée d'Allah, c'est l'Islam. Ceux auxquels le Livre a été apporté ne se sont disputés, par agressivité entre eux, qu'après avoir reçu la science. Et quiconque ne croit pas aux signes d'Allah... alors Allah est prompt à demander compte!\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@cccxiii{S'ils te contredisent, dis leur: «Je me suis entièrement soumis à Allah, moi et ceux qui m'ont suivi». Et dis à ceux à qui le Livre a été donné, ainsi qu'aux illettrés: «Avez-vous embrassé l'Islam?» S'ils embrassent l'Islam, ils seront bien guidés. Mais; s'ils tournent le dos... Ton devoir n'est que la transmission (du message). Allah, sur [Ses] serviteurs est Clairvoyant.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@cccxiv{Ceux qui ne croient pas aux signes d'Allah, tuent sans droit les prophètes et tuent les gens qui commandent la justice, annonce-leur un châtiment douloureux.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@cccxv{Ce sont eux dont les œuvres sont devenues vaines, ici-bas comme dans l'au-delà. Et pour eux, pas de secoureurs!\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@cccxvi{N'as-tu pas vu comment agissent ceux qui ont reçu une part du Livre, et qui sont maintenant invités au Livre d'Allah pour trancher leurs différends; comment un groupe des leurs tourne le dos et s'esquive?\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@cccxvii{C'est parce qu'ils disent: «Le Feu ne nous touchera que pour un nombre de jours déterminés.» Et leurs mensonges les trompent en religion.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@cccxviii{Eh bien comment seront-ils, quand Nous les aurons rassemblés, en un jour sur quoi il n'y a point de doute, et que chaque âme sera pleinement rétribuée selon ce qu'elle aura acquis? Et ils ne seront point lésés.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@cccxix{- Dis: «O Allah, Maître de l'autorité absolue. Tu donnes l'autorité à qui Tu veux, et Tu arraches l'autorité à qui Tu veux; et Tu donnes la puissance à qui Tu veux, et Tu humilies qui Tu veux. Le bien est en Ta main et Tu es Omnipotent.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@cccxx{Tu fais pénétrer la nuit dans le jour, et Tu fais pénétrer le jour dans la nuit, et Tu fais sortir le vivant du mort, et Tu fais sortir le mort du vivant. Et Tu accordes attribution à qui Tu veux, sans compter».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@cccxxi{Que les croyants ne prennent pas, pour alliés, des infidèles, au lieu de croyants. Quiconque le fait contredit la religion d'Allah, à moins que vous ne cherchiez à vous protéger d'eux. Allah vous met en garde à l'égard de Lui-même. Et c'est à Allah le retour.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@cccxxii{Dis: «Que vous cachiez ce qui est dans vos poitrines ou bien vous le divulguiez, Allah le sait. Il connaît tout ce qui est dans les cieux et sur la terre. Et Allah est Omnipotent.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@cccxxiii{Le jour où chaque âme se trouvera confrontée avec ce qu'elle aura fait de bien et ce qu'elle aura fait de mal; elle souhaitera qu'il y ait entre elle et ce mal une longue distance! Allah vous met en garde à l'égard de Lui-même. Allah est Compatissant envers [Ses] serviteurs.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@cccxxiv{Dis: «Si vous aimez vraiment Allah, suivez-moi, Allah vous aimera alors et vous pardonnera vos péchés. Allah est Pardonneur et Miséricordieux.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@cccxxv{Dis: «Obéissez à Allah et au Messager. Et si vous tournez le dos... alors Allah n'aime pas les infidèles!\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@cccxxvi{Certes, Allah a élu Adam, Noé, la famille d'Abraham et la famille d''Imran au-dessus de tout le monde.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@cccxxvii{En tant que descendants les uns des autres, et Allah est Audient et Omniscient.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@cccxxviii{(Rappelle-toi) quand la femme de 'Imran dit: «Seigneur, je T'ai voué en toute exclusivité ce qui est dans mon ventre. Accepte-le donc, de moi. C'est Toi certes l' Audient et l'Omniscient.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@cccxxix{Puis, lorsqu'elle en eut accouché, elle dit: «Seigneur, voilà que j'ai accouché d'une fille» or Allah savait mieux ce dont elle avait accouché! Le garçon n'est pas comme la fille. «Je l'ai nommée Marie, et je la place, ainsi que sa descendance, sous Ta protection contre le Diable, le banni».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@cccxxx{Son Seigneur l'agréa alors du bon agrément, la fit croître en belle croissance. Et Il en confia la garde à Zacharie. Chaque fois que celui-ci entrait auprès d'elle dans le Sanctuaire, il trouvait près d'elle de la nourriture. Il dit: «O Marie, d'où te vient cette nourriture?» - Elle dit: «Cela me vient d'Allah». Il donne certes la nourriture à qui Il veut sans compter.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@cccxxxi{Alors, Zacharie pria son Seigneur, et dit: «O mon Seigneur, donne-moi, venant de Toi, une excellente descendance. Car Tu es Celui qui entend bien la prière».\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@cccxxxii{Alors, les Anges l'appelèrent pendant que, debout, il priait dans le Sanctuaire: «Voilà qu'Allah t'annonce la naissance de Yahya, confirmateur d'une parole d'Allah. Il sera un chef, un chaste, un prophète et du nombre des gens de bien».\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@cccxxxiii{Il dit: «O mon Seigneur, comment aurais-je un garçon maintenant que la vieillesse m'a atteint et que ma femme est stérile?» Allah dit: «Comme cela!», Allah fait ce qu'Il veut.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@cccxxxiv{- «Seigneur, dit Zacharie, donne-moi un signe.» - «Ton signe, dit Allah, c'est que pendant trois jours tu ne pourras parler aux gens que par geste. Invoque beaucoup Ton Seigneur; et, glorifie-Le, en fin et en début de journée.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@cccxxxv{(Rappelle-toi) quand les Anges dirent: «O Marie, certes Allah t'a élue et purifiée; et Il t'a élue au-dessus des femmes des mondes.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@cccxxxvi{«O Marie, obéis à Ton Seigneur, prosterne-toi, et incline-toi avec ceux qui s'inclinent».\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@cccxxxvii{- Ce sont là des nouvelles de l'Inconnaissable que Nous te révélons. Car tu n'étais pas là lorsqu'ils jetaient leurs calames pour décider qui se chargerait de Marie! Tu n'étais pas là non plus lorsqu'ils se disputaient!\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@cccxxxviii{(Rappelle-toi) quand les Anges dirent: «O Marie, voilà qu'Allah t'annonce une parole de Sa part: son nom sera «Al-Masîh», «'Issâ», fils de Marie, illustre ici-bas comme dans l'au-delà, et l'un des rapprochés d'Allah».\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@cccxxxix{Il parlera aux gens, dans le berceau et en son âge mûr et il sera du nombre des gens de bien».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@cccxl{- Elle dit: «Seigneur! Comment aurais-je un enfant, alors qu'aucun homme ne m'a touchée?» - «C'est ainsi!» dit-Il. Allah crée ce qu'Il veut. Quand Il décide d'une chose, Il lui dit seulement: «Sois» et elle est aussitôt.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@cccxli{Et (Allah) lui enseignera l'écriture, la sagesse, la Thora et l'Evangile,\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@cccxlii{et Il sera le messager aux enfants d'Israël, [et leur dira]: «En vérité, je viens à vous avec un signe de la part de votre Seigneur. Pour vous, je forme de la glaise comme la figure d'un oiseau, puis je souffle dedans: et, par la permission d'Allah, cela devient un oiseau. Et je guéris l'aveugle-né et le lépreux, et je ressuscite les morts, par la permission d'Allah. Et je vous apprends ce que vous mangez et ce que vous amassez dans vos maisons. Voilà bien là un signe, pour vous, si vous êtes croyants!\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@cccxliii{Et je confirme ce qu'il y a dans la Thora révélée avant moi, et je vous rends licite une partie de ce qui vous était interdit. Et j'ai certes apporté un signe de votre Seigneur. Craignez Allah donc, et obéissez-moi.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@cccxliv{Allah est mon Seigneur et votre Seigneur. Adorez-Le donc: voilà le chemin droit.»\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@cccxlv{Puis, quand Jésus ressentit de l'incrédulité, de leur part, il dit: «Qui sont mes alliés dans la voie d'Allah?» Les apôtres dirent: «Nous sommes les alliés d'Allah. Nous croyons en Allah. Et sois témoin que nous lui sommes soumis.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@cccxlvi{Seigneur! Nous avons cru à ce que Tu as fait descendre et suivi le messager. Inscris-nous donc parmi ceux qui témoignent».\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@cccxlvii{Et ils [les autres] se mirent à comploter. Allah a fait échouer leur complot. Et c'est Allah qui sait le mieux leur machination!\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@cccxlviii{(Rappelle-toi) quand Allah dit: «O Jésus, certes, Je vais mettre fin à ta vie terrestre t'élever vers Moi, te débarrasser de ceux qui n'ont pas cru et mettre jusqu'au Jour de la Résurrection, ceux qui te suivent au-dessus de ceux qui ne croient pas. Puis, c'est vers Moi que sera votre retour, et Je jugerai, entre vous, ce sur quoi vous vous opposiez.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@cccxlix{Quant à ceux qui n'ont pas cru, Je les châtierai d'un dur châtiment, ici-bas tout comme dans l'au-delà; et pour eux, pas de secoureurs.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@cccl{Et quant à ceux qui ont la foi et font de bonnes œuvres, Il leur donnera leurs récompenses. Et Allah n'aime pas les injustes.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@cccli{Voilà ce que Nous te récitons des versets et de la révélation précise.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@ccclii{Pour Allah, Jésus est comme Adam qu'Il créa de poussière, puis Il lui dit: «Sois»: et il fut.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@cccliii{La vérité vient de ton Seigneur. Ne sois donc pas du nombre des sceptiques.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@cccliv{A ceux qui te contredisent à son propos, maintenant que tu en es bien informé, tu n'as qu'à dire: «Venez, appelons nos fils et les vôtres, nos femmes et les vôtres, nos propres personnes et les vôtres, puis proférons exécration réciproque en appelant la malédiction d'Allah sur les menteurs.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@ccclv{Voilà, certes, le récit véridique. Et il n'y a pas de divinité à part Allah. En vérité, c'est Allah qui est le Puissant, le Sage.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@ccclvi{Si donc ils tournent le dos... alors Allah connaît bien les semeurs de corruption!\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@ccclvii{- Dis: «O gens du Livre, venez à une parole commune entre nous et vous: que nous n'adorions qu'Allah, sans rien Lui associer, et que nous ne prenions point les uns les autres pour seigneurs en dehors d'Allah». Puis, s'ils tournent le dos, dites: «Soyez témoins que nous, nous sommes soumis».\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@ccclviii{O gens du Livre, pourquoi disputez-vous au sujet d'Abraham, alors que la Thora et l'Evangile ne sont descendus qu'après lui? Ne raisonnez-vous donc pas?\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@ccclix{Vous avez bel et bien disputé à propos d'une chose dont vous avez connaissance. Mais pourquoi disputez-vous des choses dont vous n'avez pas connaissance? Or Allah sait, tandis que vous ne savez pas.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@ccclx{Abraham n'était ni Juif ni Chrétien. Il était entièrement soumis à Allah (Musulman). Et il n'était point du nombre des Associateurs.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@ccclxi{Certes les hommes les plus dignes de se réclamer d'Abraham, sont ceux qui l'ont suivi, ainsi que ce Prophète-ci, et ceux qui ont la foi. Et Allah est l'allié des croyants.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@ccclxii{Une partie des gens du Livre aurait bien voulu vous égarer. Or ils n'égarent qu'eux-mêmes; et ils n'en sont pas conscients.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@ccclxiii{O gens du Livre, pourquoi ne croyez vous pas aux versets d'Allah (le Coran), cependant que vous en êtes témoins?\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@ccclxiv{O gens du Livre, pourquoi mêlez-vous le faux au vrai et cachez-vous sciemment la vérité?\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@ccclxv{Ainsi dit une partie des gens du Livre: «Au début du jour, croyez à ce qui a été révélé aux Musulmans, mais, à la fin du jour, rejetez-le, afin qu'ils retournent (à leur ancienne religion).\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@ccclxvi{[Et les gens du Livre disent à leurs coreligionnaires]: «Ne croyez que ceux qui suivent votre religion...» Dis: «La vraie direction est la direction d'Allah» - [et ils disent encore: Vous ne devez ni approuver ni reconnaître] que quelqu'un d'autre que vous puisse recevoir comme ce que vous avez reçu de sorte qu'ils (les musulmans) ne puissent argumenter contre vous auprès de votre Seigneur. Dis-[leur]: En vérité, la grâce est en la main d'Allah. Il la donne à qui Il veut. La grâce d'Allah est immense et Il est Omniscient.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@ccclxvii{Il réserve à qui Il veut sa miséricorde. Et Allah est Détenteur d'une grâce immense.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@ccclxviii{Et parmi les gens du Livre, il y en a qui, si tu lui confies un qintâr, te le rend. Mais il y en a aussi qui, si tu lui confies un dinâr, ne te le rendra que si tu l'y contrains sans relâche. Tout cela parce qu'ils disent: «Ces (arabes) qui n'ont pas de livre n'ont aucun chemin pour nous contraindre.» Ils profèrent des mensonges contre Allah alors qu'ils savent.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@ccclxix{Au contraire, quiconque remplit sa promesse et craint Allah... Allah aime les pieux.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@ccclxx{Ceux qui vendent à vil prix leur engagement avec Allah ainsi que leurs serments n'auront aucune part dans l'au-delà, et Allah ne leur parlera pas, ni les regardera, au Jour de la Résurrection, ni ne les purifiera; et ils auront un châtiment douloureux.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@ccclxxi{Et il y a parmi eux certains qui roulent leurs langues en lisant le Livre pour vous faire croire que cela provient du Livre, alors qu'il n'est point du Livre; et ils disent: «Ceci vient d'Allah, alors qu'il ne vient point d'Allah. Ils disent sciemment des mensonges contre Allah.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@ccclxxii{Il ne conviendrait pas à un être humain à qui Allah a donné le Livre, la Compréhension et la Prophétie, de dire ensuite aux gens: «Soyez mes adorateurs, à l'exclusion d'Allah; mais au contraire, [il devra dire]: «Devenez des savants, obéissant au Seigneur, puisque vous enseignez le Livre et vous l'étudiez».\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@ccclxxiii{Et il ne va pas vous commander de prendre pour seigneurs anges et prophètes. Vous commanderait-il de rejeter la foi, vous qui êtes Musulmans?\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@ccclxxiv{Et lorsqu'Allah prit cet engagement des prophètes: «Chaque fois que Je vous accorderai un Livre et de la Sagesse, et qu'ensuite un messager vous viendra confirmer ce qui est avec vous, vous devez croire en lui, et vous devrez lui porter secours.» Il leur dit: «Consentez-vous et acceptez-vous Mon pacte à cette condition?» - «Nous consentons», dirent-ils. «Soyez-en donc témoins, dit Allah. Et Me voici, avec vous, parmi les témoins.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@ccclxxv{Quiconque ensuite tournera le dos... alors ce sont eux qui seront les pervers».\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@ccclxxvi{Désirent-ils une autre religion que celle d'Allah, alors que se soumet à Lui, bon gré, mal gré, tout ce qui existe dans les cieux et sur la terre, et que c'est vers Lui qu'ils seront ramenés?\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@ccclxxvii{Dis: «Nous croyons en Allah, à ce qu'on a fait descendre sur nous, à ce qu'on a fait descendre sur Abraham, Ismaël, Isaac, Jacob et les Tribus, et à ce qui a été apporté à Moïse, à Jésus et aux prophètes, de la part de leur Seigneur: nous ne faisons aucune différence entre eux; et c'est à Lui que nous sommes Soumis».\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@ccclxxviii{Et quiconque désire une religion autre que l'Islam, ne sera point agréé, et il sera, dans l'au-delà, parmi les perdants.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@ccclxxix{Comment Allah guiderait-Il des gens qui n'ont plus la foi après avoir cru et témoigné que le Messager est véridique, et après que les preuves leur sont venues? Allah ne guide pas les gens injustes.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@ccclxxx{Ceux là, leur rétribution sera qu'ils auront sur eux la malédiction d'Allah, des Anges et de tous les êtres humains.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@ccclxxxi{Ils y demeureront éternellement. Le châtiment ne leur sera pas allégé, et ils n'auront aucun répit,\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@ccclxxxii{excepté ceux qui par la suite se repentiront et se réformeront: car Allah est certes Pardonneur et Miséricordieux.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@ccclxxxiii{En vérité, ceux qui ne croient plus après avoir eu la foi, et laissent augmenter encore leur mécréance, leur repentir ne sera jamais accepté. Ceux-là sont vraiment les égarés.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@ccclxxxiv{Ceux qui ne croient pas et qui meurent mécréants, il ne sera jamais accepté, d'aucun d'eux de se racheter même si pour cela il (donnait) le contenu, en or, de la terre. Ils auront un châtiment douloureux, et ils n'auront point de secoureurs.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@ccclxxxv{Vous n'atteindrez la (vraie) piété, que si vous faites largesses de ce que vous chérissez. Tout ce dont vous faites largesses, Allah le sait certainement bien.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@ccclxxxvi{Toute nourriture était licite aux enfants d'Israël, sauf celle qu'Israël lui-même s'interdit avant que ne descendît la Thora. Dis-[leur]: «Apportez la Thora et lisez-la, si ce que vous dites est vrai!»\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@ccclxxxvii{Donc, quiconque, après cela, invente des mensonges contre Allah... ceux-là sont, donc, les vrais injustes.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@ccclxxxviii{Dis: «C'est Allah qui dit la vérité. Suivez donc la religion d'Abraham, Musulman droit. Et il n'était point des associateurs».\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@ccclxxxix{La première Maison qui ait été édifiée pour les gens, c'est bien celle de Bakka (la Mecque) bénie et une bonne direction pour l'univers.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@cccxc{Là sont des signes évidents, parmi lesquels l'endroit où Abraham s'est tenu debout; et quiconque y entre est en sécurité. Et c'est un devoir envers Allah pour les gens qui ont les moyens, d'aller faire le pèlerinage de la Maison. Et quiconque ne croit pas... Allah Se passe largement des mondes.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@cccxci{- Dis: «O gens du Livre, pourquoi ne croyez-vous pas aux versets d'Allah (al-Qur'ân), alors qu'Allah est témoin de ce que vous faites?»\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@cccxcii{- Dis: «O gens du Livre, pourquoi obstruez-vous la voie d'Allah à celui qui a la foi, et pourquoi voulez-vous rendre cette voie tortueuse, alors que vous êtes témoins de la vérité!» Et Allah n'est pas inattentif à ce que vous faites.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@cccxciii{O les croyants! Si vous obéissez à un groupe de ceux auxquels on a donné le Livre, il vous rendra mécréants après que vous ayez eu la foi.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@cccxciv{Et comment pouvez-vous ne pas croire, alors que les versets d'Allah vous sont récités, et qu'au milieu de vous se tient Son messager? Quiconque s'attache fortement à Allah, il est certes guidé vers un droit chemin.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@cccxcv{O les croyants! Craignez Allah comme Il doit être craint. Et ne mourez qu'en pleine soumission.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@cccxcvi{Et cramponnez-vous tous ensemble au «Habl» (câble) d'Allah et ne soyez pas divisés; et rappelez-vous le bienfait d'Allah sur vous: lorsque vous étiez ennemis, c'est Lui qui réconcilia vos cœurs. Puis, par Son bienfait, vous êtes devenus frères. Et alors que vous étiez au bord d'un abîme de Feu, c'est Lui qui vous en a sauvés. Ainsi Allah vous montre Ses signes afin que vous soyez bien guidés.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@cccxcvii{Que soit issue de vous une communauté qui appelle au bien, ordonne le convenable, et interdit le blâmable. Car ce seront eux qui réussiront.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@cccxcviii{Et ne soyez pas comme ceux qui se sont divisés et se sont mis à disputer, après que les preuves leur furent venues, et ceux-là auront un énorme châtiment.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@cccxcix{Au jour où certains visages s'éclaireront, et que d'autres s'assombriront. A ceux dont les visages seront assombris (il sera dit): «avez-vous mécru après avoir eu la foi?» Eh bien, goûtez au châtiment, pour avoir renié la foi.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@cd{Et quant à ceux dont les visages s'éclaireront, ils seront dans la miséricorde d'Allah, où ils demeureront éternellement.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@cdi{Tels sont les versets d'Allah; Nous te (Muhammad) les récitons avec vérité. Et Allah ne veut point léser les mondes.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@cdii{A Allah appartient tout ce qui est dans les cieux et sur la terre. Et c'est vers Allah que toute chose sera ramenée.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@cdiii{Vous êtes la meilleure communauté, qu'on ait fait surgir pour les hommes. Vous ordonnez le convenable, interdisez le blâmable et croyez à Allah. Si les gens du Livre croyaient, ce serait meilleur pour eux, il y en a qui ont la foi, mais la plupart d'entre eux sont des pervers.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@cdiv{Ils ne sauront jamais vous causer de grand mal, seulement une nuisance (par la langue); et s'ils vous combattent, ils vous tourneront le dos, et ils n'auront alors point de secours.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@cdv{Où qu'ils se trouvent, ils sont frappés d'avilissement, à moins d'un secours providentiel d'Allah ou d'un pacte conclu avec les hommes. Ils ont encouru la colère d'Allah, et les voilà frappés de malheur, pour n'avoir pas cru aux signes d'Allah, et assassiné injustement les prophètes, et aussi pour avoir désobéi et transgressé.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@cdvi{Mais ils ne sont pas tous pareils. Il est, parmi les gens du Livre, une communauté droite qui, aux heures de la nuit, récite les versets d'Allah en se prosternant.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@cdvii{Ils croient en Allah et au Jour dernier, ordonnent le convenable, interdisent le blâmable et concourent aux bonnes œuvres. Ceux-là sont parmi les gens de bien.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@cdviii{Et quelque bien qu'ils fassent, il ne leur sera pas dénié. Car Allah connaît bien les pieux.\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@cdix{Quant à ceux qui ne croient pas, ni leurs biens, ni leurs enfants ne pourront jamais leur servir contre la punition d'Allah. Et ce sont les gens du Feu: ils y demeureront éternellement.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@cdx{Ce qu'ils dépensent dans la vie présente ressemble à un vent glacial qui s'abat sur un champ appartenant à des gens qui se sont lésés eux-mêmes, et le détruit. Car ce n'est pas Allah qui leur cause du mal, mais ils se font du mal à eux-mêmes.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@cdxi{O les croyants, ne prenez pas de confidents en dehors de vous-mêmes: ils ne failliront pas à vous bouleverser. Ils souhaiteraient que vous soyez en difficulté. La haine certes s'est manifestée dans leurs bouches, mais ce que leurs poitrines cachent est encore plus énorme. Voilà que Nous vous exposons les signes. Si vous pouviez raisonner!\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@cdxii{Vous, (Musulmans) vous les aimez, alors qu'ils ne vous aiment pas; et vous avez foi dans le Livre tout entier. Et lorsqu'ils vous rencontrent, ils disent: «Nous croyons» et une fois seuls, de rage contre vous, ils se mordent les bouts des doigts. Dis: «mourez de votre rage». En vérité, Allah connaît fort bien le contenu des cœurs.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@cdxiii{Qu'un bien vous touche, ils s'en affligent. Qu'un mal vous atteigne, ils s'en réjouissent. Mais si vous êtes endurants et pieux, leur manigance ne vous causera aucun mal. Allah connaît parfaitement tout ce qu'ils font.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@cdxiv{Lorsqu'un matin, tu (Muhammad) quittas ta famille, pour assigner aux croyants les postes de combat et Allah est Audient et Omniscient.\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@cdxv{Quand deux de vos groupes songèrent à fléchir! Alors qu'Allah est leur allié à tous deux! Car, c'est en Allah que les croyants doivent placer leur confiance.\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@cdxvi{Allah vous a donné la victoire, à Badr, alors que vous étiez humiliés. Craignez Allah donc. Afin que vous soyez reconnaissants!\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@cdxvii{(Allah vous a bien donné la victoire) lorsque tu disais aux croyants; «Ne vous suffit-il pas que votre Seigneur vous fasse descendre en aide trois milliers d'Anges?»\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@cdxviii{Mais oui! Si vous êtes endurants et pieux, et qu'ils [les ennemis] vous assaillent immédiatement, votre Seigneur vous enverra en renfort cinq mille Anges marqués distinctement.\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@cdxix{Et Allah ne le fit que (pour vous annoncer) une bonne nouvelle, et pour que vos cœurs s'en rassurent. La victoire ne peut venir que d'Allah, le Puissant, le Sage;\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@cdxx{pour anéantir une partie des mécréants ou pour les humilier (par la défaite) et qu'ils en retournent donc déçus.\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@cdxxi{- Tu n'as (Muhammad) aucune part dans l'ordre (divin) - qu'Il (Allah) accepte leur repentir (en embrassant l'Islam) ou qu'Il les châtie, car ils sont bien des injustes.\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@cdxxii{A Allah appartient tout ce qui est dans les cieux et sur la terre. Il pardonne à qui Il veut, et Il châtie qui Il veut... Et Allah est Pardonneur et Miséricordieux.\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@cdxxiii{O les croyants! Ne pratiquez pas l'usure en multipliant démesurément votre capital. Et craignez Allah afin que vous réussissiez!\qt@no{(130)}}
+\qt@newcmd\qurantrans@fr@cdxxiv{Et craignez le Feu préparé pour les mécréants.\qt@no{(131)}}
+\qt@newcmd\qurantrans@fr@cdxxv{Et obéissez à Allah et au Messager afin qu'il vous soit fait miséricorde!\qt@no{(132)}}
+\qt@newcmd\qurantrans@fr@cdxxvi{Et concourez au pardon de votre Seigneur, et à un Jardin (paradis) large comme les cieux et la terre, préparé pour les pieux,\qt@no{(133)}}
+\qt@newcmd\qurantrans@fr@cdxxvii{qui dépensent dans l'aisance et dans l'adversité, qui dominent leur rage et pardonnent à autrui - car Allah aime les bienfaisants -\qt@no{(134)}}
+\qt@newcmd\qurantrans@fr@cdxxviii{et pour ceux qui, s'ils ont commis quelque turpitude ou causé quelque préjudice à leurs propres âmes (en désobéissant à Allah), se souviennent d'Allah et demandent pardon pour leurs péchés - et qui est-ce qui pardonne les péchés sinon Allah? - et qui ne persistent pas sciemment dans le mal qu'ils ont fait.\qt@no{(135)}}
+\qt@newcmd\qurantrans@fr@cdxxix{Ceux-là ont pour récompense le pardon de leur Seigneur, ainsi que les Jardins sous lesquels coulent les ruisseaux, pour y demeurer éternellement. Comme est beau le salaire de ceux qui font le bien!\qt@no{(136)}}
+\qt@newcmd\qurantrans@fr@cdxxx{Avant vous, certes, beaucoup d'événements se sont passés. Or, parcourez la terre, et voyez ce qu'il est advenu de ceux qui traitaient (les prophètes) de menteurs.\qt@no{(137)}}
+\qt@newcmd\qurantrans@fr@cdxxxi{Voilà un exposé pour les gens, un guide, et une exhortation pour les pieux.\qt@no{(138)}}
+\qt@newcmd\qurantrans@fr@cdxxxii{Ne vous laissez pas battre, ne vous affligez pas alors que vous êtes les supérieurs, si vous êtes de vrais croyants.\qt@no{(139)}}
+\qt@newcmd\qurantrans@fr@cdxxxiii{Si une blessure vous atteint, pareille blessure atteint aussi l'ennemi. Ainsi faisons-Nous alterner les jours (bons et mauvais) parmi les gens, afin qu'Allah reconnaisse ceux qui ont cru, et qu'Il choisisse parmi vous des martyrs - et Allah n'aime pas les injustes,\qt@no{(140)}}
+\qt@newcmd\qurantrans@fr@cdxxxiv{et afin qu'Allah purifie ceux qui ont cru, et anéantisse les mécréants.\qt@no{(141)}}
+\qt@newcmd\qurantrans@fr@cdxxxv{Comptez-vous entrer au Paradis sans qu'Allah ne distingue parmi vous ceux qui luttent et qui sont endurants?\qt@no{(142)}}
+\qt@newcmd\qurantrans@fr@cdxxxvi{Bien sûr, vous souhaitiez la mort avant de la rencontrer. Or vous l'avez vue, certes, tandis que vous regardiez!\qt@no{(143)}}
+\qt@newcmd\qurantrans@fr@cdxxxvii{Muhammad n'est qu'un messager - des messagers avant lui sont passés -. S'il mourait, donc, ou s'il était tué, retourneriez-vous sur vos talons? Quiconque retourne sur ses talons ne nuira en rien à Allah; et Allah récompensera bientôt les reconnaissants.\qt@no{(144)}}
+\qt@newcmd\qurantrans@fr@cdxxxviii{Personne ne peut mourir que par la permission d'Allah, et au moment prédéterminé. Quiconque veut la récompense d'ici-bas, Nous lui en donnons. Quiconque veut la récompense de l'au-delà, Nous lui en donnons, et Nous récompenserons bientôt les reconnaissants.\qt@no{(145)}}
+\qt@newcmd\qurantrans@fr@cdxxxix{Combien de prophètes ont combattu, en compagnie de beaucoup de disciples, ceux-ci ne fléchirent pas à cause de ce qui les atteignit dans le sentier d'Allah. Ils ne faiblirent pas et ils ne cédèrent point. Et Allah aime les endurants.\qt@no{(146)}}
+\qt@newcmd\qurantrans@fr@cdxl{Et ils n'eurent que cette parole: «Seigneur, pardonne-nous nos péchés ainsi que nos excès dans nos comportements, affermis nos pas et donne-nous la victoire sur les gens mécréants».\qt@no{(147)}}
+\qt@newcmd\qurantrans@fr@cdxli{Allah, donc, leur donna la récompense d'ici-bas, ainsi que la belle récompense de l'au-delà. Et Allah aime les gens bienfaisants.\qt@no{(148)}}
+\qt@newcmd\qurantrans@fr@cdxlii{O les croyants! Si vous obéissez à ceux qui ne croient pas, ils vous feront retourner en arrière. Et vous reviendrez perdants.\qt@no{(149)}}
+\qt@newcmd\qurantrans@fr@cdxliii{Mais c'est Allah votre Maître. Il est le meilleur des secoureurs.\qt@no{(150)}}
+\qt@newcmd\qurantrans@fr@cdxliv{Nous allons jeter l'effroi dans les cœurs des mécréants. Car ils ont associé à Allah (des idoles) sans aucune preuve descendue de Sa part. Le Feu sera leur refuge. Quel mauvais séjour, que celui des injustes!\qt@no{(151)}}
+\qt@newcmd\qurantrans@fr@cdxlv{Et certes, Allah a tenu Sa promesse envers vous, quand par Sa permission vous les tuiez sans relâche, jusqu'au moment où vous avez fléchi, où vous vous êtes disputés à propos de l'ordre donné, et vous avez désobéi après qu'Il vous eut montré (la victoire) que vous aimez! Il en était parmi vous qui désiraient la vie d'ici-bas et il en était parmi vous qui désiraient l'au-delà. Puis Il vous a fait reculer devant eux, afin de vous éprouver. Et certes Il vous a pardonné. Et Allah est Détenteur de la grâce envers les croyants.\qt@no{(152)}}
+\qt@newcmd\qurantrans@fr@cdxlvi{(Rappelez-vous) quand vous fuyiez sans vous retourner vers personne, cependant que, derrière vous, le Messager vous appelait. Alors Il vous infligea angoisse sur angoisse, afin que vous n'ayez pas de chagrin pour ce qui vous a échappé ni pour les revers que vous avez subis. Et Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(153)}}
+\qt@newcmd\qurantrans@fr@cdxlvii{Puis Il fit descendre sur vous, après l'angoisse, la tranquillité, un sommeil qui enveloppa une partie d'entre vous, tandis qu'une autre partie était soucieuse pour elle-même et avait des pensées sur Allah non conformes à la vérité, des pensées dignes de l'époque de l'Ignorance. - Ils disaient: «Est-ce que nous avons une part dans cette affaire?» Dis: «L'affaire toute entière est à Allah.» Ce qu'ils ne te révèlent pas, ils le cachent en eux-mêmes: «Si nous avions eu un choix quelconque dans cette affaire, disent-ils, Nous n'aurions pas été tués ici.» Dis: «Eussiez-vous été dans vos maisons, ceux pour qui la mort était décrétée seraient sortis pour l'endroit où la mort les attendait. Ceci afin qu'Allah éprouve ce que vous avez dans vos poitrines, et qu'Il purifie ce que vous avez dans vos cœurs. Et Allah connaît ce qu'il y a dans les cœurs.\qt@no{(154)}}
+\qt@newcmd\qurantrans@fr@cdxlviii{Ceux d'entre vous qui ont tourné le dos, le jour où les deux armées se rencontrèrent, c'est seulement le Diable qui les a fait broncher, à cause d'une partie de leurs (mauvaises) actions. Mais, certes, Allah leur a pardonné. Car vraiment Allah est Pardonneur et Indulgent!\qt@no{(155)}}
+\qt@newcmd\qurantrans@fr@cdxlix{O les croyants! Ne soyez pas comme ces mécréants qui dirent à propos de leurs frères partis en voyage ou pour combattre: «S'ils étaient chez nous, ils ne seraient pas morts, et ils n'auraient pas été tués.» Allah en fit un sujet de regret dans leurs cœurs. C'est Allah qui donne la vie et la mort. Et Allah observe bien ce que vous faites.\qt@no{(156)}}
+\qt@newcmd\qurantrans@fr@cdl{Et si vous êtes tués dans le sentier d'Allah ou si vous mourez, un pardon de la part d'Allah et une miséricorde valent mieux que ce qu'ils amassent.\qt@no{(157)}}
+\qt@newcmd\qurantrans@fr@cdli{Que vous mouriez ou que vous soyez tués, c'est vers Allah que vous serez rassemblés.\qt@no{(158)}}
+\qt@newcmd\qurantrans@fr@cdlii{C'est par quelque miséricorde de la part d'Allah que tu (Muhammad) as été si doux envers eux! Mais si tu étais rude, au cœur dur, ils se seraient enfuis de ton entourage. Pardonne-leur donc, et implore pour eux le pardon (d'Allah). Et consulte-les à propos des affaires; puis une fois que tu t'es décidé, confie-toi donc à Allah, Allah aime, en vérité, ceux qui Lui font confiance.\qt@no{(159)}}
+\qt@newcmd\qurantrans@fr@cdliii{Si Allah vous donne Son secours, nul ne peut vous vaincre. S'Il vous abandonne, qui donc après Lui vous donnera secours? C'est à Allah que les croyants doivent faire confiance.\qt@no{(160)}}
+\qt@newcmd\qurantrans@fr@cdliv{Un prophète n'est pas quelqu'un à s'approprier du butin. Quiconque s'en approprie, viendra avec ce qu'il se sera approprié le Jour de la Résurrection. Alors, à chaque individu on rétribuera pleinement ce qu'il aura acquis. Et ils ne seront point lésés.\qt@no{(161)}}
+\qt@newcmd\qurantrans@fr@cdlv{Est-ce que celui qui se conforme à l'agrément d'Allah ressemble à celui qui encourt le courroux d'Allah? Son refuge sera l'Enfer; et quelle mauvaise destination!\qt@no{(162)}}
+\qt@newcmd\qurantrans@fr@cdlvi{Ils ont des grades (différents) auprès d'Allah et Allah observe bien ce qu'ils font.\qt@no{(163)}}
+\qt@newcmd\qurantrans@fr@cdlvii{Allah a très certainement fait une faveur aux croyants lorsqu'Il a envoyé chez eux un messager de parmi eux-mêmes, qui leur récite Ses versets, les purifie et leur enseigne le Livre et la Sagesse, bien qu'ils fussent auparavant dans un égarement évident.\qt@no{(164)}}
+\qt@newcmd\qurantrans@fr@cdlviii{Quoi! Quand un malheur vous atteint - mais vous en avez jadis infligé le double - vous dites: «D'où vient cela?» Réponds-leur: «Il vient de vous-mêmes». Certes Allah est Omnipotent.\qt@no{(165)}}
+\qt@newcmd\qurantrans@fr@cdlix{Et tout ce que vous avez subi, le jour où les deux troupes se rencontrèrent, c'est par permission d'Allah, et afin qu'Il distingue les croyants,\qt@no{(166)}}
+\qt@newcmd\qurantrans@fr@cdlx{et qu'Il distingue les hypocrites. On avait dit à ceux-ci: «Venez combattre dans le sentier d'Allah, ou repoussez [l'ennemi»], ils dirent: «Bien sûr que nous vous suivrions si nous étions sûrs qu'il y aurait une guerre.» Ils étaient, ce jour-là, plus près de la mécréance que de la foi. Ils disaient de leurs bouches ce qui n'était pas dans leurs cœurs. Et Allah sait fort bien ce qu'ils cachaient.\qt@no{(167)}}
+\qt@newcmd\qurantrans@fr@cdlxi{Ceux qui sont restés dans leurs foyers dirent à leurs frères: «S'ils nous avaient obéi, ils n'auraient pas été tués.» Dis: «Ecartez donc de vous la mort, si vous êtes véridiques».\qt@no{(168)}}
+\qt@newcmd\qurantrans@fr@cdlxii{Ne pense pas que ceux qui ont été tués dans le sentier d'Allah, soient morts. Au contraire, ils sont vivants, auprès de leur Seigneur, bien pourvus\qt@no{(169)}}
+\qt@newcmd\qurantrans@fr@cdlxiii{et joyeux de la faveur qu'Allah leur a accordée, et ravis que ceux qui sont restés derrière eux et ne les ont pas encore rejoints, ne connaîtront aucune crainte et ne seront point affligés.\qt@no{(170)}}
+\qt@newcmd\qurantrans@fr@cdlxiv{Ils sont ravis d'un bienfait d'Allah et d'une faveur, et du fait qu'Allah ne laisse pas perdre la récompense des croyants.\qt@no{(171)}}
+\qt@newcmd\qurantrans@fr@cdlxv{Ceux qui, quoiqu'atteints de blessure, répondirent à l'appel d'Allah et du Messager, il y aura une énorme récompense pour ceux d'entre eux qui ont agi en bien et pratiqué la piété.\qt@no{(172)}}
+\qt@newcmd\qurantrans@fr@cdlxvi{Certes ceux auxquels l'on disait: «Les gens se sont rassemblés contre vous; craignez-les» - cela accrut leur foi - et ils dirent: «Allah nous suffit; Il est notre meilleur garant».\qt@no{(173)}}
+\qt@newcmd\qurantrans@fr@cdlxvii{Ils revinrent donc avec un bienfait de la part d'Allah et une grâce. Nul mal ne les toucha et ils suivirent ce qui satisfait Allah. Et Allah est Détenteur d'une grâce immense.\qt@no{(174)}}
+\qt@newcmd\qurantrans@fr@cdlxviii{C'est le Diable qui vous fait peur de ses adhérents. N'ayez donc pas peur d'eux. Mais ayez peur de Moi, si vous êtes croyants.\qt@no{(175)}}
+\qt@newcmd\qurantrans@fr@cdlxix{N'aie (ô Muhammad) aucun chagrin pour ceux qui se jettent rapidement dans la mécréance. En vérité, ils ne nuiront en rien à Allah. Allah tient à ne leur assigner aucune part de biens dans l'au-delà. Et pour eux il y aura un énorme châtiment.\qt@no{(176)}}
+\qt@newcmd\qurantrans@fr@cdlxx{Ceux qui auront troqué la croyance contre la mécréance ne nuiront en rien à Allah. Et pour eux un châtiment douloureux.\qt@no{(177)}}
+\qt@newcmd\qurantrans@fr@cdlxxi{Que ceux qui n'ont pas cru ne comptent pas que ce délai que Nous leur accordons soit à leur avantage. Si Nous leur accordons un délai, c'est seulement pour qu'ils augmentent leurs péchés. Et pour eux un châtiment avilissant.\qt@no{(178)}}
+\qt@newcmd\qurantrans@fr@cdlxxii{Allah n'est point tel qu'Il laisse les croyants dans l'état où vous êtes jusqu'à ce qu'Il distingue le mauvais du bon. Et Allah n'est point tel qu'Il vous dévoile l'Inconnaissable. Mais Allah choisit parmi Ses messagers qui Il veut. Croyez donc en Allah et en Ses messagers. Et si vous avez la foi et la piété, vous aurez alors une récompense énorme.\qt@no{(179)}}
+\qt@newcmd\qurantrans@fr@cdlxxiii{Que ceux qui gardent avec avarice ce qu'Allah leur donne par Sa grâce, ne comptent point cela comme bon pour eux. Au contraire, c'est mauvais pour eux: au Jour de la Résurrection, on leur attachera autour du cou ce qu'ils ont gardé avec avarice. C'est Allah qui a l'héritage des cieux et de la terre. Et Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(180)}}
+\qt@newcmd\qurantrans@fr@cdlxxiv{Allah a certainement entendu la parole de ceux qui ont dit: «Allah est pauvre et nous sommes riches.» Nous enregistrons leur parole, ainsi que leur meurtre, sans droit, des prophètes. Et Nous leur dirons: «Goûtez au châtiment de la fournaise.\qt@no{(181)}}
+\qt@newcmd\qurantrans@fr@cdlxxv{Cela, à cause de ce que vos mains ont accompli (antérieurement)!» Car Allah ne fait point de tort aux serviteurs.\qt@no{(182)}}
+\qt@newcmd\qurantrans@fr@cdlxxvi{Ceux-là mêmes qui ont dit: «Vraiment Allah nous a enjoint de ne pas croire en un messager tant qu'Il ne nous a pas apporté une offrande que le feu consume». - Dis: «Des messagers avant moi vous sont, certes, venus avec des preuves, et avec ce que vous avez dit [demandé]. Pourquoi donc les avez-vous tués, si vous êtes véridiques?»\qt@no{(183)}}
+\qt@newcmd\qurantrans@fr@cdlxxvii{S'ils te (Muhammad) traitent de menteur, des prophètes avant toi, ont certes été traités de menteurs. Ils étaient venus avec les preuves claires, les Psaumes et le Livre lumineux.\qt@no{(184)}}
+\qt@newcmd\qurantrans@fr@cdlxxviii{Toute âme goûtera la mort. Mais c'est seulement au Jour de la Résurrection que vous recevrez votre entière rétribution. Quiconque donc est écarté du Feu et introduit au Paradis, a certes réussi. Et la vie présente n'est qu'un objet de jouissance trompeuse.\qt@no{(185)}}
+\qt@newcmd\qurantrans@fr@cdlxxix{Certes vous serez éprouvés dans vos biens et vos personnes; et certes vous entendrez de la part de ceux à qui le Livre a été donné avant vous, et de la part des Associateurs, beaucoup de propos désagréables. Mais si vous êtes endurants et pieux... voilà bien la meilleure résolution à prendre.\qt@no{(186)}}
+\qt@newcmd\qurantrans@fr@cdlxxx{Allah prit, de ceux auxquels le Livre était donné, cet engagement: «Exposez-le, certes, aux gens et ne le cachez pas». Mais ils l'ont jeté derrière leur dos et l'ont vendu à vil prix. Quel mauvais commerce ils ont fait!\qt@no{(187)}}
+\qt@newcmd\qurantrans@fr@cdlxxxi{Ne pense point que ceux-là qui exultent de ce qu'ils ont fait, et qui aiment qu'on les loue pour ce qu'ils n'ont pas fait, ne pense point donc, qu'ils trouvent une échappatoire au châtiment. Pour eux, il y aura un châtiment douloureux!\qt@no{(188)}}
+\qt@newcmd\qurantrans@fr@cdlxxxii{A Allah appartient le royaume des cieux et de la terre. Et Allah est Omnipotent.\qt@no{(189)}}
+\qt@newcmd\qurantrans@fr@cdlxxxiii{En vérité, dans la création des cieux et de la terre, et dans l'alternance de la nuit et du jour, il y a certes des signes pour les doués d'intelligence,\qt@no{(190)}}
+\qt@newcmd\qurantrans@fr@cdlxxxiv{qui, debout, assis, couchés sur leurs côtés, invoquent Allah et méditent sur la création des cieux et de la terre (disant): «Notre Seigneur! Tu n'as pas créé cela en vain. Gloire à Toi! Garde-nous du châtiment du Feu.\qt@no{(191)}}
+\qt@newcmd\qurantrans@fr@cdlxxxv{Seigneur! Quiconque Tu fais entrer dans le Feu, Tu le couvres vraiment d'ignominie. Et pour les injustes, il n'y a pas de secoureurs!\qt@no{(192)}}
+\qt@newcmd\qurantrans@fr@cdlxxxvi{Seigneur! Nous avons entendu l'appel de celui qui a appelé ainsi à la foi: «Croyez en votre Seigneur» et dès lors nous avons cru. Seigneur, pardonne-nous nos péchés, efface de nous nos méfaits, et place nous, à notre mort, avec les gens de bien.\qt@no{(193)}}
+\qt@newcmd\qurantrans@fr@cdlxxxvii{Seigneur! Donne-nous ce que Tu nous as promis par Tes messagers. Et ne nous couvre pas d'ignominie au Jour de la Résurrection. Car Toi, Tu ne manques pas à Ta promesse».\qt@no{(194)}}
+\qt@newcmd\qurantrans@fr@cdlxxxviii{Leur Seigneur les a alors exaucés (disant): «En vérité, Je ne laisse pas perdre le bien que quiconque parmi vous a fait, homme ou femme, car vous êtes les uns des autres. Ceux donc qui ont émigré, qui ont été expulsés de leurs demeures, qui ont été persécutés dans Mon chemin, qui ont combattu, qui ont été tués, Je tiendrai certes pour expiées leurs mauvaises actions, et les ferai entrer dans les Jardins sous lesquels coulent les ruisseaux, comme récompense de la part d'Allah.» Quant à Allah, c'est auprès de Lui qu'est la plus belle récompense.\qt@no{(195)}}
+\qt@newcmd\qurantrans@fr@cdlxxxix{Que ne t'abuse point la versatilité [pour la prospérité] dans le pays, de ceux qui sont infidèles.\qt@no{(196)}}
+\qt@newcmd\qurantrans@fr@cdxc{Piètre jouissance! Puis leur refuge sera l'Enfer. Et quelle détestable couche!\qt@no{(197)}}
+\qt@newcmd\qurantrans@fr@cdxci{Mais quant à ceux qui craignent leur Seigneur, ils auront des Jardins sous lesquels coulent les ruisseaux, pour y demeurer éternellement, un lieu d'accueil de la part d'Allah. Et ce qu'il y a auprès d'Allah est meilleur, pour les pieux.\qt@no{(198)}}
+\qt@newcmd\qurantrans@fr@cdxcii{Il y a certes, parmi les gens du Livre ceux qui croient en Allah et en ce qu'on a fait descendre vers vous et en ce qu'on a fait descendre vers eux. Ils sont humbles envers Allah, et ne vendent point les versets d'Allah à vil prix. Voilà ceux dont la récompense est auprès de leur Seigneur. En vérité, Allah est prompt à faire les comptes.\qt@no{(199)}}
+\qt@newcmd\qurantrans@fr@cdxciii{O les croyants! Soyez endurants. Incitez-vous à l'endurance. Luttez constamment (contre l'ennemi) et craignez Allah, afin que vous réussissiez!\qt@no{(200)}}
+\qt@newcmd\qurantrans@fr@cdxciv{\basmalahfr O hommes! Craignez votre Seigneur qui vous a créés d'un seul être, et a créé de celui-ci son épouse, et qui de ces deux là a fait répandre (sur la terre) beaucoup d'hommes et de femmes. Craignez Allah au nom duquel vous vous implorez les uns les autres, et craignez de rompre les liens du sang. Certes Allah vous observe parfaitement.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@cdxcv{Et donnez aux orphelins leurs biens; n'y substituez pas le mauvais au bon. Ne mangez pas leurs biens avec les vôtres: c'est vraiment un grand péché.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@cdxcvi{Et si vous craignez de n'être pas justes envers les orphelins,... Il est permis d'épouser deux, trois ou quatre, parmi les femmes qui vous plaisent, mais, si vous craignez de n'être pas justes avec celles-ci, alors une seule, ou des esclaves que vous possédez. Cela, afin de ne pas faire d'injustice (ou afin de ne pas aggraver votre charge de famille).\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@cdxcvii{Et donnez aux épouses leur mahr, de bonne grâce. Si de bon gré, elles vous en abandonnent quelque chose, disposez-en alors à votre aise et de bon cœur.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@cdxcviii{Et ne confiez pas aux incapables vos biens dont Allah a fait votre subsistance. Mais prélevez-en, pour eux, nourriture et vêtement; et parlez-leur convenablement.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@cdxcix{Et éprouvez (la capacité) des orphelins jusqu'à ce qu'ils atteignent (l'aptitude) au mariage; et si vous ressentez en eux une bonne conduite, remettez-leur leurs biens. Ne les utilisez pas (dans votre intérêt) avec gaspillage et dissipation, avant qu'ils ne grandissent. Quiconque est aisé, qu'il s'abstienne d'en prendre lui-même. S'il est pauvre, alors qu'il en utilise raisonnablement: et lorsque vous leur remettez leurs biens, prenez des témoins à leur encontre. Mais Allah suffit pour observer et compter.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@d{Aux hommes revient une part de ce qu'ont laissé les père et mère ainsi que les proches; et aux femmes une part de ce qu'ont laissé les père et mère ainsi que les proches, que ce soit peu ou beaucoup: une part fixée.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@di{Et lorsque les proches parents, les orphelins, les nécessiteux assistent au partage, offrez-leur quelque chose de l'héritage, et parlez-leur convenablement.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@dii{Que la crainte saisisse ceux qui laisseraient après eux une descendance faible, et qui seraient inquiets à leur sujet; qu'ils redoutent donc Allah et qu'ils prononcent des paroles justes.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@diii{Ceux qui mangent [disposent] injustement des biens des orphelins ne font que manger du feu dans leurs ventres. Ils brûleront bientôt dans les flammes de l'Enfer.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@div{Voici ce qu'Allah vous enjoint au sujet de vos enfants: au fils, une part équivalente à celle de deux filles. S'il n'y a que des filles, même plus de deux, à elles alors deux tiers de ce que le défunt laisse. Et s'il n'y en a qu'une, à elle alors la moitié. Quant aux père et mère du défunt, à chacun d'eux le sixième de ce qu'il laisse, s'il a un enfant. S'il n'a pas d'enfant et que ses père et mère héritent de lui, à sa mère alors le tiers. Mais s'il a des frères, à la mère alors le sixième, après exécution du testament qu'il aurait fait ou paiement d'une dette. De vos ascendants ou descendants, vous ne savez pas qui est plus près de vous en utilité. Ceci est un ordre obligatoire de la part d'Allah, car Allah est, certes, Omniscient et Sage.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@dv{Et à vous la moitié de ce que laissent vos épouses, si elles n'ont pas d'enfants. Si elles ont un enfant, alors à vous le quart de ce qu'elles laissent, après exécution du testament qu'elles auraient fait ou paiement d'une dette. Et à elles un quart de ce que vous laissez, si vous n'avez pas d'enfant. Mais si vous avez un enfant, à elles alors le huitième de ce que vous laissez après exécution du testament que vous auriez fait ou paiement d'une dette. Et si un homme, ou une femme meurt sans héritier direct, cependant qu'il laisse un frère ou une sœur, à chacun de ceux-ci alors, un sixième. S'ils sont plus de deux, tous alors participeront au tiers, après exécution du testament ou paiement d'une dette, sans préjudice à quiconque. (Telle est l') Injonction d'Allah! Et Allah est Omniscient et Indulgent.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@dvi{Tels sont les ordres d'Allah. Et quiconque obéit à Allah et à Son messager, Il le fera entrer dans les Jardins sous lesquels coulent les ruisseaux, pour y demeurer éternellement. Et voilà la grande réussite.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@dvii{Et quiconque désobéit à Allah et à Son messager, et transgresse Ses ordres, Il le fera entrer au Feu pour y demeurer éternellement. Et celui-là aura un châtiment avilissant.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@dviii{Celles de vos femmes qui forniquent, faites témoigner à leur encontre quatre d'entre vous. S'ils témoignent, alors confinez ces femmes dans vos maisons jusqu'à ce que la mort les rappelle ou qu'Allah décrète un autre ordre à leur égard.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@dix{Les deux d'entre vous qui l'ont commise [la fornication], sévissez contre eux. S'ils se repentent ensuite et se réforment, alors laissez-les en paix. Allah demeure Accueillant au repentir et Miséricordieux.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@dx{Allah accueille seulement le repentir de ceux qui font le mal par ignorance et qui aussitôt se repentent. Voilà ceux de qui Allah accueille le repentir. Et Allah est Omniscient et Sage.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@dxi{Mais l'absolution n'est point destinée à ceux qui font de mauvaises actions jusqu'au moment où la mort se présente à l'un d'eux, et qui s'écrie: «Certes, je me repens maintenant» - non plus pour ceux qui meurent mécréants. Et c'est pour eux que Nous avons préparé un châtiment douloureux.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@dxii{O les croyants! Il ne vous est pas licite d'hériter des femmes contre leur gré. Ne les empêchez pas de se remarier dans le but de leur ravir une partie de ce que vous aviez donné, à moins qu'elles ne viennent à commettre un péché prouvé. Et comportez-vous convenablement envers elles. Si vous avez de l'aversion envers elles durant la vie commune, il se peut que vous ayez de l'aversion pour une chose où Allah a déposé un grand bien.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@dxiii{Si vous voulez substituer une épouse à une autre, et que vous ayez donné à l'une un qintâr, n'en reprenez rien. Quoi! Le reprendriez-vous par injustice et péché manifeste?\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@dxiv{Comment oseriez-vous le reprendre, après que l'union la plus intime vous ait associés l'un à l'autre et qu'elles aient obtenu de vous un engagement solennel?\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@dxv{Et n'épousez pas les femmes que vos pères ont épousées, exception faite pour le passé. C'est une turpitude, une abomination, et quelle mauvaise conduite!\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@dxvi{Vous sont interdites vos mères, filles, sœurs, tantes paternelles et tantes maternelles, filles d'un frère et filles d'une sœur, mères qui vous ont allaités, sœurs de lait, mères de vos femmes, belles-filles sous votre tutelle et issues des femmes avec qui vous avez consommé le mariage; si le mariage n'a pas été consommé, ceci n'est pas un péché de votre part; les femmes de vos fils nés de vos reins; de même que deux sœurs réunies - exception faite pour le passé. Car vraiment Allah est Pardonneur et Miséricordieux;\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@dxvii{et, parmi les femmes, les dames (qui ont un mari), sauf si elles sont vos esclaves en toute propriété. Prescription d'Allah sur vous! A part cela, il vous est permis de les rechercher, en vous servant de vos biens et en concluant mariage, non en débauchés. Puis, de même que vous jouissez d'elles, donnez-leur leur mahr comme une chose due. Il n'y a aucun péché contre vous à ce que vous concluez un accord quelconque entre vous après la fixation du mahr Car Allah est, certes, Omniscient et Sage.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@dxviii{Et quiconque parmi vous n'a pas les moyens pour épouser des femmes libres (non esclaves) croyantes, eh bien (il peut épouser) une femme parmi celles de vos esclaves croyantes. Allah connaît mieux votre foi, car vous êtes les uns des autres (de la même religion). Et épousez-les avec l'autorisation de leurs maîtres (Waliy) et donnez-leur un mahr convenable; (épousez-les) étant vertueuses et non pas livrées à la débauche ni ayant des amants clandestins. Si, une fois engagées dans le mariage, elles commettent l'adultère, elles reçoivent la moitié du châtiment qui revient aux femmes libres (non esclaves) mariées. Ceci est autorisé à celui d'entre vous qui craint la débauche; mais ce serait mieux pour vous d'être endurant. Et Allah est Pardonneur et Miséricordieux.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@dxix{Allah veut vous éclairer, vous montrer les voies des hommes d'avant vous, et aussi accueillir votre repentir. Et Allah est Omniscient et Sage.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@dxx{Et Allah veut accueillir votre repentir. Mais ceux qui suivent les passions veulent que vous vous incliniez grandement (vers l'erreur comme ils le font).\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@dxxi{Allah veut vous alléger (les obligations,) car l'homme a été créé faible.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@dxxii{O les croyants! Que les uns d'entre vous ne mangent pas les biens des autres illégalement. Mais qu'il y ait du négoce (légal), entre vous, par consentement mutuel. Et ne vous tuez pas vous-mêmes. Allah, en vérité, est Miséricordieux envers vous.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@dxxiii{Et quiconque commet cela, par excès et par iniquité, Nous le jetterons au Feu, voilà qui est facile pour Allah.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@dxxiv{Si vous évitez les grands péchés qui vous sont interdits, Nous effacerons vos méfaits de votre compte, et Nous vous ferons entrer dans un endroit honorable (le Paradis).\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@dxxv{Ne convoitez pas ce qu'Allah a attribué aux uns d'entre vous plus qu'aux autres; aux hommes la part qu'ils ont acquise, et aux femmes la part qu'elles ont acquise. Demandez à Allah de Sa grâce. Car Allah, certes, est Omniscient.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@dxxvi{A tous Nous avons désigné des héritiers pour ce que leur laissent leurs père et mère, leurs proches parents, et ceux envers qui, de vos propres mains, vous vous êtes engagés, donnez leur donc leur part, car Allah, en vérité, est témoin de tout.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@dxxvii{Les hommes ont autorité sur les femmes, en raison des faveurs qu'Allah accorde à ceux-là sur celles-ci, et aussi à cause des dépenses qu'ils font de leurs biens. Les femmes vertueuses sont obéissantes (à leurs maris), et protègent ce qui doit être protégé, pendant l'absence de leurs époux, avec la protection d'Allah. Et quant à celles dont vous craignez la désobéissance, exhortez-les, éloignez-vous d'elles dans leurs lits et frappez-les. Si elles arrivent à vous obéir, alors ne cherchez plus de voie contre elles, car Allah est certes, Haut et Grand!\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@dxxviii{Si vous craignez le désaccord entre les deux [époux], envoyez alors un arbitre de sa famille à lui, et un arbitre de sa famille à elle. Si les deux veulent la réconciliation, Allah rétablira l'entente entre eux. Allah est certes, Omniscient et Parfaitement Connaisseur.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@dxxix{Adorez Allah et ne Lui donnez aucun associé. Agissez avec bonté envers (vos) père et mère, les proches, les orphelins, les pauvres, le proche voisin, le voisin lointain, le collègue et le voyageur, et les esclaves en votre possession, car Allah n'aime pas, en vérité, le présomptueux, l'arrogant,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@dxxx{Ceux qui sont avares et ordonnent l'avarice aux autres, et cachent ce qu'Allah leur a donné de par Sa grâce. Nous avons préparé un châtiment avilissant pour les mécréants.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@dxxxi{Et ceux qui dépensent leurs biens avec ostentation devant les gens, et ne croient ni en Allah ni au Jour dernier. Quiconque a le Diable pour camarade inséparable, quel mauvais camarade!\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@dxxxii{Qu'auraient-ils à se reprocher s'ils avaient cru en Allah et au Jour dernier et dépensé (dans l'obéissance) de ce qu'Allah leur a attribué? Allah, d'eux, est Omniscient.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@dxxxiii{Certes, Allah ne lèse (personne), fût-ce du poids d'un atome. S'il est une bonne action, Il la double, et accorde une grosse récompense de Sa part.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@dxxxiv{Comment seront-ils quand Nous ferons venir de chaque communauté un témoin, et que Nous te (Muhammad) ferons venir comme témoin contre ces gens-ci?\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@dxxxv{Ce jour-là, ceux qui n'ont pas cru et ont désobéi au Messager, préfèreraient que la terre fût nivelée sur eux et ils ne sauront cacher à Allah aucune parole.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@dxxxvi{O les croyants! N'approchez pas de la Salât alors que vous êtes ivres jusqu'à ce que vous compreniez ce que vous dites, et aussi quand vous êtes en état d'impureté [pollués] - à moins que vous ne soyez en voyage - jusqu'à ce que vous ayez pris un bain rituel. Si vous êtes malades ou en voyage, ou si l'un de vous revient du lieu où il a fait ses besoins, ou si vous avez touché à des femmes et que vous ne trouviez pas d'eau, alors recourez à une terre pure, et passez-vous-en sur vos visages et sur vos mains. Allah, en vérité, est Indulgent et Pardonneur.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@dxxxvii{N'as-tu (Muhammad) pas vu ceux qui ont reçu une partie du Livre acheter l'égarement et chercher à ce que vous vous égariez du [droit] chemin?\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@dxxxviii{Allah connaît mieux vos ennemis. Et Allah suffit comme protecteur. Et Allah suffit comme secoureur.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@dxxxix{Il en est parmi les Juifs qui détournent les mots de leur sens, et disent: «Nous avions entendu, mais nous avons désobéi», «Ecoute sans qu'il te soit donné d'entendre», et favorise nous «Ra'inâ», tordant la langue et attaquant la religion. Si au contraire ils disaient: «Nous avons entendu et nous avons obéi», «Ecoute», et «Regarde-nous», ce serait meilleur pour eux, et plus droit. Mais Allah les a maudits à cause de leur mécréance; leur foi est donc bien médiocre.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@dxl{O vous à qui on a donné le Livre, croyez à ce que Nous avons fait descendre, en confirmation de ce que vous aviez déjà, avant que Nous effacions des visages et les retournions sens devant derrière, ou que Nous les maudissions comme Nous avons maudit les gens du Sabbat. Car le commandement d'Allah est toujours exécuté.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@dxli{Certes Allah ne pardonne pas qu'on Lui donne quelqu'associé. A part cela, Il pardonne à qui Il veut. Mais quiconque donne à Allah quelqu'associé commet un énorme péché.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@dxlii{N'as-tu pas vu ceux-là qui se déclarent purs? Mais c'est Allah qui purifie qui Il veut; et ils ne seront point lésés, fût-ce d'un brin de noyau de datte.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@dxliii{Regarde comme ils inventent le mensonge à l'encontre d'Allah. Et çà, c'est assez comme péché manifeste!\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@dxliv{N'as-tu pas vu ceux-là, à qui une partie du Livre a été donnée, avoir foi à la magie (gibt) et au Tâghhoût, et dire en faveur de ceux qui ne croient pas: «Ceux-là sont mieux guidés (sur le chemin) que ceux qui ont cru»?\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@dxlv{Voilà ceux qu'Allah a maudits; et quiconque Allah maudit, jamais tu ne trouveras pour lui de secoureur.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@dxlvi{Possèdent-ils une partie du pouvoir? Ils ne donneraient donc rien aux gens, fût-ce le creux d'un noyau de datte.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@dxlvii{Envient-ils aux gens ce qu'Allah leur a donné de par Sa grâce? Or, Nous avons donné à la famille d'Abraham le Livre et la Sagesse; et Nous leur avons donné un immense royaume.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@dxlviii{Certains d'entre eux ont cru en lui, d'autres d'entre eux s'en sont écartés. L'Enfer leur suffira comme flamme (pour y brûler).\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@dxlix{Certes, ceux qui ne croient pas à Nos Versets, (le Coran) Nous les brûlerons bientôt dans le Feu. Chaque fois que leurs peaux auront été consumées, Nous leur donnerons d'autres peaux en échange afin qu'ils goûtent au châtiment. Allah est certes, Puissant et Sage!\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@dl{Et quant à ceux qui ont cru et fait de bonnes œuvres, bientôt Nous les ferons entrer aux Jardins sous lesquels coulent des ruisseaux. Ils y demeureront éternellement. Il y aura là pour eux des épouses purifiées. Et Nous les ferons entrer sous un ombrage épais.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@dli{Certes, Allah vous commande de rendre les dépôts à leurs ayants-droit, et quand vous jugez entre des gens, de juger avec équité. Quelle bonne exhortation qu'Allah vous fait! Allah est, en vérité, Celui qui entend et qui voit tout.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@dlii{O les croyants! Obéissez à Allah, et obéissez au Messager et à ceux d'entre vous qui détiennent le commandement. Puis, si vous vous disputez en quoi que ce soit, renvoyez-le à Allah et au Messager, si vous croyez en Allah et au Jour dernier. Ce sera bien mieux et de meilleure interprétation (et aboutissement).\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@dliii{N'as-tu pas vu ceux qui prétendent croire à ce qu'on a fait descendre vers toi [prophète] et à ce qu'on a fait descendre avant toi? Ils veulent prendre pour juge le Tâghût, alors que c'est en lui qu'on leur a commandé de ne pas croire. Mais le Diable veut les égarer très loin, dans l'égarement.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@dliv{Et lorsqu'on leur dit: «Venez vers ce qu'Allah a fait descendre et vers le Messager», tu vois les hypocrites s'écarter loin de toi.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@dlv{Comment (agiront-ils) quand un malheur les atteindra, à cause de ce qu'ils ont préparé de leurs propres mains? Puis ils viendront alors près de toi, jurant par Allah: «Nous n'avons voulu que le bien et la réconciliation».\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@dlvi{Voilà ceux dont Allah sait ce qu'ils ont dans leurs cœurs. Ne leur tiens donc pas rigueur, exhorte-les, et dis-leur sur eux-mêmes des paroles convaincantes.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@dlvii{Nous n'avons envoyé de Messager que pour qu'il soit obéi par la permission d'Allah. Si, lorsqu'ils ont fait du tort à leurs propres personnes ils venaient à toi en implorant le pardon d'Allah et si le Messager demandait le pardon pour eux, ils trouveraient, certes, Allah, Très Accueillant au repentir, Miséricordieux.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@dlviii{Non!... Par ton Seigneur! Ils ne seront pas croyants aussi longtemps qu'ils ne t'auront demandé de juger de leurs disputes et qu'ils n'auront éprouvé nulle angoisse pour ce que tu auras décidé, et qu'ils se soumettent complètement [à ta sentence].\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@dlix{Si Nous leur avions prescrit ceci: «Tuez-vous vous-mêmes», ou «Sortez de vos demeures», ils ne l'auraient pas fait, sauf un petit nombre d'entre eux. S'ils avaient fait ce à quoi on les exhortait, cela aurait été certainement meilleur pour eux, et (leur foi) aurait été plus affermie.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@dlx{Alors Nous leur aurions donné certainement, de Notre part, une grande récompense,\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@dlxi{et Nous les aurions guidé certes, vers un droit chemin.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@dlxii{Quiconque obéit à Allah et au Messager... ceux-là seront avec ceux qu'Allah a comblés de Ses bienfaits: les prophètes, les véridiques, les martyrs, et les vertueux. Et quels bons compagnons que ceux-là!\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@dlxiii{Cette grâce vient d'Allah. Et Allah suffit comme Parfait Connaisseur.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@dlxiv{O les croyants! Prenez vos précautions et partez en expédition par détachements ou en masse.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@dlxv{Parmi vous, il y aura certes, quelqu'un qui tardera [à aller au combat] et qui, si un malheur vous atteint, dira: «Certes, Allah m'a fait une faveur en ce que je ne me suis pas trouvé en leur compagnie»\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@dlxvi{et si c'est une grâce qui vous atteint de la part d'Allah, il se mettra, certes, à dire, comme s'il n'y avait aucune affection entre vous et lui: «Quel dommage! Si j'avais été avec eux, j'aurais alors acquis un gain énorme».\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@dlxvii{Qu'ils combattent donc dans le sentier d'Allah, ceux qui troquent la vie présente contre la vie future. Et quiconque combat dans le sentier d'Allah, tué ou vainqueur, Nous lui donnerons bientôt une énorme récompense.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@dlxviii{Et qu'avez-vous à ne pas combattre dans le sentier d'Allah, et pour la cause des faibles: hommes, femmes et enfants qui disent: «Seigneur! Fais-nous sortir de cette cité dont les gens sont injustes, et assigne-nous de Ta part un allié, et assigne-nous de Ta part un secoureur».\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@dlxix{Les croyants combattent dans le sentier d'Allah, et ceux qui ne croient pas combattent dans le sentier du Tâghût. Eh bien, combattez les alliés du Diable, car la ruse du Diable est, certes, faible.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@dlxx{N'as-tu pas vu ceux auxquels on avait dit: «Abstenez-vous de combattre, accomplissez la Salât et acquittez la Zakât!» Puis lorsque le combat leur fut prescrit, voilà qu'une partie d'entre eux se mit à craindre les gens comme on craint Allah, ou même d'une crainte plus forte encore, et à dire: «O notre Seigneur! Pourquoi nous as-Tu prescrit le combat? Pourquoi n'as-Tu pas reporté cela à un peu plus tard?» Dis: «La jouissance d'ici-bas est éphémère, mais la vie future est meilleure pour quiconque est pieux. Et on ne vous lésera pas, fût-ce d'un brin de noyau de datte.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@dlxxi{Où que vous soyez, la mort vous atteindra, fussiez-vous dans des tours imprenables. Qu'un bien les atteigne, ils disent: «C'est de la part d'Allah.» Qu'un mal les atteigne, ils disent: «C'est dû à toi (Muhammad).» Dis: «Tout est d'Allah.» Mais qu'ont-ils ces gens, à ne comprendre presque aucune parole?\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@dlxxii{Tout bien qui t'atteint vient d'Allah, et tout mal qui t'atteint vient de toi-même. Et nous t'avons envoyé aux gens comme Messager. Et Allah suffit comme témoin.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@dlxxiii{Quiconque obéit au Messager obéit certainement à Allah. Et quiconque tourne le dos... Nous ne t'avons pas envoyé à eux comme gardien.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@dlxxiv{Ils disent: «Obéissance!» Puis, sitôt sortis de chez toi, une partie d'entre eux délibère au cours de la nuit de tout autre chose que ce qu'elle t'a dit. [Cependant] Allah enregistre ce qu'ils font la nuit. Pardonne-leur donc et place ta confiance en Allah. Et Allah suffit comme Protecteur.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@dlxxv{Ne méditent-ils donc pas sur le Coran? S'il provenait d'un autre qu'Allah, ils y trouveraient certes maintes contradictions!\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@dlxxvi{Quand leur parvient une nouvelle rassurante ou alarmante, ils la diffusent. S'ils la rapportaient au Messager et aux détenteurs du commandement parmi eux, ceux d'entre eux qui cherchent à être éclairés, auraient appris (la vérité de la bouche du Prophète et des détenteurs du commandement). Et n'eussent été la grâce d'Allah sur vous et Sa miséricorde, vous auriez suivi le Diable, à part quelques-uns.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@dlxxvii{Combats donc dans le sentier d'Allah, tu n'es responsable que de toi même, et incite les croyants (au combat) Allah arrêtera certes la violence des mécréants. Allah est plus redoutable en force et plus sévère en punition.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@dlxxviii{Quiconque intercède d'une bonne intercession, en aura une part; et quiconque intercède d'une mauvaise intercession en portera une part de responsabilité. Et Allah est Puissant sur toute chose.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@dlxxix{Si on vous fait une salutation, saluez d'une façon meilleure; ou bien rendez-la (simplement). Certes, Allah tient compte de tout.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@dlxxx{Allah! Pas de divinité à part Lui! Très certainement Il vous rassemblera au Jour de la Résurrection, point de doute là-dessus. Et qui est plus véridique qu'Allah en parole?\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@dlxxxi{Qu'avez-vous à vous diviser en deux factions au sujet des hypocrites? Alors qu'Allah les a refoulés (dans leur infidélité) pour ce qu'ils ont acquis. Voulez-vous guider ceux qu'Allah égare? Et quiconque Allah égare, tu ne lui trouveras pas de chemin (pour le ramener).\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@dlxxxii{Ils aimeraient vous voir mécréants comme ils ont mécru: alors vous seriez tous égaux! Ne prenez donc pas d'alliés parmi eux, jusqu'à ce qu'ils émigrent dans le sentier d'Allah. Mais s'ils tournent le dos, saisissez-les alors, et tuez-les où que vous les trouviez; et ne prenez parmi eux ni allié ni secoureur,\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@dlxxxiii{excepté ceux qui se joignent à un groupe avec lequel vous avez conclu une alliance, ou ceux qui viennent chez vous, le cœur serré d'avoir à vous combattre ou à combattre leur propre tribu. Si Allah avait voulu, Il leur aurait donné l'audace (et la force) contre vous, et ils vous auraient certainement combattu. (Par conséquent,) s'ils restent neutres à votre égard et ne vous combattent point, et qu'ils vous offrent la paix, alors, Allah ne vous donne pas de chemin contre eux.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@dlxxxiv{Vous en trouverez d'autres qui cherchent à avoir votre confiance, et en même temps la confiance de leur propre tribu. Toutes les fois qu'on les pousse vers l'Association, (l'idolâtrie) ils y retombent en masse. (Par conséquent,) s'ils ne restent pas neutres à votre égard, ne vous offrent pas la paix et ne retiennent pas leurs mains (de vous combattre), alors, saisissez-les et tuez les où que vous les trouviez. Contre ceux-ci, Nous vous avons donné une autorité manifeste.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@dlxxxv{Il n'appartient pas à un croyant de tuer un autre croyant, si ce n'est par erreur. Quiconque tue par erreur un croyant, qu'il affranchisse alors un esclave croyant et remette à sa famille le prix du sang, à moins que celle-ci n'y renonce par charité. Mais si [le tué] appartenait à un peuple ennemi à vous et qu'il soit croyant, qu'on affranchisse alors un esclave croyant. S'il appartenait à un peuple auquel vous êtes liés par un pacte, qu'on verse alors à sa famille le prix du sang et qu'on affranchisse un esclave croyant. Celui qui n'en trouve pas les moyens, qu'il jeûne deux mois d'affilée pour être pardonné par Allah. Allah est Omniscient et Sage.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@dlxxxvi{Quiconque tue intentionnellement un croyant, Sa rétribution alors sera l'Enfer, pour y demeurer éternellement. Allah l'a frappé de Sa colère, l'a maudit et lui a préparé un énorme châtiment.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@dlxxxvii{O les croyants! Lorsque vous sortez pour lutter dans le sentier d'Allah, voyez bien clair (ne vous hâtez pas) et ne dites pas à quiconque vous adresse le salut (de l'Islam): «Tu n'es pas croyant», convoitant les biens de la vie d'ici-bas. Or c'est auprès d'Allah qu'il y a beaucoup de butin. C'est ainsi que vous étiez auparavant; puis Allah vous a accordé Sa grâce. Voyez donc bien clair. Allah est, certes, Parfaitement Connaisseur de ce que vous faites.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@dlxxxviii{Ne sont pas égaux ceux des croyants qui restent chez eux - sauf ceux qui ont quelque infirmité - et ceux qui luttent corps et biens dans le sentier d'Allah. Allah donne à ceux qui luttent corps et biens un grade d'excellence sur ceux qui restent chez eux. Et à chacun Allah a promis la meilleure récompense; et Allah a mis les combattants au-dessus des non combattants en leur accordant une rétribution immense;\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@dlxxxix{des grades de supériorité de Sa part ainsi qu'un pardon et une miséricorde. Allah est Pardonneur et Miséricordieux.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@dxc{Ceux qui ont fait du tort à eux-mêmes, les Anges enlèveront leurs âmes en disant: «Où en étiez-vous?» (à propos de votre religion) - «Nous étions impuissants sur terre», dirent-ils. Alors les Anges diront: «La terre d'Allah n'était-elle pas assez vaste pour vous permettre d'émigrer?» Voilà bien ceux dont le refuge est l'Enfer. Et quelle mauvaise destination!\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@dxci{A l'exception des impuissants: hommes, femmes et enfants, incapables de se débrouiller, et qui ne trouvent aucune voie:\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@dxcii{A ceux-là, il se peut qu'Allah donne le pardon. Allah est Clément et Pardonneur.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@dxciii{Et quiconque émigre dans le sentier d'Allah trouvera sur terre maints refuges et abondance. Et quiconque sort de sa maison, émigrant vers Allah et Son messager, et que la mort atteint, sa récompense incombe à Allah. Et Allah est Pardonneur et Miséricordieux.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@dxciv{Et quand vous parcourez la terre, ce n'est pas un péché pour vous de raccourcir la Salât, si vous craignez que les mécréants ne vous mettent à l'épreuve, car les mécréants demeurent pour vous un ennemi déclaré.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@dxcv{Et lorsque tu (Muhammad) te trouves parmi eux, et que tu les diriges dans la Salât, qu'un groupe d'entre eux se mette debout en ta compagnie, en gardant leurs armes. Puis lorsqu'ils ont terminé la prosternation, qu'ils passent derrière vous et que vienne l'autre groupe, ceux qui n'ont pas encore célébré la Salât. A ceux-ci alors d'accomplir la Salât avec toi, prenant leurs précautions et leurs armes. Les mécréants aimeraient vous voir négliger vos armes et vos bagages, afin de tomber sur vous en une seule masse. Vous ne commettez aucun péché si, incommodés par la pluie ou malades, vous déposez vos armes; cependant prenez garde. Certes, Allah a préparé pour les mécréants un châtiment avilissant.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@dxcvi{Quand vous avez accompli la Salât, invoquez le nom d'Allah, debout, assis ou couchés sur vos côtés. Puis lorsque vous êtes en sécurité, accomplissez la Salât (normalement), car la Salât demeure, pour les croyants, une prescription, à des temps déterminés.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@dxcvii{Ne faiblissez pas dans la poursuite du peuple [ennemi]. Si vous souffrez, lui aussi souffre comme vous souffrez, tandis que vous espérez d'Allah ce qu'il n'espère pas. Allah est Omniscient et Sage.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@dxcviii{Nous avons fait descendre vers toi le Livre avec la vérité, pour que tu juges entre les gens, selon ce qu'Allah t'a appris. Et ne te fais pas l'avocat des traîtres.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@dxcix{Et implore d'Allah le pardon car Allah est certes Pardonneur et Miséricordieux.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@dc{Et ne dispute pas en faveur de ceux qui se trahissent eux-mêmes. Allah, vraiment, n'aime pas le traître et le pécheur.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@dci{Ils cherchent à se cacher des gens, mais ils ne cherchent pas à se cacher d'Allah. Or, Il est avec eux quand ils tiennent la nuit des paroles qu'Il (Allah) n'agrée pas. Et Allah ne cesse de cerner (par Sa science) ce qu'ils font.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@dcii{Voilà les gens en faveur desquels vous disputez dans la vie présente. Mais qui va disputer pour eux devant Allah au Jour de la Résurrection? Ou bien qui sera leur protecteur?\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@dciii{Quiconque agit mal ou fait du tort à lui-même, puis aussitôt implore d'Allah le pardon, trouvera Allah Pardonneur et Miséricordieux.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@dciv{Quiconque acquiert un péché, ne l'acquiert que contre lui-même. Et Allah est Omniscient et Sage.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@dcv{Et quiconque acquiert une faute ou un péché puis en accuse un innocent, se rend coupable alors d'une injustice et d'un péché manifeste.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@dcvi{Et n'eût été la grâce d'Allah sur toi (Muhammad) et Sa miséricorde, une partie d'entre eux t'aurait bien volontiers égaré. Mais ils n'égarent qu'eux-mêmes, et ne peuvent en rien te nuire. Allah a fait descendre sur toi le Livre et la Sagesse, et t'a enseigné ce que tu ne savais pas. Et la grâce d'Allah sur toi est immense.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@dcvii{Il n'y a rien de bon dans la plus grande partie de leurs conversations secrètes, sauf si l'un d'eux ordonne une charité, une bonne action, ou une conciliation entre les gens. Et quiconque le fait, cherchant l'agrément d'Allah, à celui-là Nous donnerons bientôt une récompense énorme.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@dcviii{Et quiconque fait scission d'avec le Messager, après que le droit chemin lui est apparu et suit un sentier autre que celui des croyants, alors Nous le laisserons comme il s'est détourné, et le brûlerons dans l'Enfer. Et quelle mauvaise destination!\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@dcix{Certes, Allah ne pardonne pas qu'on Lui donne des associés. A part cela, Il pardonne à qui Il veut. Quiconque donne des associés à Allah s'égare, très loin dans l'égarement.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@dcx{Ce ne sont que des femelles qu'ils invoquent, en dehors de Lui. Et ce n'est qu'un diable rebelle qu'ils invoquent.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@dcxi{Allah l'a (le Diable) maudit et celui-ci a dit: «Certainement, je saisirai parmi Tes serviteurs, une partie déterminée.\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@dcxii{Certes, je ne manquerai pas de les égarer, je leur donnerai de faux espoirs, je leur commanderai, et ils fendront les oreilles aux bestiaux; je leur commanderai, et ils altèreront la création d'Allah. Et quiconque prend le Diable pour allié au lieu d'Allah, sera, certes, voué à une perte évidente.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@dcxiii{Il leur fait des promesses et leur donne de faux espoirs. Et le Diable ne leur fait que des promesses trompeuses.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@dcxiv{Voilà ceux dont le refuge est l'Enfer. Et ils ne trouveront aucun moyen d'y échapper!\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@dcxv{Et quant à ceux qui ont cru et fait de bonnes œuvres, Nous les ferons entrer bientôt aux Jardins sous lesquels coulent les ruisseaux, pour y demeurer éternellement. Promesse d'Allah en vérité. Et qui est plus véridique qu'Allah en parole?\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@dcxvi{Ceci ne dépend ni de vos désirs ni des désirs des gens du Livre. Quiconque fait un mal sera rétribué pour cela, et ne trouvera en sa faveur, hors d'Allah, ni allié ni secoureur.\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@dcxvii{Et quiconque, homme ou femme, fait de bonnes œuvres, tout en étant croyant... les voilà ceux qui entreront au Paradis; et on ne leur fera aucune injustice, fût-ce d'un creux de noyau de datte.\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@dcxviii{Qui est meilleur en religion que celui qui soumet à Allah son être, tout en se conformant à la Loi révélée et suivant la religion d'Abraham, homme de droiture? Et Allah avait pris Abraham pour ami privilégié.\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@dcxix{C'est à Allah qu'appartient tout ce qui est dans les cieux et sur la terre. Et Allah embrasse toute chose (de Sa science et de Sa puissance).\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@dcxx{Et ils te consultent à propos de ce qui a été décrété au sujet des femmes. Dis: «Allah vous donne Son décret là-dessus, en plus de ce qui vous est récité dans le Livre, au sujet des orphelines auxquelles vous ne donnez pas ce qui leur a été prescrit, et que vous désirez épouser, et au sujet des mineurs encore d'âge faible». Vous devez agir avec équité envers les orphelins. Et de tout ce que vous faites de bien, Allah en est, certes, Omniscient.\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@dcxxi{Et si une femme craint de son mari abandon ou indifférence, alors ce n'est pas un péché pour les deux s'ils se réconcilient par un compromis quelconque, et la réconciliation est meilleure, puisque les âmes sont portées à la ladrerie. Mais si vous agissez en bien et vous êtes pieux... Allah est, certes, Parfaitement Connaisseur de ce que vous faites.\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@dcxxii{Vous ne pourrez jamais être équitables entre vos femmes, même si vous en êtes soucieux. Ne vous penchez pas tout à fait vers l'une d'elles, au point de laisser l'autre comme en suspens. Mais si vous vous réconciliez et vous êtes pieux... donc Allah est, certes, Pardonneur et Miséricordieux.\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@dcxxiii{Si les deux se séparent, Allah de par Sa largesse, accordera à chacun d'eux un autre destin. Et Allah est plein de largesses et parfaitement Sage.\qt@no{(130)}}
+\qt@newcmd\qurantrans@fr@dcxxiv{A Allah seul appartient tout ce qui est dans les cieux et sur la terre. «Craignez Allah!» Voilà ce que Nous avons enjoint à ceux auxquels avant vous le Livre fut donné, tout comme à vous-mêmes. Et si vous ne croyez pas (cela ne nuit pas à Allah, car) très certainement à Allah seul appartient tout ce qui est dans les cieux et sur la terre. Et Allah se suffit à Lui-même et Il est digne de louange.\qt@no{(131)}}
+\qt@newcmd\qurantrans@fr@dcxxv{A Allah seul appartient tout ce qui est dans les cieux et sur la terre. Et Allah suffit pour s'occuper de tout.\qt@no{(132)}}
+\qt@newcmd\qurantrans@fr@dcxxvi{S'Il voulait, il vous ferait disparaître, ô gens, et en ferait venir d'autres. Car Allah en est très capable.\qt@no{(133)}}
+\qt@newcmd\qurantrans@fr@dcxxvii{Quiconque désire la récompense d'ici-bas, c'est auprès d'Allah qu'est la récompense d'ici-bas tout comme celle de l'au-delà. Et Allah entend et observe tout.\qt@no{(134)}}
+\qt@newcmd\qurantrans@fr@dcxxviii{O les croyants! Observez strictement la justice et soyez des témoins (véridiques) comme Allah l'ordonne, fût-ce contre vous-mêmes, contre vos père et mère ou proches parents. Qu'il s'agisse d'un riche ou d'un besogneux, Allah a priorité sur eux deux (et Il est plus connaisseur de leur intérêt que vous). Ne suivez donc pas les passions, afin de ne pas dévier de la justice. Si vous portez un faux témoignage ou si vous le refusez, [sachez qu'] Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(135)}}
+\qt@newcmd\qurantrans@fr@dcxxix{O les croyants! Soyez fermes en votre foi en Allah, en Son messager, au Livre qu'Il a fait descendre sur Son messager, et au Livre qu'Il a fait descendre avant. Quiconque ne croit pas en Allah, en Ses anges, en Ses Livres, en Ses messagers et au Jour dernier, s'égare, loin dans l'égarement.\qt@no{(136)}}
+\qt@newcmd\qurantrans@fr@dcxxx{Ceux qui ont cru, puis sont devenus mécréants, puis ont cru de nouveau, ensuite sont redevenus mécréants, et n'ont fait que croître en mécréance, Allah ne leur pardonnera pas, ni les guidera vers un chemin (droit).\qt@no{(137)}}
+\qt@newcmd\qurantrans@fr@dcxxxi{Annonce aux hypocrites qu'il y a pour eux un châtiment douloureux,\qt@no{(138)}}
+\qt@newcmd\qurantrans@fr@dcxxxii{ceux qui prennent pour alliés des mécréants au lieu des croyants, est-ce la puissance qu'ils recherchent auprès d'eux? (En vérité) la puissance appartient entièrement à Allah.\qt@no{(139)}}
+\qt@newcmd\qurantrans@fr@dcxxxiii{Dans le Livre, Il vous a déjà révélé ceci: lorsque vous entendez qu'on renie les versets (le Coran) d'Allah et qu'on s'en raille, ne vous asseyez point avec ceux-là jusqu'à ce qu'ils entreprennent une autre conversation. Sinon, vous serez comme eux. Allah rassemblera, certes, les hypocrites et les mécréants, tous, dans l'Enfer.\qt@no{(140)}}
+\qt@newcmd\qurantrans@fr@dcxxxiv{Ils restent dans l'expectative à votre égard; si une victoire vous vient de la part d'Allah, ils disent: «N'étions-nous pas avec vous?» et s'il en revient un avantage aux mécréants, ils leur disent: «Est-ce que nous n'avons pas mis la main sur vous pour vous soustraire aux croyants?» Eh bien, Allah jugera entre vous au Jour de la Résurrection. Et jamais Allah ne donnera une voie aux mécréants contre les croyants.\qt@no{(141)}}
+\qt@newcmd\qurantrans@fr@dcxxxv{Les hypocrites cherchent à tromper Allah, mais Allah retourne leur tromperie (contre eux-mêmes). Et lorsqu'ils se lèvent pour la Salât, ils se lèvent avec paresse et par ostentation envers les gens. A peine invoquent-ils Allah.\qt@no{(142)}}
+\qt@newcmd\qurantrans@fr@dcxxxvi{Ils sont indécis (entre les croyants et les mécréants,) n'appartenant ni aux uns ni aux autres. Or, quiconque Allah égare, jamais tu ne trouveras de chemin pour lui.\qt@no{(143)}}
+\qt@newcmd\qurantrans@fr@dcxxxvii{O les croyants! Ne prenez pas pour alliés les mécréants au lieu des croyants. Voudriez-vous donner à Allah une preuve évidente contre vous?\qt@no{(144)}}
+\qt@newcmd\qurantrans@fr@dcxxxviii{Les hypocrites seront, certes, au plus bas fond du Feu, et tu ne leur trouveras jamais de secoureur,\qt@no{(145)}}
+\qt@newcmd\qurantrans@fr@dcxxxix{sauf ceux qui se repentent, s'amendent, s'attachent fermement à Allah, et Lui vouent une foi exclusive. Ceux-là seront avec les croyants. Et Allah donnera aux croyants une énorme récompense.\qt@no{(146)}}
+\qt@newcmd\qurantrans@fr@dcxl{Pourquoi Allah vous infligerait-Il un châtiment si vous êtes reconnaissants et croyants? Allah est Reconnaissant et Omniscient.\qt@no{(147)}}
+\qt@newcmd\qurantrans@fr@dcxli{Allah n'aime pas qu'on profère de mauvaises paroles sauf quand on a été injustement provoqué. Et Allah est Audient et Omniscient.\qt@no{(148)}}
+\qt@newcmd\qurantrans@fr@dcxlii{Que vous fassiez du bien, ouvertement ou en cachette, ou bien que vous pardonniez un mal... Alors Allah est Pardonneur et Omnipotent.\qt@no{(149)}}
+\qt@newcmd\qurantrans@fr@dcxliii{Ceux qui ne croient pas en Allah et en Ses messagers, et qui veulent faire distinction entre Allah et Ses messagers et qui disent: «Nous croyons en certains d'entre eux mais ne croyons pas en d'autres», et qui veulent prendre un chemin intermédiaire (entre la foi et la mécréance),\qt@no{(150)}}
+\qt@newcmd\qurantrans@fr@dcxliv{les voilà les vrais mécréants! Et Nous avons préparé pour les mécréants un châtiment avilissant.\qt@no{(151)}}
+\qt@newcmd\qurantrans@fr@dcxlv{Et ceux qui croient en Allah et en Ses messagers et qui ne font point de différence entre ces derniers, voilà ceux à qui Il donnera leurs récompenses. Et Allah est Pardonneur et Miséricordieux.\qt@no{(152)}}
+\qt@newcmd\qurantrans@fr@dcxlvi{Les gens du Livre te demandent de leur faire descendre du ciel un Livre. Ils ont déjà demandé à Moïse quelque chose de bien plus grave quand ils dirent: «Fais-nous voir Allah à découvert!» Alors la foudre les frappa pour leur tort. Puis ils adoptèrent le Veau (comme idole) même après que les preuves leur furent venues. Nous leur pardonnâmes cela et donnâmes à Moïse une autorité déclarée.\qt@no{(153)}}
+\qt@newcmd\qurantrans@fr@dcxlvii{Et pour (obtenir) leur engagement, Nous avons brandi au-dessus d'eux le Mont Tor, Nous leur avons dit: «Entrez par la porte en vous prosternant» Nous leur avons dit: «Ne transgressez pas le Sabbat» et Nous avons pris d'eux un engagement ferme.\qt@no{(154)}}
+\qt@newcmd\qurantrans@fr@dcxlviii{(Nous les avons maudits) à cause de leur rupture de l'engagement, leur mécréance aux révélations d'Allah, leur meurtre injustifié des prophètes, et leur parole: «Nos cœurs sont (enveloppés) et imperméables». En réalité, c'est Allah qui a scellé leurs cœurs à cause de leur mécréance, car ils ne croyaient que très peu.\qt@no{(155)}}
+\qt@newcmd\qurantrans@fr@dcxlix{Et à cause de leur mécréance et de l'énorme calomnie qu'ils prononcent contre Marie,\qt@no{(156)}}
+\qt@newcmd\qurantrans@fr@dcl{et à cause de leur parole: «Nous avons vraiment tué le Christ, Jésus, fils de Marie, le Messager d'Allah»... Or, ils ne l'ont ni tué ni crucifié; mais ce n'était qu'un faux semblant! Et ceux qui ont discuté sur son sujet sont vraiment dans l'incertitude: ils n'en ont aucune connaissance certaine, ils ne font que suivre des conjectures et ils ne l'ont certainement pas tué,\qt@no{(157)}}
+\qt@newcmd\qurantrans@fr@dcli{mais Allah l'a élevé vers Lui. Et Allah est Puissant et Sage.\qt@no{(158)}}
+\qt@newcmd\qurantrans@fr@dclii{Il n'y aura personne, parmi les gens du Livre, qui n'aura pas foi en lui avant sa mort. Et au Jour de la Résurrection, il sera témoin contre eux.\qt@no{(159)}}
+\qt@newcmd\qurantrans@fr@dcliii{C'est à cause des iniquités des Juifs que Nous leur avons rendu illicites les bonnes nourritures qui leur étaient licites, et aussi à cause de ce qu'ils obstruent le sentier d'Allah, (à eux-mêmes et) à beaucoup de monde,\qt@no{(160)}}
+\qt@newcmd\qurantrans@fr@dcliv{et à cause de ce qu'ils prennent des intérêts usuraires- qui leur étaient pourtant interdits - et parce qu'ils mangent illégalement les biens des gens. A ceux d'entre eux qui sont mécréants Nous avons préparé un châtiment douloureux.\qt@no{(161)}}
+\qt@newcmd\qurantrans@fr@dclv{Mais ceux d'entre eux qui sont enracinés dans la connaissance, ainsi que les croyants, (tous) ont foi à ce qu'on a fait descendre sur toi et à ce qu'on a fait descendre avant toi. Et quant à ceux qui accomplissent la Salât, paient la Zakât et croient en Allah et au Jour dernier, ceux-là Nous leur donnerons une énorme récompense.\qt@no{(162)}}
+\qt@newcmd\qurantrans@fr@dclvi{Nous t'avons fait une révélation comme Nous fîmes à Noé et aux prophètes après lui. Et Nous avons fait révélation à Abraham, à Ismaël, à Isaac, à Jacob aux Tribus, à Jésus, à Job, à Jonas, à Aaron et à Salomon, et Nous avons donné le Zabour à David.\qt@no{(163)}}
+\qt@newcmd\qurantrans@fr@dclvii{Et il y a des messagers dont Nous t'avons raconté l'histoire précédemment, et des messagers dont Nous ne t'avons point raconté l'histoire - et Allah a parlé à Moïse de vive voix -\qt@no{(164)}}
+\qt@newcmd\qurantrans@fr@dclviii{en tant que messagers, annonciateurs et avertisseurs, afin qu'après la venue des messagers il n'y eût pour les gens point d'argument devant Allah. Allah est Puissant et Sage.\qt@no{(165)}}
+\qt@newcmd\qurantrans@fr@dclix{Mais Allah témoigne de ce qu'Il a fait descendre vers toi, Il l'a fait descendre en toute connaissance. Et les Anges en témoignent. Et Allah suffit comme témoin.\qt@no{(166)}}
+\qt@newcmd\qurantrans@fr@dclx{Ceux qui ne croient pas et qui obstruent le sentier d'Allah, s'égarent certes loin dans l'égarement.\qt@no{(167)}}
+\qt@newcmd\qurantrans@fr@dclxi{Ceux qui ne croient pas et qui pratiquent l'injustice, Allah n'est nullement disposé à leur pardonner, ni à les guider dans un chemin\qt@no{(168)}}
+\qt@newcmd\qurantrans@fr@dclxii{(autre) que le chemin de l'Enfer où ils demeureront éternellement. Et cela est facile à Allah.\qt@no{(169)}}
+\qt@newcmd\qurantrans@fr@dclxiii{O gens! Le Messager vous a apporté la vérité de la part de votre Seigneur. Ayez la foi, donc, cela vous sera meilleur. Et si vous ne croyez pas (qu'importe!), c'est à Allah qu'appartient tout ce qui est dans les cieux et sur la terre. Et Allah est Omniscient et Sage.\qt@no{(170)}}
+\qt@newcmd\qurantrans@fr@dclxiv{O gens du Livre (Chrétiens), n'exagérez pas dans votre religion, et ne dites d'Allah que la vérité. Le Messie Jésus, fils de Marie, n'est qu'un Messager d'Allah, Sa parole qu'Il envoya à Marie, et un souffle (de vie) venant de Lui. Croyez donc en Allah et en Ses messagers. Et ne dites pas «Trois». Cessez! Ce sera meilleur pour vous. Allah n'est qu'un Dieu unique. Il est trop glorieux pour avoir un enfant. C'est à Lui qu'appartient tout ce qui est dans les cieux et sur la terre et Allah suffit comme protecteur.\qt@no{(171)}}
+\qt@newcmd\qurantrans@fr@dclxv{Jamais le Messie ne trouve indigne d'être un serviteur d'Allah, ni les Anges rapprochés [de Lui]. Et ceux qui trouvent indigne de L'adorer et s'enflent d'orgueil... Il les rassemblera tous vers Lui.\qt@no{(172)}}
+\qt@newcmd\qurantrans@fr@dclxvi{Quant à ceux qui ont cru et fait de bonnes œuvres, Il leur accordera leurs pleines récompenses et y ajoutera le surcroît de Sa grâce. Et quant à ceux qui ont eu la morgue et se sont enflés d'orgueil, Il les châtiera d'un châtiment douloureux. Et ils ne trouveront, pour eux, en dehors d'Allah, ni allié ni secoureur,\qt@no{(173)}}
+\qt@newcmd\qurantrans@fr@dclxvii{O gens! Certes, une preuve évidente vous est venue de la part de votre Seigneur. Et Nous avons fait descendre vers vous une lumière éclatante.\qt@no{(174)}}
+\qt@newcmd\qurantrans@fr@dclxviii{Alors ceux qui croient en Allah et qui s'attachent à Lui, Il les fera entrer dans une miséricorde venue de Lui, et dans une grâce aussi. Et Il les guidera vers Lui dans un chemin droit.\qt@no{(175)}}
+\qt@newcmd\qurantrans@fr@dclxix{Ils te demandent ce qui a été décrété. Dis: «Au sujet du défunt qui n'a pas de père ni de mère ni d'enfant, Allah vous donne Son décret: si quelqu'un meurt sans enfant, mais a une sœur, à celle-ci revient la moitié de ce qu'il laisse. Et lui, il héritera d'elle en totalité si elle n'a pas d'enfant. Mais s'il a deux sœurs (ou plus), à elles alors les deux tiers de ce qu'il laisse; et s'il a des frères et des sœurs, à un frère alors revient une portion égale à celle de deux sœurs. Allah vous donne des explications pour que vous ne vous égariez pas. Et Allah est Omniscient.\qt@no{(176)}}
+\qt@newcmd\qurantrans@fr@dclxx{\basmalahfr O les croyants! Remplissez fidèlement vos engagements. Vous est permise la bête du cheptel, sauf ce qui sera énoncé [comme étant interdit]. Ne vous permettez point la chasse alors que vous êtes en état d'ihrâm. Allah en vérité, décide ce qu'Il veut.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@dclxxi{O les croyants! Ne profanez ni les rites du pèlerinage (dans les endroits sacrés) d'Allah, ni le mois sacré, ni les animaux de sacrifice, ni les guirlandes, ni ceux qui se dirigent vers la Maison sacrée cherchant de leur Seigneur grâce et agrément. Une fois désacralisés, vous êtes libres de chasser. Et ne laissez pas la haine pour un peuple qui vous a obstrué la route vers la Mosquée sacrée vous inciter à transgresser. Entraidez-vous dans l'accomplissement des bonnes œuvres et de la piété et ne vous entraidez pas dans le péché et la transgression. Et craignez Allah, car Allah est, certes, dur en punition!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@dclxxii{Vous sont interdits la bête trouvée morte, le sang, la chair de porc, ce sur quoi on a invoqué un autre nom que celui d'Allah, la bête étouffée, la bête assommée ou morte d'une chute ou morte d'un coup de corne, et celle qu'une bête féroce a dévorée - sauf celle que vous égorgez avant qu'elle ne soit morte -. (Vous sont interdits aussi la bête) qu'on a immolée sur les pierres dressées, ainsi que de procéder au partage par tirage au sort au moyen de flèches. Car cela est perversité. Aujourd'hui, les mécréants désespèrent (de vous détourner) de votre religion: ne les craignez donc pas et craignez-Moi. Aujourd'hui, J'ai parachevé pour vous votre religion, et accompli sur vous Mon bienfait. Et J'agrée l'Islam comme religion pour vous. Si quelqu'un est contraint par la faim, sans inclination vers le péché... alors, Allah est Pardonneur et Miséricordieux.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@dclxxiii{Ils t'interrogent sur ce qui leur est permis. Dis: «Vous sont permises les bonnes nourritures, ainsi que ce que capturent les carnassiers que vous avez dressés, en leur apprenant ce qu'Allah vous a appris. Mangez donc de ce qu'elles capturent pour vous et prononcez dessus le nom d'Allah. Et craignez Allah. Car Allah est, certes, prompt dans les comptes.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@dclxxiv{«Vous sont permises, aujourd'hui, les bonnes nourritures. Vous est permise la nourriture des gens du Livre, et votre propre nourriture leur est permise. (Vous sont permises) les femmes vertueuses d'entre les croyantes, et les femmes vertueuses d'entre les gens qui ont reçu le Livre avant vous, si vous leur donnez leur mahr avec contrat de mariage, non en débauchés ni en preneurs d'amantes. Et quiconque abjure la foi, alors vaine devient son action, et il sera dans l'au-delà, du nombre des perdants\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@dclxxv{O les croyants! Lorsque vous vous levez pour la Salât, lavez vos visages et vos mains jusqu'aux coudes; passez les mains mouillées sur vos têtes; et lavez-vous les pieds jusqu'aux chevilles. Et si vous êtes pollués «junub», alors purifiez-vous (par un bain); mais si vous êtes malades, ou en voyage, ou si l'un de vous revient du lieu où il a fait ses besoins ou si vous avez touché aux femmes et que vous ne trouviez pas d'eau, alors recourez à la terre pure, passez-en sur vos visages et vos mains. Allah ne veut pas vous imposer quelque gêne, mais Il veut vous purifier et parfaire sur vous Son bienfait. Peut-être serez-vous reconnaissants.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@dclxxvi{Et rappelez-vous le bienfait d'Allah sur vous, ainsi que l'alliance qu'Il a conclue avec vous, quand vous avez dit: «Nous avons entendu et nous avons obéi». Et craignez Allah. Car Allah connaît parfaitement le contenu des cœurs.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@dclxxvii{O les croyants! Soyez stricts (dans vos devoirs) envers Allah et (soyez) des témoins équitables. Et que la haine pour un peuple ne vous incite pas à être injustes. Pratiquez l'équité: cela est plus proche de la piété. Et craignez Allah. Car Allah est certes Parfaitement Connaisseur de ce que vous faites.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@dclxxviii{Allah a promis à ceux qui croient et font de bonnes œuvres qu'il y aura pour eux un pardon et une énorme récompense.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@dclxxix{Quant à ceux qui ne croient pas et traitent de mensonge Nos preuves, ceux-là sont des gens de l'Enfer.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@dclxxx{O les croyants! Rappelez-vous le bienfait d'Allah à votre égard, le jour où un groupe d'ennemis s'apprêtait à porter la main sur vous (en vue de vous attaquer) et qu'Il repoussa leur tentative. Et craignez Allah. C'est en Allah que les croyants doivent mettre leur confiance.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@dclxxxi{Et Allah certes prit l'engagement des enfants d'Israël. Nous nommâmes douze chefs d'entre eux. Et Allah dit: «Je suis avec vous, pourvu que vous accomplissiez la Salât, acquittiez la Zakât, croyiez en Mes messagers, les aidiez et fassiez à Allah un bon prêt. Alors, certes, j'effacerai vos méfaits, et vous ferai entrer aux Jardins sous lesquels coulent les ruisseaux. Et quiconque parmi vous, après cela, mécroit, s'égare certes du droit chemin»!\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@dclxxxii{Et puis, à cause de leur violation de l'engagement, Nous les avons maudits et endurci leurs cœurs: ils détournent les paroles de leur sens et oublient une partie de ce qui leur a été rappelé. Tu ne cesseras de découvrir leur trahison, sauf d'un petit nombre d'entre eux. Pardonne-leur donc et oublie [leurs fautes]. Car Allah aime, certes, les bienfaisants.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@dclxxxiii{Et de ceux qui disent: «Nous sommes chrétiens», Nous avons pris leur engagement. Mais ils ont oublié une partie de ce qui leur a été rappelé. Nous avons donc suscité entre eux l'inimitié et la haine jusqu'au Jour de la Résurrection. Et Allah les informera de ce qu'ils faisaient.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@dclxxxiv{O gens du Livre! Notre Messager (Muhammad) vous est certes venu, vous exposant beaucoup de ce que vous cachiez du Livre, et passant sur bien d'autres choses! Une lumière et un Livre explicite vous sont certes venus d'Allah!\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@dclxxxv{Par ceci (le Coran), Allah guide aux chemins du salut ceux qui cherchent Son agrément. Et Il les fait sortir des ténèbres à la lumière par Sa grâce. Et Il les guide vers un chemin droit.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@dclxxxvi{Certes sont mécréants ceux qui disent: «Allah, c'est le Messie, fils de Marie!» - Dis: «Qui donc détient quelque chose d'Allah (pour L'empêcher), s'Il voulait faire périr le Messie, fils de Marie, ainsi que sa mère et tous ceux qui sont sur la terre?... A Allah seul appartient la royauté des cieux et de la terre et de ce qui se trouve entre les deux». Il crée ce qu'Il veut. Et Allah est Omnipotent.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@dclxxxvii{Les Juifs et les Chrétiens ont dit: «Nous sommes les fils d'Allah et Ses préférés.» Dis: «Pourquoi donc vous châtie-t-Il pour vos péchés?» En fait, vous êtes des êtres humains d'entre ceux qu'Il a créés. Il pardonne à qui Il veut et Il châtie qui Il veut. Et à Allah seul appartient la royauté des cieux et de la terre et de ce qui se trouve entre les deux. Et c'est vers Lui que sera la destination finale.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@dclxxxviii{O gens du Livre! Notre Messager (Muhammad) est venu pour vous éclairer après une interruption des messagers afin que vous ne disiez pas: «Il ne nous est venu ni annonciateur ni avertisseur». Voilà, certes, que vous est venu un annonciateur et un avertisseur. Et Allah est Omnipotent.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@dclxxxix{(Souvenez-vous) Lorsque Moïse dit à son peuple: «O, mon peuple! Rappelez-vous le bienfait d'Allah sur vous, lorsqu'Il a désigné parmi vous des prophètes. Et Il a fait de vous des rois. Et Il vous a donné ce qu'Il n'avait donné à nul autre aux mondes.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@dcxc{O mon peuple! Entrez dans la terre sainte qu'Allah vous a prescrite. Et ne revenez point sur vos pas [en refusant de combattre] car vous retourneriez perdants.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@dcxci{Ils dirent: «O Moïse, il y a là un peuple de géants. Jamais nous n'y entrerons jusqu'à ce qu'ils en sortent. S'ils en sortent, alors nous y entrerons».\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@dcxcii{Deux hommes d'entre ceux qui craignaient Allah et qui étaient comblés par Lui de bienfaits dirent: «Entrez chez eux par la porte; puis quand vous y serez entrés, vous serez sans doute les dominants. Et c'est en Allah qu'il faut avoir confiance, si vous êtes croyants».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@dcxciii{Ils dirent: «Moïse! Nous n'y entrerons jamais, aussi longtemps qu'ils y seront. Va donc, toi et ton Seigneur, et combattez tous deux. Nous restons là où nous sommes».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@dcxciv{Il dit: «Seigneur! Je n'ai de pouvoir, vraiment, que sur moi-même et sur mon frère: sépare-nous donc de ce peuple pervers».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@dcxcv{Il (Allah) dit: «Eh bien, ce pays leur sera interdit pendant quarante ans, durant lesquels ils erreront sur la terre. Ne te tourmente donc pas pour ce peuple pervers».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@dcxcvi{Et raconte-leur en toute vérité l'histoire des deux fils d'Adam. Les deux offrirent des sacrifices; celui de l'un fut accepté et celui de l'autre ne le fut pas. Celui-ci dit: «Je te tuerai sûrement». «Allah n'accepte, dit l'autre, que de la part des pieux».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@dcxcvii{Si tu étends vers moi ta main pour me tuer, moi, je n'étendrai pas vers toi ma main pour te tuer: car je crains Allah, le Seigneur de l'Univers.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@dcxcviii{Je veux que tu partes avec le péché de m'avoir tué et avec ton propre péché: alors tu seras du nombre des gens du Feu. Telle est la récompense des injustes.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@dcxcix{Son âme l'incita à tuer son frère. Il le tua donc et devint ainsi du nombre des perdants.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@dcc{Puis Allah envoya un corbeau qui se mit à gratter la terre pour lui montrer comment ensevelir le cadavre de son frère. Il dit: «Malheur à moi! Suis-je incapable d'être, comme ce corbeau, à même d'ensevelir le cadavre de mon frère?» Il devint alors du nombre de ceux que ronge le remords.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@dcci{C'est pourquoi Nous avons prescrit pour les Enfants d'Israël que quiconque tuerait une personne non coupable d'un meurtre ou d'une corruption sur la terre, c'est comme s'il avait tué tous les hommes. Et quiconque lui fait don de la vie, c'est comme s'il faisait don de la vie à tous les hommes. En effet Nos messagers sont venus à eux avec les preuves. Et puis voilà, qu'en dépit de cela, beaucoup d'entre eux se mettent à commettre des excès sur la terre.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@dccii{La récompense de ceux qui font la guerre contre Allah et Son messager, et qui s'efforcent de semer la corruption sur la terre, c'est qu'ils soient tués, ou crucifiés, ou que soient coupées leur main et leur jambe opposées, ou qu'ils soient expulsés du pays. Ce sera pour eux l'ignominie ici-bas; et dans l'au-delà, il y aura pour eux un énorme châtiment,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@dcciii{excepté ceux qui se sont repentis avant de tomber en votre pouvoir: sachez qu'alors, Allah est Pardonneur et Miséricordieux.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@dcciv{O les croyants! Craignez Allah, cherchez le moyen de vous rapprocher de Lui et luttez pour Sa cause. Peut-être serez-vous de ceux qui réussissent!\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@dccv{Si les mécréants possédaient tout ce qui est sur la terre et autant encore, pour se racheter du châtiment du Jour de la Résurrection, on ne l'accepterait pas d'eux. Et pour eux il y aura un châtiment douloureux.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@dccvi{Ils voudront sortir du Feu, mais ils n'en sortiront point. Et ils auront un châtiment permanent.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@dccvii{Le voleur et la voleuse, à tous deux coupez la main, en punition de ce qu'ils se sont acquis, et comme châtiment de la part d'Allah. Allah est Puissant et Sage.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@dccviii{Mais quiconque se repent après son tort et se réforme, Allah accepte son repentir. Car, Allah est, certes, Pardonneur et Miséricordieux.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@dccix{Ne sais-tu pas qu'à Allah appartient la royauté des cieux et de la terre? Il châtie qui Il veut et pardonne à qui Il veut. Et Allah est Omnipotent.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@dccx{O Messager! Que ne t'affligent point ceux qui concourent en mécréance; parmi ceux qui ont dit: «Nous avons cru» avec leurs bouches sans que leurs cœurs aient jamais cru et parmi les Juifs qui aiment bien écouter le mensonge et écouter d'autres gens qui ne sont jamais venus à toi et qui déforment le sens des mots une fois bien établi. Ils disent: «Si vous avez reçu ceci, acceptez-le et si vous ne l'avez pas reçu, soyez méfiants». Celui qu'Allah veut éprouver, tu n'as pour lui aucune protection contre Allah. Voilà ceux dont Allah n'a point voulu purifier les cœurs. A eux, seront réservés, une ignominie ici-bas et un énorme châtiment dans l'au-delà.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@dccxi{Ils sont attentifs au mensonge et voraces de gains illicites. S'ils viennent à toi, sois juge entre eux ou détourne toi d'eux. Et si tu te détournes d'eux, jamais ils ne pourront te faire aucun mal. Et si tu juges, alors juge entre eux en équité. Car Allah aime ceux qui jugent équitablement.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@dccxii{Mais comment te demanderaient-ils d'être leur juge quand ils ont avec eux la Thora dans laquelle se trouve le jugement d'Allah? Et puis, après cela, ils rejettent ton jugement. Ces gens-là ne sont nullement les croyants.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@dccxiii{Nous avons fait descendre la Thora dans laquelle il y a guide et lumière. C'est sur sa base que les prophètes qui se sont soumis à Allah, ainsi que les rabbins et les docteurs jugent les affaires des Juifs. Car on leur a confié la garde du Livre d'Allah, et ils en sont les témoins. Ne craignez donc pas les gens, mais craignez Moi. Et ne vendez pas Mes enseignements à vil prix. Et ceux qui ne jugent pas d'après ce qu'Allah a fait descendre, les voilà les mécréants.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@dccxiv{Et Nous y avons prescrit pour eux vie pour vie, œil pour œil, nez pour nez, oreille pour oreille, dent pour dent. Les blessures tombent sous la loi du talion. Après, quiconque y renonce par charité, cela lui vaudra une expiation. Et ceux qui ne jugent pas d'après ce qu'Allah a fait descendre, ceux-là sont des injustes.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@dccxv{Et Nous avons envoyé après eux Jésus, fils de Marie, pour confirmer ce qu'il y avait dans la Thora avant lui. Et Nous lui avons donné l'Evangile, où il y a guide et lumière, pour confirmer ce qu'il y avait dans la Thora avant lui, et un guide et une exhortation pour les pieux.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@dccxvi{Que les gens de l'Evangile jugent d'après ce qu'Allah y a fait descendre. Ceux qui ne jugent pas d'après ce qu'Allah a fait descendre, ceux-là sont les pervers.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@dccxvii{Et sur toi (Muhammad) Nous avons fait descendre le Livre avec la vérité, pour confirmer le Livre qui était là avant lui et pour prévaloir sur lui. Juge donc parmi eux d'après ce qu'Allah a fait descendre. Ne suis pas leurs passions, loin de la vérité qui t'est venue. A chacun de vous Nous avons assigné une législation et un plan à suivre. Si Allah avait voulu, certes Il aurait fait de vous tous une seule communauté. Mais Il veut vous éprouver en ce qu'Il vous donne. Concurrencez donc dans les bonnes cœvres. C'est vers Allah qu'est votre retour à tous; alors Il vous informera de ce en quoi vous divergiez.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@dccxviii{Juge alors parmi eux d'après ce qu'Allah a fait descendre. Ne suis pas leurs passions, et prends garde qu'ils ne tentent de t'éloigner d'une partie de ce qu'Allah t'a révélé. Et puis, s'ils refusent (le jugement révélé) sache qu'Allah veut les affliger [ici-bas] pour une partie de leurs péchés. Beaucoup de gens, certes, sont des pervers.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@dccxix{Est-ce donc le jugement du temps de l'Ignorance qu'ils cherchent? Qu'y a-t-il de meilleur qu'Allah, en matière de jugement pour des gens qui ont une foi ferme?\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@dccxx{O les croyants! Ne prenez pas pour alliés les Juifs et les Chrétiens; ils sont alliés les uns des autres. Et celui d'entre vous qui les prend pour alliés, devient un des leurs. Allah ne guide certes pas les gens injustes.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@dccxxi{Tu verras, d'ailleurs, que ceux qui ont la maladie au cœur se précipitent vers eux et disent: «Nous craignons qu'un revers de fortune ne nous frappe.» Mais peut-être qu'Allah fera venir la victoire ou un ordre émanant de Lui. Alors ceux-là regretteront leurs pensées secrètes.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@dccxxii{Et les croyants diront: «Est-ce là ceux qui juraient par Allah de toute leur force qu'ils étaient avec vous?» Mais leurs actions sont devenues vaines et ils sont devenus perdants.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@dccxxiii{O les croyants! Quiconque parmi vous apostasie de sa religion... Allah va faire venir un peuple qu'Il aime et qui L'aime, modeste envers les croyants et fier et puissant envers les mécréants, qui lutte dans le sentier d'Allah, ne craignant le blâme d'aucun blâmeur. Telle est la grâce d'Allah. Il la donne à qui Il veut. Allah est Immense et Omniscient.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@dccxxiv{Vous n'avez d'autres alliés qu'Allah, Son messager, et les croyants qui accomplissent la Salât, s'acquittent de la Zakât, et s'inclinent (devant Allah).\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@dccxxv{Et quiconque prend pour alliés Allah, Son messager et les croyants, [réussira] car c'est le parti d'Allah qui sera victorieux.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@dccxxvi{O les croyants! N'adoptez pas pour alliés ceux qui prennent en raillerie et jeu votre religion, parmi ceux à qui le Livre fut donné avant vous et parmi les mécréants. Et craignez Allah si vous êtes croyants.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@dccxxvii{Et lorsque vous faites l'appel à la Salât, ils la prennent en raillerie et jeu. C'est qu'ils sont des gens qui ne raisonnent point.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@dccxxviii{Dis: «O gens du Livre! Est-ce que vous nous reprochez autre chose que de croire en Allah, à ce qu'on a fait descendre vers nous et à ce qu'on a fait descendre auparavant? Mais la plupart d'entre vous sont des pervers.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@dccxxix{Dis: «Puis-je vous informer de ce qu'il y a de pire, en fait de rétribution auprès d'Allah? Celui qu'Allah a maudit, celui qui a encouru Sa colère, et ceux dont Il a fait des singes, des porcs, et de même, celui qui a adoré le Tâghût, ceux-là ont la pire des places et sont les plus égarés du chemin droit».\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@dccxxx{Lorsqu'ils viennent chez vous, ils disent: «Nous croyons.» Alors qu'ils sont entrés avec la mécréance et qu'ils sont sortis avec. Et Allah sait parfaitement ce qu'ils cachent.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@dccxxxi{Et tu verras beaucoup d'entre eux se précipiter vers le péché et l'iniquité, et manger des gains illicites. Comme est donc mauvais ce qu'ils œuvrent!\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@dccxxxii{Pourquoi les rabbins et les docteurs (de la Loi religieuse) ne les empêchent-ils pas de tenir des propos mensongers et de manger des gains illicites? Que leurs actions sont donc mauvaises!\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@dccxxxiii{Et les Juifs disent: «La main d'Allah est fermée!» Que leurs propres mains soient fermées, et maudits soient-ils pour l'avoir dit. Au contraire, Ses deux mains sont largement ouvertes: Il distribue Ses dons comme Il veut. Et certes, ce qui a été descendu vers toi de la part de ton Seigneur va faire beaucoup croître parmi eux la rébellion et la mécréance. Nous avons jeté parmi eux l'inimitié et la haine jusqu'au Jour de la Résurrection. Toutes les fois qu'ils allument un feu pour la guerre, Allah l'éteint. Et ils s'efforcent de semer le désordre sur la terre, alors qu'Allah n'aime pas les semeurs de désordre.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@dccxxxiv{Si les gens du Livre avaient la foi et la piété, Nous leur aurions certainement effacé leurs méfaits et les aurions certainement introduits dans les Jardins du délice.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@dccxxxv{S'ils avaient appliqué la Thora et l'Evangile et ce qui est descendu sur eux de la part de leur Seigneur, ils auraient certainement joui de ce qui est au-dessus d'eux et de ce qui est sous leurs pieds. Il y a parmi eux un groupe qui agit avec droiture; mais pour beaucoup d'entre eux, comme est mauvais ce qu'ils font!\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@dccxxxvi{O Messager, transmets ce qui t'a été descendu de la part de ton Seigneur. Si tu ne le faisais pas, alors tu n'aurais pas communiqué Son message. Et Allah te protègera des gens. Certes, Allah ne guide pas les gens mécréants.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@dccxxxvii{Dis: «O gens du Livre, vous ne tenez sur rien, tant que vous ne vous conformez pas à la Thora et à l'Evangile et à ce qui vous a été descendu de la part de votre Seigneur.» Et certes, ce qui t'a été descendu de la part de ton Seigneur va accroître beaucoup d'entre eux en rébellion et en mécréance. Ne te tourmente donc pas pour les gens mécréants.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@dccxxxviii{Ceux qui ont cru, ceux qui se sont judaïsés, les Sabéens, et les Chrétiens, ceux parmi eux qui croient en Allah, au Jour dernier et qui accomplissent les bonnes œuvres, pas de crainte sur eux, et ils ne seront point affligés.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@dccxxxix{Certes, Nous avions déjà pris l'engagement des Enfants d'Israël, et Nous leur avions envoyé des messagers. Mais chaque fois qu'un Messager leur vient avec ce qu'ils ne désirent pas, ils en traitent certains de menteurs et ils en tuent d'autres.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@dccxl{Comptant qu'il n'y aurait pas de tentation contre eux, ils étaient devenus aveugles et sourds. Puis Allah accueillit leur repentir. Ensuite, beaucoup d'entre eux redevinrent aveugles et sourds. Et Allah voit parfaitement ce qu'ils font.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@dccxli{Ce sont, certes, des mécréants ceux qui disent: «En vérité, Allah c'est le Messie, fils de Marie.» Alors que le Messie a dit: «O enfants d'Israël, adorez Allah, mon Seigneur et votre Seigneur». Quiconque associe à Allah (d'autres divinités,) Allah lui interdit le Paradis; et son refuge sera le Feu. Et pour les injustes, pas de secoureurs!\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@dccxlii{Ce sont certes des mécréants, ceux qui disent: «En vérité, Allah est le troisième de trois.» Alors qu'il n'y a de divinité qu'Une Divinité Unique! Et s'ils ne cessent de le dire, certes, un châtiment douloureux touchera les mécréants d'entre eux.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@dccxliii{Ne vont-ils donc pas se repentir à Allah et implorer Son pardon? Car Allah est Pardonneur et Miséricordieux.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@dccxliv{Le Messie, fils de Marie, n'était qu'un Messager. Des messagers sont passés avant lui. Et sa mère était une véridique. Et tous deux consommaient de la nourriture. Vois comme Nous leur expliquons les preuves et puis vois comme ils se détournent.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@dccxlv{Dis: «Adorez-vous, au lieu d'Allah, ce qui n'a le pouvoir de vous faire ni le mal ni le bien?» Or c'est Allah qui est l'Audient et l'Omniscient.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@dccxlvi{Dis: «O gens du Livre, n'exagérez pas en votre religion, s'opposant à la vérité. Ne suivez pas les passions des gens qui se sont égarés avant cela, qui ont égaré beaucoup de monde et qui se sont égarés du chemin droit.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@dccxlvii{Ceux des Enfants d'Israël qui n'avaient pas cru ont été maudits par la bouche de David et de Jésus fils de Marie, parce qu'ils désobéissaient et transgressaient.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@dccxlviii{Ils ne s'interdisaient pas les uns aux autres ce qu'ils faisaient de blâmable. Comme est mauvais, certes, ce qu'ils faisaient!\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@dccxlix{Tu vois beaucoup d'entre eux s'allier aux mécréants. Comme est mauvais, certes, ce que leurs âmes ont préparé, pour eux-mêmes, de sorte qu'ils ont encouru le courroux d'Allah, et c'est dans le supplice qu'ils éterniseront.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@dccl{S'ils croyaient en Allah, au Prophète et à ce qui lui a été descendu, ils ne prendraient pas ces mécréants pour alliés. Mais beaucoup d'entre eux sont pervers.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@dccli{Tu trouveras certainement que les Juifs et les associateurs sont les ennemis les plus acharnés des croyants. Et tu trouveras certes que les plus disposés à aimer les croyants sont ceux qui disent: «Nous sommes chrétiens». C'est qu'il y a parmi eux des prêtres et des moines, et qu'ils ne s'enflent pas d'orgueil.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@dcclii{Et quand ils entendent ce qui a été descendu sur le Messager [Muhammad], tu vois leurs yeux déborder de larmes, parce qu'ils ont reconnu la vérité. Ils disent: «O notre Seigneur! Nous croyons: inscris-nous donc parmi ceux qui témoignent (de la véracité du Coran).\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@dccliii{Pourquoi ne croirions-nous pas en Allah et à ce qui nous est parvenu de la vérité. Pourquoi ne convoitions-nous pas que notre Seigneur nous fasse entrer en la compagnie des gens vertueux?»\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@dccliv{Allah donc les récompense pour ce qu'ils disent par des Jardins sous lesquels coulent les ruisseaux, où ils demeureront éternellement. Telle est la récompense des bienfaisants.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@dcclv{Et quant à ceux qui ne croient pas et qui traitent de mensonges Nos versets, ce sont les gens de la Fournaise.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@dcclvi{O les croyants: ne déclarez pas illicites les bonnes choses qu'Allah vous a rendues licites. Et ne transgressez pas. Allah, (en vérité,) n'aime pas les transgresseurs.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@dcclvii{Et mangez de ce qu'Allah vous a attribué de licite et de bon. Craignez Allah, en qui vous avez foi.\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@dcclviii{Allah ne vous sanctionne pas pour la frivolité dans vos serments, mais Il vous sanctionne pour les serments que vous avez l'intention d'exécuter. L'expiation en sera de nourrir dix pauvres, de ce dont vous nourrissez normalement vos familles, ou de les habiller, ou de libérer un esclave. Quiconque n'en trouve pas les moyens devra jeûner trois jours. Voilà l'expiation pour vos serments, lorsque vous avez juré. Et tenez à vos serments. Ainsi Allah vous explique Ses versets, afin que vous soyez reconnaissants!\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@dcclix{O les croyants! Le vin, le jeu de hasard, les pierres dressées, les flèches de divination ne sont qu'une abomination, œuvre du Diable. Ecartez-vous en, afin que vous réussissiez.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@dcclx{Le Diable ne veut que jeter parmi vous, à travers le vin et le jeu de hasard, l'inimitié et la haine, et vous détourner d'invoquer Allah et de la Salât. Allez-vous donc y mettre fin?\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@dcclxi{Obéissez à Allah, obéissez au Messager, et prenez garde! Si ensuite vous vous détournez... alors sachez qu'il n'incombe à Notre messager que de transmettre le message clairement.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@dcclxii{Ce n'est pas un péché pour ceux qui ont la foi et font de bonnes œuvres en ce qu'ils ont consommé (du vin et des gains des jeux de hasard avant leur prohibition) pourvu qu'ils soient pieux (en évitant les choses interdites après en avoir eu connaissance) et qu'ils croient (en acceptant leur prohibition) et qu'ils fassent de bonnes œuvres; puis qui (continuent) d'être pieux et de croire et qui (demeurent) pieux et bienfaisants. Car Allah aime les bienfaisants.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@dcclxiii{O les croyants! Allah va certainement vous éprouver par quelque gibier à la portée de vos mains et de vos lances. C'est pour qu'Allah sache celui qui Le craint en secret. Quiconque après cela transgresse aura un châtiment douloureux.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@dcclxiv{O les croyants! Ne tuez pas de gibier pendant que vous êtes en état d'Ihram. Quiconque parmi vous en tue délibérément, qu'il compense alors, soit par quelque bête de troupeau, semblable à ce qu'il a tué, d'après le jugement de deux personnes intègres parmi vous, et cela en offrande qu'il fera parvenir à (destination des pauvres de) la Ka'aba, ou bien par une expiation, en nourrissant des pauvres, ou par l'équivalent en jeûne. Cela afin qu'il goûte à la mauvaise conséquence de son acte. Allah a pardonné ce qui est passé; mais quiconque récidive, Allah le punira. Allah est Puissant et Détenteur du pouvoir de punir.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@dcclxv{La chasse en mer vous est permise, et aussi d'en manger, pour votre jouissance et celle des voyageurs. Et vous est illicite la chasse à terre tant que vous êtes en état d'Ihram. Et craignez Allah vers qui vous serez rassemblés.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@dcclxvi{Allah a institué la Ka'aba, la Maison sacrée, comme un lieu de rassemblement pour les gens. (Il a institué) le mois sacré, l'offrande (d'animaux,) et les guirlandes, afin que vous sachiez que vraiment Allah sait tout ce qui est dans les cieux et sur la terre; et que vraiment Allah est Omniscient.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@dcclxvii{Sachez qu'Allah est sévère en punition, mais aussi qu'Allah est Pardonneur et Miséricordieux.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@dcclxviii{Il n'incombe au Messager que de transmettre (le message). Et Allah sait ce que vous divulguez tout comme ce que vous cachez.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@dcclxix{Dis: «Le mauvais et le bon ne sont pas semblables, même si l'abondance du mal te séduit. Craignez Allah, donc, ô gens intelligents, afin que vous réussissiez.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@dcclxx{O les croyants! Ne posez pas de questions sur des choses qui, si elles vous étaient divulguées, vous mécontenteraient. Et si vous posez des questions à leur sujet, pendant que le Coran est révélé, elles vous seront divulguées. Allah vous a pardonné cela. Et Allah est Pardonneur et Indulgent.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@dcclxxi{Un peuple avant vous avait posé des questions (pareilles) puis, devinrent de leur fait mécréants.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@dcclxxii{Allah n'a pas institué la Bahira, la Sâïba, la Wasîlani le Hâm. Mais ceux qui ont mécru ont inventé ce mensonge contre Allah, et la plupart d'entre eux ne raisonnent pas.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@dcclxxiii{Et quand on leur dit: «Venez vers ce qu'Allah a fait descendre (la Révélation), et vers le Messager», ils disent: «Il nous suffit de ce sur quoi nous avons trouvé nos ancêtres.» Quoi! Même si leurs ancêtres ne savaient rien et n'étaient pas sur le bon chemin...?\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@dcclxxiv{O les croyants! Vous êtes responsables de vous-mêmes! Celui qui s'égare ne vous nuira point si vous vous avez pris la bonne voie. C'est Vers Allah que vous retournerez tous; alors Il vous informera de ce que vous faisiez.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@dcclxxv{O les croyants! Quand la mort se présente à l'un de vous, le testament sera attesté par deux hommes intègres d'entre vous, ou deux autres, non des vôtres, si vous êtes en voyage dans le monde et que la mort vous frappe. Vous les retiendrez (les deux témoins), après la Sal?t, puis, si vous avez des doutes, vous les ferez jurer par Allah: «Nous ne faisons aucun commerce ou profit avec cela, même s'il s'agit d'un proche, et nous ne cacherons point le témoignage d'Allah. Sinon, nous serions du nombre des pécheurs».\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@dcclxxvi{Si l'on découvre que ces deux témoins sont coupables de péché, deux autres plus intègres, parmi ceux auxquels le tort a été fait, prendront leur place et tous deux jureront par Allah: «En vérité, notre témoignage est plus juste que le témoignage de ces deux-là; et nous ne transgressons point. Sinon, nous serions certainement du nombre des injustes».\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@dcclxxvii{C'est le moyen le plus sûr pour les inciter à fournir le témoignage dans sa forme réelle; ou leur faire craindre de voir d'autres serments se substituer aux leurs. Et craignez Allah et écoutez. Allah ne guide pas les gens pervers.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@dcclxxviii{(Rappelle-toi) le jour où Allah rassemblera (tous) les messagers, et qu'Il dira: «Que vous a-t-on donné comme réponse?» Ils diront: «Nous n'avons aucun savoir: c'est Toi, vraiment, le grand connaisseur de tout ce qui est inconnu».\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@dcclxxix{Et quand Allah dira: «O Jésus, fils de Marie, rappelle-toi Mon bienfait sur toi et sur ta mère quand Je te fortifiais du Saint-Esprit. Au berceau tu parlais aux gens, tout comme en ton âge mûr. Je t'enseignais le Livre, la Sagesse, la Thora et l'Evangile! Tu fabriquais de l'argile comme une forme d'oiseau par Ma permission; puis tu soufflais dedans. Alors par Ma permission, elle devenait oiseau. Et tu guérissais par Ma permission, l'aveugle-né et le lépreux. Et par Ma permission, tu faisais revivre les morts. Je te protégeais contre les Enfants d'Israël pendant que tu leur apportais les preuves. Mais ceux d'entre eux qui ne croyaient pas dirent: «Ceci n'est que de la magie évidente».\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@dcclxxx{Et quand J'ai révélé aux Apôtres ceci: «Croyez en Moi et en Mon messager (Jésus)». Ils dirent: «Nous croyons; et atteste que nous sommes entièrement soumis».\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@dcclxxxi{Rappelle-toi le moment) où les Apôtres dirent: «O Jésus, fils de Marie, se peut-il que ton Seigneur fasse descendre sur nous du ciel une table servie?» Il leur dit: «Craignez plutôt Allah, si vous êtes croyants».\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@dcclxxxii{Ils dirent: «Nous voulons en manger, rassurer ainsi nos cœurs, savoir que tu nous as réellement dit la vérité et en être parmi les témoins».\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@dcclxxxiii{«O Allah, notre Seigneur, dit Jésus, fils de Marie, fais descendre du ciel sur nous une table servie qui soit une fête pour nous, pour le premier d'entre nous, comme pour le dernier, ainsi qu'un signe de Ta part. Nourris-nous: Tu es le meilleur des nourrisseurs.»\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@dcclxxxiv{«Oui, dit Allah, Je la ferai descendre sur vous. Mais ensuite, quiconque d'entre vous refuse de croire, Je le châtierai d'un châtiment dont Je ne châtierai personne d'autre dans l'univers.»\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@dcclxxxv{(Rappelle-leur) le moment où Allah dira: «O Jésus, fils de Marie, est-ce toi qui as dit aux gens: «Prenez-moi, ainsi que ma mère, pour deux divinités en dehors d'Allah?» Il dira: «Gloire et pureté à Toi! Il ne m'appartient pas de déclarer ce que je n'ai pas le droit de dire! Si je l'avais dit, Tu l'aurais su, certes. Tu sais ce qu'il y a en moi, et je ne sais pas ce qu'il y a en Toi. Tu es, en vérité, le grand connaisseur de tout ce qui est inconnu.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@dcclxxxvi{Je ne leur ai dit que ce que Tu m'avais commandé, (à savoir): «Adorez Allah, mon Seigneur et votre Seigneur». Et je fus témoin contre eux aussi longtemps que je fus parmi eux. Puis quand Tu m'as rappelé, c'est Toi qui fus leur observateur attentif. Et Tu es témoin de toute chose.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@dcclxxxvii{Si Tu les châties, ils sont Tes serviteurs. Et si Tu leur pardonnes, c'est Toi le Puissant, le Sage».\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@dcclxxxviii{Allah dira: «Voilà le jour où leur véracité va profiter aux véridiques: ils auront des Jardins sous lesquels coulent les ruisseaux pour y demeurer éternellement.» Allah les a agréés et eux L'ont agréé. Voilà l'énorme succès.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@dcclxxxix{A Allah seul appartient le royaume des cieux, de la terre et de ce qu'ils renferment. Et Il est Omnipotent.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@dccxc{\basmalahfr Louange à Allah qui a créé les cieux et la terre, et établi les ténèbres et la lumière. Pourtant, les mécréants donnent des égaux à leur Seigneur.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@dccxci{C'est Lui qui vous a créés d'argile; puis il vous a décrété un terme, et il y a un terme fixé auprès de Lui. Pourtant, vous doutez encore!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@dccxcii{Et Lui, Il est Allah dans les cieux et sur la terre. Il connaît ce que vous cachez en vous et ce que vous divulguez et Il sait ce que vous acquérez.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@dccxciii{Et il ne leur vient aucun des signes d'entre les signes de leur Seigneur, sans qu'ils ne s'en détournent.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@dccxciv{Ils traitent de mensonge la vérité quand celle-ci leur vient. Mais ils vont avoir des nouvelles de ce dont ils se moquent.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@dccxcv{N'ont-ils pas vu combien de générations, avant eux, Nous avons détruites, auxquelles Nous avions donné pouvoir sur terre, bien plus que ce que Nous vous avons donnés? Nous avions envoyé, sur eux, du ciel, la pluie en abondance, et Nous avions fait couler des rivières à leurs pieds. Puis Nous les avons détruites, pour leurs péchés; et Nous avons créé après eux, une nouvelle génération.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@dccxcvi{Même si Nous avions fait descendre sur toi (Muhammad) un Livre en papier qu'ils pouvaient toucher de leurs mains, ceux qui ne croient pas auraient certainement dit: «Ce n'est que de la magie évidente!»\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@dccxcvii{Et ils disent: «Pourquoi n'a-t-on pas fait descendre sur lui (Muhammad) un Ange?» Si Nous avions fait descendre un Ange, c'eût été, sûrement, affaire faite; puis on ne leur eût point donné de délai.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@dccxcviii{Si Nous avions désigné un Ange [comme prophète], Nous aurions fait de lui un homme et Nous leur aurions causé la même confusion que celle dans laquelle ils sont.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@dccxcix{Certes, on s'est moqué de messagers avant toi, mais ceux qui se sont raillés d'eux, leur propre raillerie les enveloppa.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@dccc{Dis: «Parcourez la terre et regardez ce qu'il est advenu de ceux qui traitaient la vérité de mensonge».\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@dccci{Dis: «A qui appartient ce qui est dans les cieux et la terre?» Dis: «A Allah!» Il S'est à Lui-même prescrit la miséricorde. Il vous rassemblera, certainement, au Jour de la Résurrection: il n'y a pas de doute là-dessus. Ceux qui font leur propre perte sont ceux qui ne croient pas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@dcccii{Et à Lui tout ce qui réside dans la nuit et le jour. C'est Lui qui est l'Audient, l'Omniscient.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@dccciii{Dis: «Devais-je prendre pour allié autre qu'Allah, le Créateur des cieux et de la terre? C'est Lui qui nourrit et personne ne Le nourrit. Dis: «On m'a commandé d'être le premier à me soumettre». Et ne sois jamais du nombre des associateurs.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@dccciv{Dis: «Je crains, si je désobéis à mon Seigneur, le châtiment d'un jour redoutable».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@dcccv{En ce jour, quiconque est épargné, c'est qu'[Allah] lui a fait miséricorde. Et voilà le succès éclatant.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@dcccvi{Et si Allah fait qu'un malheur te touche, nul autre que Lui ne peut l'enlever. Et s'Il fait qu'un bonheur te touche... c'est qu'Il est Omnipotent.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@dcccvii{C'est Lui le Dominateur Suprême sur Ses serviteurs; c'est Lui le Sage, le Parfaitement Connaisseur.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@dcccviii{Dis: «Qu'y a-t-il de plus grand en fait de témoignage?» Dis: «Allah est témoin entre moi et vous; et ce Coran m'a été révélé pour que je vous avertisse, par sa voie, vous et tous ceux qu'il atteindra. «Est-ce vous vraiment qui attestez qu'il y ait avec Allah d'autres divinités? Dis: «Je n'atteste pas». Dis [aussi]: «Il n'y a qu'une Divinité Unique. Et moi, je désavoue ce que vous (Lui) associez».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@dcccix{Ceux à qui Nous avons donné le Livre reconnaissent (le Messager Muhammad) comme ils reconnaissent leurs propres enfants. Ceux qui font leur propre perte sont ceux qui ne croient pas.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@dcccx{Qui donc est plus injuste que celui qui invente un mensonge contre Allah, ou qui traite de mensonge Ses versets? Les injustes ne réussiront pas.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@dcccxi{Et le Jour où Nous les rassemblerons tous puis dirons à ceux qui auront donné des associés: «Où sont donc vos associés que vous prétendiez?»\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@dcccxii{Alors il ne leur restera comme excuse que de dire: «Par Allah notre Seigneur! Nous n'étions jamais des associateurs».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@dcccxiii{Vois comment ils mentent à eux-mêmes! Et comment les abandonnent (les associés) qu'ils inventaient!\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@dcccxiv{Il en est parmi eux qui viennent t'écouter, cependant que Nous avons entouré de voiles leurs cœurs, qui les empêchent de comprendre (le Coran), et dans leurs oreilles est une lourdeur. Quand même ils verraient toutes sortes de preuves, ils n'y croiraient pas. Et quand ils viennent disputer avec toi, ceux qui ne croient pas disent alors: «Ce ne sont que des légendes des anciens».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@dcccxv{Ils empêchent [les gens] de s'approcher de lui et s'en écartent eux-mêmes. Ils ne feront périr qu'eux-mêmes sans s'en rendre compte.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@dcccxvi{Si tu les voyais, quand ils seront placés devant le Feu. Ils diront alors: «Hélas! Si nous pouvions être renvoyés (sur la terre), nous ne traiterions plus de mensonges les versets de notre Seigneur et nous serions du nombre des croyants».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@dcccxvii{Mais non! Voilà que leur apparaîtra ce qu'auparavant ils cachaient. Or, s'ils étaient rendus [à la vie terrestre], ils reviendraient sûrement à ce qui leur était interdit. Ce sont vraiment des menteurs.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@dcccxviii{Et ils disent: «Il n'y a pour nous [d'autre vie] que celle d'ici-bas; et nous ne serons pas ressuscités».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@dcccxix{Si tu les voyais, quand ils comparaîtront devant leur Seigneur. Il leur dira: «Cela n'est-il pas la vérité?» Ils diront: «Mais si! Par notre Seigneur!» Et, il dira: «Goûtez alors au châtiment pour n'avoir pas cru».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@dcccxx{Sont perdants certes ceux qui traitent de mensonge la rencontre d'Allah. Et quand soudain l'Heure leur viendra, ils diront: «Malheur à nous pour notre négligence à son égard, Et ils porteront leurs fardeaux sur leurs dos, et quels mauvais fardeaux!\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@dcccxxi{La présente vie n'est que jeu et amusement. La demeure dans l'au-delà sera meilleure pour ceux qui sont pieux. Eh bien, ne comprenez-vous pas?\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@dcccxxii{Nous savons qu'en vérité ce qu'ils disent te chagrine. Or, vraiment ils ne croient pas que tu es menteur, mais ce sont les versets (le Coran) d'Allah, que les injustes renient.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@dcccxxiii{Certes, des messagers avant toi (Muhammad) ont été traités de menteurs. Ils endurèrent alors avec constance d'être traités de menteurs et d'être persécutés, jusqu'à ce que Notre secours leur vînt. Et nul ne peut changer les paroles d'Allah, et il t'est déjà parvenu une partie de l'histoire des Envoyés.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@dcccxxiv{Et si leur indifférence t'afflige énormément, et qu'il est dans ton pouvoir de chercher un tunnel à travers la terre, ou une échelle pour aller au ciel pour leur apporter un miracle, [fais-le donc]. Et si Allah voulait, Il pourrait les mettre tous sur le chemin droit. Ne sois pas du nombre des ignorants.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@dcccxxv{Seuls ceux qui entendent répondent à l'appel [de la foi]. Et quant aux morts, Allah les ressuscitera; puis ils Lui seront ramenés.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@dcccxxvi{Et ils disent: «Pourquoi n'a-t-on pas fait descendre sur lui (Muhammad) un miracle de la part de son Seigneur?» Dis: «Certes Allah est capable de faire descendre un miracle. Mais la plupart d'entre eux ne savent pas».\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@dcccxxvii{Nulle bête marchant sur terre, nul oiseau volant de ses ailes, qui ne soit comme vous en communauté. Nous n'avons rien omis d'écrire dans le Livre. Puis, c'est vers leur Seigneur qu'ils seront ramenés.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@dcccxxviii{Et ceux qui traitent de mensonges Nos versets sont sourds et muets, dans les ténèbres. Allah égare qui Il veut; et Il place qui Il veut sur un chemin droit.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@dcccxxix{Dis: «Informez-moi: si le châtiment d'Allah vous vient, ou que vous vient l'Heure, ferez-vous appel à autre qu'Allah, si vous êtes véridiques?»\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@dcccxxx{C'est plutôt à Lui que vous ferez appel. Puis, Il dissipera, s'Il veut, l'objet de votre appel et vous oublierez ce que vous [Lui] associez.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@dcccxxxi{Nous avons, certes, envoyé (des messagers) aux communautés avant toi. Ensuite Nous les avons saisies par l'adversité et la détresse - peut-être imploreront-ils (la miséricorde)! -\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@dcccxxxii{Pourquoi donc, lorsque Notre rigueur leur vînt, n'ont-ils pas imploré (la miséricorde)? Mais leurs cœurs s'étaient endurcis et le Diable enjolivait à leurs yeux ce qu'ils faisaient.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@dcccxxxiii{Puis, lorsqu'ils eurent oublié ce qu'on leur avait rappelé, Nous leur ouvrîmes les portes donnant sur toute chose (l'abondance); et lorsqu'ils eurent exulté de joie en raison de ce qui leur avait été donné, Nous les saisîmes soudain, et les voilà désespérés.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@dcccxxxiv{Ainsi fut exterminé le dernier reste de ces injustes. Et louange à Allah, Seigneur de l'Univers!\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@dcccxxxv{Dis: «Voyez-vous? Si Allah prenait votre ouïe et votre vue, et scellait vos cœurs, quelle divinité autre qu'Allah vous les rendrait? Regarde comment, à leur intention, Nous clarifions les preuves! Pourtant ils s'en détournent.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@dcccxxxvi{Dis: «Que vous en semble? Si le châtiment d'Allah vous venait à l'improviste ou au grand jour, qui seront détruits sinon les gens injustes?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@dcccxxxvii{Nous n'envoyons des messagers qu'en annonciateurs et avertisseurs: ceux qui croient donc et se réforment, nulle crainte sur eux et ils ne seront point affligés.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@dcccxxxviii{Et ceux qui traitent de mensonges Nos preuves, le châtiment les touchera, à cause de leur perversité.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@dcccxxxix{Dis-[leur]: «Je ne vous dis pas que je détiens les trésors d'Allah, ni que je connais l'Inconnaissable, et je ne vous dis pas que je suis un ange. Je ne fais que suivre ce qui m'est révélé.» Dis: «Est-ce que sont égaux l'aveugle et celui qui voit? Ne réfléchissez-vous donc pas?»\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@dcccxl{Et avertis par ceci (le Coran), ceux qui craignent d'être rassemblés devant leur Seigneur, qu'ils n'auront hors d'Allah ni allié ni intercesseur. Peut-être deviendraient-ils pieux!\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@dcccxli{Et ne repousse pas ceux qui, matin et soir, implorent leur Seigneur, cherchant sa Face «Wajh». Leur demander compte ne t'incombe en rien, et te demander compte ne leur incombe en rien. En les repoussant donc, tu serais du nombre des injustes.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@dcccxlii{Ainsi, éprouvons-Nous (les gens) les uns par les autres, pour qu'ils disent: «Est-ce là ceux qu'Allah a favorisés parmi nous?» N'est-ce pas Allah qui sait le mieux lesquels sont reconnaissants?\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@dcccxliii{Et lorsque viennent vers toi ceux qui croient à nos versets (le Coran), dis: «Que la paix soit sur vous! Votre Seigneur S'est prescrit à Lui-même la miséricorde. Et quiconque d'entre vous a fait un mal par ignorance, et ensuite s'est repenti et s'est réformé... Il est, alors, Pardonneur et Miséricordieux».\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@dcccxliv{C'est ainsi que Nous détaillons les versets, afin qu'apparaisse clairement le chemin des criminels.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@dcccxlv{Dis: «il m'a été interdit d'adorer ceux que vous priez en dehors d'Allah». Dis: «Je ne suivrai pas vos passions: car ce serait m'égarer, et je ne serais plus parmi les bien-guidés».\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@dcccxlvi{Dis: «Je m'appuie sur une preuve évidente de la part de mon Seigneur, et vous avez traité cela de mensonge. Ce (le châtiment) que vous voulez hâter ne dépend pas de moi. Le jugement n'appartient qu'à Allah: Il tranche en toute vérité et Il est le meilleur des juges.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@dcccxlvii{Dis: «Si ce que vous voulez hâter dépendait de moi, ce serait affaire faite entre vous et moi.» C'est Allah qui connaît le mieux les injustes.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@dcccxlviii{C'est Lui qui détient les clefs de l'Inconnaissable. Nul autre que Lui ne les connaît. Et Il connaît ce qui est dans la terre ferme, comme dans la mer. Et pas une feuille ne tombe qu'Il ne le sache. Et pas une graine dans les ténèbres de la terre, rien de frais ou de sec, qui ne soit consigné dans un livre explicite.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@dcccxlix{Et, la nuit, c'est Lui qui prend vos âmes, et Il sait ce que vous avez acquis pendant le jour. Puis Il vous ressuscite le jour afin que s'accomplisse le terme fixé. Ensuite, c'est vers Lui que sera votre retour, et Il vous informera de ce que vous faisiez.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@dcccl{Et Il est le Dominateur Suprême sur Ses serviteurs. Et Il envoie sur vous des gardiens. Et lorsque la mort atteint l'un de vous, Nos messagers (les Anges) enlèvent son âme sans aucune négligence.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@dcccli{Ils sont ensuite ramenés vers Allah, leur vrai Maître. C'est à Lui qu'appartient le jugement et Il est le plus prompt des juges.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@dccclii{Dis: «Qui vous délivre des ténèbres de la terre et de la mer?» Vous l'invoquez humblement et en secret: «S'Il nous délivre de ceci, nous serons du nombre des reconnaissants.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@dcccliii{Dis: «C'est Allah qui vous en délivre ainsi que de toute angoisse. Pourtant, vous Lui donnez des associés».\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@dcccliv{Dis: «Il est capable, Lui, de susciter contre vous, d'en haut, ou de dessous vos pieds, un châtiment, ou de vous confondre dans le sectarisme. Et Il vous fait goûter l'ardeur [au combat] les uns aux autres.» Regarde comment Nous exposons Nos versets. Peut-être comprendront-ils?\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@dccclv{Et ton peuple traite cela (le Coran) de mensonge, alors que c'est la vérité. Dis: «Je ne suis pas votre garant.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@dccclvi{Chaque annonce arrive en son temps et en son lieu. Et bientôt vous le saurez.»\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@dccclvii{Quand tu vois ceux qui pataugent dans des discussions à propos de Nos versets, éloigne-toi d'eux jusqu'à ce qu'ils entament une autre discussion. Et si le Diable te fait oublier, alors, dès que tu te rappelles, ne reste pas avec les injustes.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@dccclviii{Il n'incombe nullement à ceux qui sont pieux de rendre compte pour ces gens là. Mais c'est à titre de rappel. Peut-être craindront-ils [Allah].\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@dccclix{Laisse ceux qui prennent leur religion pour jeu et amusement, et qui sont séduits par la vie sur terre. Et rappelle par ceci (le Coran) pour qu'une âme ne s'expose pas à sa perte selon ce qu'elle aura acquis, elle n'aura en dehors d'Allah, ni allié ni intercesseur. Et quelle que soit la compensation qu'elle offrirait, elle ne sera pas acceptée d'elle. Ceux-là se sont abandonnés à leur perdition à cause de ce qu'ils ont acquis. Leur breuvage sera l'eau bouillante et ils auront un châtiment douloureux, pour avoir mécru.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@dccclx{Dis: «Invoquerons-nous, au lieu d'Allah, ce qui ne peut nous profiter ni nous nuire? Et reviendrons-nous sur nos talons après qu'Allah nous a guidés, comme quelqu'un que les diables ont séduit et qui erre perplexe sur la terre, bien que des amis l'appellent vers le droit chemin (lui disant): - «Viens à nous». Dis: «Le vrai chemin, c'est le chemin d'Allah. Et il nous a été commandé de nous soumettre au Seigneur de l'Univers,\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@dccclxi{Et d'accomplir la Salât et de Le craindre. C'est vers Lui que vous serez rassemblés».\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@dccclxii{Et c'est Lui qui a créé les cieux et la terre, en toute vérité. Et le jour où Il dit: «Sois!» Cela est, Sa parole est la vérité. A Lui, [seul,] la royauté, le jour où l'on soufflera dans la Trompe. C'est Lui le Connaisseur de ce qui est voilé et de ce qui est manifeste. Et c'est Lui le Sage et le Parfaitement Connaisseur.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@dccclxiii{(Rappelle le moment) où Abraham dit à `Azar, son père: «Prends-tu des idoles comme divinités? Je te vois, toi et ton peuple, dans un égarement évident!»\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@dccclxiv{Ainsi avons-Nous montré à Abraham le royaume des cieux et de la terre, afin qu'il fût de ceux qui croient avec conviction.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@dccclxv{Quand la nuit l'enveloppa, il observa une étoile, et dit: «Voilà mon Seigneur!» Puis, lorsqu'elle disparut, il dit: «Je n'aime pas les choses qui disparaissent».\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@dccclxvi{Lorsqu'ensuite il observa la lune se levant, il dit: «Voilà mon Seigneur!» Puis, lorsqu'elle disparut, il dit: «Si mon Seigneur ne me guide pas, je serai certes du nombre des gens égarés».\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@dccclxvii{Lorsqu'ensuite il observa le soleil levant, il dit: «Voilà mon Seigneur! Celui-ci est plus grand» Puis lorsque le soleil disparut, il dit: «O mon peuple, je désavoue tout ce que vous associez à Allah.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@dccclxviii{Je tourne mon visage exclusivement vers Celui qui a créé (à partir du néant) les cieux et la terre; et je ne suis point de ceux qui Lui donnent des associés.»\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@dccclxix{Son peuple disputa avec lui; mais il dit: «Allez-vous disputer avec moi au sujet d'Allah, alors qu'Il m'a guidé? Je n'ai pas peur des associés que vous Lui donnez. Je ne crains que ce que veut mon Seigneur. Mon Seigneur embrasse tout dans Sa science. Ne vous rappelez-vous donc pas?\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@dccclxx{Et comment aurais-je peur des associés que vous Lui donnez, alors que vous n'avez pas eu peur d'associer à Allah des choses pour lesquelles Il ne vous a fait descendre aucune preuve? Lequel donc des deux partis a le plus droit à la sécurité? (Dites-le) si vous savez.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@dccclxxi{Ceux qui ont cru et n'ont point troublé la pureté de leur foi par quelqu'inéquité (association), ceux-là ont la sécurité; et ce sont eux les bien-guidés».\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@dccclxxii{Tel est l'argument que Nous inspirâmes à Abraham contre son peuple. Nous élevons en haut rang qui Nous voulons. Ton Seigneur est Sage et Omniscient.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@dccclxxiii{Et Nous lui avons donné Isaac et Jacob et Nous les avons guidés tous les deux. Et Noé, Nous l'avons guidé auparavant, et parmi la descendance (d'Abraham) (ou de Noé), David, Salomon, Job, Joseph, Moïse et Aaron. Et c'est ainsi que Nous récompensons les bienfaisants.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@dccclxxiv{De même, Zacharie, Jean-Baptiste, Jésus et Elie, tous étant du nombre des gens de bien.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@dccclxxv{De même, Ismaël, Elisée, Jonas et Lot. Chacun d'eux Nous l'avons favorisé par dessus le reste du monde.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@dccclxxvi{De même une partie de leurs ancêtres, de leurs descendants et de leurs frères et Nous les avons choisis et guidés vers un chemin droit.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@dccclxxvii{Telle est la direction par laquelle Allah guide qui Il veut parmi Ses serviteurs. Mais s'ils avaient donné à Allah des associés, alors, tout ce qu'ils auraient fait eût certainement été vain.\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@dccclxxviii{C'est à eux que Nous avons apporté le Livre, la sagesse et la prophétie. Si ces autres-là n'y croient pas, du moins Nous avons confié ces choses à des gens qui ne les nient pas.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@dccclxxix{Voilà ceux qu'Allah a guidés: suis donc leur direction. Dis: «Je ne vous demande pas pour cela de salaire». Ce n'est qu'un rappel à l'intention de tout l'univers.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@dccclxxx{Ils n'apprécient pas Allah comme Il le mérite quand ils disent: «Allah n'a rien fait descendre sur un humain.» Dis: «Qui a fait descendre le Livre que Moïse a apporté comme lumière et guide, pour les gens? Vous le mettez en feuillets, pour en montrer une partie, tout en cachant beaucoup. Vous avez été instruits de ce que vous ne saviez pas, ni vous ni vos ancêtres. Dis: «C'est Allah». Et puis, laisse-les s'amuser dans leur égarement.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@dccclxxxi{Voici un Livre (le Coran) béni que Nous avons fait descendre, confirmant ce qui existait déjà avant lui, afin que tu avertisses la Mère des Cités (la Mecque) et les gens tout autour. Ceux qui croient au Jour dernier, y croient et demeurent assidus dans leur Salât.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@dccclxxxii{Et quel pire injuste que celui qui fabrique un mensonge contre Allah ou qui dit: «Révélation m'a été faite», quand rien ne lui a été révélé. De même celui qui dit: «Je vais faire descendre quelque chose de semblable à ce qu'Allah a fait descendre.» Si tu voyais les injustes lorsqu'ils seront dans les affres de la mort, et que les Anges leur tendront les mains (disant): «Laissez sortir vos âmes. Aujourd'hui vous allez être récompensés par le châtiment de l'humiliation pour ce que vous disiez sur Allah d'autre que la vérité et parce que vous vous détourniez orgueilleusement de Ses enseignements».\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@dccclxxxiii{Et vous voici venus à Nous, seuls, tout comme Nous vous avions créés la première fois, abandonnant derrière vos dos tout ce que Nous vous avions accordé. Nous ne vous voyons point accompagnés des intercesseurs que vous prétendiez être des associés. Il y a certainement eu rupture entre vous: ils vous ont abandonnés, ceux que vous prétendiez (être vos intercesseurs).\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@dccclxxxiv{C'est Allah qui fait fendre la graine et le noyau: du mort il fait sortir le vivant, et du vivant, il fait sortir le mort. Tel est Allah. Comment donc vous laissez-vous détourner?\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@dccclxxxv{Fendeur de l'aube, Il a fait de la nuit une phase de repos; le soleil et la lune pour mesurer le temps. Voilà l'ordre conçu par le Puissant, l'Omniscient.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@dccclxxxvi{Et c'est Lui qui vous a assigné les étoiles, pour que, par elles, vous vous guidiez dans les ténèbres de la terre et de la mer. Certes, Nous exposons les preuves pour ceux qui savent!\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@dccclxxxvii{Et c'est Lui qui vous a créés à partir d'une personne unique (Adam). Et il y a une demeure et un lieu de dépôt (pour vous.) Nous avons exposé les preuves pour ceux qui comprennent.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@dccclxxxviii{Et c'est Lui qui, du ciel, a fait descendre l'eau. Puis par elle, Nous fîmes germer toute plante, de quoi Nous fîmes sortir une verdure, d'où Nous produisîmes des grains, superposés les uns sur les autres; et du palmier, de sa spathe, des régimes de dattes qui se tendent. Et aussi les jardins de raisins, l'olive et la grenade, semblables ou différents les uns des autres. Regardez leurs fruits au moment de leur production et de leur mûrissement. Voilà bien là des signes pour ceux qui ont la foi.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@dccclxxxix{Et ils ont désigné des associés à Allah: les djinns, alors que c'est Lui qui les a créés. Et ils Lui ont inventé, dans leur ignorance, des fils et des filles, Gloire à Lui! Il transcende tout ce qu'ils lui attribuent.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@dcccxc{Créateur des cieux et de la terre. Comment aurait-Il un enfant, quand Il n'a pas de compagne? C'est Lui qui a tout créé, et Il est Omniscient.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@dcccxci{Voilà Allah, votre Seigneur! Il n'y a de divinité que Lui, Créateur de tout. Adorez-Le donc. C'est Lui qui a charge de tout.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@dcccxcii{Les regards ne peuvent l'atteindre, cependant qu'Il saisit tous les regards. Et Il est le Doux, le Parfaitement Connaisseur.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@dcccxciii{Certes, il vous est parvenu des preuves évidentes, de la part de votre Seigneur. Donc, quiconque voit clair, c'est en sa faveur; et quiconque reste aveugle, c'est à son détriment, car je ne suis nullement chargé de votre sauvegarde.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@dcccxciv{C'est ainsi que Nous expliquons les versets. Et afin qu'ils disent: «Tu as étudié». Et afin de l'exposer clairement à des gens qui savent.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@dcccxcv{Suis ce qui t'est révélé de la part de ton Seigneur. Point de divinité autre que Lui. Et écarte-toi des associateurs.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@dcccxcvi{Si Allah voulait, ils ne seraient point associateurs! Mais Nous ne t'avons pas désigné comme gardien sur eux; et tu n'es pas leur garant.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@dcccxcvii{N'injuriez pas ceux qu'ils invoquent, en dehors d'Allah, car par agressivité, ils injurieraient Allah, dans leur ignorance. De même, Nous avons enjolivé (aux yeux) de chaque communauté sa propre action. Ensuite, c'est vers leur Seigneur que sera leur retour; et Il les informera de ce qu'ils œuvraient.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@dcccxcviii{Et ils jurent par Allah de toute la force de leurs serments, que s'il leur venait un miracle, ils y croiraient (sans hésiter,) Dis: «En vérité, les miracles ne dépendent que d'Allah.» Mais qu'est ce qui vous fait penser que quand cela (le signe) arrivera, ils n'y croiront pas?\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@dcccxcix{Parce qu'ils n'ont pas cru la première fois, nous détournerons leurs cœurs et leurs yeux; nous les laisserons marcher aveuglement dans leur rébellion.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@cm{Et si Nous faisions descendre les Anges vers eux, [comme ils l'avaient proposé] si les morts leur parlaient, et si Nous rassemblions toute chose devant eux, ils ne croiraient que si Allah veut. Mais la plupart d'entre eux ignorent.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@cmi{Ainsi, à chaque prophète avons-Nous assigné un ennemi: des diables d'entre les hommes et les djinns, qui s'inspirent trompeusement les uns aux autres des paroles enjolivées. Si ton Seigneur avait voulu, ils ne l'auraient pas fait; laisse-les donc avec ce qu'ils inventent.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@cmii{Et pour que les cœurs de ceux qui ne croient pas à l'au-delà se penchent vers elles, qu'ils les agréent, et qu'ils perpètrent ce qu'ils perpètrent.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@cmiii{Chercherai-je un autre juge qu'Allah, alors que c'est Lui qui a fait descendre vers vous ce Livre bien exposé? Ceux auxquels Nous avons donné le Livre savent qu'il est descendu avec la vérité venant de ton Seigneur. Ne sois donc point du nombre de ceux qui doutent.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@cmiv{Et la parole de ton Seigneur s'est accomplie en toute vérité et équité. Nul ne peut modifier Ses paroles. Il est l'Audient, l'Omniscient.\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@cmv{Et si tu obéis à la majorité de ceux qui sont sur la terre, ils t'égareront du sentier d'Allah: ils ne suivent que la conjecture et ne font que fabriquer des mensonges.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@cmvi{Certes ton Seigneur connaît le mieux ceux qui s'égarent de Son sentier, et c'est Lui qui connaît le mieux les bien-guidés.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@cmvii{Mangez donc de ce sur quoi on a prononcé le nom d'Allah si vous êtes croyants en Ses versets (le Coran).\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@cmviii{Qu'avez-vous à ne pas manger de ce sur quoi le nom d'Allah a été prononcé? Alors qu'Il vous a détaillé ce qu'Il vous a interdit, à moins que vous ne soyez contraints d'y recourir. Beaucoup de gens égarent, sans savoir, par leurs passions. C'est ton Seigneur qui connaît le mieux les transgresseurs.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@cmix{Evitez le péché apparent ou caché, (car) ceux qui acquièrent le péché seront rétribués selon ce qu'ils auront commis.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@cmx{Et ne mangez pas de ce sur quoi le nom d'Allah n'a pas été prononcé, car ce serait (assurément) une perversité. Les diables inspirent à leurs alliés de disputer avec vous. Si vous leur obéissez, vous deviendrez certes des associateurs.\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@cmxi{Est-ce que celui qui était mort et que Nous avons ramené à la vie et à qui Nous avons assigné une lumière grâce à laquelle il marche parmi les gens, est pareil à celui qui est dans les ténèbres sans pouvoir en sortir? Ainsi on a enjolivé aux mécréants ce qu'ils œuvrent.\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@cmxii{Ainsi, Nous avons placé dans chaque cité de grands criminels qui y ourdissent des complots. Mais ils ne complotent que contre eux-mêmes et ils n'en sont pas conscients.\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@cmxiii{Et lorsqu'une preuve leur vient, ils disent: «Jamais nous ne croirons tant que nous n'aurons pas reçu un don semblable à celui qui a été donné aux messagers d'Allah». Allah sait mieux où placer Son message. Ceux qui ont commis le crime seront atteints d'un rapetissement auprès d'Allah ainsi que d'un supplice sévère pour les ruses qu'ils tramaient.\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@cmxiv{Et puis, quiconque Allah veut guider, Il lui ouvre la poitrine à l'Islam. Et quiconque Il veut égarer, Il rend sa poitrine étroite et gênée, comme s'il s'efforçait de monter au ciel. Ainsi Allah inflige Sa punition à ceux qui ne croient pas.\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@cmxv{Telle est la voie de ton Seigneur dans toute sa rectitude. Nous avons [effectivement] bien détaillé les signes (ou versets) à des gens qui se rappellent.\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@cmxvi{Pour eux la maison du Salut auprès de leur Seigneur. Et c'est Lui qui est leur protecteur, pour ce qu'ils faisaient (sur terre).\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@cmxvii{Et le jour où Il les rassemblera tous: «O communauté des djinns, vous avez trop abusé des humains». Et leurs alliés parmi les humains diront: «O notre Seigneur, nous avons profité les uns des autres, et nous avons atteint le terme que Tu avais fixé pour nous.» Il leur dira: «l'Enfer est votre demeure, pour y rester éternellement, sauf si Allah en décide autrement.» Vraiment ton Seigneur est Sage et Omniscient.\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@cmxviii{Et ainsi accordons-Nous, à certains injustes l'autorité sur d'autres, (injustes) à cause de ce qu'ils ont acquis.\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@cmxix{O communauté des djinns et des humains, ne vous est-il pas venu des messagers, choisis parmi vous, qui vous ont raconté Mes signes et averti de la rencontre de ce jour? Ils diront: «Nous témoignons contre nous-mêmes.» La vie présente les a trompés; et ils ont témoigné contre eux-mêmes qu'en (vérité) ils étaient mécréants.\qt@no{(130)}}
+\qt@newcmd\qurantrans@fr@cmxx{C'est que ton Seigneur n'anéantit point injustement des cités dont les gens ne sont pas encore avertis.\qt@no{(131)}}
+\qt@newcmd\qurantrans@fr@cmxxi{A chacun des rangs (des récompenses) selon ses œuvres. Or ton Seigneur n'est pas inattentif à ce qu'ils font.\qt@no{(132)}}
+\qt@newcmd\qurantrans@fr@cmxxii{Ton Seigneur est le Suffisant à Soi-même, le Détenteur de la miséricorde. S'Il voulait, Il vous ferait périr et mettrait à votre place qui Il veut, de même qu'Il vous a créés d'une descendance d'un autre peuple.\qt@no{(133)}}
+\qt@newcmd\qurantrans@fr@cmxxiii{Ce qui vous a été promis arrivera (certainement.) Et vous n'êtes pas à même de [Nous] réduire à l'impuissance.\qt@no{(134)}}
+\qt@newcmd\qurantrans@fr@cmxxiv{Dis: «O mon peuple! Continuez à agir selon votre méthode; moi aussi j'agirai selon la mienne. Ensuite, vous saurez qui aura un meilleur (sort) dans l'au-delà.» Certes, les injustes ne réussiront jamais.\qt@no{(135)}}
+\qt@newcmd\qurantrans@fr@cmxxv{Et ils assignent à Allah une part de ce qu'Il a Lui-même créé, en fait de récoltes et de bestiaux, et ils disent: «Ceci est à Allah - selon leur prétention! - et ceci à nos divinités.» Mais ce qui est pour leurs divinités ne parvient pas à Allah, tandis que ce qui est pour Allah parvient à leurs divinités. Comme leur jugement est mauvais!\qt@no{(136)}}
+\qt@newcmd\qurantrans@fr@cmxxvi{Et c'est ainsi que leurs divinités ont enjolivé à beaucoup d'associateurs le meurtre de leurs enfants, afin de les ruiner et de travestir à leurs yeux leur religion. Or si Allah voulait, ils ne le feraient pas. Laisse-les donc, ainsi que ce qu'ils inventent.\qt@no{(137)}}
+\qt@newcmd\qurantrans@fr@cmxxvii{Et ils dirent: «Voilà des bestiaux et des champs frappés d'interdiction: n'en mangeront que ceux que nous voudrons.» - selon leur prétention! - Et voilà des bêtes dont le dos est tabou, et des bêtes sur lesquelles ils ne mentionnent pas le nom d'Allah. Des inventions contre Lui! Il les rétribuera pour ce qu'ils inventaient comme mensonges.\qt@no{(138)}}
+\qt@newcmd\qurantrans@fr@cmxxviii{Et ils dirent: «Ce qui est dans le ventre de ces bêtes est réservé aux mâles d'entre nous, et interdit à nos femmes.» Et si c'est un mort-né, ils y participent tous. Bientôt Il les rétribuera pour leur prescription, car Il est Sage et Omniscient.\qt@no{(139)}}
+\qt@newcmd\qurantrans@fr@cmxxix{Ils sont certes perdants, ceux qui ont, par sottise et ignorance tué leurs enfants, et ceux qui ont interdit ce qu'Allah leur a attribué de nourriture, inventant des mensonges contre Allah. Ils se sont égarés et ne sont point guidés.\qt@no{(140)}}
+\qt@newcmd\qurantrans@fr@cmxxx{C'est Lui qui a créé les jardins, treillagés et non treillagés; ainsi que les palmiers et la culture aux récoltes diverses; [de même que] l'olive et la grenade, d'espèces semblables et différentes. Mangez de leurs fruits, quand ils en produisent; et acquittez-en les droits le jour de la récolte. Et ne gaspillez point car Il n'aime pas les gaspilleurs.\qt@no{(141)}}
+\qt@newcmd\qurantrans@fr@cmxxxi{Et (Il a créé) parmi les bestiaux, certains pour le transport, et d'autres pour diverses utilités; mangez de ce qu'Allah vous a attribué, et ne suivez pas les pas du Diable, car il est pour vous un ennemi déclaré.\qt@no{(142)}}
+\qt@newcmd\qurantrans@fr@cmxxxii{(Il en a créé) huit, en couples: deux pour les ovins, deux pour les caprins... dis: «Est-ce les deux mâles qu'Il a interdits ou les deux femelles, ou ce qui est dans les matrices des deux femelles? Informez-moi de toute connaissance, si vous êtes véridiques»\qt@no{(143)}}
+\qt@newcmd\qurantrans@fr@cmxxxiii{...deux pour les camélidés, deux pour les bovins... Dis: «Est-ce les deux mâles qu'Il a interdits ou les deux femelles, ou ce qui est dans les matrices des deux femelles? Ou bien étiez-vous témoins quand Allah vous l'enjoignit?» Qui est donc plus injuste que celui qui invente un mensonge contre Allah pour égarer les gens sans se baser sur aucun savoir? Allah ne guide pas les gens injustes.\qt@no{(144)}}
+\qt@newcmd\qurantrans@fr@cmxxxiv{Dis: «Dans ce qui m'a été révélé, je ne trouve d'interdit, à aucun mangeur d'en manger, que la bête (trouvée) morte, ou le sang qu'on a fait couler, ou la chair de porc - car c'est une souillure - ou ce qui, par perversité, a été sacrifié à autre qu'Allah». Quiconque est contraint, sans toutefois abuser ou transgresser, ton Seigneur est certes Pardonneur et Miséricordieux.\qt@no{(145)}}
+\qt@newcmd\qurantrans@fr@cmxxxv{Aux Juifs, Nous avons interdit toute bête à ongle unique. Des bovins et des ovins, Nous leurs avons interdit les graisses, sauf ce que portent leur dos, leurs entrailles, ou ce qui est mêlé à l'os. Ainsi les avons-Nous punis pour leur rébellion. Et Nous sommes bien véridiques.\qt@no{(146)}}
+\qt@newcmd\qurantrans@fr@cmxxxvi{Puis, s'ils te traitent de menteur, alors dis: «Votre Seigneur est Détenteur d'une immense miséricorde cependant que Sa rigueur ne saura être détournée des gens criminels».\qt@no{(147)}}
+\qt@newcmd\qurantrans@fr@cmxxxvii{Ceux qui ont associé diront: «Si Allah avait voulu, nous ne Lui aurions pas donné des associés, nos ancêtres non plus et nous n'aurions rien déclaré interdit.» Ainsi leurs prédécesseurs traitaient de menteurs (les messagers) jusqu'à ce qu'ils eurent goûté Notre rigueur. Dis: «Avez-vous quelque science à nous produire? Vous ne suivez que la conjecture et ne faites que mentir».\qt@no{(148)}}
+\qt@newcmd\qurantrans@fr@cmxxxviii{Dis: «L'argument décisif appartient à Allah. S'Il avait voulu certainement Il vous aurait tous guidés. (sur le droit chemin)\qt@no{(149)}}
+\qt@newcmd\qurantrans@fr@cmxxxix{Dis: «Amenez vos témoins qui attesteraient qu'Allah a interdit cela.» Si ensuite ils témoignent, alors toi, ne témoigne pas avec eux et ne suis pas les passions de ceux qui traitent de mensonges Nos signes et qui ne croient pas à l'au-delà, tandis qu'ils donnent des égaux à leur Seigneur.\qt@no{(150)}}
+\qt@newcmd\qurantrans@fr@cmxl{Dis: «Venez, je vais réciter ce que votre Seigneur vous a interdit: ne Lui associez rien; et soyez bienfaisants envers vos père et mère. Ne tuez pas vos enfants pour cause de pauvreté. Nous vous nourrissons tout comme eux. N'approchez pas des turpitudes ouvertement, ou en cachette. Ne tuez qu'en toute justice la vie qu'Allah a fait sacrée. Voilà ce qu'[Allah] vous a recommandé de faire; peut-être comprendrez-vous.\qt@no{(151)}}
+\qt@newcmd\qurantrans@fr@cmxli{Et ne vous approchez des biens de l'orphelin que de la plus belle manière, jusqu'à ce qu'il ait atteint sa majorité. Et donnez la juste mesure et le bon poids, en toute justice. Nous n'imposons à une âme que selon sa capacité. Et quand vous parlez, soyez équitables même s'il s'agit d'un proche parent. Et remplissez votre engagement envers Allah. Voilà ce qu'Il vous enjoint. Peut-être vous rappellerez-vous.\qt@no{(152)}}
+\qt@newcmd\qurantrans@fr@cmxlii{«Et voilà Mon chemin dans toute sa rectitude, suivez-le donc; et ne suivez pas les sentiers qui vous écartent de Sa voie.» Voilà ce qu'Il vous enjoint. Ainsi atteindrez-vous la piété.\qt@no{(153)}}
+\qt@newcmd\qurantrans@fr@cmxliii{Puis Nous avons donné à Moïse le Livre complet en récompense pour le bien qu'il avait fait, et comme un exposé détaillé de toute chose, un guide et une miséricorde. Peut-être croiraient-ils en leur rencontre avec leur Seigneur (au jour du Jugement dernier).\qt@no{(154)}}
+\qt@newcmd\qurantrans@fr@cmxliv{Et voici un Livre (le Coran) béni que Nous avons fait descendre - suivez-le donc et soyez pieux, afin de recevoir la miséricorde -\qt@no{(155)}}
+\qt@newcmd\qurantrans@fr@cmxlv{afin que vous ne disiez point: «On n'a fait descendre le Livre que sur deux peuples avant nous, et nous avons été inattentifs à les étudier.\qt@no{(156)}}
+\qt@newcmd\qurantrans@fr@cmxlvi{Ou que vous disiez: «Si c'était à nous qu'on avait fait descendre le Livre, nous aurions certainement été mieux guidés qu'eux.» Voilà certes que vous sont venus, de votre Seigneur, preuve, guidée et miséricorde. Qui est plus injuste que celui qui traite de mensonges les versets d'Allah et qui s'en détourne? Nous punirons ceux qui se détournent de Nos versets, par un mauvais châtiment, pour s'en être détournés.\qt@no{(157)}}
+\qt@newcmd\qurantrans@fr@cmxlvii{Qu'attendent-ils? Que les Anges leur viennent? Que vienne ton Seigneur? Ou que viennent certains signes de ton Seigneur? Le jour où certains signes de ton Seigneur viendront, la foi en Lui ne profitera à aucune âme qui n'avait pas cru auparavant ou qui n'avait acquis aucun mérite de sa croyance. Dis: «Attendez!» Nous attendons, Nous aussi.\qt@no{(158)}}
+\qt@newcmd\qurantrans@fr@cmxlviii{Ceux qui émiettent leur religion et se divisent en sectes, de ceux-là tu n'es responsable en rien: leur sort ne dépend que d'Allah. Puis Il les informera de ce qu'ils faisaient.\qt@no{(159)}}
+\qt@newcmd\qurantrans@fr@cmxlix{Quiconque viendra avec le bien aura dix fois autant; et quiconque viendra avec le mal ne sera rétribué que par son équivalent. Et on ne leur fera aucune injustice.\qt@no{(160)}}
+\qt@newcmd\qurantrans@fr@cml{Dis: «Moi, mon Seigneur m'a guidé vers un chemin droit, une religion droite, la religion d'Abraham, le soumis exclusivement à Allah et qui n'était point parmi les associateurs.\qt@no{(161)}}
+\qt@newcmd\qurantrans@fr@cmli{Dis: «En vérité, ma Salât, mes actes de dévotion, ma vie et ma mort appartiennent à Allah, Seigneur de l'Univers.\qt@no{(162)}}
+\qt@newcmd\qurantrans@fr@cmlii{A Lui nul associé! Et voilà ce qu'il m'a été ordonné, et je suis le premier à me soumettre.»\qt@no{(163)}}
+\qt@newcmd\qurantrans@fr@cmliii{Dis: «Chercherais-je un autre Seigneur qu'Allah, alors qu'Il est le Seigneur de toute chose? Chacun n'acquiert [le mal] qu'à son détriment: personne ne portera le fardeau (responsabilité) d'autrui. Puis vers votre Seigneur sera votre retour et Il vous informera de ce en quoi vous divergez.\qt@no{(164)}}
+\qt@newcmd\qurantrans@fr@cmliv{C'est Lui qui a fait de vous les successeurs sur terre et qui vous a élevés, en rangs, les uns au-dessus des autres, afin de vous éprouver en ce qu'Il vous a donné. (Vraiment) ton Seigneur est prompt en punition, Il est aussi Pardonneur et Miséricordieux.\qt@no{(165)}}
+\qt@newcmd\qurantrans@fr@cmlv{\basmalahfr Alif, Lâm, Mîm, Sâd.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@cmlvi{C'est un Livre qui t'a été descendu; qu'il n'y ait, à son sujet, nulle gêne dans ton cœur; afin que par cela tu avertisses, et (qu'il soit) un Rappel aux croyants.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@cmlvii{Suivez ce qui vous a été descendu venant de votre Seigneur et ne suivez pas d'autres alliés que Lui. Mais vous vous souvenez peu.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@cmlviii{Que de cités Nous avons détruites! Or, Notre rigueur les atteignit au cours du repos nocturne ou durant leur sieste.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@cmlix{Leur invocation, lorsque leur survint notre rigueur, se limita à ces paroles: «Certes nous étions injustes».\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@cmlx{Nous interrogerons ceux vers qui furent envoyés des messagers et Nous interrogerons aussi les envoyés.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@cmlxi{Nous leur raconterons en toute connaissance (ce qu'ils faisaient) car Nous n'étions pas absent!\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@cmlxii{Et la pesée, ce jour-là, sera équitable. Donc, celui dont les bonnes actions pèseront lourd... voilà ceux qui réussiront!\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@cmlxiii{Et quant à celui dont les bonnes actions pèseront léger... voilà ceux qui auront causé la perte de leurs âmes parce qu'ils étaient injustes envers Nos enseignements.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@cmlxiv{Certes, Nous vous avons donné du pouvoir sur terre et Nous vous y avons assigné subsistance. (Mais) vous êtes très peu reconnaissants!\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@cmlxv{Nous vous avons créés, puis Nous vous avons donné une forme, ensuite Nous avons dit aux Anges: «Prosternez-vous devant Adam.» Ils se prosternèrent, à l'exception de Iblis qui ne fut point de ceux qui se prosternèrent.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@cmlxvi{[Allah] dit: «Qu'est-ce qui t'empêche de te prosterner quand Je te l'ai commandé?» Il répondit: «Je suis meilleur que lui: Tu m'as créé de feu, alors que Tu l'as créé d'argile».\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@cmlxvii{[Allah] dit: «Descends d'ici, Tu n'as pas à t'enfler d'orgueil ici. Sors, te voilà parmi les méprisés.»\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@cmlxviii{«Accorde-moi un délai, dit (Satan,) jusqu'au jour où ils seront ressuscités.»\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@cmlxix{[Allah] dit: «Tu es de ceux à qui délai est accordé.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@cmlxx{«Puisque Tu m'as mis en erreur, dit [Satan], je m'assoirai pour eux sur Ton droit chemin,\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@cmlxxi{puis je les assaillerai de devant, de derrière, de leur droite et de leur gauche. Et, pour la plupart, Tu ne les trouveras pas reconnaissants.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@cmlxxii{«Sors de là», dit (Allah,) banni et rejeté. Quiconque te suit parmi eux... de vous tous, J'emplirai l'Enfer».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@cmlxxiii{«O Adam, habite le Paradis, toi et ton épouse; et mangez en vous deux, à votre guise; et n'approchez pas l'arbre que voici; sinon, vous seriez du nombre des injustes.»\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@cmlxxiv{Puis le Diable, afin de leur rendre visible ce qui leur était caché - leurs nudités - leur chuchota, disant: «Votre Seigneur ne vous a interdit cet arbre que pour vous empêcher de devenir des Anges ou d'être immortels».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@cmlxxv{Et il leur jura: «Vraiment, je suis pour vous deux un bon conseiller».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@cmlxxvi{Alors il les fit tomber par tromperie. Puis, lorsqu'ils eurent goûté de l'arbre, leurs nudités leur devinrent visibles; et ils commencèrent tous deux à y attacher des feuilles du Paradis. Et leur Seigneur les appela: «Ne vous avais-Je pas interdit cet arbre? Et ne vous avais-Je pas dit que le Diable était pour vous un ennemi déclaré?»\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@cmlxxvii{Tous deux dirent: «O notre Seigneur, nous avons fait du tort à nous-mêmes. Et si Tu ne nous pardonnes pas et ne nous fais pas miséricorde, nous serons très certainement du nombre des perdants».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@cmlxxviii{«Descendez, dit [Allah], vous serez ennemis les uns des autres. Et il y aura pour vous sur terre séjour et jouissance, pour un temps.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@cmlxxix{«Là, dit (Allah), vous vivrez, là vous mourrez, et de là on vous fera sortir.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@cmlxxx{O enfants d'Adam! Nous avons fait descendre sur vous un vêtement pour cacher vos nudités, ainsi que des parures. - Mais le vêtement de la piété voilà qui est meilleur - C'est un des signes (de la puissance) d'Allah. Afin qu'ils se rappellent.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@cmlxxxi{O enfants d'Adam! Que le Diable ne vous tente point, comme il a fait sortir du Paradis vos père et mère, leur arrachant leur vêtement pour leur rendre visibles leurs nudités. Il vous voit, lui et ses suppôts, d'où vous ne les voyez pas. Nous avons désigné les diables pour alliés à ceux qui ne croient point,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@cmlxxxii{et quand ceux-ci commettent une turpitude, ils disent: «C'est une coutume léguée par nos ancêtres et prescrite par Allah.» Dis: «[Non,] Allah ne commande point la turpitude. Direz-vous contre Allah ce que vous ne savez pas?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@cmlxxxiii{Dis: «Mon Seigneur a commandé l'équité. Que votre prosternation soit exclusivement pour Lui. Et invoquez-Le, sincères dans votre culte. De même qu'Il vous a créés, vous retournerez à Lui».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@cmlxxxiv{Il guide une partie, tandis qu'une autre partie a mérité l'égarement parce qu'ils ont pris, au lieu d'Allah, les diables pour alliés, et ils pensent qu'ils sont bien-guidés!\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@cmlxxxv{O enfants d'Adam, dans chaque lieu de Salât portez votre parure (vos habits). Et mangez et buvez; et ne commettez pas d'excès, car Il [Allah] n'aime pas ceux qui commettent des excès.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@cmlxxxvi{Dis: «Qui a interdit la parure d'Allah, qu'Il a produite pour Ses serviteurs, ainsi que les bonnes nourritures?» Dis: «Elles sont destinées à ceux qui ont la foi, dans cette vie, et exclusivement à eux au Jour de la Résurrection.» Ainsi exposons-Nous clairement les versets pour les gens qui savent.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@cmlxxxvii{Dis: «Mon Seigneur n'a interdit que les turpitudes (les grands péchés), tant apparentes que secrètes, de même que le péché, l'agression sans droit et d'associer à Allah ce dont Il n'a fait descendre aucune preuve, et de dire sur Allah ce que vous ne savez pas».\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@cmlxxxviii{Pour chaque communauté il y a un terme. Quand leur terme vient, ils ne peuvent le retarder d'une heure et ils ne peuvent le hâter non plus.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@cmlxxxix{O enfants d'Adam! Si des messagers [choisis] parmi vous viennent pour vous exposer Mes signes, alors ceux qui acquièrent la piété et se réforment, n'auront aucune crainte et ne seront point affligés.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@cmxc{Et ceux qui traitent de mensonges Nos signes et s'en écartent avec orgueil, sont les gens du Feu et ils y demeureront éternellement.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@cmxci{Quel pire injuste, que celui qui invente un mensonge contre Allah, ou qui traite de mensonges Ses signes? Ceux là auront la part qui leur a été prescrite; jusqu'au moment où Nos Envoyés [Nos Anges] viennent à eux pour leur enlever l'âme, en leur disant: «Où sont ceux que vous invoquiez en dehors d'Allah?» - Ils répondront: «Nous ne les trouvons plus». Et ils témoigneront contre eux-mêmes qu'ils étaient mécréants.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@cmxcii{«Entrez dans le Feu», dira [Allah,] «parmi les djinns et les hommes des communautés qui vous ont précédés.» Chaque fois qu'une communauté entrera, elle maudira celle qui l'aura précédée. Puis, lorsque tous s'y retrouveront, la dernière fournée dira de la première: «O notre Seigneur! Voilà ceux qui nous ont égarés: donne-leur donc double châtiment du feu.» Il dira: «A chacun le double, mais vous ne savez pas».\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@cmxciii{Et la première fournée dira à la dernière: «Mais vous n'avez sur nous aucun avantage. Goûtez donc au châtiment, pour ce que vous avez acquis».\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@cmxciv{Pour ceux qui traitent de mensonges Nos enseignements et qui s'en écartent par orgueil, les portes du ciel ne leur seront pas ouvertes, et ils n'entreront au Paradis que quand le chameau pénètre dans le chas de l'aiguille. Ainsi rétribuons-Nous les criminels.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@cmxcv{L'Enfer leur servira de lit et, comme couverture, ils auront des voiles de ténèbres. Ainsi rétribuons-Nous les injustes.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@cmxcvi{Et ceux qui croient et font de bonnes œuvres - Nous n'imposons aucune charge à personne que selon sa capacité - ceux-là seront les gens du Paradis: ils y demeureront éternellement.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@cmxcvii{Et Nous enlèverons toute la rancune de leurs poitrines, sous eux couleront les ruisseaux, et ils diront: «Louange à Allah qui nous a guidés à ceci. Nous n'aurions pas été guidés, si Allah ne nous avait pas guidés. Les messagers de notre Seigneur sont venus avec la vérité.» Et on leur proclamera: «Voilà le Paradis qui vous a été donné en héritage pour ce que vous faisiez».\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@cmxcviii{Les gens du Paradis crieront aux gens du Feu: «Certes, nous avons trouvé vrai ce que notre Seigneur nous avait promis. Avez-vous aussi trouvé vrai ce que votre Seigneur avait promis?» «Oui», diront-ils. Un héraut annoncera alors au milieu d'eux: Que la malédiction d'Allah soit sur les injustes,\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@cmxcix{qui obstruaient le sentier d'Allah, qui voulaient le rendre tortueux, et qui ne croyaient pas à l'au-delà.»\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@m{Et entre les deux, il y aura un mur, et, sur al-A'râf seront des gens qui reconnaîtront tout le monde par leurs traits caractéristiques. Et ils crieront aux gens du Paradis: «Paix sur vous!» Ils n'y sont pas entrés bien qu'ils le souhaitent.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mi{Et quand leurs regards seront tournés vers les gens du Feu, ils diront; «O notre Seigneur! Ne nous mets pas avec le peuple injuste».\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mii{Et les gens d'al-A'râf, appelant certains hommes qu'ils reconnaîtront par leurs traits caractéristiques, diront: «Vous n'avez tiré aucun profit de tout ce que vous aviez amassé et de l'orgueil dont vous étiez enflés!\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@miii{Est-ce donc ceux-là au sujet desquels vous juriez qu'ils n'obtiendront de la part d'Allah aucune miséricorde...? - Entrez au Paradis! Vous serez à l'abri de toute crainte et vous ne serez point affligés.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@miv{Et les gens du Feu crieront aux gens du Paradis: «Déversez sur nous de l'eau, ou de ce qu'Allah vous a attribué.» «Ils répondront: Allah les a interdits aux mécréants».\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mv{Ceux-ci prenaient leur religion comme distraction et jeu, et la vie d'ici-bas les trompait. Aujourd'hui, Nous les oublierons comme ils ont oublié la rencontre de leur jour que voici, et parce qu'ils reniaient Nos enseignements.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mvi{Nous leur avons, certes, apporté un Livre que Nous avons détaillé, en toute connaissance, à titre de guide et de miséricorde pour les gens qui croient.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mvii{Attendent-ils uniquement la réalisation (de Sa menace et de Ses promesses?). Le jour où sa (véritable) réalisation viendra, ceux qui auparavant l'oubliaient diront: «Les messagers de notre Seigneur sont venus avec la vérité. Y a-t-il pour nous des intercesseurs qui puissent intercéder en notre faveur? Ou pourrons-nous être renvoyés [sur terre], afin que nous œuvrions autrement que ce que nous faisions auparavant?» Ils ont certes créé leur propre perte; et ce qu'ils inventaient les a délaissés.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mviii{Votre Seigneur, c'est Allah, qui a créé les cieux et la terre en six jours, puis S'est établi «'istawâ» sur le Trône. Il couvre le jour de la nuit qui poursuit celui-ci sans arrêt. (Il a créé) le soleil, la lune et les étoiles, soumis à Son commandement. La création et le commandement n'appartiennent qu'à Lui. Toute gloire à Allah, Seigneur de l'Univers!\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mix{Invoquez votre Seigneur en toute humilité et recueillement et avec discrétion. Certes, Il n'aime pas les transgresseurs.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mx{Et ne semez pas la corruption sur la terre après qu'elle ait été réformée. Et invoquez-Le avec crainte et espoir, car la miséricorde d'Allah est proche des bienfaisants.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mxi{C'est Lui qui envoie les vents comme une annonce de Sa Miséricorde. Puis, lorsqu'ils transportent une nuée lourde, Nous la dirigeons vers un pays mort [de sécheresse], puis Nous en faisons descendre l'eau, ensuite Nous en faisons sortir toutes espèces de fruits. Ainsi ferons-Nous sortir les morts. Peut-être vous rappellerez-vous.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mxii{Le bon pays, sa végétation pousse avec la grâce de son Seigneur; quant au mauvais pays, (sa végétation) ne sort qu'insuffisamment et difficilement. Ainsi déployons-Nous les enseignements pour des gens reconnaissants.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mxiii{Nous avons envoyé Noé vers son peuple. Il dit: «O mon peuple, adorez Allah. Pour vous, pas d'autre divinité que Lui. Je crains pour vous le châtiment d'un jour terrible».\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mxiv{Les notables de son peuple dirent: «Nous te voyons dans un égarement manifeste».\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mxv{Il dit: «O mon peuple, il n'y a pas d'égarement en moi; mais je suis un Messager de la part du Seigneur de l'Univers.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mxvi{Je vous communique les messages de mon Seigneur, et je vous donne conseil sincère, et je sais d'Allah ce que vous ne savez pas.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mxvii{Est-ce que vous vous étonnez qu'un rappel vous vienne de votre Seigneur à travers un homme issu de vous, pour qu'il vous avertisse et que vous deveniez pieux et que la miséricorde vous soit accordée?»\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mxviii{Et ils le traitèrent de menteur. Or, Nous le sauvâmes, lui et ceux qui étaient avec lui dans l'arche, et noyâmes ceux qui traitaient de mensonges Nos miracles. C'étaient des gens aveugles, vraiment.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mxix{Et aux 'Aad, leur frère Hûd: «O mon peuple, dit-il, adorez Allah. Pour vous, pas d'autre divinité que Lui. Ne [Le] craignez-vous donc pas?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mxx{Les notables de son peuple qui ne croyaient pas dirent: «Certes, nous te voyons en pleine sottise, et nous pensons que tu es du nombre des menteurs».\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mxxi{Il dit: «O mon peuple, il n'y a point de sottise en moi; mais je suis un Messager de la part du Seigneur de l'Univers.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mxxii{Je vous communique les messages de mon Seigneur, et je suis pour vous un conseiller digne de confiance.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mxxiii{Quoi! Vous vous étonnez qu'un rappel vous vienne de votre Seigneur à travers un homme issu de vous, pour qu'il vous avertisse? Et rappelez-vous quand Il vous a fait succéder au peuple de Noé, et qu'Il accrut votre corps en hauteur (et puissance). Eh bien, rappelez-vous les bienfaits d'Allah afin que vous réussissiez.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mxxiv{Ils dirent: «Es-tu venu à nous pour que nous adorions Allah seul, et que nous délaissions ce que nos ancêtres adoraient? Fais donc venir ce dont tu nous menaces, si tu es du nombre des véridiques».\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mxxv{Il dit: «Vous voilà, frappés de la part de votre Seigneur d'un supplice et d'une colère. Allez vous vous disputer avec moi au sujet de noms que vous et vos ancêtres avez donnés, sans qu'Allah n'y fasse descendre la moindre preuve? Attendez donc! Moi aussi j'attends avec vous.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mxxvi{Or, Nous l'avons sauvé, (lui) et ceux qui étaient avec lui par miséricorde, de Notre part, et Nous avons exterminé ceux qui traitaient de mensonges Nos enseignements et qui n'étaient pas croyants.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mxxvii{Et aux Thamûd, leur frère Sâlih: «O mon peuple, dit-il, adorez Allah. Pour vous, pas d'autre divinité que Lui. Certes, une preuve vous est venue de votre Seigneur: voici la chamelle d'Allah, un signe pour vous. Laissez-la donc manger sur la terre d'Allah et ne lui faites aucun mal; sinon un châtiment douloureux vous saisira.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mxxviii{Et rappelez-vous quand Il vous fit succéder aux Aad et vous installa sur la terre. Vous avez édifié des palais dans ses plaines, et taillé en maisons les montagnes. Rappelez-vous donc les bienfaits d'Allah et ne répandez pas la corruption sur la terre «comme des fauteurs de trouble».\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mxxix{Les notables de son peuple qui s'enflaient d'orgueil dirent aux opprimés, à ceux d'entre eux qui avaient la foi: «Savez-vous si Sâlih est envoyé de la part de son Seigneur?» Ils dirent: «Oui, nous sommes croyants à son message».\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mxxx{Ceux qui s'enflaient d'orgueil dirent: «Nous, nous ne croyons certainement pas en ce que vous avez cru».\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mxxxi{Ils tuèrent la chamelle, désobéirent au commandement de leur Seigneur et dirent: «O Sâlih, fais nous venir ce dont tu nous menaces, si tu es du nombre des Envoyés».\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mxxxii{Le cataclysme les saisit; et les voilà étendus gisant dans leurs demeures.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mxxxiii{Alors il se détourna d'eux et dit: «O mon peuple, je vous avais communiqué le message de mon Seigneur et vous avais conseillé sincèrement. Mais vous n'aimez pas les conseillers sincères!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mxxxiv{Et Lot, quand il dit à son peuple: «Vous livrez vous à cette turpitude que nul, parmi les mondes, n'a commise avant vous?\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mxxxv{Certes, vous assouvissez vos désirs charnels avec les hommes au lieu des femmes! Vous êtes bien un peuple outrancier.»\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mxxxvi{Et pour toute réponse, son peuple ne fit que dire: «Expulsez-les de votre cité. Ce sont des gens qui veulent se garder purs!»\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mxxxvii{Or, Nous l'avons sauvé, lui et sa famille, sauf sa femme qui fut parmi les exterminés.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mxxxviii{Et Nous avons fait pleuvoir sur eux une pluie. Regarde donc ce que fut la fin des criminels!\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mxxxix{Et aux Madyan, leur frère Chu'aïb: «O mon peuple, dit-il, adorez Allah. Pour vous, pas d'autre divinité que Lui. Une preuve vous est venue de votre Seigneur. Donnez donc la pleine mesure et le poids et ne donnez pas aux gens moins que ce qui leur est dû. Et ne commettez pas de la corruption sur la terre après sa réforme. Ce sera mieux pour vous si vous êtes croyants.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mxl{Et ne vous placez pas sur tout chemin, menaçant, empêchant du sentier d'Allah celui qui croit en Lui et cherchant à rendre ce sentier tortueux. Rappelez-vous quand vous étiez peu nombreux et qu'Il vous a multipliés en grand nombre. Et regardez ce qui est advenu aux fauteurs de désordre.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mxli{Si une partie d'entre vous a cru au message avec lequel j'ai été envoyé, et qu'une partie n'a pas cru, patientez donc jusqu'à ce qu'Allah juge parmi nous car Il est le Meilleur des juges.»\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mxlii{Les notables de son peuple qui s'enflaient d'orgueil, dirent: «Nous t'expulserons certes de notre cité, ô Chu'aïb, toi et ceux qui ont cru avec toi. Ou que vous reveniez à notre religion.» - Il dit: «Est-ce même quand cela nous répugne?»\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mxliii{Certes, nous aurions forgé un mensonge contre Allah si nous revenions à votre religion après qu'Allah nous en a sauvés. Il ne nous appartient pas d'y retourner à moins qu'Allah notre Seigneur ne le veuille. Notre Seigneur embrasse toute chose de Sa science. C'est en Allah que nous plaçons notre confiance. O notre Seigneur, tranche par la vérité, entre nous et notre peuple car Tu es le meilleur des juges.»\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mxliv{Et les notables de son peuple qui ne croyaient pas, dirent: «Si vous suivez Chu'aïb, vous serez assurément perdants».\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mxlv{Alors le tremblement (de terre) les saisit; et les voilà étendus, gisant dans leurs demeures.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mxlvi{Ceux qui traitaient Chu'aïb de menteur (disparurent) comme s'ils n'y avaient jamais vécu. Ceux qui traitaient Chu'aïb de menteur furent eux les perdants.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mxlvii{Il se détourna d'eux et dit: «O mon peuple, je vous ai bien communiqué les messages de mon Seigneur et donné des conseils. Comment donc m'attristerais-je sur des gens mécréants?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mxlviii{Nous n'avons envoyé aucun prophète dans une cité, sans que Nous n'ayons pris ses habitants ensuite par l'adversité et la détresse afin qu'ils implorent (le pardon).\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mxlix{Puis Nous avons changé leur mauvaise condition en y substituant le bien, au point qu'ayant grandi en nombre et en richesse, ils dirent: «La détresse et l'aisance ont touché nos ancêtres aussi.» Eh bien, Nous les avons saisis soudain, sans qu'ils s'en rendent compte.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@ml{Si les habitants des cités avaient cru et avaient été pieux, Nous leur aurions certainement accordé des bénédictions du ciel et de la terre. Mais ils ont démenti et Nous les avons donc saisis, pour ce qu'ils avaient acquis.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mli{Les gens des cités sont-ils sûrs que Notre châtiment rigoureux ne les atteindra pas la nuit, pendant qu'ils sont endormis?\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mlii{Les gens des cités sont-ils sûrs que Notre châtiment rigoureux ne les atteindra pas le jour, pendant qu'ils s'amusent?\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mliii{Sont-ils à l'abri du stratagème d'Allah? Seuls les gens perdus se sentent à l'abri du stratagème d'Allah.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mliv{N'est-il pas prouvé à ceux qui reçoivent la terre en héritage des peuples précédents que, si Nous voulions, Nous les frapperions pour leurs péchés et scellerions leurs cœurs, et ils n'entendraient plus rien?\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mlv{Voilà les cités dont Nous te racontons certaines de leurs nouvelles. [A ceux-là,] en vérité, leurs messagers leur avaient apporté les preuves, mais ils n'étaient pas prêts à accepter ce qu'auparavant ils avaient traité de mensonge. C'est ainsi qu'Allah scelle les cœurs des mécréants.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mlvi{Et Nous n'avons trouvé chez la plupart d'entre eux aucun respect de l'engagement; mais Nous avons trouvé la plupart d'entre eux pervers.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mlvii{Puis, après [ces messagers,] Nous avons envoyé Moïse avec Nos miracles vers Pharaon et ses notables. Mais ils se montrèrent injustes envers Nos signes. Considère donc quelle fut la fin des corrupteurs.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mlviii{Et Moïse dit: «O Pharaon, je suis un Messager de la part du Seigneur de l'Univers,\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mlix{je ne dois dire sur Allah que la vérité. Je suis venu à vous avec une preuve de la part de votre Seigneur. Laisse donc partir avec moi les Enfants d'Israël.»\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mlx{«Si tu es venu avec un miracle, dit (Pharaon,) apporte-le donc, si tu es du nombre des véridiques.»\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mlxi{Il jeta son bâton et voilà que c'était un serpent évident.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mlxii{Et il sortit sa main et voilà qu'elle était blanche (éclatante), pour ceux qui regardaient.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mlxiii{Les notables du peuple de Pharaon dirent: «Voilà, certes, un magicien chevronné.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mlxiv{Il veut vous expulser de votre pays.» - «Alors, que commandez-vous?»\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mlxv{Ils dirent: «Fais-le attendre, lui et son frère, et envoie des rassembleurs dans les villes,\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mlxvi{qui t'amèneront tout magicien averti.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mlxvii{Et les magiciens vinrent à Pharaon en disant: «Y aura-t-il vraiment une récompense pour nous, si nous sommes les vainqueurs?»\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@mlxviii{Il dit: «Oui, et vous serez certainement du nombre de mes rapprochés».\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@mlxix{Ils dirent: «O Moïse, ou bien tu jetteras (le premier), ou bien nous serons les premiers à jeter».\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@mlxx{«Jetez» dit-il. Puis lorsqu'ils eurent jeté, ils ensorcelèrent les yeux des gens et les épouvantèrent, et vinrent avec une puissante magie.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@mlxxi{Et Nous révélâmes à Moïse: «Jette ton bâton». Et voilà que celui-ci se mit à engloutir ce qu'ils avaient fabriqué.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@mlxxii{Ainsi la vérité se manifesta et ce qu'ils firent fût vain.\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@mlxxiii{Ainsi ils furent battus et se trouvèrent humiliés.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@mlxxiv{Et les magiciens se jetèrent prosternés.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@mlxxv{Ils dirent: «Nous croyons au Seigneur de l'Univers,\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@mlxxvi{au Seigneur de Moïse et d'Aaron.»\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@mlxxvii{«Y avez-vous cru avant que je ne vous (le) permette? dit Pharaon. C'est bien un stratagème que vous avez manigancé dans la ville, afin d'en faire partir ses habitants. Vous saurez bientôt...\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@mlxxviii{Je vais vous couper la main et la jambe opposées, et puis, je vous crucifierai tous.»\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@mlxxix{Ils dirent: «En vérité, c'est vers notre Seigneur que nous retournerons.\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@mlxxx{Tu ne te venges de nous que parce que nous avons cru aux preuves de notre Seigneur, lorsqu'elles nous sont venues. O notre Seigneur! Déverse sur nous l'endurance et fais nous mourir entièrement soumis.»\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@mlxxxi{Et les notables du peuple de Pharaon dirent: «Laisseras-tu Moïse et son peuple commettre du désordre sur la terre, et lui-même te délaisser, toi et tes divinités?» Il dit: «Nous allons massacrer leurs fils et laisser vivre leurs femmes. Nous aurons le dessus sur eux et les dominerons.»\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@mlxxxii{Moïse dit à son peuple: «Demandez aide auprès d'Allah et soyez patients, car la terre appartient à Allah. Il en fait héritier qui Il veut parmi Ses serviteurs. Et la fin (heureuse) sera aux pieux».\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@mlxxxiii{Ils dirent: «Nous avons été persécutés avant que tu ne viennes à nous, et après ton arrivée.» Il dit: «Il se peut que votre Seigneur détruise votre ennemi et vous donne la lieutenance sur terre, et Il verra ensuite comment vous agirez».\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@mlxxxiv{Nous avons éprouvé les gens de Pharaon par des années de disette et par une diminution des fruits afin qu'ils se rappellent.\qt@no{(130)}}
+\qt@newcmd\qurantrans@fr@mlxxxv{Et quand le bien-être leur vint, ils dirent: «Cela nous est dû» et si un mal les atteignait, ils voyaient en Moïse et ceux qui étaient avec lui un mauvais augure. En vérité leur sort dépend uniquement d'Allah? Mais la plupart d'entre eux ne savent pas.\qt@no{(131)}}
+\qt@newcmd\qurantrans@fr@mlxxxvi{Et ils dirent: «Quel que soit le miracle que tu nous apportes pour nous fasciner, nous ne croirons pas en toi».\qt@no{(132)}}
+\qt@newcmd\qurantrans@fr@mlxxxvii{Et Nous avons alors envoyé sur eux l'inondation, les sauterelles, les poux (ou la calandre), les grenouilles et le sang, comme signes explicites. Mais ils s'enflèrent d'orgueil et demeurèrent un peuple criminel.\qt@no{(133)}}
+\qt@newcmd\qurantrans@fr@mlxxxviii{Et quand le châtiment les frappa, ils dirent: «O Moïse, invoque pour nous ton Seigneur en vertu de l'engagement qu'Il t'a donné. Si tu éloignes de nous le châtiment, nous croirons certes en toi et laisserons partir avec toi les enfants d'Israël».\qt@no{(134)}}
+\qt@newcmd\qurantrans@fr@mlxxxix{Et quand Nous eûmes éloigné d'eux le châtiment jusqu'au terme fixé qu'ils devaient atteindre, voilà qu'ils violèrent l'engagement.\qt@no{(135)}}
+\qt@newcmd\qurantrans@fr@mxc{Alors Nous Nous sommes vengés d'eux; Nous les avons noyés dans les flots, parce qu'ils traitaient de mensonges Nos signes et n'y prêtaient aucune attention.\qt@no{(136)}}
+\qt@newcmd\qurantrans@fr@mxci{Et les gens qui étaient opprimés, Nous les avons fait hériter les contrées orientales et occidentales de la terre que Nous avons bénies. Et la très belle promesse de ton Seigneur sur les enfants d'Israël s'accomplit pour prix de leur endurance. Et Nous avons détruit ce que faisaient Pharaon et son peuple, ainsi que ce qu'ils construisaient.\qt@no{(137)}}
+\qt@newcmd\qurantrans@fr@mxcii{Et Nous avons fait traverser la Mer aux Enfants d'Israël. Ils passèrent auprès d'un peuple attaché à ses idoles et dirent: «O Moïse, désigne-nous une divinité semblable à leurs dieux.» Il dit: «Vous êtes certes des gens ignorants.\qt@no{(138)}}
+\qt@newcmd\qurantrans@fr@mxciii{Le culte, auquel ceux-là s'adonnent, est caduc; et tout ce qu'ils font est nul et sans valeur.»\qt@no{(139)}}
+\qt@newcmd\qurantrans@fr@mxciv{Il dit: «Chercherai-je pour vous une autre divinité qu'Allah, alors que c'est Lui qui vous a préférés à toutes les créatures [de leur époque]?»\qt@no{(140)}}
+\qt@newcmd\qurantrans@fr@mxcv{(Rappelez-vous) le moment où Nous vous sauvâmes des gens de Pharaon qui vous infligeaient le pire châtiment. Ils massacraient vos fils et laissaient vivre vos femmes. C'était là une terrible épreuve de la part de votre Seigneur.\qt@no{(141)}}
+\qt@newcmd\qurantrans@fr@mxcvi{Et Nous donnâmes à Moïse rendez-vous pendant trente nuits, et Nous les complétâmes par dix, de sorte que le temps fixé par son Seigneur se termina au bout de quarante nuits. Et Moïse dit à Aaron son frère: «Remplace-moi auprès de mon peuple, et agis en bien, et ne suis pas le sentier des corrupteurs».\qt@no{(142)}}
+\qt@newcmd\qurantrans@fr@mxcvii{Et lorsque Moïse vint à Notre rendez-vous et que son Seigneur lui eut parlé, il dit: «O mon Seigneur, montre Toi à moi pour que je Te voie!» Il dit: «Tu ne Me verras pas; mais regarde le Mont: s'il tient en sa place, alors tu Me verras.» Mais lorsque son Seigneur Se manifesta au Mont, Il le pulvérisa, et Moïse s'effondra foudroyé. Lorsqu'il se fut remis, il dit: «Gloire à Toi! A Toi je me repens; et je suis le premier des croyants».\qt@no{(143)}}
+\qt@newcmd\qurantrans@fr@mxcviii{Et (Allah) dit: «O Moïse, Je t'ai préféré à tous les hommes, par Mes messages et par Ma parole. Prends donc ce que Je te donne, et sois du nombre des reconnaissants».\qt@no{(144)}}
+\qt@newcmd\qurantrans@fr@mxcix{Et Nous écrivîmes pour lui, sur les tablettes, une exhortation concernant toute chose, et un exposé détaillé de toute chose. «Prends-les donc fermement et commande à ton peuple d'en adopter le meilleur. Bientôt Je vous ferai voir la demeure des pervers.\qt@no{(145)}}
+\qt@newcmd\qurantrans@fr@mc{J'écarterai de Mes signes ceux qui, sans raison, s'enflent d'orgueil sur terre. Même s'ils voyaient tous les miracles, ils n'y croiraient pas. Et s'ils voient le bon sentier, ils ne le prennent pas comme sentier. Mais s'ils voient le sentier de l'erreur, ils le prennent comme sentier. C'est qu'en vérité ils traitent de mensonges Nos preuves et ils ne leur accordaient aucune attention.\qt@no{(146)}}
+\qt@newcmd\qurantrans@fr@mci{Et ceux qui traitent de mensonges Nos preuves ainsi que la rencontre de l'au-delà, leurs œuvres sont vaines. Seraient-ils rétribués autrement que selon leurs œuvres?»\qt@no{(147)}}
+\qt@newcmd\qurantrans@fr@mcii{Et le peuple de Moïse adopta après lui un veau, fait de leurs parures: un corps qui semblait mugir. N'ont-ils pas vu qu'il ne leur parlait point et qu'il ne les guidait sur aucun chemin? Ils l'adoptèrent [comme divinité], et ils étaient des injustes.\qt@no{(148)}}
+\qt@newcmd\qurantrans@fr@mciii{Et quand ils éprouvèrent des regrets, et qu'ils virent qu'ils étaient bel et bien égarés, ils dirent: «Si notre Seigneur ne nous fait pas miséricorde et ne nous pardonne pas, nous serons très certainement du nombre des perdants».\qt@no{(149)}}
+\qt@newcmd\qurantrans@fr@mciv{Et lorsque Moïse retourna à son peuple, fâché, attristé, il dit: «Vous avez très mal agi pendant mon absence! Avez-vous voulu hâter le commandement de votre Seigneur?» Il jeta les tablettes et prit la tête de son frère, en la tirant à lui: «O fils de ma mère, dit (Aaron), le peuple m'a traité en faible, et peu s'en est fallu qu'ils ne me tuent. Ne fais donc pas que les ennemis se réjouissent à mes dépens, et ne m'assigne pas la compagnie des gens injustes».\qt@no{(150)}}
+\qt@newcmd\qurantrans@fr@mcv{Et (Moïse) dit: «O mon Seigneur, pardonne à moi et à mon frère et fais-nous entrer en Ta miséricorde, car Tu es Le plus Miséricordieux des miséricordieux».\qt@no{(151)}}
+\qt@newcmd\qurantrans@fr@mcvi{Ceux qui prenaient le veau (comme divinité), bientôt tombera sur eux de la part de leur Seigneur, une colère, et un avilissement dans la vie présente. Ainsi, Nous rétribuons les inventeurs (d'idoles).\qt@no{(152)}}
+\qt@newcmd\qurantrans@fr@mcvii{Ceux qui ont fait de mauvaises actions et qui ensuite se sont repentis et ont cru... ton Seigneur, après cela est sûrement Pardonneur et Miséricordieux.\qt@no{(153)}}
+\qt@newcmd\qurantrans@fr@mcviii{Et quand la colère de Moïse se fut calmée, il prit les tablettes. Il y avait dans leur texte guide et miséricorde à l'intention de ceux qui craignent leur Seigneur.\qt@no{(154)}}
+\qt@newcmd\qurantrans@fr@mcix{Et Moïse choisit de son peuple soixante-dix hommes pour un rendez-vous avec Nous. Puis lorsqu'ils furent saisis par le tremblement (de terre), il dit: «Mon Seigneur, si Tu avais voulu, Tu les aurais détruits avant, et moi avec. Vas-Tu nous détruire pour ce que des sots d'entre nous ont fait? Ce n'est là qu'une épreuve de Toi, par laquelle Tu égares qui Tu veux, et guides qui Tu veux. Tu es notre Maître. Pardonne-nous et fais-nous miséricorde, car Tu es le Meilleur des pardonneurs.\qt@no{(155)}}
+\qt@newcmd\qurantrans@fr@mcx{Et prescris pour nous le bien ici-bas ainsi que dans l'au-delà. Nous voilà revenus vers Toi, repentis.» Et (Allah) dit: «Je ferai que Mon châtiment atteigne qui Je veux. Et Ma miséricorde embrasse toute chose. Je la prescrirai à ceux qui (Me) craignent, acquittent la Zakât, et ont foi en Nos signes,\qt@no{(156)}}
+\qt@newcmd\qurantrans@fr@mcxi{Ceux qui suivent le Messager, le Prophète illettré qu'ils trouvent écrit (mentionné) chez eux dans la Thora et l'Evangile. Il leur ordonne le convenable, leur défend le blâmable, leur rend licites les bonnes choses, leur interdit les mauvaises, et leur ôte le fardeau et les jougs qui étaient sur eux. Ceux qui croiront en lui, le soutiendront, lui porteront secours et suivront la lumière descendue avec lui; ceux-là seront les gagnants.\qt@no{(157)}}
+\qt@newcmd\qurantrans@fr@mcxii{Dis: «O hommes! Je suis pour vous tous le Messager d'Allah, à Qui appartient la royauté des cieux et de la terre. Pas de divinité à part Lui. Il donne la vie et Il donne la mort. Croyez donc en Allah, en Son messager, le Prophète illettré qui croit en Allah et en Ses paroles. Et suivez-le afin que vous soyez bien guidés».\qt@no{(158)}}
+\qt@newcmd\qurantrans@fr@mcxiii{Parmi le peuple de Moïse, il est une communauté qui guide (les autres) avec la vérité, et qui, par là, exerce la justice.\qt@no{(159)}}
+\qt@newcmd\qurantrans@fr@mcxiv{Nous les répartîmes en douze tribus, (en douze) communautés. Et Nous révélâmes à Moïse, lorsque son peuple lui demanda de l'eau: «Frappe le rocher avec ton bâton.» Et voilà qu'en jaillirent douze sources. Chaque tribu sut son abreuvoir. Nous les couvrîmes de l'ombre du nuage, et fîmes descendre sur eux la manne et les cailles: «Mangez des bonnes choses que Nous vous avons attribuées.» Et ce n'est pas à Nous qu'ils ont fait du tort, mais c'est à eux-mêmes qu'ils en faisaient.\qt@no{(160)}}
+\qt@newcmd\qurantrans@fr@mcxv{Et lorsqu'il leur fut dit: «Habitez cette cité et mangez [de ses produits] à votre guise, mais dites: rémission [à nos péchés] et entrez par la porte en vous prosternant. Nous vous pardonnerons vos fautes; et aux bienfaisants (d'entre vous,) Nous accorderons davantage».\qt@no{(161)}}
+\qt@newcmd\qurantrans@fr@mcxvi{Puis, les injustes parmi eux changèrent en une autre, la parole qui leur était dite. Alors, Nous envoyâmes du ciel un châtiment sur eux, pour le méfait qu'ils avaient commis.\qt@no{(162)}}
+\qt@newcmd\qurantrans@fr@mcxvii{Et interroge-les au sujet de la cité qui donnait sur la mer, lorsqu'on y transgressait le Sabbat! Que leurs poissons venaient à eux faisant surface, au jour de leur Sabbat, et ne venaient pas à eux le jour où ce n'était pas Sabbat! Ainsi les éprouvions-Nous pour la perversité qu'ils commettaient.\qt@no{(163)}}
+\qt@newcmd\qurantrans@fr@mcxviii{Et quand parmi eux une communauté dit: «Pourquoi exhortez-vous un peuple qu'Allah va anéantir ou châtier d'un châtiment sévère?» Ils répondirent: «Pour dégager notre responsabilité vis-à-vis de votre Seigneur; et que peut-être ils deviendront pieux!»\qt@no{(164)}}
+\qt@newcmd\qurantrans@fr@mcxix{Puis, lorsqu'ils oublièrent ce qu'on leur avait rappelé, Nous sauvâmes ceux qui (leur) avaient interdit le mal et saisîmes par un châtiment rigoureux les injustes pour leurs actes pervers.\qt@no{(165)}}
+\qt@newcmd\qurantrans@fr@mcxx{Puis, lorsqu'ils refusèrent (par orgueil) d'abandonner ce qui leur avait été interdit, Nous leur dîmes: «Soyez des singes abjects».\qt@no{(166)}}
+\qt@newcmd\qurantrans@fr@mcxxi{Et lorsque ton Seigneur annonça qu'Il enverra certes contre eux quelqu'un qui leur imposera le pire châtiment jusqu'au Jour de la Résurrection. En vérité ton Seigneur est prompt à punir mais Il est aussi Pardonneur et Miséricordieux.\qt@no{(167)}}
+\qt@newcmd\qurantrans@fr@mcxxii{Et Nous les avons répartis en communautés sur la terre. Il y a parmi eux des gens de bien, mais il y en a qui le sont moins. Nous les avons éprouvés par des biens et par des maux, peut-être reviendraient-ils (au droit chemin).\qt@no{(168)}}
+\qt@newcmd\qurantrans@fr@mcxxiii{Puis les suivirent des successeurs qui héritèrent le Livre, mais qui préférèrent ce qu'offre la vie d'ici-bas en disant: «Nous aurons le pardon.» Et si des choses semblables s'offrent à eux, ils les acceptent. N'avait-on pas pris d'eux l'engagement du Livre, qu'ils ne diraient sur Allah que la vérité? Ils avaient pourtant étudié ce qui s'y trouve. Et l'ultime demeure est meilleure pour ceux qui pratiquent la piété, - Ne comprendrez-vous donc pas? -\qt@no{(169)}}
+\qt@newcmd\qurantrans@fr@mcxxiv{Et ceux qui se conforment au Livre et accomplissent laSalât, [en vérité], Nous ne laissons pas perdre la récompense de ceux qui s'amendent.\qt@no{(170)}}
+\qt@newcmd\qurantrans@fr@mcxxv{Et lorsque Nous avons brandi au-dessus d'eux le Mont, comme si c'eût été une ombrelle. Ils pensaient qu'il allait tomber sur eux. «Tenez fermement à ce que Nous vous donnons et rappelez-vous son contenu. Peut-être craindrez vous Allah».\qt@no{(171)}}
+\qt@newcmd\qurantrans@fr@mcxxvi{Et quand ton Seigneur tira une descendance des reins des fils d'Adam et les fit témoigner sur eux-mêmes: «Ne suis-Je pas votre Seigneur?» Ils répondirent: «Mais si, nous en témoignons...» - afin que vous ne disiez point, au Jour de la Résurrection: «Vraiment, nous n'y avons pas fait attention»,\qt@no{(172)}}
+\qt@newcmd\qurantrans@fr@mcxxvii{ou que vous auriez dit (tout simplement): «Nos ancêtres autrefois donnaient des associés à Allah, et nous sommes leurs descendants, après eux. Vas-Tu nous détruire pour ce qu'ont fait les imposteurs?»\qt@no{(173)}}
+\qt@newcmd\qurantrans@fr@mcxxviii{Et c'est ainsi que Nous expliquons intelligemment les signes. Peut-être reviendront-ils!\qt@no{(174)}}
+\qt@newcmd\qurantrans@fr@mcxxix{Et raconte-leur l'histoire de celui à qui Nous avions donné Nos signes et qui s'en écarta. Le Diable, donc, l'entraîna dans sa suite et il devint ainsi du nombre des égarés.\qt@no{(175)}}
+\qt@newcmd\qurantrans@fr@mcxxx{Et si Nous avions voulu, Nous l'aurions élevé par ces mêmes enseignements, mais il s'inclina vers la terre et suivit sa propre passion. Il est semblable à un chien qui halète si tu l'attaques, et qui halète aussi si tu le laisses. Tel est l'exemple des gens qui traitent de mensonges Nos signes. Eh bien, raconte le récit. Peut-être réfléchiront-ils!\qt@no{(176)}}
+\qt@newcmd\qurantrans@fr@mcxxxi{Quel mauvais exemple que ces gens qui traitent de mensonges Nos signes, cependant que c'est à eux-mêmes qu'ils font du tort.\qt@no{(177)}}
+\qt@newcmd\qurantrans@fr@mcxxxii{Quiconque Allah guide, voilà le bien guidé. Et quiconque Il égare, voilà les perdants.\qt@no{(178)}}
+\qt@newcmd\qurantrans@fr@mcxxxiii{Nous avons destiné beaucoup de djinns et d'hommes pour l'Enfer. Ils ont des cœurs, mais ne comprennent pas. Ils ont des yeux, mais ne voient pas. Ils ont des oreilles, mais n'entendent pas. Ceux-là sont comme les bestiaux, même plus égarés encore. Tels sont les insouciants.\qt@no{(179)}}
+\qt@newcmd\qurantrans@fr@mcxxxiv{C'est à Allah qu'appartiennent les noms les plus beaux. Invoquez-Le par ces noms et laissez ceux qui profanent Ses noms: ils seront rétribués pour ce qu'ils ont fait.\qt@no{(180)}}
+\qt@newcmd\qurantrans@fr@mcxxxv{Parmi ceux que Nous avons créés, il y a une communauté qui guide (les autres) selon la vérité et par celle-ci exerce la justice.\qt@no{(181)}}
+\qt@newcmd\qurantrans@fr@mcxxxvi{Ceux qui traitent de mensonges Nos enseignements, Nous allons les conduire graduellement vers leur perte par des voies qu'ils ignorent.\qt@no{(182)}}
+\qt@newcmd\qurantrans@fr@mcxxxvii{Et Je leur accorderai un délai, car Mon stratagème est solide!\qt@no{(183)}}
+\qt@newcmd\qurantrans@fr@mcxxxviii{Est-ce qu'ils n'ont pas réfléchi? Il n'y a point de folie en leur compagnon (Muhammad): il n'est qu'un avertisseur explicite!\qt@no{(184)}}
+\qt@newcmd\qurantrans@fr@mcxxxix{N'ont-ils pas médité sur le royaume des cieux et de la terre, et toute chose qu'Allah a créée, et que leur terme est peut-être déjà proche? En quelle parole croiront-ils après cela?\qt@no{(185)}}
+\qt@newcmd\qurantrans@fr@mcxl{Quiconque Allah égare, pas de guide pour lui. Et Il les laisse dans leur transgression confus et hésitants.\qt@no{(186)}}
+\qt@newcmd\qurantrans@fr@mcxli{Ils t'interrogent sur l'Heure: «Quand arrivera-t-elle?» Dis: «Seul mon Seigneur en a connaissance. Lui seul la manifestera en son temps. Lourde elle sera dans les cieux et (sur) la terre et elle ne viendra à vous que soudainement.» Ils t'interrogent comme si tu en étais averti. Dis: «Seul Allah en a connaissance.» Mais beaucoup de gens ne savent pas.\qt@no{(187)}}
+\qt@newcmd\qurantrans@fr@mcxlii{Dis: «Je ne détiens pour moi-même ni profit ni dommage, sauf ce qu'Allah veut. Et si je connaissais l'Inconnaissable, j'aurais eu des biens en abondance et aucun mal ne m'aurait touché. Je ne suis, pour les gens qui croient, qu'un avertisseur et un annonciateur».\qt@no{(188)}}
+\qt@newcmd\qurantrans@fr@mcxliii{C'est Lui qui vous a créés d'un seul être dont il a tiré son épouse, pour qu'il trouve de la tranquillité auprès d'elle; et lorsque celui-ci eut cohabité avec elle, elle conçut une légère grossesse, avec quoi elle se déplaçait (facilement). Puis lorsqu'elle se trouva alourdie, tous deux invoquèrent leur Seigneur: «Si Tu nous donnes un (enfant) sain, nous serons certainement du nombre des reconnaissants».\qt@no{(189)}}
+\qt@newcmd\qurantrans@fr@mcxliv{Puis, lorsqu'Il leur eût donné un (enfant) sain, tous deux assignèrent à Allah des associés en ce qu'Il leur avait donné. Mais Allah est bien au-dessus des associés qu'on Lui assigne.\qt@no{(190)}}
+\qt@newcmd\qurantrans@fr@mcxlv{Est-ce qu'ils assignent comme associés ce qui ne crée rien et qui eux-mêmes sont créés,\qt@no{(191)}}
+\qt@newcmd\qurantrans@fr@mcxlvi{et qui ne peuvent ni les secourir ni se secourir eux-mêmes?\qt@no{(192)}}
+\qt@newcmd\qurantrans@fr@mcxlvii{Si vous les appelez vers le chemin droit, ils ne vous suivront pas. Le résultat pour vous est le même, que vous les appeliez ou que vous gardiez le silence.\qt@no{(193)}}
+\qt@newcmd\qurantrans@fr@mcxlviii{Ceux que vous invoquez en dehors d'Allah sont des serviteurs comme vous. Invoquez-les donc et qu'ils vous répondent, si vous êtes véridiques.\qt@no{(194)}}
+\qt@newcmd\qurantrans@fr@mcxlix{Ont-ils des jambes pour marcher? Ont-ils de mains pour frapper? Ont-ils des yeux pour observer? Ont-ils des oreilles pour entendre? Dis: «Invoquez vos associés, et puis, rusez contre moi; et ne me donnez pas de répit.\qt@no{(195)}}
+\qt@newcmd\qurantrans@fr@mcl{Certes mon Maître, c'est Allah qui a fait descendre le Livre (le Coran). C'est Lui qui se charge (de la protection) des vertueux.\qt@no{(196)}}
+\qt@newcmd\qurantrans@fr@mcli{Et ceux que vous invoquez en dehors de Lui ne sont capables ni de vous secourir, ni de se secourir eux-mêmes.»\qt@no{(197)}}
+\qt@newcmd\qurantrans@fr@mclii{Et si tu les appelles vers le chemin droit, ils n'entendent pas. Tu les vois qui te regardent, (mais) ils ne voient pas.\qt@no{(198)}}
+\qt@newcmd\qurantrans@fr@mcliii{Accepte ce qu'on t'offre de raisonnable, commande ce qui est convenable et éloigne-toi des ignorants.\qt@no{(199)}}
+\qt@newcmd\qurantrans@fr@mcliv{Et si jamais le Diable t'incite à faire le mal, cherche refuge auprès d'Allah. Car Il entend, et sait tout.\qt@no{(200)}}
+\qt@newcmd\qurantrans@fr@mclv{Ceux qui pratiquent la piété, lorsqu'une suggestion du Diable les touche se rappellent [du châtiment d'Allah]: et les voilà devenus clairvoyants.\qt@no{(201)}}
+\qt@newcmd\qurantrans@fr@mclvi{(Quant aux méchants), leurs partenaires diaboliques les enfoncent dans l'aberration, puis ils ne cessent (de s'enfoncer).\qt@no{(202)}}
+\qt@newcmd\qurantrans@fr@mclvii{Quand tu ne leur apportes pas de miracle, ils disent: «Pourquoi ne l'inventes-tu pas?» Dis: «Je ne fais que suivre ce qui m'est révélé de mon Seigneur. Ces [versets coraniques] sont des preuves illuminantes venant de votre Seigneur, un guide et une grâce pour des gens qui croient.\qt@no{(203)}}
+\qt@newcmd\qurantrans@fr@mclviii{Et quand on récite le Coran, prêtez-lui l'oreille attentivement et observez le silence, afin que vous obteniez la miséricorde (d'Allah).\qt@no{(204)}}
+\qt@newcmd\qurantrans@fr@mclix{Et invoque ton Seigneur en toi-même, en humilité et crainte, à mi-voix, le matin et le soir, et ne sois pas du nombre des insouciants.\qt@no{(205)}}
+\qt@newcmd\qurantrans@fr@mclx{Ceux qui sont auprès de ton Seigneur [les anges] ne dédaignent pas de L'adorer. Ils Le glorifient et se prosternent devant Lui.\qt@no{(206)}}
+\qt@newcmd\qurantrans@fr@mclxi{\basmalahfr Ils t'interrogent au sujet du butin. Dis: «Le butin est à Allah et à Son messager.» Craignez Allah, maintenez la concorde entre vous et obéissez à Allah et à Son messager, si vous êtes croyants.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mclxii{Les vrais croyants sont ceux dont les cœurs frémissent quand on mentionne Allah. Et quand Ses versets leur sont récités, cela fait augmenter leur foi. Et ils placent leur confiance en leur Seigneur.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mclxiii{Ceux qui accomplissent la Salât et qui dépensent [dans le sentier d'Allah] de ce que Nous leur avons attribué.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mclxiv{Ceux-là sont, en toute vérité les croyants: à eux des degrés (élevés) auprès de leur Seigneur, ainsi qu'un pardon et une dotation généreuse.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mclxv{De même, c'est au nom de la vérité que ton Seigneur t'a fait sortir de ta demeure, malgré la répulsion d'une partie des croyants.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mclxvi{Ils discutent avec toi au sujet de la vérité après qu'elle fut clairement apparue; comme si on les poussait vers la mort et qu'ils (la) voyaient.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mclxvii{(Rappelez-vous), quand Allah vous promettait qu'une des deux bandes sera à vous. Vous désiriez vous emparer de celle qui était sans armes, alors qu'Allah voulait par Ses paroles faire triompher la vérité et anéantir les mécréants jusqu'au dernier.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mclxviii{afin qu'Il fasse triompher la vérité et anéantir le faux, en dépit de la répulsion qu'en avaient les criminels.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mclxix{(Et rappelez-vous) le moment où vous imploriez le secours de votre Seigneur et qu'Il vous exauça aussitôt: «Je vais vous aider d'un millier d'Anges déferlant les uns à la suite des autres.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mclxx{Allah ne fit cela que pour (vous) apporter une bonne nouvelle et pour qu'avec cela vos cœurs se tranquillisent. Il n'y a de victoire que de la part d'Allah. Allah est Puissant et Sage.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mclxxi{Et quand Il vous enveloppa de sommeil comme d'une sécurité de Sa part, et du ciel Il fit descendre de l'eau sur vous afin de vous en purifier, d'écarter de vous la souillure du Diable, de renforcer les cœurs et d'en raffermir les pas! [vos pas].\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mclxxii{Et ton Seigneur révéla aux Anges: «Je suis avec vous: affermissez donc les croyants. Je vais jeter l'effroi dans les cœurs des mécréants. Frappez donc au-dessus des cous et frappez-les sur tous les bouts des doigts.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mclxxiii{Ce, parce qu'ils ont désobéi à Allah et à Son messager.» Et quiconque désobéit à Allah et à Son messager... Allah est certainement dur en punition!\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mclxxiv{Voilà (votre sort); goûtez-le donc! Et aux mécréants le châtiment du Feu (sera réservé).\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mclxxv{O vous qui croyez quand vous rencontrez (l'armée) des mécréants en marche, ne leur tournez point le dos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mclxxvi{Quiconque, ce jour-là, leur tourne le dos, - à moins que ce soit par tactique de combat, ou pour rallier un autre groupe, - celui-là encourt la colère d'Allah et son refuge sera l'Enfer. Et quelle mauvaise destination!\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mclxxvii{Ce n'est pas vous qui les avez tués: mais c'est Allah qui les a tués. Et lorsque tu lançais (une poignée de terre), ce n'est pas toi qui lançais: mais c'est Allah qui lançait, et ce pour éprouver les croyants d'une belle épreuve de Sa part! Allah est Audient et Omniscient.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mclxxviii{Voilà! Allah réduit à rien la ruse des mécréants.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mclxxix{Si vous avez imploré l'arbitrage d'Allah vous connaissez maintenant la sentence [d'Allah] Et si vous cessez [la mécréance et l'hostilité contre le Prophète..], c'est mieux pour vous. Mais si vous revenez, Nous reviendrons, et votre masse, même nombreuse, ne vous sera d'aucune utilité. Car Allah est vraiment avec les croyants.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mclxxx{O vous qui croyez! Obéissez à Allah et à Son messager et ne vous détournez pas de lui quand vous l'entendez (parler).\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mclxxxi{Et ne soyez pas comme ceux qui disent: «Nous avons entendu», alors qu'ils n'entendent pas.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mclxxxii{Les pires des bêtes auprès d'Allah, sont, [en vérité], les sourds-muets qui ne raisonnent pas.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mclxxxiii{Et si Allah avait reconnu en eux quelque bien, Il aurait fait qu'ils entendent. Mais, même s'Il les faisait entendre, ils tourneraient [sûrement] le dos en s'éloignant.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mclxxxiv{O vous qui croyez! Répondez à Allah et au Messager lorsqu'il vous appelle à ce qui vous donne la (vraie) vie, et sachez qu'Allah s'interpose entre l'homme et son cœur, et que c'est vers Lui que vous serez rassemblés.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mclxxxv{Et craignez une calamité qui n'affligera pas exclusivement les injustes d'entre vous. Et sachez qu'Allah est dur en punition.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mclxxxvi{Et rappelez-vous quand vous étiez peu nombreux, opprimés sur terre, craignant de vous faire enlever par des gens. Il vous donna asile, vous renforça de Son secours et vous attribua de bonnes choses afin que vous soyez reconnaissants.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mclxxxvii{O vous qui croyez! Ne trahissez pas Allah et le Messager. Ne trahissez pas sciemment la confiance qu'on a placée en vous?\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mclxxxviii{Et sachez que vos biens et vos enfants ne sont qu'une épreuve et qu'auprès d'Allah il y a une énorme récompense.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mclxxxix{O vous qui croyez! Si vous craignez Allah, Il vous accordera la faculté de discerner (entre le bien et le mal), vous effacera vos méfaits et vous pardonnera. Et Allah est le Détenteur de l'énorme grâce.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mcxc{(Et rappelle-toi) le moment où les mécréants complotaient contre toi pour t'emprisonner ou t'assassiner ou te bannir. Ils complotèrent. mais Allah a fait échouer leur complot, et Allah est le meilleur en stratagèmes.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mcxci{Et lorsque Nos versets leur sont récités, ils disent: «Nous avons écouté, certes! Si nous voulions, nous dirions pareil à cela, ce ne sont que des légendes d'anciens.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mcxcii{Et quand ils dirent: «O Allah, si cela est la vérité de Ta part, alors, fais pleuvoir du ciel des pierres sur nous, ou fais venir sur nous un châtiment douloureux».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mcxciii{Allah n'est point tel qu'Il les châtie, alors que tu es au milieu d'eux. Et Allah n'est point tel qu'il les châtie alors qu'Ils demandent pardon.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mcxciv{Qu'ont-ils donc pour qu'Allah ne les châtie pas, alors qu'ils repoussent (les croyants) de la Mosquée sacrée, quoiqu'ils n'en soient pas les gardiens, car ses gardiens ne sont que les pieux. Mais la plupart d'entre eux ne le savent pas.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mcxcv{Et leur prière, auprès de la Maison, n'est que sifflement et battements de mains: «Goûtez donc au châtiment, à cause de votre mécréance!»\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mcxcvi{Ceux qui ne croient pas dépensent leurs biens pour éloigner (les gens) du sentier d'Allah. Or, après les avoir dépensés, ils seront pour eux un sujet de regret. Puis ils seront vaincus, et tous ceux qui ne croient pas seront rassemblés vers l'Enfer,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mcxcvii{afin qu'Allah distingue le mauvais du bon, et qu'Il place les mauvais les uns sur les autres, pour en faire un amoncellement qu'Il jettera dans l'Enfer. Ceux-là sont les perdants.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mcxcviii{Dis à ceux qui ne croient pas que, s'ils cessent, on leur pardonnera ce qui s'est passé. Et s'ils récidivent, (ils seront châtiés); à l'exemple de (leurs) devanciers.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mcxcix{Et combattez-les jusqu'à ce qu'il ne subsiste plus d'association, et que la religion soit entièrement à Allah. Puis, s'ils cessent (ils seront pardonnés car) Allah observe bien ce qu'ils œuvrent.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mcc{Et s'ils tournent le dos, sachez alors qu'Allah est votre Maître. Quel excellent Maître et quel excellent Protecteur!\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mcci{Et sachez que, de tout butin que vous avez ramassé, le cinquième appartient à Allah, au messager, à ses proches parents, aux orphelins, aux pauvres, et aux voyageurs (en détresse), si vous croyez en Allah et en ce que Nous avons fait descendre sur Notre serviteur, le jour du Discernement: le jour où les deux groupes s'étaient rencontrés, et Allah est Omnipotent.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mccii{Vous étiez sur le versant le plus proche, et eux (les ennemis) sur le versant le plus éloigné, tandis que la caravane était plus bas que vous. Si vous vous étiez donné rendez-vous, vous l'auriez manqué (effrayés par le nombre de l'ennemi). Mais il fallait qu'Allah accomplît un ordre qui devait être exécuté, pour que, sur preuve, pérît celui qui (devait) périr, et vécût, sur preuve, celui qui (devait) vivre. Et certes Allah est Audient et Omniscient.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mcciii{En songe, Allah te les avait montrés peu nombreux! Car s'Il te les avait montrés nombreux, vous auriez certainement fléchi, et vous vous seriez certainement disputés à propos de l'affaire. Mais Allah vous en a préservés. Il connait le contenu des cœurs.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mcciv{Et aussi, au moment de la rencontre, Il vous les montrait peu nombreux à Vos yeux, de même qu'Il vous faisant paraître à leurs yeux peu nombreux afin qu'Allah parachève un ordre qui devait être exécuté. C'est à Allah que sont ramenées les choses.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mccv{O vous qui croyez! Lorsque vous rencontrez une troupe (ennemie), soyez fermes, et invoquez beaucoup Allah afin de réussir.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mccvi{Et obéissez à Allah et à Son messager; et ne vous disputez pas, sinon vous fléchirez et perdrez votre force. Et soyez endurants, car Allah est avec les endurants.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mccvii{Et ne soyez pas comme ceux qui sortirent de leurs demeures pour repousser la vérité et avec ostentation publique, obstruant le chemin d'Allah. Et Allah cerne ce qu'ils font.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mccviii{Et quand le Diable leur eut embelli leurs actions et dit: «Nul parmi les humains ne peut vous dominer aujourd'hui, et je suis votre soutien.» Mais, lorsque les deux groupes furent en vue l'un de l'autre, il tourna les deux talons et dit: «Je vous désavoue. Je vois ce que vous ne voyez pas; je crains Allah, et Allah est dur en punition».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mccix{(Et rappelez-vous), quand les hypocrites et ceux qui ont une maladie au cœur [dont la foi est douteuse] disaient: «Ces gens-là, leur religion les trompe.» Mais quiconque place sa confiance en Allah (sera victorieux)... car Allah est Puissant et Sage.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mccx{Si tu voyais, lorsque les Anges arrachaient les âmes aux mécréants! Ils les frappaient sur leurs visages et leurs derrières, (en disant): «Goûtez au châtiment du Feu.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mccxi{Cela (le châtiment), pour ce que vos mains ont accompli.» Et Allah n'est point injuste envers les esclaves.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mccxii{Il en fut de même des gens de Pharaon et ceux qui avant eux n'avaient pas cru aux signes (enseignements) d'Allah. Allah les saisit pour leurs péchés. Allah est certes Fort et sévère en punition.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mccxiii{C'est qu'en effet Allah ne modifie pas un bienfait dont Il a gratifié un peuple avant que celui-ci change ce qui est en lui-même. Et Allah est, Audient et Omniscient.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mccxiv{Il en fut de même des gens de Pharaon et ceux qui avant eux avaient traité de mensonges les signes (enseignements) de leur Seigneur. Nous les avons fait périr pour leurs péchés. Et Nous avons noyé les gens de Pharaon. Car ils étaient tous des injustes.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mccxv{Les pires bêtes, auprès d'Allah, sont ceux qui ont été infidèles (dans le passé) et qui ne croient donc point (actuellement),\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mccxvi{ceux-là mêmes avec lesquels tu as fait un pacte et qui chaque fois le rompent, sans aucune crainte [d'Allah].\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mccxvii{Donc, si tu les maîtrises à la guerre, inflige-leur un châtiment exemplaire de telle sorte que ceux qui sont derrière eux soient effarouchés. Afin qu'ils se souviennent.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mccxviii{Et si jamais tu crains vraiment une trahison de la part d'un peuple, dénonce alors le pacte (que tu as conclu avec), d'une façon franche et loyale car Allah n'aime pas les traîtres.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mccxix{Que les mécréants ne pensent pas qu'ils Nous ont échappé. Non, ils ne pourront jamais Nous empêcher (de les rattraper à n'importe quel moment).\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mccxx{Et préparez [pour lutter] contre eux tout ce que vous pouvez comme force et comme cavalerie équipée, afin d'effrayer l'ennemi d'Allah et le vôtre, et d'autres encore que vous ne connaissez pas en dehors de ceux-ci mais qu'Allah connaît. Et tout ce que vous dépensez dans le sentier d'Allah vous sera remboursé pleinement et vous ne serez point lésés.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mccxxi{Et s'ils inclinent à la paix, incline vers celle-ci (toi aussi) et place ta confiance en Allah, car c'est Lui l'Audient, l'Omniscient.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mccxxii{Et s'ils veulent te tromper, alors Allah te suffira. C'est Lui qui t'a soutenu par Son secours, ainsi que par (l'assistance) des croyants.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mccxxiii{Il a uni leurs cœurs (par la foi). Aurais-tu dépensé tout ce qui est sur terre, tu n'aurais pu unir leurs cœurs; mais c'est Allah qui les a unis, car Il est Puissant et Sage.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mccxxiv{O Prophète, Allah et ceux des croyants qui te suivent te suffisent.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mccxxv{O Prophète, incite les croyants au combat. S'il se trouve parmi vous vingt endurants, ils vaincront deux cents; et s'il s'en trouve cent, ils vaincront mille mécréants, car ce sont vraiment des gens qui ne comprennent pas.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mccxxvi{Maintenant, Allah a allégé votre tâche, sachant qu'il y a de la faiblesse en vous. S'il y a cent endurants parmi vous, ils vaincront deux cents; et s'il y en a mille, ils vaincront deux mille, par la grâce d'Allah. Et Allah est avec les endurants.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mccxxvii{Un prophète ne devrait pas faire de prisonniers avant d'avoir prévalu [mis les mécréants hors de combat] sur la terre. Vous voulez les biens d'ici-bas, tandis qu'Allah veut l'au-delà. Allah est Puissant et Sage.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mccxxviii{N'eût-été une prescription préalable d'Allah, un énorme châtiment vous aurait touché pour ce que vous avez pris. [de la rançon]\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mccxxix{Mangez donc de ce qui vous est échu en butin, tant qu'il est licite et pur. Et craignez Allah, car Allah est Pardonneur et Miséricordieux.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mccxxx{O Prophète, dis aux captifs qui sont entre vos mains: «Si Allah sait qu'il y a quelque bien dans vos cœurs, Il vous donnera mieux que ce qui vous a été pris et vous pardonnera. Allah est Pardonneur et Miséricordieux.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mccxxxi{Et s'ils veulent te trahir..., c'est qu'ils ont déjà trahi Allah [par la mécréance]; mais Il a donné prise sur eux [le jour de Badr]. Et Allah est Omniscient et Sage.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mccxxxii{Ceux qui ont cru, émigré et lutté de leurs biens et de leurs personnes dans le sentier d'Allah, ainsi que ceux qui leur ont donné refuge et secours, ceux-là sont alliés les uns des autres. Quant à ceux qui ont cru et n'ont pas émigré, vous ne serez pas liés à eux, jusqu'à ce qu'ils émigrent. Et s'ils vous demandent secours au nom de la religion, à vous alors de leur porter secours, mais pas contre un peuple auquel vous êtes liés par un pacte. Et Allah observe bien ce que vous œuvrez.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mccxxxiii{Et ceux qui n'ont pas cru sont alliés les uns des autres. Si vous n'agissez pas ainsi [en rompant les liens avec les infidèles], il y aura discorde sur terre et grand désordre.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mccxxxiv{Et ceux qui ont cru, émigré et lutté dans le sentier d'Allah, ainsi que ceux qui leur ont donné refuge et porté secours, ceux-là sont les vrais croyants: à eux, le pardon et une récompense généreuse.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mccxxxv{Et ceux qui après cela ont cru et émigré et lutté en votre compagnie, ceux-là sont des vôtres. Cependant ceux qui sont liés par la parenté ont priorité les uns envers les autres, d'après le Livre d'Allah. Certes, Allah est Omniscient.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mccxxxvi{\basmalahfr Désaveu de la part d'Allah et de Son messager à l'égard des associateurs avec qui vous avez conclu un pacte:\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mccxxxvii{Parcourez la terre durant quatre mois; et sachez que vous ne réduirez pas Allah à l'impuissance et qu'Allah couvre d'ignominie les mécréants.»\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mccxxxviii{Et proclamation aux gens, de la part d'Allah et de Son messager, au jour du Grand Pèlerinage, qu'Allah et Son messager, désavouent les associateurs. Si vous vous repentez, ce sera mieux pour vous. Mais si vous vous détournez, sachez que vous ne réduirez pas Allah à l'impuissance. Et annonce un châtiment douloureux à ceux qui ne croient pas.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mccxxxix{A l'exception des associateurs avec lesquels vous avez conclu un pacte, puis ils ne vous ont manqué en rien, et n'ont soutenu personne [à lutter] contre vous: respectez pleinement le pacte conclu avec eux jusqu'au terme convenu. Allah aime les pieux.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mccxl{Après que les mois sacrés expirent, tuez les associateurs où que vous les trouviez. Capturez-les, assiégez-les et guettez-les dans toute embuscade. Si ensuite ils se repentent, accomplissent la Salât et acquittent la Zakât, alors laissez-leur la voie libre, car Allah est Pardonneur et Miséricordieux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mccxli{Et si l'un des associateurs te demande asile, accorde-le lui, afin qu'il entende la parole d'Allah, puis fais-le parvenir à son lieu de sécurité. Car ce sont des gens qui ne savent pas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mccxlii{Comment y aurait-il pour les associateurs un pacte admis par Allah et par Son messager? A l'exception de ceux avec lesquels vous avez conclu un pacte près de la Mosquée sacrée. Tant qu'ils sont droits envers vous, soyez droits envers eux. Car Allah aime les pieux.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mccxliii{Comment donc! Quand ils triomphent de vous, ils ne respectent à votre égard, ni parenté ni pacte conclu. Ils vous satisfont de leurs bouches, tandis que leurs cœurs se refusent; et la plupart d'entre eux sont des pervers.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mccxliv{Ils troquent à vil prix les versets d'Allah (le Coran) et obstruent Son chemin. Ce qu'ils font est très mauvais!\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mccxlv{Ils ne respectent, à l'égard d'un croyant, ni parenté ni pacte conclu. Et ceux-là sont les transgresseurs.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mccxlvi{Mais s'ils se repentent, accomplissent la Salât et acquittent la Zakat, ils deviendront vos frères en religion. Nous exposons intelligiblement les versets pour des gens qui savent.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mccxlvii{Et si, après le pacte, ils violent leurs serments et attaquent votre religion, combattez alors les chefs de la mécréance - car, ils ne tiennent aucun serment - peut-être cesseront-ils?\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mccxlviii{Ne combattrez-vous pas des gens qui ont violé leurs serments, qui ont voulu bannir le Messager et alors que ce sont eux qui vous ont attaqués les premiers? Les redoutiez-vous? C'est Allah qui est plus digne de votre crainte si vous êtes croyants!\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mccxlix{Combattez-les. Allah, par vos mains, les châtiera, les couvrira d'ignominie, vous donnera la victoire sur eux et guérira les poitrines d'un peuple croyant.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mccl{Et il fera partir la colère de leurs cœurs. Allah accueille le repentir de qui Il veut. Allah est Omniscient et Sage.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mccli{Pensez-vous que vous serez délaissés, cependant qu'Allah n'a pas encore distingué ceux d'entre vous qui ont lutté et qui n'ont pas cherché des alliés en dehors d'Allah, de Son messager et des croyants? Et Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mcclii{Il n'appartient pas aux associateurs de peupler les mosquées d'Allah, vu qu'ils témoignent contre eux-mêmes de leur mécréance. Voilà ceux dont les œuvres sont vaines; et dans le Feu ils demeureront éternellement.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mccliii{Ne peupleront les mosquées d'Allah que ceux qui croient en Allah et au Jour dernier, accomplissent la Salât, acquittent la Zakât et ne craignent qu'Allah. Il se peut que ceux-là soient du nombre des bien-guidés.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mccliv{Ferez-vous de la charge de donner à boire aux pèlerins et d'entretenir la Mosquée sacrée (des devoirs) comparables [au mérite] de celui qui croit en Allah et au Jour dernier et lutte dans le sentier d'Allah? Ils ne sont pas égaux auprès d'Allah et Allah ne guide pas les gens injustes.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mcclv{Ceux qui ont cru, qui ont émigré et qui ont lutté par leurs biens et leurs personnes dans le sentier d'Allah, ont les plus hauts rangs auprès d'Allah... et ce sont eux les victorieux.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mcclvi{Leur Seigneur leur annonce de Sa part, miséricorde et agrément, et des Jardins où il y aura pour eux un délice permanent\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mcclvii{où ils demeureront éternellement. Certes il y a auprès d'Allah une énorme récompense.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mcclviii{O vous qui croyez! Ne prenez pas pour alliés, vos pères et vos frères s'ils préfèrent la mécréance à la foi. Et quiconque parmi vous les prend pour alliés... ceux-là sont les injustes.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mcclix{Dis: «Si vos pères, vos enfants, vos frères, vos épouses, vos clans, les biens que vous gagnez, le négoce dont vous craignez le déclin et les demeures qui vous sont agréables, vous sont plus chers qu'Allah, Son messager et la lutte dans le sentier d'Allah, alors attendez qu'Allah fasse venir Son ordre. Et Allah ne guide pas les gens pervers».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mcclx{Allah vous a déjà secourus en maints endroits. Et [rappelez-vous] le jour de Hunayn, quand vous étiez fiers de votre grand nombre et que cela ne vous a servi à rien. La terre, malgré son étendue vous devint bien étroite; puis vous avez tourné le dos en fuyards.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mcclxi{Puis, Allah fit descendre Sa quiétude [Sa «sakîna»] sur Son messager et sur les croyants. Il fit descendre des troupes (Anges) que vous ne voyiez pas, et châtia ceux qui ont mécru. Telle est la rétribution des mécréants.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mcclxii{Après cela Allah, accueillera le repentir de qui Il veut, car Allah est Pardonneur et Miséricordieux.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mcclxiii{O vous qui croyez! Les associateurs ne sont qu'impureté: qu'ils ne s'approchent plus de la Mosquée sacrée, après cette année-ci. Et si vous redoutez une pénurie, Allah vous enrichira, s'Il veut, de par Sa grâce. Car Allah est Omniscient et Sage.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mcclxiv{Combattez ceux qui ne croient ni en Allah ni au Jour dernier, qui n'interdisent pas ce qu'Allah et Son messager ont interdit et qui ne professent pas la religion de la vérité, parmi ceux qui ont reçu le Livre, jusqu'à ce qu'ils versent la capitation par leurs propres mains, après s'être humiliés.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mcclxv{Les Juifs disent: «'Uzayr est fils d'Allah» et les Chrétiens disent: «Le Christ est fils d'Allah». Telle est leur parole provenant de leurs bouches. Ils imitent le dire des mécréants avant eux. Qu'Allah les anéantisse! Comment s'écartent-ils (de la vérité)?\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mcclxvi{Ils ont pris leurs rabbins et leurs moines, ainsi que le Christ fils de Marie, comme Seigneurs en dehors d'Allah, alors qu'on ne leur a commandé que d'adorer un Dieu unique. Pas de divinité à part Lui! Gloire à Lui! Il est au-dessus de ce qu'ils [Lui] associent.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mcclxvii{Ils veulent éteindre avec leurs bouches la lumière d'Allah, alors qu'Allah ne veut que parachever Sa lumière, quelque répulsion qu'en aient les mécréants.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mcclxviii{C'est Lui qui a envoyé Son messager avec la bonne direction et la religion de la vérité, afin qu'elle triomphe sur toute autre religion, quelque répulsion qu'en aient les associateurs.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mcclxix{O vous qui croyez! Beaucoup de rabbins et de moines dévorent, les biens des gens illégalement et [leur] obstruent le sentier d'Allah. A ceux qui thésaurisent l'or et l'argent et ne les dépensent pas dans le sentier d'Allah, annonce un châtiment douloureux,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mcclxx{le jour où (ces trésors) seront portés à l'incandescence dans le feu de l'Enfer et qu'ils en seront cautérisés, front, flancs et dos: voici ce que vous avez thésaurisé pour vous-mêmes. Goûtez de ce que vous thésaurisiez.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mcclxxi{Le nombre de mois, auprès d'Allah, est de douze [mois], dans la prescription d'Allah, le jour où Il créa les cieux et la terre. Quatre d'entre eux sont sacrés: telle est la religion droite. [Durant ces mois], ne faites pas de tort à vous-mêmes. Combattez les associateurs sans exception, comme ils vous combattent sans exception. Et sachez qu'Allah est avec les pieux.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mcclxxii{Le report d'un mois sacré à un autre est un surcroît de mécréance. Par là, les mécréants sont égarés: une année, ils le font profane, et une année, ils le font sacré, afin d'ajuster le nombre de mois qu'Allah a fait sacrés. Ainsi rendent-ils profane ce qu'Allah a fait sacré. Leurs méfaits leurs sont enjolivés. Et Allah ne guide pas les gens mécréants.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mcclxxiii{O vous qui croyez! Qu'avez-vous? Lorsque l'on vous a dit: «Elancez-vous dans le sentier d'Allah» vous vous êtes appesantis sur la terre. La vie présente vous agrée-t-elle plus que l'au-delà? - Or, la jouissance de la vie présente ne sera que peu de chose, comparée à l'au-delà!\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mcclxxiv{Si vous ne vous lancez pas au combat, Il vous châtiera d'un châtiment douloureux et vous remplacera par un autre peuple. Vous ne Lui nuirez en rien. Et Allah est Omnipotent.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mcclxxv{Si vous ne lui portez pas secours... Allah l'a déjà secouru, lorsque ceux qui avaient mécru l'avaient banni, deuxième de deux. Quand ils étaient dans la grotte et qu'il disait à son compagnon: «Ne t'afflige pas, car Allah est avec nous.» Allah fit alors descendre sur Lui Sa sérénité «Sa sakîna» et le soutint de soldats (Anges) que vous ne voyiez pas, et Il abaissa ainsi la parole des mécréants, tandis que la parole d'Allah eut le dessus. Et Allah est Puissant et Sage.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mcclxxvi{Légers ou lourds, lancez-vous au combat, et luttez avec vos biens et vos personnes dans le sentier d'Allah. Cela est meilleur pour vous, si vous saviez.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mcclxxvii{S'il s'était agi d'un profit facile ou d'un court voyage, ils t'auraient suivi; mais la distance leur parut longue. Et ils jureront par Allah: «Si nous avions pu, nous serions sortis en votre compagnie.» Ils se perdent eux-mêmes. Et Allah sait bien qu'ils mentent.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mcclxxviii{Qu'Allah te pardonne! Pourquoi leur as-tu donné permission avant que tu ne puisses distinguer ceux qui disaient vrai et reconnaître les menteurs?\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mcclxxix{Ceux qui croient en Allah et au Jour dernier ne te demandent pas permission quand il s'agit de mener combat avec leurs biens et leurs personnes. Et Allah connaît bien les pieux.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mcclxxx{Ne te demandent permission que ceux qui ne croient pas en Allah et au Jour dernier, et dont les cœurs sont emplis de doute. Ils ne font qu'hésiter dans leur incertitude.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mcclxxxi{Et s'ils avaient voulu partir (au combat), ils lui auraient fait des préparatifs. Mais leur départ répugna à Allah; Il les a rendus paresseux. Et il leur fut dit: «Restez avec ceux qui restent».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mcclxxxii{S'ils étaient sortis avec vous, ils n'auraient fait qu'accroître votre trouble et jeter la dissension dans vos rangs, cherchant à créer la discorde entre vous. Et il y en a parmi vous qui les écoutent. Et Allah connaît bien les injustes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mcclxxxiii{Ils ont, auparavant, cherché à semer la discorde (dans vos rangs) et à embrouiller tes affaires jusqu'à ce que vînt la vérité et triomphât le commandement d'Allah, en dépit de leur hostilité.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mcclxxxiv{Parmi eux il en est qui dit: «Donne-moi la permission (de rester) et ne me mets pas en tentation.» Or, c'est bien dans la tentation qu'ils sont tombés; l'Enfer est tout autour des mécréants.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mcclxxxv{Qu'un bonheur t'atteigne, ça les afflige. Et que t'atteigne un malheur, ils disent: «Heureusement que nous avions pris d'avance nos précautions.» Et ils se détournent tout en exultant.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mcclxxxvi{Dis: «Rien ne nous atteindra, en dehors de ce qu'Allah a prescrit pour nous. Il est notre Protecteur. C'est en Allah que les croyants doivent mettre leur confiance».\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mcclxxxvii{Dis: «Qu'attendez-vous pour nous, sinon l'une des deux meilleures choses? Tandis que ce que nous attendons pour vous, c'est qu'Allah vous inflige un châtiment de Sa part ou par nos mains. Attendez donc! Nous attendons aussi, avec vous».\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mcclxxxviii{Dis: «Dépensez bon gré, mal gré: jamais cela ne sera accepté de vous, car vous êtes des gens pervers».\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mcclxxxix{Ce qui empêche leurs dons d'être agréés, c'est le fait qu'ils n'ont pas cru en Allah et Son messager, qu'ils ne se rendent à la Salât que paresseusement, et qu'ils ne dépensent (dans les bonnes œuvres) qu'à contrecœur.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mccxc{Que leurs biens et leurs enfants ne t'émerveillent point! Allah ne veut par là que les châtier dans la vie présente, et que (les voir) rendre péniblement l'âme en état de mécréance.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mccxci{Et ils (les hypocrites) jurent par Allah qu'ils sont vraiment des vôtres; alors qu'ils ne le sont pas. Mais ce sont des gens peureux.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mccxcii{S'ils trouvaient un refuge, des cavernes ou un souterrain, ils s'y tourneraient donc et s'y précipiteraient à bride abattue.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mccxciii{Il en est parmi eux qui te critiquent au sujet des Sadaqats: s'il leur en est donné, les voilà contents; mais s'il ne leur en est pas donné, les voilà pleins de rancœur.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mccxciv{S'ils s'étaient contentés de ce qu'Allah leur avait donné ainsi que Son messager et avaient dit: «Allah nous suffit. Bientôt Allah nous accordera Sa faveur de même que Son messager!... C'est vers Allah que va tout notre désir».\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mccxcv{Les Sadaqâts ne sont destinés que pour les pauvres, les indigents, ceux qui y travaillent, ceux dont les cœurs sont à gagner (à l'Islam), l'affranchissement des jougs, ceux qui sont lourdement endettés, dans le sentier d'Allah, et pour le voyageur (en détresse). C'est un décret d'Allah! Et Allah est Omniscient et Sage.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mccxcvi{Et il en est parmi eux ceux qui font du tort au Prophète et disent: «Il est tout oreille». - Dis: «Une oreille pour votre bien. Il croit en Allah et fait confiance aux croyants, et il est une miséricorde pour ceux d'entre vous qui croient. Et ceux qui font du tort au Messager d'Allah auront un châtiment douloureux».\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mccxcvii{Ils vous jurent par Allah pour vous satisfaire. Alors qu'Allah - ainsi que Son messager - est plus en droit qu'ils Le satisfassent, s'ils sont vraiment croyants.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mccxcviii{Ne savent-ils pas qu'en vérité quiconque s'oppose à Allah et à Son messager, aura le feu de l'Enfer pour y demeurer éternellement? Et voilà l'immense opprobre.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mccxcix{Les hypocrites craignent que l'on fasse descendre sur eux une Sourate leur dévoilant ce qu'il y a dans leurs cœurs. Dis: «Moquez-vous! Allah fera surgir ce que vous prenez la précaution (de cacher)».\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mccc{Et si tu les interrogeais, ils diraient très certainement: «Vraiment, nous ne faisions que bavarder et jouer.» Dis: «Est-ce d'Allah, de Ses versets (le Coran) et de Son messager que vous vous moquiez?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mccci{Ne vous excusez pas: vous avez bel et bien rejeté la foi après avoir cru. Si Nous pardonnons à une partie des vôtres, Nous en châtierons une autre pour avoir été des criminels.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mcccii{Les hypocrites, hommes et femmes, appartiennent les uns aux autres. Ils commandent le blâmable, interdisent le convenable, et replient leurs mains (d'avarice). Ils ont oublié Allah et Il les a alors oubliés. En vérité, les hypocrites sont les pervers.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mccciii{Aux hypocrites, hommes et femmes, et aux mécréants, Allah a promis le feu de l'Enfer pour qu'ils y demeurent éternellement. C'est suffisant pour eux. Allah les a maudits. Et pour eux, il y aura un châtiment permanent.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mccciv{[Il en fut] de même de ceux qui vous ont précédés: ils étaient plus forts que vous, plus riches et avaient plus d'enfants. Ils jouirent de leur lot [en ce monde] et vous avez joui de votre lot comme ont joui vos prédécesseurs de leur lot. Et vous avez discuté à tort et à travers comme ce qu'ils avaient discuté. Ceux-là verront leurs œuvres anéanties dans ce monde et dans l'autre et ceux-là sont les perdants.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mcccv{Est-ce que ne leur est pas parvenue l'histoire de ceux qui les ont précédés: le peuple de Noé, des 'Aad, des Tamûd, d'Abraham, des gens de Madyan, et des Villes renversées? Leurs messagers leur avaient apporté des preuves évidentes. Ce ne fut pas Allah qui leur fit du tort, mais ils se firent du tort à eux-mêmes.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mcccvi{Les croyants et les croyantes sont alliés les uns des autres. Ils commandent le convenable, interdisent le blâmable accomplissent la ?alât, acquittent la Zakât et obéissent à Allah et à Son messager. Voilà ceux auxquels Allah fera miséricorde, car Allah est Puissant et Sage.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mcccvii{Aux croyants et aux croyantes, Allah a promis des Jardins sous lesquels coulent les ruisseaux, pour qu'ils y demeurent éternellement, et des demeures excellentes, aux jardins d'Eden [du séjour permanent]. Et la satisfaction d'Allah est plus grande encore, et c'est là l'énorme succès.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mcccviii{O Prophète, lutte contre les mécréants et les hypocrites, et sois rude avec eux; l'Enfer sera leur refuge, et quelle mauvaise destination!\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mcccix{Ils jurent par Allah qu'ils n'ont pas dit (ce qu'ils ont proféré), alors qu'en vérité ils ont dit la parole de la mécréance et ils ont rejeté la foi après avoir été musulmans. Ils ont projeté ce qu'ils n'ont pu accomplir. Mais ils n'ont pas de reproche à faire si ce n'est qu'Allah - ainsi que Son messager - les a enrichis par Sa grâce. S'ils se repentaient, ce serait mieux pour eux. Et s'ils tournent le dos, Allah les châtiera d'un douloureux châtiment, ici-bas et dans l'au-delà; et ils n'auront sur terre ni allié ni secoureur.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mcccx{Et parmi eux il en est qui avaient pris l'engagement envers Allah: «S'Il nous donne de Sa grâce, nous payerons, certes, la Zakât, et serons du nombre des gens de bien».\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mcccxi{Mais, lorsqu'Il leur donna de Sa grâce, ils s'en montrèrent avares et tournèrent le dos en faisant volte-face.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mcccxii{Il a donc suscité l'hypocrisie dans leurs cœurs, et cela jusqu'au jour où ils Le rencontreront, pour avoir violé ce qu'ils avaient promis à Allah et pour avoir menti.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mcccxiii{Ne savent-ils pas qu'Allah connaît leur secret et leurs conversations confidentielles et qu'Allah connaît parfaitement les (choses) inconnaissables.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mcccxiv{Ceux-là qui dirigent leurs calomnies contre les croyants qui font des aumônes volontaires et contre ceux qui ne trouvent que leurs faibles moyens (à offrir), et ils se moquent alors d'eux. Qu'Allah les raille. Et ils auront un châtiment douloureux.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mcccxv{Que tu demandes pardon pour eux, ou que tu ne le demandes pas - et si tu demandes pardon pour eux soixante dix fois - Allah ne leur pardonnera point. Et ce parce qu'ils n'ont pas cru en Allah et en Son messager et Allah ne guide pas les gens pervers.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mcccxvi{Ceux qui ont été laissés à l'arrière se sont réjouis de pouvoir rester chez eux à l'arrière du Messager d'Allah, ils ont répugné à lutter par leurs biens et leurs personnes dans le sentier d'Allah, et ont dit: «Ne partez pas au combat pendant cette chaleur!» Dis: «Le feu de l'Enfer est plus intense en chaleur.» - S'ils comprenaient!\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mcccxvii{Qu'ils rient un peu et qu'ils pleurent beaucoup en récompense de ce qu'ils se sont acquis.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mcccxviii{Si Allah te ramène vers un groupe de ces (gens-là), et qu'ils te demandent permission de partir au combat, alors dis: «Vous ne sortirez plus jamais en ma compagnie, et vous ne combattrez plus jamais d'ennemis avec moi. Vous avez été plus contents de rester chez vous la première fois; demeurez donc chez vous en compagnie de ceux qui se tiennent à l'arrière».\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mcccxix{Et ne fais jamais la Salât sur l'un d'entre eux qui meurt, et ne te tiens pas debout auprès de sa tombe, parce qu'ils n'ont pas cru en Allah et en Son messager, et ils sont morts tout en étant pervers.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mcccxx{Et que ni leurs biens ni leurs enfants ne t'émerveillent! Allah ne veut par là, que les châtier ici-bas, et qu'ils rendent péniblement l'âme en mécréants.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mcccxxi{Et lorsqu'une Sourate est révélée: «Croyez en Allah et luttez en compagnie de Son messager», les gens qui ont tous les moyens (de combattre) parmi eux te demandent de les dispenser (du combat), et disent: «Laisse-nous avec ceux qui restent».\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mcccxxii{Il leur plaît, (après le départ des combattants) de demeurer avec celles qui sont restées à l'arrière. Leurs cœurs ont été scellés et ils ne comprennent rien.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mcccxxiii{Mais le Messager et ceux qui ont cru avec lui ont lutté avec leurs biens et leurs personnes. Ceux-là auront les bonnes choses et ce sont eux qui réussiront.\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mcccxxiv{Allah a préparé pour eux des Jardins sous lesquels coulent les ruisseaux, pour qu'ils y demeurent éternellement. Voilà l'énorme succès!\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mcccxxv{Et parmi les Bédouins, certains sont venus demander d'être dispensés (du combat). Et ceux qui ont menti à Allah et à Son messager sont restés chez eux. Un châtiment douloureux affligera les mécréants d'entre eux.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mcccxxvi{Nul grief sur les faibles, ni sur les malades, ni sur ceux qui ne trouvent pas de quoi dépenser (pour la cause d'Allah), s'ils sont sincères envers Allah et Son messager. Pas de reproche contre les bienfaiteurs. Allah est Pardonneur et Miséricordieux.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mcccxxvii{(Pas de reproche) non plus à ceux qui vinrent te trouver pour que tu leur fournisses une monture et à qui tu dis: «Je ne trouve pas de monture pour vous.» Ils retournèrent les yeux débordant de larmes, tristes de ne pas trouver de quoi dépenser.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mcccxxviii{Il n'y a de voie (de reproche à), vraiment, que contre ceux qui demandent d'être dispensés, alors qu'ils sont riches. Il leur plaît de demeurer avec celles qui sont restées à l'arrière. Et Allah a scellé leurs cœurs et ils ne savent pas.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mcccxxix{Ils vous présentent des excuses quand vous revenez à eux. Dis: «Ne présentez pas d'excuses: nous ne vous croyons pas. Allah nous a déjà informés de vos nouvelles. Et Allah verra votre œuvre, ainsi que Son messager. Puis vous serez ramenés vers Celui qui connaît bien l'invisible et le visible, et alors, Il vous informera de ce que vous faisiez.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mcccxxx{Ils vous feront des serments par Allah, quand vous êtes de retour vers eux, afin que vous passiez (sur leur tort). Détournez-vous d'eux. Ils sont une souillure et leur refuge est l'Enfer, en rétribution de ce qu'ils acquéraient.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mcccxxxi{Ils vous font des serments pour se faire agréer de vous, même si vous les agréez, Allah n'agrée pas les gens pervers.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mcccxxxii{Les Bédouins sont plus endurcis dans leur impiété et dans leur hypocrisie, et les plus enclins à méconnaître les préceptes qu'Allah a révélés à Son messager. Et Allah est Omniscient et Sage.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mcccxxxiii{Parmi les Bédouins, certains prennent leur dépense (en aumône ou à la guerre) comme une charge onéreuse, et attendent pour vous un revers de fortune. Que le malheur retombe sur eux! Allah est Audient et Omniscient.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mcccxxxiv{(Tel autre,) parmi les Bédouins, croit en Allah et au Jour dernier et prend ce qu'il dépense comme moyen de se rapprocher d'Allah et afin de bénéficier des invocations du Messager. C'est vraiment pour eux (un moyen) de se rapprocher (d'Allah) et Allah les admettra en Sa miséricorde. Car Allah est Pardonneur et Miséricordieux.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mcccxxxv{Les tout premiers [croyants] parmi les Emigrés et les Auxiliaires et ceux qui les ont suivis dans un beau comportement, Allah les agrée, et ils L'agréent. Il a préparé pour eux des Jardins sous lesquels coulent les ruisseaux, et ils y demeureront éternellement. Voilà l'énorme succès!\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mcccxxxvi{Et parmi les Bédouins qui vous entourent, il y a des hypocrites, tout comme une partie des habitants de Médine. Ils s'obstinent dans l'hypocrisie. Tu ne les connais pas mais Nous les connaissons. Nous les châtierons deux fois puis ils seront ramenés vers un énorme châtiment.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mcccxxxvii{D'autres ont reconnu leurs péchés, ils ont mêlé de bonnes actions à d'autres mauvaises. Il se peut qu'Allah accueille leur repentir. Car Allah est Pardonneur et Miséricordieux.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mcccxxxviii{Prélève de leurs biens une Sadaqa par laquelle tu les purifies et les bénis, et prie pour eux. Ta prière est une quiétude pour eux. Et Allah est Audient et Omniscient.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mcccxxxix{Ne savent-ils pas que c'est Allah qui accueille le repentir de Ses serviteurs, et qui reçoit les Sadaqât, et qu'Allah est L'Accueillant au repentir et le Miséricordieux.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mcccxl{Et dis: «Oeuvrez, car Allah va voir votre œuvre, de même que Son messager et les croyants, et vous serez ramenés vers Celui qui connaît bien l'invisible et le visible. Alors Il vous informera de ce que vous faisiez».\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mcccxli{Et d'autres sont laissés dans l'attente de la décision d'Allah, soit qu'Il les punisse, soit qu'Il leur pardonne. Et Allah est Omniscient et Sage.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mcccxlii{Ceux qui ont édifié une mosquée pour en faire [un mobile] de rivalité, d'impiété et de division entre les croyants, qui la préparent pour celui qui auparavant avait combattu Allah et son Envoyé et jurent en disant: «Nous ne voulions que le bien!» [Ceux-là], Allah atteste qu'ils mentent.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mcccxliii{Ne te tiens jamais dans (cette mosquée). Car une Mosquée fondée dès le premier jour, sur la piété, est plus digne que tu t'y tiennes debout [pour y prier]. On y trouve des gens qui aiment bien se purifier, et Allah aime ceux qui se purifient.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mcccxliv{Lequel est plus méritant? Est-ce celui qui a fondé son édifice sur la piété et l'agrément d'Allah, ou bien celui qui a placé les assises de sa construction sur le bord d'une falaise croulante et qui croula avec lui dans le feu de l'Enfer? Et Allah ne guide pas les gens injustes.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mcccxlv{La construction qu'ils ont édifiée sera toujours une source de doute dans leurs cœurs, jusqu'à ce que leurs cœurs se déchirent. Et Allah est Omniscient et Sage.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mcccxlvi{Certes, Allah a acheté des croyants, leurs personnes et leurs biens en échange du Paradis. Ils combattent dans le sentier d'Allah: ils tuent, et ils se font tuer. C'est une promesse authentique qu'Il a prise sur Lui-même dans la Thora, l'Evangile et le Coran. Et qui est plus fidèle qu'Allah à son engagement? Réjouissez-vous donc de l'échange que vous avez fait: Et c'est là le très grand succès.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mcccxlvii{Ils sont ceux qui se repentent, qui adorent, qui louent, qui parcourent la terre (ou qui jeûnent), qui s'inclinent, qui se prosternent, qui commandent le convenable et interdisent le blâmable et qui observent les lois d'Allah... et fais bonne annonce aux croyants.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mcccxlviii{Il n'appartient pas au Prophète et aux croyants d'implorer le pardon en faveur des associateurs, fussent-ils des parents alors qu'il leur est apparu clairement que ce sont les gens de l'Enfer.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@mcccxlix{Abraham ne demanda pardon en faveur de son père qu'à cause d'une promesse qu'il lui avait faite. Mais, dès qu'il lui apparut clairement qu'il était un ennemi d'Allah, il le désavoua. Abraham était certes plein de sollicitude et indulgent.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@mcccl{Allah n'est point tel à égarer un peuple après qu'Il les a guidés, jusqu'à ce qu'Il leur ait montré clairement ce qu'ils doivent éviter. Certes, Allah est Omniscient.\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@mcccli{A Allah appartient la royauté des cieux et de la terre. Il donne la vie et Il donne la mort. Et il n'y a pour vous, en dehors d'Allah, ni allié ni protecteur.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@mccclii{Allah a accueilli le repentir du Prophète, celui des Emigrés et des Auxiliaires qui l'ont suivi à un moment difficile, après que les cœurs d'un groupe d'entre eux étaient sur le point de dévier. Puis Il accueillit leur repentir car Il est Compatissant et Miséricordieux à leur égard.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@mcccliii{Et [Il accueillit le repentir] des trois qui étaient restés à l'arrière si bien que, toute vaste qu'elle fût, la terre leur paraissait exiguë; ils se sentaient à l'étroit, dans leur propre personne et ils pensaient qu'il n'y avait d'autre refuge d'Allah qu'auprès de Lui. Puis Il agréa leur repentir pour qu'ils reviennent [à Lui], car Allah est l'accueillant au repentir, le Miséricordieux.\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@mcccliv{O vous qui croyez! Craignez Allah et soyez avec les véridiques.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@mccclv{Il n'appartient pas aux habitants de Médine, ni aux Bédouins qui sont autour d'eux, de traîner loin derrière le Messager d'Allah, ni de préférer leur propre vie à la sienne. Car ils n'éprouveront ni soif, ni fatigue, ni faim dans le sentier d'Allah, ils ne fouleront aucune terre en provoquant la colère des infidèles, et n'obtiendront aucun avantage sur un ennemi, sans qu'il ne leur soit écrit pour cela une bonne action. En vérité Allah ne laisse pas perdre la récompense des bienfaiteurs.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@mccclvi{Ils ne supporteront aucune dépense, minime ou importante, ne traverseront aucune vallée, sans que (cela) ne soit inscrit à leur actif, en sorte qu'Allah les récompense pour le meilleur de ce qu'ils faisaient.\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@mccclvii{Les croyants n'ont pas à quitter tous leurs foyers. Pourquoi de chaque clan quelques hommes ne viendraient-ils pas s'instruire dans la religion, pour pouvoir à leur retour, avertir leur peuple afin qu'ils soient sur leur garde.\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@mccclviii{O vous qui croyez! Combattez ceux des mécréants qui sont près de vous; et qu'ils trouvent de la dureté en vous. Et sachez qu'Allah est avec les pieux.\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@mccclix{Et quand une Sourate est révélée, il en est parmi eux qui dit: «Quel est celui d'entre vous dont elle fait croître la foi?» Quant aux croyants, elle fait certes croître leur foi, et ils s'en réjouissent.\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@mccclx{Mais quant à ceux dont les cœurs sont malades, elle ajoute une souillure à leur souillure, et ils meurent dans la mécréance.\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@mccclxi{Ne voient-ils pas que chaque année on les éprouve une ou deux fois? Malgré cela, ils ne se repentent, ni ne se souviennent.\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@mccclxii{Et quand une Sourate est révélée, ils se regardent les uns les autres [et se disent]: «Quelqu'un vous voit-il?» Puis ils se détournent. Qu'Allah détourne leurs cœurs, puisque ce sont des gens qui ne comprennent rien.\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@mccclxiii{Certes, un Messager pris parmi vous, est venu à vous, auquel pèsent lourd les difficultés que vous subissez, qui est plein de sollicitude pour vous, qui est compatissant et miséricordieux envers les croyants.\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@mccclxiv{Alors, s'ils se détournent dis: «Allah me suffit. Il n'y a de divinité que Lui. En Lui je place ma confiance; et Il est le Seigneur du Trône immense».\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@mccclxv{\basmalahfr Alif, Lâm, Râ. Voici les versets du Livre plein de sagesse.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mccclxvi{Est-il étonnant pour les gens, que Nous ayons révélé à un homme d'entre eux: «Avertis les gens, et annonce la bonne nouvelle aux croyants qu'ils ont auprès de leur Seigneur une présence méritée [pour leur loyauté antérieure]? Les mécréants dirent alors: «Celui-ci est certainement un magicien évident».\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mccclxvii{Votre Seigneur est, Allah qui créa les cieux et la terre en six jours, puis S'est établi «Istawâ» sur le Trône, administrant toute chose. Il n'y a d'intercesseur qu'avec Sa permission. Tel est Allah votre Seigneur. Adorez-Le donc. Ne réfléchissez-vous pas?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mccclxviii{C'est vers Lui que vous retournerez tous, c'est là, la promesse d'Allah en toute vérité! C'est Lui qui fait la création une première fois puis la refait (en la ressuscitant) afin de rétribuer en toute équité ceux qui ont cru et fait de bonnes œuvres. Quant à ceux qui n'ont pas cru, ils auront un breuvage d'eau bouillante et un châtiment douloureux à cause de leur mécréance!\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mccclxix{C'est Lui qui a fait du soleil une clarté et de la lune une lumière, et Il en a déterminé les phases afin que vous sachiez le nombre des années et le calcul (du temps). Allah n'a créé cela qu'en toute vérité. Il expose les signes pour les gens doués de savoir.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mccclxx{Dans l'alternance de la nuit et du jour, et aussi dans tout ce qu'Allah a créé dans les cieux et la terre, il y a des signes, certes, pour des gens qui craignent (Allah).\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mccclxxi{Ceux qui n'espèrent pas Notre rencontre, qui sont satisfaits de la vie présente et s'y sentent en sécurité, et ceux qui sont inattentifs à Nos signes [ou versets],\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mccclxxii{leur refuge sera le Feu, pour ce qu'ils acquéraient.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mccclxxiii{Ceux qui croient et font de bonnes œuvres, leur Seigneur les guidera à cause de leur foi. A leurs pieds les ruisseaux couleront dans les Jardins des délices.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mccclxxiv{Là, leur invocation sera «Gloire à Toi, O Allah», et leur salutation: «Salâm», [Paix!] et la fin de leur invocation: «Louange à Allah, Seigneur de l'Univers».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mccclxxv{Et si Allah hâtait le malheur des gens avec autant de hâte qu'ils cherchent le bonheur, le terme de leur vie aurait été décrété. Mais Nous laissons ceux qui n'espèrent pas Notre rencontre confus et hésitants dans leur transgression.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mccclxxvi{Et quand le malheur touche l'homme, il fait appel à Nous, couché sur le côté, assis, ou debout. Puis quand Nous le délivrons de son malheur, il s'en va comme s'il ne Nous avait point imploré pour un mal qui l'a touché. C'est ainsi que furent embellies aux outranciers leurs actions.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mccclxxvii{Nous avons fait périr les générations d'avant vous lorsqu'elles eurent été injustes alors que leurs messagers leur avaient apporté des preuves. Cependant, elles n'étaient pas disposées à croire. C'est ainsi que Nous rétribuons les gens criminels.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mccclxxviii{Puis nous fîmes de vous des successeurs sur terre après eux, pour voir comment vous agiriez.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mccclxxix{Et quand leur sont récités Nos versets en toute clarté, ceux qui n'espèrent pas notre rencontre disent: «Apporte un Coran autre que celui-ci» ou bien «Change-le». Dis: «Il ne m'appartient pas de le changer de mon propre chef. Je ne fais que suivre ce qui m'est révélé. Je crains, si je désobéis à mon Seigneur, le châtiment d'un jour terrible».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mccclxxx{Dis: «Si Allah avait voulu, je ne vous l'aurais pas récité et Il ne vous l'aurait pas non plus fait connaître. Je suis bien resté, avant cela, tout un âge parmi vous. Ne raisonnez-vous donc pas?»\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mccclxxxi{Qui est plus injuste que celui qui invente un mensonge contre Allah, ou qui traite de mensonges Ses versets (le Coran)? Vraiment, les criminels ne réussissent pas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mccclxxxii{Ils adorent au lieu d'Allah ce qui ne peut ni leur nuire ni leur profiter et disent: «Ceux-ci sont nos intercesseurs auprès d'Allah». Dis: «Informerez-vous Allah de ce qu'Il ne connaît pas dans les cieux et sur la terre?» Pureté à Lui, Il est Très élevé au-dessus de ce qu'Ils Lui associent!\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mccclxxxiii{Les gens ne formaient (à l'origine) qu'une seule communauté. Puis ils divergèrent. Et si ce n'était une décision préalable de ton Seigneur, les litiges qui les opposaient auraient été tranchés.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mccclxxxiv{Et ils disent: «Que ne fait-on descendre sur lui (Muhammad) un miracle de son Seigneur?» Alors, dis: «L'inconnaissable relève seulement d'Allah. Attendez donc; je serai avec vous parmi ceux qui attendent.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mccclxxxv{Et quand Nous faisons goûter aux gens une miséricorde après qu'un malheur les a touchés, voilà qu'ils dénigrent Nos versets. Dis: «Allah est plus prompt à réprimer (ceux qui dénigrent Ses versets)». Car Nos anges enregistrent vos dénigrements.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mccclxxxvi{C'est Lui qui vous fait aller sur terre et sur mer, quand vous êtes en bateau. [Ces bateaux] les emportèrent, grâce à un bon vent. Ils s'en réjouirent jusqu'au moment où, assaillis par un vent impétueux, assaillis de tous côtés par les vagues, se jugeant enveloppés [par la mort], ils prièrent Allah, Lui vouant le culte [et disant]: «Certes, si Tu nous sauves de ceci, nous serons parmi les reconnaissants!»\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mccclxxxvii{Lorsqu'Il les a sauvés, les voilà qui, sur terre, transgressent injustement. O gens! Votre transgression ne retombera que sur vous-mêmes. C'est une jouissance temporaire de la vie présente. Ensuite, c'est vers Nous que sera votre retour, et Nous vous rappellerons alors ce que vous faisiez.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mccclxxxviii{La vie présente est comparable à une eau que Nous faisons descendre du ciel et qui se mélange à la végétation de la terre dont se nourrissent les hommes et les bêtes. Puis, lorsque la terre prend sa parure et s'embellit, et que ses habitants pensent qu'elle est à leur entière disposition, Notre Ordre lui vient, de nuit ou de jour, c'est alors que Nous la rendrons toute moissonnée, comme si elle n'avait pas été florissante la veille. Ainsi exposons-Nous les preuves pour des gens qui réfléchissent.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mccclxxxix{Allah appelle à la demeure de la paix et guide qui Il veut vers un droit chemin.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mcccxc{A ceux qui agissent en bien est réservée la meilleure (récompense) et même davantage. Nulle fumée noircissante, nul avilissement ne couvriront leurs visages. Ceux-là sont les gens du Paradis, où ils demeureront éternellement.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mcccxci{Et ceux qui ont commis de mauvaises actions, la rétribution d'une mauvaise action sera l'équivalent. Un avilissement les couvrira, - pas de protecteur pour eux contre Allah -, comme si leurs visages se couvraient de lambeaux de ténèbres nocturnes. Ceux-là sont là les gens du Feu où ils demeureront éternellement.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mcccxcii{(Et rappelle-toi) le jour où Nous les rassemblerons tous. Puis, Nous dirons à ceux qui ont donné [à Allah] des associés: «A votre place, vous et vos associés.» Nous les séparerons les uns des autres et leurs associés diront: «Ce n'est pas nous que vous adoriez».\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mcccxciii{Allah suffit comme témoin entre nous et vous. En vérité, nous étions indifférents à votre adoration».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mcccxciv{Là, chaque âme éprouvera (les conséquences de) ce qu'elle a précédemment accompli. Et ils seront ramenés vers Allah leur vrai Maître; et leurs inventions (idoles) s'éloigneront d'eux.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mcccxcv{Dis: «Qui vous attribue de la nourriture du ciel et de la terre? Qui détient l'ouïe et la vue, et qui fait sortir le vivant du mort et fait sortir le mort du vivant, et qui administre tout?» Ils diront: «Allah». Dis alors: «Ne Le craignez-vous donc pas?»\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mcccxcvi{Tel est Allah, votre vrai Seigneur. Au delà de la vérité qu'y a-t-il donc sinon l'égarement? Comment alors pouvez-vous, vous détourner?»\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mcccxcvii{C'est ainsi que s'est réalisée la parole de ton Seigneur contre ceux qui sont pervers: «Ils ne croiront pas».\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mcccxcviii{Dis: «Parmi vos associés, qui donne la vie par une première création et la redonne [après la mort]?» Dis: «Allah [seul] donne la vie par une première création et la redonne. Comment pouvez-vous vous écarter [de l'adoration d'Allah]?\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mcccxcix{Dis: «Est-ce qu'il y a parmi vos associés un qui guide vers la vérité?» Dis: «C'est Allah qui guide vers la vérité. Celui qui guide vers la vérité est-il plus digne d'être suivi, ou bien celui qui ne se dirige qu'autant qu'il est lui-même dirigé? Qu'avez-vous donc? Comment jugez-vous ainsi?»\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mcd{Et la plupart d'entre eux ne suivent que conjecture. Mais, la conjecture ne sert à rien contre la vérité! Allah sait parfaitement ce qu'ils font.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mcdi{Ce Coran n'est nullement à être forgé en dehors d'Allah mais c'est la confirmation de ce qui existait déjà avant lui, et l'exposé détaillé du Livre en quoi il n'y a pas de doute, venu du Seigneur de l'Univers.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mcdii{Ou bien ils disent: «Il (Muhammad) l'a inventé?» Dis: «Composez donc une sourate semblable à ceci, et appelez à votre aide n'importe qui vous pourrez, en dehors d'Allah, si vous êtes véridiques».\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mcdiii{Bien au contraire: ils ont traité de mensonge ce qu'ils ne peuvent embrasser de leur savoir, et dont l'interprétation ne leur est pas encore parvenue. Ainsi ceux qui vivaient avant eux traitaient d'imposteurs (leurs messagers). Regarde comment a été la fin des injustes!\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mcdiv{Certains d'entre eux y croient, et d'autres n'y croient pas. Et ton Seigneur connaît le mieux les fauteurs de désordre.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mcdv{Et s'ils te traitent de menteur, dis alors: «A moi mon œuvre, et à vous la vôtre. Vous êtes irresponsables de ce que je fais et je suis irresponsable de ce que vous faites».\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mcdvi{Et il en est parmi eux qui te prêtent l'oreille. Est-ce toi qui fait entendre les sourds, même s'ils sont incapables de comprendre.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mcdvii{Et il en est parmi eux qui te regardent. Est-ce toi qui peux guider les aveugles, même s'ils ne voient pas?\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mcdviii{En vérité, Allah n'est point injuste à l'égard des gens, mais ce sont les gens qui font du tort à eux-mêmes.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mcdix{Et le jour où Il les rassemblera, ce sera comme s'ils n'étaient restés [dans leur tombeau] qu'une heure du jour et ils se reconnaîtront mutuellement. Perdants seront alors ceux qui auront traité de mensonge la rencontre d'Allah, et ils n'auront pas été bien guidés.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mcdx{Que Nous te fassions voir une partie de ce dont Nous les menaçons, ou que Nous te fassions mourir, (en tout cas), c'est vers Nous que sera leur retour. Allah est en outre, témoin de ce qu'ils font.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mcdxi{A chaque communauté un Messager. Et lorsque leur messager vint, tout se décida en équité entre eux et ils ne furent point lésés.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mcdxii{Et ils disent «A quand cette promesse, si vous êtes véridiques»?\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mcdxiii{Dis: «Je ne détiens pour moi rien qui peut me nuire ou me profiter, excepté ce qu'Allah veut. A chaque communauté un terme. Quand leur terme arrive, ils ne peuvent ni le retarder d'une heure ni l'avancer».\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mcdxiv{Dis: «Voyez-vous! Si Son châtiment vous arrivait de nuit ou de jour, les criminels pourraient-ils en hâter quelque chose?\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mcdxv{«Est-ce au moment où le châtiment se produira que vous croirez? [Il vous sera dit: «Inutile».] Maintenant! Autrefois, vous en réclamiez [ironiquement] la prompte arrivée!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mcdxvi{Puis il sera dit aux injustes: «Goûtez au châtiment éternel! Etes-vous rétribués autrement qu'en rapport de ce que vous acquériez?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mcdxvii{Et ils s'informent auprès de toi: «Est-ce vrai?» - Dis: «Oui! Par mon Seigneur! C'est bien vrai. Et vous ne pouvez vous soustraire à la puissance d'Allah.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mcdxviii{Si chaque âme injuste possédait tout ce qu'il y a sur terre, elle le donnerait pour sa rançon. Ils dissimuleront leur regret quand ils verront le châtiment. Et il sera décidé entre eux en toute équité, et ils ne seront point lésés.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mcdxix{C'est à Allah qu'appartient, certes, tout ce qui est dans les cieux et sur la terre. Certes, la promesse d'Allah est vérité. Mais la plupart d'entre eux ne (le) savent pas.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mcdxx{C'est Lui qui donne la vie et qui donne la mort; et c'est vers Lui que vous serez ramenés.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mcdxxi{O gens! Une exhortation vous est venue, de votre Seigneur, une guérison de ce qui est dans les poitrines, un guide et une miséricorde pour les croyants.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mcdxxii{Dis: «[Ceci provient] de la grâce d'Allah et de Sa miséricorde; Voilà de quoi ils devraient se réjouir. C'est bien mieux que tout ce qu'ils amassent».\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mcdxxiii{Que dites-vous de ce qu'Allah a fait descendre pour vous comme subsistance et dont vous avez alors fait des choses licites et des choses interdites? - Dis: «Est-ce Allah qui vous l'a permis? Ou bien forgez vous (des mensonges) contre Allah?»\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mcdxxiv{Et que penseront, au Jour de la Résurrection, ceux qui forgent le mensonge contre Allah? - Certes, Allah est Détenteur de grâce pour les gens, mais la plupart d'entre eux ne sont pas reconnaissants.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mcdxxv{Tu ne te trouveras dans aucune situation, tu ne réciteras aucun passage du Coran, vous n'accomplirez aucun acte sans que Nous soyons témoin au moment où vous l'entreprendrez. Il n'échappe à ton Seigneur ni le poids d'un atome sur terre ou dans le ciel, ni un poids plus petit ou plus grand qui ne soit déjà inscrit dans un livre évident.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mcdxxvi{En vérité, les bien-aimés d'Allah seront à l'abri de toute crainte, et ils ne seront point affligés,\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mcdxxvii{ceux qui croient et qui craignent [Allah].\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mcdxxviii{Il y a pour eux une bonne annonce dans la vie d'ici-bas tout comme dans la vie ultime. - Il n'y aura pas de changement aux paroles d'Allah -. Voilà l'énorme succès!\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mcdxxix{Que ce qu'ils disent ne t'afflige pas. La puissance toute entière appartient à Allah. C'est Lui qui est l'Audient, l'Omniscient.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mcdxxx{C'est à Allah qu'appartient, ce qui est dans les cieux et ce qui est sur la terre. Que suivent donc ceux qui invoquent, en dehors d'Allah, [des divinités] qu'ils Lui associent? Ils ne suivent que la conjecture et ne font que mentir.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mcdxxxi{C'est Lui qui vous a désigné la nuit pour que vous vous y reposiez, et le jour pour vous permettre de voir. Ce sont en vérité des signes pour les gens qui entendent!\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mcdxxxii{Ils disent: «Allah S'est donné un enfant» Gloire et Pureté à Lui! Il est Le Riche par excellence. A Lui appartient tout ce qui est aux cieux et sur la terre; - vous n'avez pour cela aucune preuve. Allez-vous dire contre Allah ce que vous ne savez pas?\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mcdxxxiii{Dis: «En vérité, ceux qui forgent le mensonge contre Allah ne réussiront pas».\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mcdxxxiv{C'est une jouissance (temporaire) dans la vie d'ici-bas; puis ils retourneront vers Nous et Nous leur ferons goûter au dur châtiment, à titre de sanction pour leur mécréance.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mcdxxxv{Raconte-leur l'histoire de Noé, quand il dit à son peuple: «O mon peuple, si mon séjour (parmi vous), et mon rappel des signes d'Allah vous pèsent trop, alors c'est en Allah que je place (entièrement) ma confiance. Concertez-vous avec vos associés, et ne cachez pas vos desseins. Puis, décidez de moi et ne me donnez pas de répit.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mcdxxxvi{Si vous vous détournez, alors je ne vous ai pas demandé de salaire... Mon salaire n'incombe qu'à Allah. Et il m'a été commandé d'être du nombre des soumis».\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mcdxxxvii{Ils le traitèrent de menteur. Nous le sauvâmes, lui et ceux qui étaient avec lui dans l'arche, desquels Nous fîmes les successeurs (sur la terre). Nous noyâmes ceux qui traitaient de mensonge Nos preuves. Regarde comment a été la fin de ceux qui avaient été avertis!\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mcdxxxviii{Puis Nous envoyâmes après lui des messagers à leurs peuples. Ils leur vinrent avec les preuves. Mais (les gens) étaient tels qu'ils ne pouvaient croire à ce qu'auparavant ils avaient traité de mensonge. Ainsi scellons-Nous les cœurs des transgresseurs.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mcdxxxix{Ensuite, Nous envoyâmes après eux Moïse et Aaron, munis de Nos preuves à Pharaon et ses notables. Mais (ces gens) s'enflèrent d'orgueil et ils étaient un peuple criminel.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mcdxl{Et lorsque la vérité leur vint de Notre part, ils dirent: «Voilà certes, une magie manifeste!»\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mcdxli{Moïse dit: «Dites-vous à la Vérité quand elle vous est venue: Est-ce que cela est de la magie? Alors que les magiciens ne réussissent pas...».\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mcdxlii{Ils dirent: «Est-ce pour nous écarter de ce sur quoi nous avons trouvé nos ancêtres que tu es venu à nous, et pour que la grandeur appartienne à vous deux sur la terre? Et nous ne croyons pas en vous!»\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mcdxliii{Et Pharaon dit: «Amenez-moi tout magicien savant!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mcdxliv{Puis, lorsque vinrent les magiciens, Moïse leur dit: «Jetez ce que vous avez à jeter».\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mcdxlv{Lorsqu'ils jetèrent, Moïse dit: «Ce que vous avez produit est magie! Allah l'annulera. Car Allah ne fait pas prospérer ce que font les fauteurs de désordre.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mcdxlvi{Et par Ses paroles, Allah fera triompher la Vérité, quelque répulsion qu'en aient les criminels».\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mcdxlvii{Personne ne crut (au message) de Moïse, sauf un groupe de jeunes gens de son peuple, par crainte de représailles de Pharaon et de leurs notables. En vérité, Pharaon fut certes superbe sur terre et il fut du nombre des extravagants.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mcdxlviii{Et Moïse dit: «O mon peuple, si vous croyez en Allah, placez votre confiance en Lui si vous (Lui) êtes soumis».\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mcdxlix{Ils dirent: «En Allah nous plaçons notre confiance. O notre Seigneur, ne fais pas de nous une cible pour les persécutions des injustes.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mcdl{Et délivre-nous, par Ta miséricorde, des gens mécréants».\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mcdli{Et Nous révélâmes à Moïse et à son frère: «Prenez pour votre peuple des maisons en Egypte, faites de vos maisons un lieu de prière et soyez assidus dans la prière. Et fais la bonne annonce aux croyants».\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mcdlii{Et Moïse dit: «O notre Seigneur, Tu as accordé à Pharaon et ses notables des parures et des biens dans la vie présente, et voilà, O notre Seigneur, qu'avec cela ils égarent (les gens loin) de Ton sentier. O notre Seigneur, anéantis leurs biens et endurcis leurs cœurs, afin qu'ils ne croient pas, jusqu'à ce qu'ils aient vu le châtiment douloureux».\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mcdliii{Il dit: «Votre prière est exaucée. Restez tous deux sur le chemin droit, et ne suivez point le sentier de ceux qui ne savent pas».\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mcdliv{Et Nous fîmes traverser la mer aux Enfants d'Israël. Pharaon et ses armées les poursuivirent avec acharnement et inimitié. Puis, quand la noyade l'eut atteint, il dit: «Je crois qu'il n'y a d'autre divinité que Celui en qui ont cru les enfants d'Israël. Et je suis du nombre des soumis».\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mcdlv{[Allah dit]: Maintenant? Alors qu'auparavant tu as désobéi et que tu as été du nombre des corrupteurs!\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mcdlvi{Nous allons aujourd'hui épargner ton corps, afin que tu deviennes un signe à tes successeurs. Cependant beaucoup de gens ne prêtent aucune attention à Nos signes (d'avertissement).\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mcdlvii{Certes, Nous avons établi les Enfants d'Israël dans un endroit honorable, et leur avons attribué comme nourriture de bons aliments. Par la suite, ils n'ont divergé qu'au moment où leur vint la science. Ton Seigneur décidera entre eux, au Jour de la Résurrection sur ce qui les divisait.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mcdlviii{Et si tu es en doute sur ce que Nous avons fait descendre vers toi, interroge alors ceux qui lisent le Livre révélé avant toi. La vérité certes, t'est venue de ton Seigneur: ne sois donc point de ceux qui doutent.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mcdlix{Et ne sois point de ceux qui traitent de mensonge les versets d'Allah. Tu serais alors du nombre des perdants.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mcdlx{Ceux contre qui la parole (la menace) de ton Seigneur se réalisera ne croiront pas,\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mcdlxi{même si tous les signes leur parvenaient, jusqu'à ce qu'ils voient le châtiment douloureux.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mcdlxii{Si seulement il y avait, à part le peuple de Yûnus (Jonas), une cité qui ait cru et à qui sa croyance eut ensuite profité! Lorsqu'ils eurent cru, Nous leur enlevâmes le châtiment d'ignominie dans la vie présente et leur donnâmes jouissance pour un certain temps.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mcdlxiii{Si ton Seigneur l'avait voulu, tous ceux qui sont sur la terre auraient cru. Est-ce à toi de contraindre les gens à devenir croyants?\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mcdlxiv{Il n'appartient nullement à une âme de croire si ce n'est avec la permission d'Allah. Et Il voue au châtiment ceux qui ne raisonnent pas.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mcdlxv{Dis: «Regardez ce qui est dans les cieux et sur la terre». Mais ni les preuves ni les avertisseurs (prophètes) ne suffisent à des gens qui ne croient pas.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mcdlxvi{Est-ce qu'ils attendent autre chose que des châtiments semblables à ceux des peuples antérieurs? Dis: «Attendez! Moi aussi, j'attends avec vous».\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mcdlxvii{Ensuite, Nous délivrerons Nos messagers et les croyants. C'est ainsi qu'il Nous incombe [en toute justice] de délivrer les croyants.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mcdlxviii{Dis: «O gens! Si vous êtes en doute sur ma religion, moi, je n'adore point ceux que vous adorez en dehors d'Allah; mais j'adore Allah qui vous fera mourir. Et il m'a été commandé d'être du nombre des croyants».\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mcdlxix{Et (il m'a été dit): «Oriente-toi exclusivement sur la religion en pur monothéiste! Et ne sois pas du nombre des Associateurs;\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mcdlxx{et n'invoque pas, en dehors d'Allah, ce qui ne peut te profiter ni te nuire. Et si tu le fais, tu seras alors du nombre des injustes».\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mcdlxxi{Et si Allah fait qu'un mal te touche, nul ne peut l'écarter en dehors de Lui. Et s'Il te veut un bien, nul ne peut repousser Sa grâce. Il en gratifie qui Il veut parmi Ses serviteurs. Et c'est Lui le Pardonneur, le Miséricordieux.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mcdlxxii{Dis: «O gens! Certes la vérité vous est venue de votre Seigneur. Donc, quiconque est dans le bon chemin ne l'est que pour lui-même; et quiconque s'égare, ne s'égare qu'à son propre détriment. Je ne suis nullement un protecteur pour vous.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mcdlxxiii{Et suis ce qui t'est révélé, et sois constant jusqu'à ce qu'Allah rende Son jugement car Il est le meilleur des juges.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mcdlxxiv{\basmalahfr Alif, Lâm, Râ. C'est un Livre dont les versets sont parfaits en style et en sens, émanant d'un Sage, Parfaitement Connaisseur.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mcdlxxv{N'adorez qu'Allah. Moi, je suis pour vous, de Sa part, un avertisseur et un annonciateur.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mcdlxxvi{Demandez pardon à votre Seigneur; ensuite, revenez à Lui. Il vous accordera une belle jouissance jusqu'à un terme fixé, et Il accordera à chaque méritant l'honneur qu'il mérite. Mais si vous tournez le dos, je crains alors pour vous le châtiment d'un grand jour.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mcdlxxvii{C'est à Allah que sera votre retour; et Il est Omnipotent.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mcdlxxviii{Eh quoi! Ils replient leurs poitrines afin de se cacher de Lui. Même lorsqu'ils se couvrent de leurs vêtements, Il sait ce qu'ils cachent et ce qu'ils divulguent car Il connaît certes le contenu des poitrines.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mcdlxxix{Il n'y a point de bête sur terre dont la subsistance n'incombe à Allah qui connaît son gîte et son dépôt; tout est dans un Livre explicite.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mcdlxxx{Et c'est Lui qui a créé les cieux et la terre en six jours, - alors que Son Trône était sur l'eau, - afin d'éprouver lequel de vous agirait le mieux. Et si tu dis: «Vous serez ressuscités après la mort», ceux qui ne croient pas diront: «Ce n'est là qu'une magie évidente».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxi{Et si Nous retardons pour eux le châtiment jusqu'à une période fixée, ils diront: «Qu'est-ce qui le retient?» - Mais le jour où cela leur viendra, il ne sera pas détourné; d'eux et ce dont ils se moquaient les enveloppera.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxii{Et si Nous faisons goûter à l'homme une grâce de Notre part, et qu'ensuite Nous la lui arrachons, le voilà désespéré et ingrat.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxiii{Et si Nous lui faisons goûter le bonheur, après qu'un malheur l'ait touché, il dira: «Les maux se sont éloignés de moi», et le voilà qui exulte, plein de gloriole.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxiv{sauf ceux qui sont endurants et font de bonnes œuvres. Ceux-là obtiendront pardon et une grosse récompense.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxv{Il se peut que tu négliges une partie de ce qui t'est révélé, et que ta poitrine s'en sente compressée; parce qu'ils disent: «Que n'a-t-on fait descendre sur lui un trésor?» Ou bien: «Que n'est-il venu un Ange en sa compagnie?» - Tu n'es qu'un avertisseur. Et Allah est Le protecteur de toute chose.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxvi{Ou bien ils disent: «Il l'a forgé [le Coran]» - Dis: «Apportez donc dix Sourates semblables à ceci, forgées (par vous). Et appelez qui vous pourrez (pour vous aider), hormis Allah, si vous êtes véridiques».\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxvii{S'ils ne vous répondent pas, sachez alors que c'est par la science d'Allah qu'il est descendu, et qu'il n'y a de divinité que Lui. Etes-vous soumis (à Lui)?\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxviii{Ceux qui veulent la vie présente avec sa parure, Nous les rétribuerons exactement selon leurs actions sur terre, sans que rien leur en soit diminué.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mcdlxxxix{Ceux-là qui n'ont rien, dans l'au-delà, que le Feu. Ce qu'ils auront fait ici-bas sera un échec, et sera vain ce qu'ils auront œuvré.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mcdxc{Est-ce que celui qui se fonde sur une preuve évidente (le Coran) venant de son Seigneur et récitée par un témoin [l'archange Gabriel] de Sa part, cependant qu'avant lui [Muhammad] il y a le livre de Moïse tenant lieu de guide et de miséricorde... [est meilleur ou bien celui qui ne se fonde sur aucune preuve valable?]. Ceux-là y croient; mais quiconque d'entre les factions n'y croit pas, aura le Feu comme rendez-vous. Ne sois donc pas en doute au sujet de ceci (le Coran). Oui, c'est la vérité venant de ton Seigneur; mais la plupart des gens n'y croient pas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mcdxci{Et quel pire injuste que celui qui forge un mensonge contre Allah? Ceux-là seront présentés à leur Seigneur, et les témoins (les anges) diront: «Voilà ceux qui ont menti contre leur Seigneur». Que la malédiction d'Allah (frappe) les injustes,\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mcdxcii{qui obstruent le sentier d'Allah (aux gens), cherchent à le rendre tortueux et ne croient pas en l'au-delà.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mcdxciii{Ceux-là ne peuvent réduire (Allah) à l'impuissance sur terre! Pas d'alliés pour eux en dehors d'Allah et leur châtiment sera doublé. Ils étaient incapables d'entendre; ils ne voyaient pas non plus.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mcdxciv{Ce sont ceux-là qui ont causé la perte de leurs propres âmes. Et leurs inventions (idoles) se sont éloignées d'eux.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mcdxcv{Ce sont eux, infailliblement, qui dans l'au-delà seront les plus grands perdants.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mcdxcvi{Certes ceux qui croient, font de bonnes œuvres et s'humilient devant leur Seigneur, voilà les gens du Paradis où ils demeureront éternellement.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mcdxcvii{Les deux groupes ressemblent, l'un à l'aveugle et au sourd, l'autre à celui qui voit et qui entend. Les deux sont-ils comparativement égaux? Ne vous souvenez-vous pas?\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mcdxcviii{Nous avons déjà envoyé Noé à son peuple: «Je suis pour vous un avertisseur explicite\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mcdxcix{afin que vous n'adoriez qu'Allah. Je crains pour vous le châtiment d'un jour douloureux».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@md{Les notables de son peuple qui avaient mécru, dirent alors: «Nous ne voyons en toi qu'un homme comme nous; et nous voyons que ce sont seulement les vils parmi nous qui te suivent sans réfléchir; et nous ne voyons en vous aucune supériorité sur nous. Plutôt, nous pensons que vous êtes des menteurs».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mdi{Il dit: «O mon peuple! Que vous en semble? Si je me conforme à une preuve de mon Seigneur, si une Miséricorde, (prophétie) échappant à vos yeux, est venue à moi de Sa part, devrons-nous vous l'imposer alors que vous la répugnez?\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mdii{O mon peuple, je ne vous demande pas de richesse en retour. Mon salaire n'incombe qu'à Allah. Je ne repousserai point ceux qui ont cru, ils auront à rencontrer leur Seigneur. Mais je vous trouve des gens ignorants.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mdiii{O mon peuple, qui me secourra contre (la punition d') Allah si je les repousse? Ne vous souvenez-vous pas?\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mdiv{Et je ne vous dis pas que je détiens les trésors d'Allah, je ne connais pas l'Inconnaissable, et je ne dis pas que je suis un Ange; et je ne dis pas non plus aux gens, que vos yeux méprisent, qu'Allah ne leur accordera aucune faveur; Allah connaît mieux ce qu'il y a dans leurs âmes. [Si je le leur disais], je serais du nombre des injustes.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mdv{Ils dirent: «O Noé, tu as disputé avec nous et multiplié les discussions. Apporte-nous donc ce dont tu nous menaces, si tu es du nombre des véridiques».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mdvi{Il dit: «C'est Allah seul qui vous l'apportera - s'Il veut - et vous ne saurez y échapper.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mdvii{Et mon conseil ne vous profiterait pas, au cas où je voulais vous conseiller, et qu'Allah veuille vous égarer. Il est votre Seigneur, et c'est vers Lui que vous serez ramenés».\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mdviii{Ou bien ils disent: il l'a inventé? Dis: «Si je l'ai inventé, que mon crime retombe sur moi! Et je suis innocent de vos criminelles accusations».\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mdix{Et il fut révélé à Noé: «De ton peuple, il n'y aura plus de croyants que ceux qui ont déjà cru. Ne t'afflige pas de ce qu'ils faisaient.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mdx{Et construis l'arche sous Nos yeux et d'après Notre révélation. Et ne M'interpelle plus au sujet des injustes, car ils vont être noyés».\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mdxi{Et il construisait l'arche. Et chaque fois que des notables de son peuple passaient près de lui, ils se moquaient de lui. Il dit: «Si vous vous moquez de nous, eh bien, nous nous moquerons de vous, comme vous vous moquez [de nous].\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mdxii{Et vous saurez bientôt à qui viendra un châtiment qui l'humiliera, et sur qui s'abattra un châtiment durable!»\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mdxiii{Puis, lorsque Notre commandement vint et que le four se mit à bouillonner [d'eau], Nous dîmes: «Charge [dans l'arche] un couple de chaque espèce ainsi que ta famille - sauf ceux contre qui le décret est déjà prononcé - et ceux qui croient». Or, ceux qui avaient cru avec lui étaient peu nombreux.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mdxiv{Et il dit: «Montez dedans. Que sa course et son mouillage soient au nom d'Allah. Certes mon Seigneur est Pardonneur et Miséricordieux».\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mdxv{Et elle vogua en les emportant au milieu des vagues comme des montagnes. Et Noé appela son fils, qui restait en un lieu écarté (non loin de l'arche): «O mon enfant, monte avec nous et ne reste pas avec les mécréants».\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mdxvi{Il répondit: «Je vais me réfugier vers un mont qui me protègera de l'eau». Et Noé lui dit: «Il n'y a aujourd'hui aucun protecteur contre l'ordre d'Allah. (Tous périront) sauf celui à qui Il fait miséricorde». Et les vagues s'interposèrent entre les deux, et le fils fut alors du nombre des noyés.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mdxvii{Et il fut dit: «O terre, absorbe ton eau! Et toi, ciel, cesse [de pleuvoir]!» L'eau baissa, l'ordre fut exécuté et l'arche s'installa sur le Jûdi, et il fut dit: «Que disparaissent les gens pervers»!\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mdxviii{Et Noé invoqua son Seigneur et dit: «O mon Seigneur, certes mon fils est de ma famille et Ta promesse est vérité. Tu es le plus juste des juges».\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mdxix{Il dit: «O Noé, il n'est pas de ta famille car il a commis un acte infâme. Ne me demande pas ce dont tu n'as aucune connaissance. Je t'exhorte afin que tu ne sois pas du nombre des ignorants».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mdxx{Alors Noé dit: «Seigneur, je cherche Ta protection contre toute demande de ce dont je n'ai aucune connaissance. Et si Tu ne me pardonnes pas et ne me fais pas miséricorde, je serai au nombre des perdants».\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mdxxi{Il fut dit: «O Noé, débarque avec Notre sécurité et Nos bénédictions sur toi et sur des communautés [issues] de ceux qui sont avec toi. Et il y (en) aura des communautés auxquelles Nous accorderons une jouissance temporaire; puis un châtiment douloureux venant de Nous les touchera».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mdxxii{Voilà quelques nouvelles de l'Inconnaissable que Nous te révélons. Tu ne les savais pas, ni toi ni ton peuple, avant cela. Sois patient. La fin heureuse sera aux pieux.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mdxxiii{Et (Nous avons envoyé) aux 'Aad, leur frère Hûd, qui leur dit: «O mon peuple, adorez Allah. Vous n'avez point de divinité à part Lui. Vous n'êtes que des forgeurs (de mensonges).\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mdxxiv{O mon peuple, je ne vous demande pas de salaire pour cela. Mon salaire n'incombe qu'à Celui qui m'a créé. Ne raisonnez-vous pas?\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mdxxv{O mon peuple, implorez le pardon de votre Seigneur et repentez-vous à Lui pour qu'Il envoie sur vous du ciel des pluies abondantes et qu'Il ajoute force à votre force. Et ne vous détournez pas [de Lui] en devenant coupables».\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mdxxvi{Ils dirent: «O Hûd, tu n'es pas venu à nous avec une preuve, et nous ne sommes pas disposés à abandonner nos divinités sur ta parole, et nous n'avons pas foi en toi.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mdxxvii{Nous dirons plutôt qu'une de nos divinités t'a affligé d'un mal». Il dit: «Je prends Allah à témoin - et vous aussi soyez témoins - qu'en vérité, je désavoue ce que vous associez,\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mdxxviii{en dehors de Lui. Rusez donc tous contre moi et ne me donnez pas de répit.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mdxxix{Je place ma confiance en Allah, mon Seigneur et le vôtre. Il n'y a pas d'être vivant qu'Il ne tienne par son toupet. Mon Seigneur, certes, est sur un droit chemin.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mdxxx{Si vous vous détournez... voilà que je vous ai transmis [le message] que j'étais chargé de vous faire parvenir. Et mon Seigneur vous remplacera par un autre peuple, sans que vous ne Lui nuisiez en rien, car mon Seigneur, est gardien par excellence sur toute chose».\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mdxxxi{Et quand vint Notre Ordre, Nous sauvâmes par une miséricorde de Notre part, Hûd et ceux qui avec lui avaient cru. Et Nous les sauvâmes d'un terrible châtiment.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mdxxxii{Voilà les 'Aad. Ils avaient nié les signes (enseignements) de leur Seigneur, désobéi à Ses messagers et suivi le commandement de tout tyran entêté.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mdxxxiii{Et ils furent poursuivis, ici-bas, d'une malédiction, ainsi qu'au Jour de la Résurrection. En vérité, les 'Aad n'ont pas cru en leur Seigneur. Que s'éloignent (périssent) les 'Aad, peuple de Hûd!\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mdxxxiv{Et (Nous avons envoyé) aux Thamûd, leur frère Sâlih qui dit: «O mon peuple, adorez Allah. Vous n'avez point de divinité en dehors de Lui. De la terre Il vous a créés, et Il vous l'a fait peupler (et exploiter). Implorez donc Son pardon, puis repentez-vous à Lui. Mon Seigneur est bien proche et Il répond toujours (aux appels)».\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mdxxxv{Ils dirent: «O Sâlih, tu étais auparavant un espoir pour nous. Nous interdirais-tu d'adorer ce qu'adoraient nos ancêtres? Cependant, nous voilà bien dans un doute troublant au sujet de ce vers quoi tu nous invites».\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mdxxxvi{Il dit: «O mon peuple! Que vous en semble, si je m'appuie sur une preuve évidente émanant de mon Seigneur et s'Il m'a accordé, de Sa part, une miséricorde, qui donc me protègera contre Allah si je Lui désobéis? Vous ne ferez qu'accroître ma perte.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mdxxxvii{O mon peuple, voici la chamelle d'Allah qu'Il vous a envoyée comme signe. Laissez-la donc paître sur la terre d'Allah, et ne lui faites aucun mal sinon, un châtiment proche vous saisira!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mdxxxviii{Ils la tuèrent. Alors, il leur dit: «Jouissez (de vos biens) dans vos demeures pendant trois jours (encore)! Voilà une promesse qui ne sera pas démentie».\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mdxxxix{Puis, lorsque Notre ordre vint, Nous sauvâmes Sâlih et ceux qui avaient cru avec lui, - par une miséricorde venant de Nous - de l'ignominie de ce jour-là. En vérité, c'est ton Seigneur qui est le Fort, le Puissant.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mdxl{Et le Cri saisit les injustes. Et les voilà foudroyés dans leurs demeures,\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mdxli{comme s'ils n'y avaient jamais prospéré. En vérité, les Thamûd n'ont pas cru en leur Seigneur. Que périssent les Thamûd!\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mdxlii{Et Nos émissaires sont, certes, venus à Abraham avec la bonne nouvelle, en disant: «Salâm!». Il dit: «Salâm!», et il ne tarda pas à apporter un veau rôti.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mdxliii{Puis, lorsqu'il vit que leurs mains ne l'approchaient pas, il fut pris de suspicion à leur égard et ressentit de la peur vis-à-vis d'eux. Ils dirent: «N'aie pas peur, nous sommes envoyés au peuple de Lot».\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mdxliv{Sa femme était debout, et elle rit alors; Nous lui annonçâmes donc (la naissance d') Isaac, et après Isaac, Jacob.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mdxlv{Elle dit: «Malheur à moi! Vais-je enfanter alors que je suis vieille et que mon mari, que voici, est un vieillard? C'est là vraiment une chose étrange!»\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mdxlvi{Ils dirent: «T'étonnes-tu de l'ordre d'Allah? Que la miséricorde d'Allah et Ses bénédictions soient sur vous, gens de cette maison! Il est vraiment, digne de louange et de glorification!»\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mdxlvii{Lorsque l'effroi eut quitté Abraham et que la bonne nouvelle l'eut atteint, voilà qu'il discuta avec Nous (en faveur) du peuple de Lot.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mdxlviii{Abraham était, certes, longanime, très implorant et repentant.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mdxlix{O Abraham, renonce à cela; car l'ordre de Ton Seigneur est déjà venu, et un châtiment irrévocable va leur arriver».\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mdl{Et quand Nos émissaires (Anges) vinrent à Lot, il fut chagriné pour eux, et en éprouva une grande gêne. Et il dit: «Voici un jour terrible».\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mdli{Quant à son peuple, ils vinrent à lui, accourant. Auparavant ils commettaient des mauvaises actions. Il dit: «O mon peuple, voici mes filles: elles sont plus pures pour vous. Craignez Allah donc, et ne me déshonorez pas dans mes hôtes. N'y a-t-il pas parmi vous un homme raisonnable?»\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mdlii{Ils dirent: Tu sais très bien que nous n'avons pas de droit sur tes filles. Et en vérité, tu sais bien ce que nous voulons».\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mdliii{Il dit: «[Ah!] si j'avais de la force pour vous résister! ou bien si je trouvais un appui solide!»\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mdliv{Alors [les hôtes] dirent: «O Lot, nous sommes vraiment les émissaires de ton Seigneur. Ils ne pourront jamais t'atteindre. Pars avec ta famille à un moment de la nuit. Et que nul d'entre vous ne se retourne en arrière. Exception faite de ta femme qui sera atteinte par ce qui frappera les autres. Ce qui les menace s'accomplira à l'aube. L'aube n'est-elle pas proche?»\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mdlv{Et, lorsque vint Notre ordre, Nous renversâmes [la cité] de fond en comble, et fîmes pleuvoir sur elle en masse, des pierres d'argile succédant les unes aux autres,\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mdlvi{portant une marque connue de ton Seigneur. Et elles (ces pierres) ne sont pas loin des injustes.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mdlvii{Et (Nous avons envoyé) aux Madyan, leur frère Chuayb qui leur dit: «O mon peuple, adorez Allah; vous n'avez point de divinité en dehors Lui. Et ne diminuez pas les mesures et le poids. Je vous vois dans l'aisance, et je crains pour vous [si vous ne croyez pas] le châtiment d'un jour qui enveloppera tout.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mdlviii{O mon peuple, faites équitablement pleine mesure et plein poids, ne dépréciez pas aux gens leurs valeurs et ne semez pas la corruption sur terre.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mdlix{Ce qui demeure auprès d'Allah est meilleur pour vous si vous êtes croyants! Et je ne suis pas un gardien pour vous».\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mdlx{Ils dirent: «O Chuayb! Est-ce que ta prière te demande de nous faire abandonner ce qu'adoraient nos ancêtres, ou de ne plus faire de nos biens ce que nous voulons? Est-ce toi l'indulgent, le droit?»\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mdlxi{Il dit: «O mon peuple, voyez-vous si je me base sur une preuve évidente émanant de mon Seigneur, et s'Il m'attribue de Sa part une excellente donation?... Je ne veux nullement faire ce que je vous interdis. Je ne veux que la réforme, autant que je le puis. Et ma réussite ne dépend que d'Allah. En Lui je place ma confiance, et c'est vers Lui que je reviens repentant.\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mdlxii{O mon peuple, que votre répugnance et votre hostilité à mon égard ne vous entraînent pas à encourir les mêmes châtiments qui atteignirent le peuple de Noé, le peuple de Hûd, ou le peuple de Sâlih et (l'exemple du) peuple de Lot n'est pas éloigné de vous.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mdlxiii{Et implorez le pardon de votre Seigneur et repentez-vous à Lui. Mon Seigneur est vraiment Miséricordieux et plein d'amour».\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mdlxiv{Ils dirent: «O Chuayb, nous ne comprenons pas grand chose à ce que tu dis; et vraiment nous te considérons comme un faible parmi nous. Si ce n'est ton clan, nous t'aurions certainement lapidé. Et rien ne nous empêche de t'atteindre».\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mdlxv{Il dit: «O mon peuple, mon clan est-il à vos yeux plus puissant qu'Allah à qui vous tournez ouvertement le dos? Mon Seigneur embrasse (en Sa science) tout ce que vous œuvrez.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mdlxvi{O mon peuple, agissez autant que vous voulez. Moi aussi j'agis. Bientôt, vous saurez sur qui tombera un châtiment qui le déshonorera, et qui de nous est l'imposteur. Et attendez (la conséquence de vos actes)! Moi aussi j'attends avec vous».\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mdlxvii{Lorsque vint Notre ordre, Nous sauvâmes, par une miséricorde de Notre part, Chuayb et ceux qui avaient cru avec lui. Et le Cri terrible saisit les injustes, et ils gisèrent dans leurs demeures,\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mdlxviii{comme s'ils n'y avaient jamais prospéré. Que les Madyan s'éloignent comme les Thamûd se sont éloignés.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mdlxix{Et Nous avions envoyé Moïse, avec Nos miracles et une autorité incontestable,\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mdlxx{à Pharaon et ses notables. Mais ils suivirent l'ordre de Pharaon, bien que l'ordre de Pharaon n'avait rien de sensé.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mdlxxi{Il précédera son peuple, au Jour de la Résurrection. Il les mènera à l'aiguade du Feu. Et quelle détestable aiguade!\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mdlxxii{Et ils sont poursuivis par une malédiction ici-bas et au Jour de la Résurrection. Quel détestable don leur sera donné!\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mdlxxiii{Cela fait partie des récits que Nous te [Muhammad] racontons concernant des cités: les unes sont encore debout, tandis que d'autres (sont complètement) rasées.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mdlxxiv{Nous ne leur avons fait aucun tort. Mais ils se sont fait du tort à eux-mêmes. Leurs divinités, qu'ils invoquaient en dehors d'Allah, ne leur ont servi à rien, quand l'Ordre (le châtiment) de ton Seigneur fut venu; elles n'ont fait qu'accroître leur perte.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mdlxxv{Telle est la rigueur de la prise de ton Seigneur quand Il frappe les cités lorsqu'elles sont injustes. Son châtiment est bien douloureux et bien dur.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mdlxxvi{Il y a bien là un signe pour celui qui craint le châtiment de l'au-delà. C'est un jour où les gens seront rassemblés; et c'est un jour solennel (attesté par tous).\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mdlxxvii{Et Nous ne le retardons que pour un terme bien déterminé.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mdlxxviii{Le jour où cela arrivera, nulle âme ne parlera qu'avec Sa permission (celle d'Allah). Il y aura des damnés et des heureux.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mdlxxix{Ceux qui sont damnés seront dans le Feu où ils ont des soupirs et des sanglots.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mdlxxx{Pour y demeurer éternellement tant que dureront les cieux et la terre - à moins que ton Seigneur en décide autrement - car ton Seigneur fait absolument tout ce qu'Il veut.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mdlxxxi{Et quant aux bienheureux, ils seront au Paradis, pour y demeurer éternellement tant que dureront les cieux et la terre - à moins que ton Seigneur n'en décide autrement - c'est là un don qui n'est jamais interrompu.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mdlxxxii{Ne sois donc pas en doute au sujet de ce que ceux-là adorent. Ils n'adorent que comme leurs ancêtres adoraient auparavant. Et Nous leur donnerons la totalité de leur part, sans en rien retrancher.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mdlxxxiii{Et Nous avons déjà donné à Moïse le Livre. Il y eut des divergences à son sujet. S'il n'y avait pas un décret préalable de la part de ton Seigneur, tout aurait été décidé entre eux. Et ils sont, à son sujet pleins d'un doute troublant.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mdlxxxiv{Très certainement, ton Seigneur fera leur pleine rétribution à tous pour leurs œuvres... Il est Parfaitement Connaisseur de ce qu'ils font.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mdlxxxv{Demeure sur le droit chemin comme il t'est commandé, ainsi que ceux qui sont revenus [à Allah] avec toi. Et ne commettez pas d'excès. Car vraiment Il observe ce que vous faites.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mdlxxxvi{Et ne vous penchez pas vers les injustes: sinon le Feu vous atteindrait. Vous n'avez pas d'alliés en dehors d'Allah. Et vous ne serez pas secourus.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@mdlxxxvii{Et accomplis la Salât aux deux extrémités du jour et à certaines heures de la nuit. Les bonnes œuvres dissipent les mauvaises. Cela est une exhortation pour ceux qui réfléchissent.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@mdlxxxviii{Et sois patient. Car Allah ne laisse pas perdre la récompense des gens bienfaisants.\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@mdlxxxix{Si seulement il existait, dans les générations d'avant vous, des gens vertueux qui interdisent la corruption sur terre! (Hélas) Il n'y en avait qu'un petit nombre que Nous sauvâmes, alors que les injustes persistaient dans le luxe (exagéré) dans lequel ils vivaient, et ils étaient des criminels.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@mdxc{Et ton Seigneur n'est point tel à détruire injustement des cités dont les habitants sont des réformateurs.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@mdxci{Et si ton Seigneur avait voulu, Il aurait fait des gens une seule communauté. Or, ils ne cessent d'être en désaccord (entre eux,)\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@mdxcii{sauf ceux à qui ton Seigneur a accordé miséricorde. C'est pour cela qu'Il les a créés. Et la parole de ton Seigneur s'accomplit: «Très certainement, Je remplirai l'Enfer de djinns et d'hommes, tous ensemble».\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@mdxciii{Et tout ce que Nous te racontons des récits des messagers, c'est pour en raffermir ton cœur. Et de ceux-ci t'est venue la vérité ainsi qu'une exhortation et un rappel aux croyants.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@mdxciv{Et dis à ceux qui ne croient pas: «Oeuvrez autant que vous pouvez. Nous aussi, nous œuvrons.\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@mdxcv{Et attendez. Nous aussi nous attendons!»\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@mdxcvi{A Allah appartient l'Inconnaissable des cieux et de la terre, et c'est à Lui que revient l'ordre tout entier. Adore-Le donc et place ta confiance en Lui. Ton Seigneur n'est pas inattentif à ce que vous faites.\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@mdxcvii{\basmalahfr Alif, Lâm, Râ. Tels sont les versets du Livre explicite.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mdxcviii{Nous l'avons fait descendre, un Coran en [langue] arabe, afin que vous raisonniez.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mdxcix{Nous te racontons le meilleur récit, grâce à la révélation que Nous te faisons dans ce Coran même si tu étais auparavant du nombre des inattentifs (à ces récits).\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mdc{Quand Joseph dit à son père: «O mon père, j'ai vu [en songe], onze étoiles, et aussi le soleil et la lune; je les ai vus prosternés devant moi».\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mdci{«O mon fils, dit-il, ne raconte pas ta vision à tes frères car ils monteraient un complot contre toi; le Diable est certainement pour l'homme un ennemi déclaré.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mdcii{Ainsi ton Seigneur te choisira et t'enseignera l'interprétation des rêves, et Il parfera Son bienfait sur toi et sur la famille de Jacob, tout comme Il l'a parfait auparavant sur tes deux ancêtres, Abraham et Isaac, car ton Seigneur est Omniscient et Sage.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mdciii{Il y avait certainement, en Joseph et ses frères, des exhortations pour ceux qui interrogent,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mdciv{quand ceux-ci dirent: «Joseph et son frère sont plus aimés de notre père que nous, alors que nous sommes un groupe bien fort. Notre père est vraiment dans un tort évident.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mdcv{Tuez Joseph ou bien éloignez-le dans n'importe quel pays, afin que le visage de votre père se tourne exclusivement vers vous, et que vous soyez après cela des gens de bien».\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mdcvi{L'un d'eux dit: «Ne tuez pas Joseph, mais jetez-le si vous êtes disposés à agir, au fond du puits afin que quelque caravane le recueille».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mdcvii{Ils dirent: «O notre père, qu'as-tu à ne pas te fier à nous au sujet de Joseph? Nous sommes cependant bien intentionnés à son égard.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mdcviii{Envoie-le demain avec nous faire une promenade et jouer. Et nous veillerons sur lui».\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mdcix{Il dit: «Certes, je m'attristerai que vous l'emmeniez; et je crains que le loup ne le dévore dans un moment où vous ne ferez pas attention à lui».\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mdcx{Ils dirent: «Si le loup le dévore alors que nous sommes nombreux, nous serons vraiment les perdants».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mdcxi{Et lorsqu'ils l'eurent emmené, et se furent mis d'accord pour le jeter dans les profondeurs invisibles du puits, Nous lui révélâmes: «Tu les informeras sûrement de cette affaire sans qu'ils s'en rendent compte».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mdcxii{Et ils vinrent à leur père, le soir, en pleurant.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mdcxiii{Ils dirent: «O notre père, nous sommes allés faire une course, et nous avons laissé Joseph auprès de nos effets; et le loup l'a dévoré. Tu ne nous croiras pas, même si nous disons la vérité».\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mdcxiv{Ils apportèrent sa tunique tachée d'un faux sang. Il dit: «Vos âmes, plutôt, vous ont suggéré quelque chose... [Il ne me reste plus donc] qu'une belle patience! C'est Allah qu'il faut appeler au secours contre ce que vous racontez!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mdcxv{Or, vint une caravane. Ils envoyèrent leur chercheur d'eau, qui fit descendre son seau. Il dit: «Bonne nouvelle! Voilà un garçon!» Et ils le dissimulèrent [pour le vendre] telle une marchandise. Allah cependant savait fort bien ce qu'ils faisaient.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mdcxvi{Et ils le vendirent à vil prix: pour quelques dirhams comptés. Ils le considéraient comme indésirable.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mdcxvii{Et celui qui l'acheta était de l'Egypte. Il dit à sa femme: «Accorde lui une généreuse hospitalité. Il se peut qu'il nous soit utile ou que nous l'adoptions comme notre enfant.» Ainsi avons-nous raffermi Joseph dans le pays et nous lui avons appris l'interprétation des rêves. Et Allah est souverain en Son Commandement: mais la plupart des gens ne savent pas.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mdcxviii{Et quand il eut atteint sa maturité Nous lui accordâmes sagesse et savoir. C'est ainsi que nous récompensons les bienfaisants.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mdcxix{Or celle [Zulikha] qui l'avait reçu dans sa maison essaya de le séduire. Et elle ferma bien les portes et dit: «Viens, (je suis prête pour toi!)» - Il dit: «Qu'Allah me protège! C'est mon maître qui m'a accordé un bon asile. Vraiment les injustes ne réussissent pas».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mdcxx{Et, elle le désira. Et il l'aurait désirée n'eût été ce qu'il vit comme preuve évidente de son Seigneur. Ainsi [Nous avons agi] pour écarter de lui le mal et la turpitude. Il était certes un de Nos serviteurs élus.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mdcxxi{Et tous deux coururent vers la porte, et elle lui déchira sa tunique par derrière. Ils trouvèrent le mari [de cette femme] à la porte. Elle dit: «Quelle serait la punition de quiconque a voulu faire du mal à ta famille, sinon la prison, ou un châtiment douloureux?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mdcxxii{[Joseph] dit: «C'est elle qui a voulu me séduire». Et un témoin, de la famille de celle-ci témoigna: «Si sa tunique [à lui] est déchirée par devant, alors c'est elle qui dit la vérité, tandis qu'il est du nombre des menteurs.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mdcxxiii{Mais si sa tunique est déchirée par derrière, alors c'est elle qui mentit, tandis qu'il est du nombre des véridiques».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mdcxxiv{Puis, quand il (le mari) vit la tunique déchirée par derrière, il dit: «C'est bien de votre ruse de femmes! Vos ruses sont vraiment énormes!\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mdcxxv{Joseph, ne pense plus à cela! Et toi, (femme), implore le pardon pour ton péché car tu es fautive».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mdcxxvi{Et dans la ville, des femmes dirent: «la femme d'Al-'Azize essaye de séduire son valet! Il l'a vraiment rendue folle d'amour. Nous la trouvons certes dans un égarement évident.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mdcxxvii{Lorsqu'elle eut entendu leur fourberie, elle leur envoya [des invitations,] et prépara pour elles une collation; et elle remit à chacune d'elles un couteau. Puis elle dit: «Sors devant elles, (Joseph!)» - Lorsqu'elles le virent, elles l'admirèrent, se coupèrent les mains et dirent: «A Allah ne plaise! Ce n'est pas un être humain, ce n'est qu'un ange noble!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mdcxxviii{Elle dit: «Voilà donc celui à propos duquel vous me blâmiez. J'ai essayé de le séduire mais il s'en défendit fermement. Or, s'il ne fait pas ce que je lui commande, il sera très certainement emprisonné et sera certes parmi les humiliés».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mdcxxix{Il dit: «O mon Seigneur, la prison m'est préférable à ce à quoi elles m'invitent. Et si Tu n'écartes pas de moi leur ruse, je pencherai vers elles et serai du nombre des ignorants» [des pécheurs].\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mdcxxx{Son Seigneur l'exauça donc, et éloigna de lui leur ruse. C'est Lui, vraiment, qui est l'Audient et l'Omniscient.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mdcxxxi{Puis, après qu'ils eurent vu les preuves (de son innocence), il leur sembla qu'ils devaient l'emprisonner pour un temps.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mdcxxxii{Deux valets entrèrent avec lui en prison. L'un d'eux dit: «Je me voyais [en rêve] pressant du raisin...» Et l'autre dit: «Et moi, je me voyais portant sur ma tête du pain dont les oiseaux mangeaient. Apprends-nous l'interprétation (de nos rêves), nous te voyons au nombre des bienfaisants».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mdcxxxiii{«La nourriture qui vous est attribuée ne vous parviendra point, dit-il, que je ne vous aie avisés de son interprétation [de votre nourriture] avant qu'elle ne vous arrive. Cela fait partie de ce que mon Seigneur m'a enseigné. Certes, j'ai abandonné la religion d'un peuple qui ne croit pas en Allah et qui nie la vie future».\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mdcxxxiv{Et j'ai suivi la religion de mes ancêtres, Abraham, Isaac et Jacob. Il ne nous convient pas d'associer à Allah quoi que ce soit. Ceci est une grâce d'Allah sur nous et sur tout le monde; mais la plupart des gens ne sont pas reconnaissants.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mdcxxxv{O mes deux compagnons de prison! Qui est le meilleur: des Seigneurs éparpillés ou Allah, l'Unique, le Dominateur suprême?\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mdcxxxvi{Vous n'adorez, en dehors de Lui, que des noms que vous avez inventés, vous et vos ancêtres, et à l'appui desquels Allah n'a fait descendre aucune preuve. Le pouvoir n'appartient qu'à Allah. Il vous a commandé de n'adorer que Lui. Telle est la religion droite; mais la plupart des gens ne savent pas.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mdcxxxvii{O mes deux compagnons de prison! L'un de vous donnera du vin à boire à son maître; quant à l'autre, il sera crucifié, et les oiseaux mangeront de sa tête. L'affaire sur laquelle vous me consultez est déjà décidée.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mdcxxxviii{Et il dit à celui des deux dont il pensait qu'il serait délivré: «Parle de moi auprès de ton maître». Mais le Diable fit qu'il oublia de rappeler (le cas de Joseph) à son maître. Joseph resta donc en prison quelques années.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mdcxxxix{Et le roi dit: «En vérité, je voyais (en rêve) sept vaches grasses mangées par sept maigres; et sept épis verts, et autant d'autres, secs. O conseil de notables, donnez-moi une explication de ma vision, si vous savez interpréter le rêve».\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mdcxl{Ils dirent: «C'est un amas de rêves! Et nous ne savons pas interpréter les rêves!»\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mdcxli{Or, celui des deux qui avait été délivré et qui, après quelque temps se rappela, dit: «Je vous en donnerai l'interprétation. Envoyez-moi donc».\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mdcxlii{«O toi, Joseph, le véridique! Eclaire-nous au sujet de sept vaches grasses que mangent sept très maigres, et sept épis verts et autant d'autres, secs, afin que je retourne aux gens et qu'ils sachent [l'interprétation exacte du rêve]».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mdcxliii{Alors [Joseph dit]: «Vous sèmerez pendant sept années consécutives. Tout ce que vous aurez moissonné, laissez-le en épi, sauf le peu que vous consommerez.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mdcxliv{Viendront ensuite sept années de disette qui consommeront tout ce que vous aurez amassé pour elles sauf le peu que vous aurez réservé [comme semence].\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mdcxlv{Puis, viendra après cela une année où les gens seront secourus [par la pluie] et iront au pressoir.»\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mdcxlvi{Et le roi dit: «Amenez-le moi». Puis, lorsque l'émissaire arriva auprès de lui, [Joseph] dit: «Retourne auprès de ton maître et demande-lui: «Quelle était la raison qui poussa les femmes à se couper les mains? Mon Seigneur connaît bien leur ruse».\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mdcxlvii{Alors, [le roi leur] dit: «Qu'est-ce donc qui vous a poussées à essayer de séduire Joseph?» Elles dirent: «A Allah ne plaise! Nous ne connaissons rien de mauvais contre lui». Et la femme d'Al-'Azize dit: «Maintenant la vérité s'est manifestée. C'est moi qui ai voulu le séduire. Et c'est lui, vraiment, qui est du nombre des véridiques!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mdcxlviii{«Cela afin qu'il sache que je ne l'ai pas trahi en son absence, et qu'en vérité Allah ne guide pas la ruse des traîtres.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mdcxlix{Je ne m'innocente cependant pas, car l'âme est très incitatrice au mal, à moins que mon Seigneur, par miséricorde, [ne la préserve du péché]. Mon Seigneur est certes Pardonneur et très Miséricordieux».\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mdcl{Et le roi dit: «Amenez-le moi: je me le réserve pour moi-même». Et lorsqu'il lui eut parlé, il dit: «Tu es dès aujourd'hui près de nous, en une position d'autorité et de confiance».\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mdcli{Et [Joseph] dit: «Assigne-moi les dépôts du territoire: je suis bon gardien et connaisseur».\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mdclii{Ainsi avons-nous affermi (l'autorité de) Joseph dans ce territoire et il s'y installait là où il le voulait. Nous touchons de Notre miséricorde qui Nous voulons et ne faisons pas perdre aux hommes de bien le mérite [de leurs œuvres].\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mdcliii{Et la récompense de l'au-delà est meilleure pour ceux qui ont cru et ont pratiqué la piété.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mdcliv{Et les frères de Joseph vinrent et entrèrent auprès de lui. Il les reconnut, mais eux ne le reconnurent pas.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mdclv{Et quand il leur eut fourni leur provision, il dit: «Amenez-moi un frère que vous avez de votre père. Ne voyez-vous pas que je donne la pleine mesure et que je suis le meilleur des hôtes?\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mdclvi{Et si vous ne me l'amenez pas, alors il n'y aura plus de provision pour vous, chez moi; et vous ne m'approcherez plus».\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mdclvii{Ils dirent: «Nous essayerons de persuader son père. Certes, nous le ferons».\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mdclviii{Et il dit à ses serviteurs: «Remettez leurs marchandises dans leurs sacs: peut-être les reconnaîtront-ils quand ils seront de retour vers leur famille et peut-être qu'ils reviendront».\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mdclix{Et lorsqu'ils revinrent à leur père, ils dirent: «O notre père, il nous sera refusé [à l'avenir] de nous ravitailler [en grain]. Envoie donc avec nous notre frère, afin que nous obtenions des provisions. Nous le surveillerons bien».\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mdclx{Il dit: «Vais-je vous le confier comme, auparavant, je vous ai confié son frère? Mais Allah est le meilleur gardien, et Il est Le plus Miséricordieux des miséricordieux!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mdclxi{Et lorsqu'ils ouvrirent leurs bagages, ils trouvèrent qu'on leur avait rendu leurs marchandises. Ils dirent: «O notre père. Que désirons-nous [de plus]? Voici que nos marchandises nous ont été rendues. Et ainsi nous approvisionnerons notre famille, nous veillerons à la sécurité de notre frère et nous nous ajouterons la charge d'un chameau et c'est une charge facile».\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mdclxii{- Il dit: «Jamais je ne l'enverrai avec vous, jusqu'à ce que vous m'apportiez l'engagement formel au nom d'Allah que vous me le ramènerez à moins que vous ne soyez cernés». Lorsqu'ils lui eurent apporté l'engagement, il dit: «Allah est garant de ce que nous disons».\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mdclxiii{Et il dit: «O mes fils, n'entrez pas par une seule porte, mais entrez par portes séparées. Je ne peux cependant vous être d'aucune utilité contre les desseins d'Allah. La décision n'appartient qu'à Allah: en Lui je place ma confiance. Et que ceux qui placent leur confiance la placent en Lui».\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mdclxiv{Etant entrés comme leur père le leur avait commandé [cela] ne leur servit à rien contre (les décrets d') Allah. Ce n'était [au reste] qu'une précaution que Jacob avait jugé [de leur recommander]. Il avait pleine connaissance de ce que Nous lui avions enseigné. Mais la plupart des gens ne savent pas.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mdclxv{Et quand ils furent entrés auprès de Joseph, [celui-ci] retint son frère auprès de lui en disant: «Je suis ton frère. Ne te chagrine donc pas pour ce qu'ils faisaient».\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mdclxvi{Puis, quand il leur eut fourni leurs provisions, il mit la coupe dans le sac de son frère. Ensuite un crieur annonça: «Caravaniers! vous êtes des voleurs».\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mdclxvii{Ils se retournèrent en disant: «Qu'avez-vous perdu?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mdclxviii{Ils répondirent: «Nous cherchons la grande coupe du roi. La charge d'un chameau à qui l'apportera et j'en suis garant».\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mdclxix{«Par Allah, dirent-ils, vous savez certes que nous ne sommes pas venus pour semer la corruption sur le territoire et que nous ne sommes pas des voleurs».\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mdclxx{- Quelle sera donc la sanction si vous êtes des menteurs? (dirent-ils).\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mdclxxi{Ils dirent: «La sanction infligée à celui dont les bagages de qui la coupe sera retrouvée est: [qu'il soit livré] lui-même [à titre d'esclave à la victime du vol]. C'est ainsi que nous punissons les malfaiteurs».\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mdclxxii{[Joseph] commença par les sacs des autres avant celui de son frère; puis il la fit sortir du sac de son frère. Ainsi suggérâmes-Nous cet artifice à Joseph. Car il ne pouvait pas se saisir de son frère, selon la justice du roi, à moins qu'Allah ne l'eût voulu. Nous élevons en rang qui Nous voulons. Et au-dessus de tout homme détenant la science il y a un savant [plus docte que lui].\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mdclxxiii{Ils dirent: «S'il a commis un vol, un frère à lui auparavant a volé aussi.» Mais Joseph tint sa pensée secrète, et ne la leur dévoila pas. Il dit [en lui même]: «Votre position est bien pire encore! Et Allah connaît mieux ce que vous décrivez.»\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mdclxxiv{- Ils dirent. «O Al-'Azize, il a un père très vieux; saisis-toi donc de l'un de nous, à sa place. Nous voyons que tu es vraiment du nombre des gens bienfaisants».\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mdclxxv{- Il dit: «Qu'Allah nous garde de prendre un autre que celui chez qui nous avons trouvé notre bien! Nous serions alors vraiment injustes.»\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mdclxxvi{Puis, lorsqu'ils eurent perdu tout espoir [de ramener Benyamin] ils se concertèrent en secret. Leur aîné dit: «Ne savez-vous pas que votre père a pris de vous un engagement formel au nom d'Allah, et que déjà vous y avez manqué autrefois à propos de Joseph? Je ne quitterai point le territoire, jusqu'à ce que mon père me le permette ou qu'Allah juge en ma faveur, et Il est le meilleur des juges.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mdclxxvii{Retournez à votre père et dites: «O notre père, ton fils a volé. Et nous n'attestons que ce que nous savons. Et nous n'étions nullement au courant de l'inconnu.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mdclxxviii{Et interroge la ville où nous étions, ainsi que la caravane dans laquelle nous sommes arrivés. Nous disons réellement la vérité.»\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mdclxxix{Alors [Jacob] dit: Vos âmes plutôt vous ont inspiré [d'entreprendre] quelque chose!... Oh! belle patience. Il se peut qu'Allah me les ramènera tous les deux. Car c'est Lui l'Omniscient, le Sage».\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mdclxxx{Et il se détourna d'eux et dit: «Que mon chagrin est grand pour Joseph!» Et ses yeux blanchirent d'affliction. Et il était accablé.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mdclxxxi{- Ils dirent: «Par Allah! Tu ne cesseras pas d'évoquer Joseph, jusqu'à ce que tu t'épuises ou que tu sois parmi les morts».\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mdclxxxii{- Il dit: «Je ne me plains qu'à Allah de mon déchirement et de mon chagrin. Et, je sais de la part d'Allah, ce que vous ne savez pas.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mdclxxxiii{O mes fils! Partez et enquérez-vous de Joseph et de son frère. Et ne désespérez pas de la miséricorde d'Allah. Ce sont seulement les gens mécréants qui désespèrent de la miséricorde d'Allah».\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mdclxxxiv{Et lorsqu'ils s'introduisirent auprès de [Joseph,] ils dirent: «O al-'Azize, la famine nous a touchés, nous et notre famille; et nous venons avec une marchandise sans grande valeur. Donne-nous une pleine mesure, et fais-nous la charité. Certes, Allah récompense les charitables!»\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mdclxxxv{- Il dit: «Savez-vous ce que vous avez fait de Joseph et de son frère alors que vous étiez ignorants? [injustes]».\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mdclxxxvi{- Ils dirent: «Est-ce que tu es... Certes, tu es Joseph!» - Il dit: «Je suis Joseph, et voici mon frère. Certes, Allah nous a favorisés. Quiconque craint et patiente... Et très certainement, Allah ne fait pas perdre la récompense des bienfaisants».\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mdclxxxvii{- Ils dirent: «Par Allah! Vraiment Allah t'a préféré à nous et nous avons été fautifs».\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mdclxxxviii{- Il dit: «Pas de récrimination contre vous aujourd'hui! Qu'Allah vous pardonne. C'est Lui Le plus Miséricordieux des miséricordieux.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mdclxxxix{Emportez ma tunique que voici, et appliquez-la sur le visage de mon père: il recouvrera [aussitôt] la vue. Et amenez-moi toute votre famille».\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mdcxc{- Et dès que la caravane franchit la frontière [de Canâan], leur père dit: «Je décèle, certes, l'odeur de Joseph, même si vous dites que je radote».\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mdcxci{Ils Lui dirent: «Par Allah te voilà bien dans ton ancien égarement».\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mdcxcii{Puis quand arriva le porteur de bonne annonce, il l'appliqua [la tunique] sur le visage de Jacob. Celui-ci recouvra [aussitôt] la vue, et dit: «Ne vous ai-je pas dit que je sais, par Allah, ce que vous ne savez pas?»\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mdcxciii{- Ils dirent: «O notre père, implore pour nous la rémission de nos péchés. Nous étions vraiment fautifs».\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mdcxciv{- Il dit: «J'implorerai pour vous le pardon de mon Seigneur. Car c'est Lui le Pardonneur, le Très Miséricordieux».\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mdcxcv{Lorsqu'ils s'introduisirent auprès de Joseph, celui-ci accueillit ses père et mère, et leur dit: «Entrez en Egypte, en toute sécurité, si Allah le veut!»\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mdcxcvi{Et il éleva ses parents sur le trône, et tous tombèrent devant lui, prosternés. Et il dit: «O mon père, voilà l'interprétation de mon rêve de jadis. Allah l'a bel et bien réalisé... Et Il m'a certainement fait du bien quand Il m'a fait sortir de prison et qu'Il vous a fait venir de la campagne, [du désert], après que le Diable ait suscité la discorde entre mes frères et moi. Mon Seigneur est plein de douceur pour ce qu'Il veut. Et c'est Lui l'Omniscient, le Sage.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mdcxcvii{O mon Seigneur, Tu m'as donné du pouvoir et m'as enseigné l'interprétation des rêves. [C'est Toi Le] Créateur des cieux et de la terre, Tu es mon patron, ici-bas et dans l'au-delà. Fais-moi mourir en parfaite soumission et fais moi rejoindre les vertueux.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mdcxcviii{Ce sont là des récits inconnus que Nous te révélons. Et tu n'étais pas auprès d'eux quand ils se mirent d'accord pour comploter.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mdcxcix{Et la plupart des gens ne sont pas croyants malgré ton désir ardent.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mdcc{Et tu ne leur demandes aucun salaire pour cela. Ce n'est là qu'un rappel adressé à l'univers.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mdcci{Et dans les cieux et sur la terre, que de signes auprès desquels les gens passent, en s'en détournant!\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mdccii{Et la plupart d'entre eux ne croient en Allah, qu'en lui donnant des associés.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mdcciii{Est-ce qu'ils sont sûrs que le châtiment d'Allah ne viendra pas les couvrir ou que l'Heure ne leur viendra pas soudainement, sans qu'ils s'en rendent compte?\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mdcciv{Dis: «Voici ma voie, j'appelle les gens à [la religion] d'Allah, moi et ceux qui me suivent, nous basant sur une preuve évidente. Gloire à Allah! Et je ne suis point du nombre des associateurs.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mdccv{Nous n'avons envoyé avant toi que des hommes originaires des cités, à qui Nous avons fait des révélations. [Ces gens là] n'ont-ils pas parcouru la terre et considéré quelle fut la fin de ceux qui ont vécu avant eux? La demeure de l'au-delà est assurément meilleure pour ceux qui craignent [Allah]. Ne raisonnerez-vous donc pas?\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mdccvi{Quand les messagers faillirent perdre espoir (et que leurs adeptes) eurent pensé qu'ils étaient dupés voilà que vint à eux Notre secours. Et furent sauvés ceux que Nous voulûmes. Mais Notre rigueur ne saurait être détournée des gens criminels.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mdccvii{Dans leurs récits il y a certes une leçon pour les gens doués d'intelligence. Ce n'est point là un récit fabriqué. C'est au contraire la confirmation de ce qui existait déjà avant lui, un exposé détaillé de toute chose, un guide et une miséricorde pour des gens qui croient.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mdccviii{\basmalahfr Alif, Lâm, Mîm, Râ. Voici les versets du Livre; et ce qui t'a été révélé par ton Seigneur est la vérité; mais la plupart des gens ne croient pas.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mdccix{Allah est Celui qui a élevé [bien haut] les cieux sans piliers visibles. Il S'est établi [istawâ] sur le Trône et a soumis le soleil et la lune, chacun poursuivant sa course vers un terme fixé. Il règle l'Ordre [de tout] et expose en détail les signes afin que vous ayez la certitude de la rencontre de votre Seigneur.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mdccx{Et c'est Lui qui a étendu la terre et y a placé montagnes et fleuves. Et de chaque espèce de fruits Il y établit deux éléments de couple. Il fait que la nuit couvre le jour. Voilà bien là des preuves pour des gens qui réfléchissent.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mdccxi{Et sur la terre il y a des parcelles voisines les unes des autres, des jardins [plantés] de vignes, et des céréales et des palmiers, en touffes ou espacés, arrosés de la même eau, cependant Nous rendons supérieurs les uns aux autres quant au goût. Voilà bien là des preuves pour des gens qui raisonnent.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mdccxii{Et si tu dois t'étonner, rien de plus étonnant que leurs dires: «Quand nous seront poussière, reviendrons-nous vraiment à une nouvelle création?» Ceux-là sont ceux qui ne croient pas en leur Seigneur. Et ce sont eux qui auront des jougs à leur cou. Et ce sont eux les gens du Feu, où ils demeureront éternellement.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mdccxiii{Et ils te demandent de hâter [la venue] du malheur plutôt que celle du bonheur. Certes, il s'est produit avant eux des châtiments exemplaires. Ton Seigneur est Détenteur du pardon pour les gens, malgré leurs méfaits. Et ton Seigneur est assurément dur en punition.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mdccxiv{Et ceux qui ont mécru disent: «Pourquoi n'a-t-on pas fait descendre sur celui-ci (Muhammad) un miracle venant de son Seigneur?» Tu n'es qu'un avertisseur, et à chaque peuple un guide.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mdccxv{Allah sait ce que porte chaque femelle, et de combien la période de gestation dans la matrice est écourtée ou prolongée. Et toute chose a auprès de Lui sa mesure.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mdccxvi{Le Connaisseur de ce qui est caché et de ce qui est apparent, Le Grand, Le Sublime.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mdccxvii{Sont égaux pour lui, celui parmi vous qui tient secrète sa parole, et celui qui la divulgue, celui qui se cache la nuit comme celui qui se montre au grand jour.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mdccxviii{Il [l'homme] a par devant lui et derrière lui des Anges qui se relaient et qui veillent sur lui par ordre d'Allah. En vérité, Allah ne modifie point l'état d'un peuple, tant que les [individus qui le composent] ne modifient pas ce qui est en eux-mêmes. Et lorsqu'Allah veut [infliger] un mal à un peuple, nul ne peut le repousser: ils n'ont en dehors de Lui aucun protecteur.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mdccxix{C'est lui qui vous fait voir l'éclair [qui vous inspire] crainte et espoir; et Il crée les nuages lourds.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mdccxx{Le tonnerre Le glorifie par Sa louange, et aussi les Anges, sous l'effet de Sa crainte. Et Il lance les foudres dont Il atteint qui Il veut. Or ils disputent au sujet d'Allah alors qu'Il est redoutable en Sa force.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mdccxxi{A Lui l'appel de la Vérité! Ceux qu'ils invoquent en dehors de Lui ne leur répondent d'aucune façon; semblables à celui qui étend ses deux mains vers l'eau pour la porter à sa bouche, mais qui ne parvient jamais à l'atteindre. L'invocation des mécréants n'est que vanité.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mdccxxii{Et c'est à Allah que se prosternent, bon gré mal gré, tous ceux qui sont dans les cieux et sur la terre, ainsi que leurs ombres, au début et à la fin de la journée.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mdccxxiii{Dis: «Qui est le Seigneur des cieux et de la terre?» Dis: «Allah». Dis: «Et prendrez-vous en dehors de Lui, des maîtres qui ne détiennent pour eux-mêmes ni bien ni mal?» Dis: «Sont-ils égaux, l'aveugle et celui qui voit? Ou sont-elles égales, les ténèbres et la lumière? Ou donnent-ils à Allah des associés qui créent comme Sa création au point que les deux créations se soient confondues à eux? Dis: «Allah est le Créateur de toute chose, et c'est Lui l'Unique, le Dominateur suprême».\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mdccxxiv{Il a fait descendre une eau du ciel à laquelle des vallées servent de lit, selon leur grandeur. Le flot débordé a charrié une écume flottante; et semblable à celle-ci est [l'] écume provenant de ce qu'on porte à fusion, dans le feu pour [fabriquer] des bijoux et des ustensiles. Ainsi Allah représente en parabole la Vérité et le Faux: l'écume [du torrent et du métal fondu] s'en va, au rebut, tandis que [l'eau et les objets] utiles aux Hommes demeurent sur la terre. Ainsi Allah propose des paraboles.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mdccxxv{La meilleure [fin] est pour ceux qui répondent à [l'appel] de leur Seigneur. Et quant à ceux qui ne Lui répondent pas, s'ils avaient tout ce qui est sur la terre, et autant encore, ils l'offriraient en rançon. Ceux-là auront le détestable rendement de compte et l'Enfer sera leur refuge. Quel détestable lit de repos!\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mdccxxvi{Celui qui sait que ce qui t'est révélé de la part de ton Seigneur est la vérité, est-il semblable à l'aveugle? Seuls les gens doués d'intelligence réfléchissent bien,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mdccxxvii{ceux qui remplissent leur engagement envers Allah et ne violent pas le pacte,\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mdccxxviii{qui unissent ce qu'Allah a commandé d'unir, redoutent leur Seigneur et craignent une malheureuse reddition de compte,\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mdccxxix{et qui endurent dans la recherche de l'agrément d'Allah, accomplissent la Salât et dépensent (dans le bien), en secret et en public, de ce que Nous leur avons attribué, et repoussent le mal par le bien. A ceux-là, la bonne demeure finale,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mdccxxx{les jardins d'Eden, où ils entreront, ainsi que tous ceux de leurs ascendants, conjoints et descendants, qui ont été de bons croyants. De chaque porte, les Anges entreront auprès d'eux:\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mdccxxxi{- «Paix sur vous, pour ce que vous avez enduré!» - Comme est bonne votre demeure finale!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mdccxxxii{[Mais] ceux qui violent leur pacte avec Allah après l'avoir engagé, et rompent ce qu'Allah a commandé d'unir et commettent le désordre sur terre, auront la malédiction et la mauvaise demeure.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mdccxxxiii{Allah étend largement Ses dons ou [les] restreint à qui Il veut. Ils se réjouissent de la vie sur terre, mais la vie d'ici-bas ne paraîtra que comme une jouissance éphémère en comparaison de l'au-delà.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mdccxxxiv{Ceux qui ont mécru disent: «Pourquoi n'a-t-on pas descendu sur lui (Muhammad) un miracle venant de son Seigneur?» Dis: «En vérité, Allah égare qui Il veut; et Il guide vers Lui celui qui se repent,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mdccxxxv{ceux qui ont cru, et dont les cœurs se tranquillisent à l'évocation d'Allah». Certes, c'est par l'évocation d'Allah que les cœurs se tranquillisent.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mdccxxxvi{Ceux qui croient et font de bonnes œuvres, auront le plus grand bien et aussi le plus bon retour.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mdccxxxvii{Ainsi Nous t'envoyons dans une communauté - que d'autres communautés ont précédée - pour que tu leur récites ce que Nous te révélons [le Coran], cependant qu'ils ne croient pas au Tout Miséricordieux. Dis: «C'est Lui mon Seigneur. Pas d'autre divinité à part Lui. En Lui je place ma confiance. Et à Lui je me repens».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mdccxxxviii{S'il y avait un Coran à mettre les montagnes en marche, à fendre la terre ou à faire parler les morts (ce serait celui-ci). C'est plutôt à Allah le commandement tout entier. Les croyants ne savent-ils pas que, si Allah voulait, Il aurait dirigé tous les hommes vers le droit chemin. Cependant, ceux qui ne croient pas ne manqueront pas, pour prix de ce qu'ils font, d'être frappés par un cataclysme, ou [qu'un cataclysme] s'abattra près de leurs demeures jusqu'à ce que vienne la promesse d'Allah. Car Allah, ne manque pas à Sa promesse.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mdccxxxix{On s'est certes moqué des messagers avant toi. Alors, J'ai donné un répit aux mécréants. Ensuite, Je les ai saisis. Et quel fut Mon châtiment!\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mdccxl{Est-ce que Celui qui observe ce que chaque âme acquiert [est semblable aux associés?...] Et pourtant ils donnent des associés à Allah. Dis [leur:] «Nommez-les. Ou essayez-vous de Lui apprendre ce qu'Il ne connaît pas sur la terre? Ou avez-vous été simplement séduits par de faux noms?» En fait, on a embelli aux mécréants leur stratagème et on les a empêchés de prendre le droit chemin. Et quiconque Allah laisse égarer, n'a plus personne pour le guider.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mdccxli{Un châtiment les atteindra dans la vie présente. Le châtiment de l'au-delà sera cependant plus écrasant et ils n'auront nul protecteur contre Allah.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mdccxlii{Tel est le paradis qui a été promis aux pieux: sous lequel coulent les ruisseaux; ses fruits sont perpétuels, ainsi que son ombrage. Voilà la fin de ceux qui pratiquent la piété, tandis que la fin des mécréants sera le Feu.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mdccxliii{Et ceux à qui Nous avons déjà donné le Livre se réjouissent de ce qu'on a fait descendre vers toi. Tandis que certaines factions en rejettent une partie. Dis: «Il m'a seulement été commandé d'adorer Allah et de ne rien Lui associer. C'est à Lui que j'appelle [les gens], Et c'est vers Lui que sera mon retour».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mdccxliv{Ainsi l'avons-Nous fait descendre (le Coran) [sous forme] de loi en arabe. Et si tu suis leurs passions après ce que tu as reçu comme savoir, il n'y aura pour toi, contre Allah, ni allié ni protecteur.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mdccxlv{Et Nous avons certes envoyé avant toi des messagers, et leur avons donné des épouses et des descendants. Et il n'appartient pas à un Messager d'apporter un miracle, si ce n'est qu'avec la permission d'Allah. Chaque échéance a son terme prescrit.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mdccxlvi{Allah efface ou confirme ce qu'Il veut et l'Ecriture primordiale est auprès de Lui.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mdccxlvii{Que Nous te fassions voir une partie de ce dont Nous les menaçons, ou que Nous te fassions mourir (avant cela), ton devoir est seulement la communication du message, et le règlement de compte sera à Nous.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mdccxlviii{Ne voient-ils pas que Nous frappons la terre et que Nous la réduisons de tous côtés? C'est Allah qui juge et personne ne peut s'opposer à Son jugement, et Il est prompt à régler les comptes.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mdccxlix{Certes ceux d'avant eux ont manigancé (contre leur Messager); le stratagème tout entier appartient à Allah. Il sait ce que chaque âme acquiert. Et les mécréants sauront bientôt à qui appartient la bonne demeure finale.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mdccl{Et ceux qui ne croient pas disent: «Tu n'es pas un Messager». Dis: «Allah suffit, comme témoin entre vous et moi, et ceux qui ont la connaissance du Livre (sont aussi témoins)».\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mdccli{\basmalahfr Alif, Lâm, Râ. (Voici) un livre que nous avons fait descendre sur toi, afin que - par la permission de leur Seigneur - tu fasses sortir les gens des ténèbres vers la lumière, sur la voie du Tout Puissant, du Digne de louange.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mdcclii{Allah, à qui appartient tout ce qui est dans les cieux et sur la terre. Et malheur aux mécréants, pour un dur châtiment [qu'ils subiront].\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mdccliii{Ceux qui préfèrent la vie d'ici-bas à l'au-delà, obstruent [aux gens] le chemin d'Allah et cherchent à le rendre tortueux, ceux-là sont loin dans l'égarement.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mdccliv{Et Nous n'avons envoyé de Messager qu'avec la langue de son peuple, afin de les éclairer. Allah égare qui Il veut et guide qui Il veut. Et, c'est Lui le Tout Puissant, le Sage.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mdcclv{Nous avons certes, envoyé Moïse avec Nos miracles [en lui disant]: «Fais sortir ton peuple des ténèbres vers la lumière, et rappelle-leur les jours d'Allah». [Ses bienfaits]. Dans tout cela il y a des signes pour tout homme plein d'endurance et de reconnaissance.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mdcclvi{(Rappelle-toi) quand Moïse dit à son peuple: «Rappelez-vous le bienfait d'Allah sur vous quand Il vous sauva des gens de Pharaon qui vous infligeaient le pire châtiment. Ils massacraient vos fils et laissaient en vie vos filles. Il y avait là une dure épreuve de la part de votre Seigneur»,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mdcclvii{Et lorsque votre Seigneur proclama: «Si vous êtes reconnaissants, très certainement J'augmenterai [Mes bienfaits] pour vous. Mais si vous êtes ingrats, Mon châtiment sera terrible».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mdcclviii{Et Moïse dit: «Si vous êtes ingrats, vous ainsi que tous ceux qui sont sur terre, [sachez] qu'Allah Se suffit à Lui-même et qu'Il est digne de louange.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mdcclix{Ne vous est-il pas parvenu le récit de ceux d'avant vous, du peuple de Noé, des `Aad, des Thamud et de ceux qui vécurent après eux, et que seul Allah connaît? Leurs messagers vinrent à eux avec des preuves, mais ils dirent, ramenant leurs mains à leurs bouches: «Nous ne croyons pas [au message] avec lequel vous avez été envoyés et nous sommes, au sujet de ce à quoi vous nous appelez, dans un doute vraiment troublant».\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mdcclx{Leurs messagers dirent: «Y a-t-il un doute au sujet d'Allah, Créateur des cieux et de la terre, qui vous appelle pour vous pardonner une partie de vos péchés et vous donner un délai jusqu'à un terme fixé?» [Les mécréants] répondirent: «Vous n'êtes que des hommes comme nous. Vous voulez nous empêcher de ce que nos ancêtres adoraient. Apportez-nous donc une preuve évidente».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mdcclxi{Leurs messagers leur dirent: «Certes, nous ne sommes que des humains comme vous. Mais Allah favorise qui Il veut parmi Ses serviteurs. Il ne nous appartient de vous apporter quelque preuve, que par la permission d'Allah. Et c'est en Allah que les croyants doivent placer leur confiance.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mdcclxii{Et qu'aurions-nous à ne pas placer notre confiance en Allah, alors qu'Il nous a guidés sur les sentiers [que nous devions suivre]? Nous endurerons sûrement la persécution que vous nous infligez. Et ceux qui ont confiance en Allah s'en remettent entièrement à Lui.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mdcclxiii{Et ceux qui ont mécru dirent à leurs messagers: «Nous vous expulserons certainement de notre territoire, à moins que vous ne réintégriez notre religion!» Alors, leur Seigneur leur révéla: «Assurément Nous anéantirons les injustes,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mdcclxiv{et vous établirons dans le pays après eux. Cela est pour celui qui craint Ma présence et craint Ma menace».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mdcclxv{Et ils demandèrent [à Allah] la victoire. Et tout tyran insolent fut déçu.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mdcclxvi{L'Enfer est sa destination et il sera abreuvé d'une eau purulente\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mdcclxvii{qu'il tentera d'avaler à petites gorgées. Mais c'est à peine s'il peut l'avaler. La mort lui viendra de toutes parts, mais il ne mourra pas; et il aura un châtiment terrible.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mdcclxviii{Les œuvres de ceux qui ont mécru en leur Seigneur sont comparables à de la cendre violemment frappée par le vent, dans un jour de tempête. Ils ne tireront aucun profit de ce qu'ils ont acquis. C'est cela l'égarement profond.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mdcclxix{Ne vois-tu pas qu'Allah a créé les cieux et la terre pour une juste raison? S'Il voulait, Il vous ferait disparaître et ferait venir de nouvelles créatures,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mdcclxx{et cela n'est nullement difficile pour Allah.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mdcclxxi{Et tous comparaîtront devant Allah. Puis, les faibles diront à ceux qui s'enflaient d'orgueil: «Nous étions bien vos suiveurs. Pouvez-vous nous être de quelque utilité contre le châtiment d'Allah?» - Alors, les autres diront: «Si Allah nous avait guidés nous vous aurions certainement guidés. Il est indifférent pour nous de nous plaindre ou d'endurer; nous n'avons pas d'échappatoire».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mdcclxxii{Et quand tout sera accompli, le Diable dira: «Certes, Allah vous avait fait une promesse de vérité; tandis que moi, je vous ai fait une promesse que je n'ai pas tenue. Je n'avais aucune autorité sur vous si ce n'est que je vous ai appelés, et que vous m'avez répondu. Ne me faites donc pas de reproches; mais faites-en à vous-mêmes. Je ne vous suis d'aucun secours et vous ne m'êtes d'aucun secours. Je vous renie de m'avoir jadis associé [à Allah]». Certes, un châtiment douloureux attend les injustes [les associateurs].\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mdcclxxiii{Et on fera entrer ceux qui croient et font de bonnes œuvres, dans les jardins sous lesquels coulent les ruisseaux, pour y demeurer éternellement, par permission de leur Seigneur. Et là, leur salutation sera: «Salâm» (Paix).\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mdcclxxiv{N'as-tu pas vu comment Allah propose en parabole une bonne parole pareille à un bel arbre dont la racine est ferme et la ramure s'élançant dans le ciel?\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mdcclxxv{Il donne à tout instant ses fruits, par la grâce de son Seigneur. Allah propose des paraboles à l'intention des gens afin qu'ils s'exhortent.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mdcclxxvi{Et une mauvaise parole est pareille à un mauvais arbre, déraciné de la surface de la terre et qui n'a point de stabilité.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mdcclxxvii{Allah affermit les croyants par une parole ferme, dans la vie présente et dans l'au-delà. Tandis qu'Il égare les injustes. Et Allah fait ce qu'Il veut.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mdcclxxviii{Ne vois-tu point ceux qui troquent les bienfaits d'Allah contre l'ingratitude et établissent leur peuple dans la demeure de la perdition\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mdcclxxix{...l'Enfer, où ils brûleront? Et quel mauvais gîte!\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mdcclxxx{Et ils ont donné à Allah des égaux afin d'égarer (les gens) de Son sentier. - Dis: «Jouissez [de cette vie] car votre destination sera le feu».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxi{Dis à Mes serviteurs qui ont cru, qu'ils accomplissent la Salât et qu'ils dépensent [dans le bien] en secret et en public de ce que Nous leur avons attribué, avant que vienne le jour où il n'y a ni rachat ni amitié.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxii{Allah, c'est Lui qui a crée les cieux et la terre et qui, du ciel, a fait descendre l'eau; grâce à laquelle Il a produit des fruits pour vous nourrir. Il a soumis à votre service les vaisseaux qui, par Son ordre, voguent sur la mer. Et Il a soumis à votre service les rivières.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxiii{Et pour vous, Il a assujetti le soleil et la lune à une perpétuelle révolution. Et Il vous a assujetti la nuit et le jour.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxiv{Il vous a accordé de tout ce que vous Lui avez demandé. Et si vous comptiez les bienfaits d'Allah, vous ne sauriez les dénombrer. L'homme est vraiment très injuste, très ingrat.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxv{Et (rappelle-toi) quand Abraham dit: «O mon Seigneur, fais de cette cité un lieu sûr, et préserve-moi ainsi que mes enfants de l'adoration des idoles.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxvi{O mon Seigneur, elles (les idoles) ont égaré beaucoup de gens. Quiconque me suit est des miens. Quant à celui qui me désobéit... c'est Toi, le Pardonneur, le Très Miséricordieux!\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxvii{O notre Seigneur, j'ai établi une partie de ma descendance dans une vallée sans agriculture, près de Ta Maison sacrée [la Ka'ba], - ô notre Seigneur - afin qu'ils accomplissent la Salât. Fais donc que se penchent vers eux les cœurs d'une partie des gens. Et nourris-les de fruits. Peut-être seront-ils reconnaissants?\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxviii{O notre Seigneur, Tu sais, vraiment, ce que nous cachons et ce que nous divulguons: - et rien n'échappe à Allah, ni sur terre, ni au ciel! -\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mdcclxxxix{Louange à Allah, qui en dépit de ma vieillesse, m'a donné Ismaël et Isaac. Certes, mon Seigneur entend bien les prières.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mdccxc{O mon Seigneur! Fais que j'accomplisse assidûment la Salât ainsi qu'une partie de ma descendance; exauce ma prière, ô notre Seigneur!\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mdccxci{O notre Seigneur! pardonne-moi, ainsi qu'à mes père et mère et aux croyants, le jour de la reddition des comptes».\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mdccxcii{Et ne pense point qu'Allah soit inattentif à ce que font les injustes. Ils leur accordera un délai jusqu'au jour ou leurs regards se figeront.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mdccxciii{Ils courront [suppliant], levant la tête, les yeux hagards et les cœurs vides.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mdccxciv{Et avertis les gens du jour où le châtiment les atteindra et ceux qui auront été injustes diront: «O notre Seigneur accorde-nous un court délai, nous répondrons à Ton appel et suivrons les messagers». - N'avez-vous pas juré auparavant que vous ne deviez jamais disparaître?\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mdccxcv{Et vous avez habité, les demeures de ceux qui s'étaient fait du tort à eux-mêmes. Il vous est apparu en toute évidence comment Nous les avions traité et Nous vous avons cité les exemples.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mdccxcvi{Ils ont certes comploté. Or leur complot est (inscrit) auprès d'Allah même si leur complot était assez puissant pour faire disparaître les montagnes...\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mdccxcvii{Ne pense point qu'Allah manque à Sa promesse envers Ses messagers. Certes Allah est Tout Puissant et Détenteur du pouvoir de punir,\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mdccxcviii{au jour où la terre sera remplacée par une autre, de même que les cieux et où (les hommes) comparaîtront devant Allah, l'Unique, le Dominateur Suprême.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mdccxcix{Et ce jour-là, tu verras les coupables, enchaînés les uns aux autres,\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mdccc{leurs tuniques seront de goudron et le feu couvrira leurs visages.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mdccci{(Tout cela) afin qu'Allah rétribue chaque âme de ce qu'elle aura acquis. Certes Allah est prompt dans Ses comptes.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mdcccii{Ceci est un message (le Coran) pour les gens afin qu'ils soient avertis, qu'ils sachent qu'Il n'est qu'un Dieu unique, et pour que les doués d'intelligence s'exhortent.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mdccciii{\basmalahfr Alif, Lâm, Râ. Voici les versets du Livre et d'une Lecture explicite.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mdccciv{[Le Jour du Jugement Dernier] les mécréants voudraient avoir été Musulmans [soumis].\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mdcccv{Laisse-les manger, jouir (un temps), et être distraits par l'espoir; car bientôt ils sauront!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mdcccvi{Or Nous ne détruisons aucune cité sans qu'elle n'ait eu [un terme fixé en] une Ecriture connue.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mdcccvii{Nulle communauté ne devance son terme, ni ne le retarde.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mdcccviii{Et ils (les mecquois) disent: «O toi sur qui on a fait descendre le Coran, tu es certainement fou!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mdcccix{Pourquoi ne nous es-tu pas venu avec les Anges, si tu es du nombre des véridiques?»\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mdcccx{Nous ne faisons descendre les Anges qu'avec la vérité; et alors, il ne leur sera pas accordé de répit [à ces impies].\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mdcccxi{En vérité c'est Nous qui avons fait descendre le Coran, et c'est Nous qui en sommes gardien.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mdcccxii{Et nous avons certes envoyé, avant toi, [des Messagers] parmi les peuples des Anciens.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mdcccxiii{Et pas un Messager ne leur est venu sans qu'ils s'en soient moqués.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mdcccxiv{C'est ainsi que Nous faisons pénétrer (la mécréance) dans les cœurs des coupables.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mdcccxv{Ils ne croiront pas en lui [le Messager ou le Coran] bien que se soit accompli le sort traditionnel des anciens.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mdcccxvi{Et même si Nous ouvrions pour eux une porte du ciel, et qu'ils pussent y monter,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mdcccxvii{ils diraient: «Vraiment nos yeux sont voilés. Mais plutôt, nous sommes des gens ensorcelés».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mdcccxviii{Certes Nous avons placé dans le ciel des constellations et Nous l'avons embelli pour ceux qui regardent.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mdcccxix{Et Nous l'avons protégé contre tout diable banni.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mdcccxx{A moins que l'un d'eux parvienne subrepticement à écouter, une flamme brillante alors le poursuit.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mdcccxxi{Et quant à la terre, Nous l'avons étalée et y avons placé des montagnes (immobiles) et y avons fait pousser toute chose harmonieusement proportionnée.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mdcccxxii{Et Nous y avons placé des vivres pour vous, et (placé aussi pour vous) des êtres que vous ne nourrissez pas.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mdcccxxiii{Et il n'est rien dont Nous n'ayons les réserves et Nous ne le faisons descendre que dans une mesure déterminée.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mdcccxxiv{Et Nous envoyons les vents fécondants; et Nous faisons alors descendre du ciel une eau dont Nous vous abreuvons et que vous n'êtes pas en mesure de conserver.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mdcccxxv{Et c'est bien Nous qui donnons la vie et donnons la mort, et c'est Nous qui sommes l'héritier [de tout].\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mdcccxxvi{Et Nous connaissons certes ceux qui parmi vous ont avancé et Nous connaissons ceux qui tardent encore.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mdcccxxvii{Certes, c'est ton Seigneur qui les rassemblera. Car c'est Lui le Sage, l'Omniscient.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mdcccxxviii{Nous créâmes l'homme d'une argile crissante, extraite d'une boue malléable.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mdcccxxix{Et quant au djinn, Nous l'avions auparavant créé d'un feu d'une chaleur ardente.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mdcccxxx{Et lorsque ton Seigneur dit aux Anges: «Je vais créer un homme d'argile crissante, extraite d'une boue malléable,\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxi{et dès que Je l'aurai harmonieusement formé et lui aurai insufflé Mon souffle de vie, jetez-vous alors, prosternés devant lui».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxii{Alors, les Anges se prosternèrent tous ensemble,\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxiii{excepté Iblis qui refusa d'être avec les prosternés.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxiv{Alors [Allah] dit: «O Iblis, pourquoi n'es-tu pas au nombre des prosternés?»\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxv{Il dit: «Je ne puis me prosterner devant un homme que Tu as créé d'argile crissante, extraite d'une boue malléable».\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxvi{- Et [Allah] dit: «Sors de là [du Paradis], car te voilà banni!\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxvii{Et malédiction sur toi, jusqu'au Jour de la rétribution!»\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxviii{- Il dit: «O mon Seigneur, donne-moi donc un délai jusqu'au jour où ils (les gens) seront ressuscités».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mdcccxxxix{[Allah] dit: «tu es de ceux à qui ce délai est accordé,\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mdcccxl{jusqu'au jour de l'instant connu» [d'Allah].\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mdcccxli{- Il dit: «O mon Seigneur, parce que Tu m'as induit en erreur, eh bien je leur enjoliverai la vie sur terre et les égarerai tous,\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mdcccxlii{à l'exception, parmi eux, de Tes serviteurs élus.»\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mdcccxliii{- «[Allah] dit: voici une voie droite [qui mène] vers Moi.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mdcccxliv{Sur Mes serviteurs tu n'auras aucune autorité, excepté sur celui qui te suivra parmi les dévoyés.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mdcccxlv{Et l'Enfer sera sûrement leur lieu de rendez-vous à tous.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mdcccxlvi{Il a sept portes; et chaque porte en a sa part déterminée».\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mdcccxlvii{Certes, les pieux seront dans des jardins avec des sources.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mdcccxlviii{«Entrez-y en paix et en sécurité».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mdcccxlix{Et Nous aurons arraché toute rancune de leurs poitrines: et ils se sentiront frères, faisant face les uns aux autres sur des lits.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mdcccl{Nulle fatigue ne les y touchera. Et on ne les en fera pas sortir.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mdcccli{Informe Mes serviteurs que c'est Moi le Pardonneur, le Très Miséricordieux.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mdccclii{et que Mon châtiment est certes le châtiment douloureux.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mdcccliii{Et informe-les au sujet des hôtes d'Abraham\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mdcccliv{Quand ils entrèrent chez lui et dirent: «Salâm» - Il dit: «Nous avons peur de vous».\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mdccclv{Ils dirent: «N'aie pas peur! Nous t'annonçons une bonne nouvelle, [la naissance] d'un garçon plein de savoir».\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mdccclvi{Il dit: «M'annoncez-vous [cette nouvelle] alors que la vieillesse m'a touché? Que m'annoncez-vous donc?»\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mdccclvii{- Ils dirent: «Nous t'annonçons la vérité. Ne sois donc pas de ceux qui désespèrent».\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mdccclviii{- Il dit: «Et qui désespère de la miséricorde de son Seigneur, sinon les égarés?»\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mdccclix{Et il [leur] dit: «Que voulez-vous, ô envoyés d'Allah?»\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mdccclx{- Ils dirent: «En vérité, nous sommes envoyés à des gens criminels,\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mdccclxi{à l'exception de la famille de Lot que nous sauverons tous\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mdccclxii{sauf sa femme.«Nous (Allah) avions déterminé qu'elle sera du nombre des exterminés.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mdccclxiii{Puis lorsque les envoyés vinrent auprès de la famille de Lot\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mdccclxiv{celui-ci dit: «Vous êtes [pour moi] des gens inconnus».\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mdccclxv{- Ils dirent: «Nous sommes plutôt venus à toi en apportant (le châtiment) à propos duquel ils doutaient.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mdccclxvi{Et nous venons à toi avec la vérité. Et nous sommes véridiques.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mdccclxvii{Pars donc avec ta famille en parie de nuit et suis leurs arrières; et que nul d'entre vous ne se retourne. Et allez là où on vous le commande».\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mdccclxviii{Et Nous lui annonçâmes cet ordre: que ces gens-là, au matin, seront anéantis jusqu'au dernier.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mdccclxix{Et les habitants de la ville (Sodome) vinrent [à lui] dans la joie.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mdccclxx{- Il dit: «Ceux-ci sont mes hôtes, ne me déshonorez donc pas.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mdccclxxi{Et craignez Allah. Et ne me couvrez pas d'ignominie.»\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mdccclxxii{Ils dirent: «Ne t'avions-nous pas interdit de [recevoir] du monde?»\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mdccclxxiii{Il dit: «Voici mes filles, si vous voulez faire [quelque chose]!»\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mdccclxxiv{Par ta vie! ils se confondaient dans leur délire.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mdccclxxv{Alors, au lever du soleil le Cri (la catastrophe) les saisit.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mdccclxxvi{Et Nous renversâmes [la ville] de fond en comble et fîmes pleuvoir sur eux des pierres d'argile dure.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mdccclxxvii{Voilà vraiment des preuves, pour ceux qui savent observer!\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mdccclxxviii{Elle [cette ville] se trouvait sur un chemin connu de tous.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mdccclxxix{Voilà vraiment une exhortation pour les croyants!\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mdccclxxx{Et les habitants d'al-Aïka étaient [aussi] des injustes.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxi{Nous Nous sommes donc vengés d'eux. Et ces deux [cités], vraiment, sont sur une route bien évidente [que vous connaissez].\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxii{Certes, les gens d'al-Hijr ont traité de menteurs les messagers.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxiii{Nous leur avons montré Nos miracles, mais ils s'en étaient détournés.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxiv{Et ils taillaient des maisons dans les montagnes, vivant en sécurité.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxv{Puis, au matin, le Cri les saisit.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxvi{Ce qu'ils avaient acquis ne leur a donc point profité.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxvii{Et Nous n'avons créé les cieux et la terre, et ce qui est entre eux, que pour une juste raison. Et l'Heure [sans aucun doute] arrivera! Pardonne-[leur] donc d'un beau pardon.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxviii{Ton Seigneur, c'est Lui vraiment le grand Créateur, l'Omniscient.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mdccclxxxix{Nous t'avons certes donné «les sept versets que l'on répète», ainsi que le Coran sublime.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mdcccxc{Ne regarde surtout pas avec envie les choses dont Nous avons donné jouissance temporaire à certains couples d'entre eux, ne t'afflige pas à leur sujet et abaisse ton aile pour les croyants.\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mdcccxci{Et dis: «Je suis l'avertisseur évident» (d'un châtiment),\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mdcccxcii{De même que Nous avons fait descendre [le châtiment] sur ceux qui ont juré (entre eux),\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mdcccxciii{ceux qui ont fait du Coran des fractions diverses, (pour créer des doutes).\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mdcccxciv{Par ton Seigneur! Nous les interrogerons tous\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mdcccxcv{sur ce qu'ils œuvraient.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mdcccxcvi{Expose donc clairement ce qu'on t'a commandé et détourne-toi des associateurs.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mdcccxcvii{Nous t'avons effectivement défendu vis-à-vis des railleurs.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mdcccxcviii{Ceux qui associent à Allah une autre divinité. Mais ils sauront bientôt.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mdcccxcix{Et Nous savons certes que ta poitrine se serre, à cause de ce qu'ils disent.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mcm{Glorifie donc Ton Seigneur par Sa louange et sois de ceux qui se prosternent;\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mcmi{et adore ton Seigneur jusqu'à ce que te vienne la certitude (la mort).\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mcmii{\basmalahfr L'ordre d'Allah arrive. Ne le hâtez donc pas. Gloire à Lui! Il est au-dessus de ce qu'on Lui associe.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mcmiii{Il fait descendre, par Son ordre, les Anges, avec la révélation sur qui Il veut parmi Ses serviteurs: «Avertissez qu'il n'est d'autre divinité que Moi. Craignez-Moi donc».\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mcmiv{Il a créé les cieux et la terre avec juste raison. Il transcende ce qu'on [Lui] associe.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mcmv{Il a créé l'homme d'une goutte de sperme; et voilà que l'homme devient un disputeur déclaré.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mcmvi{Et les bestiaux, Il les a créés pour vous; vous en retirez des [vêtements] chauds ainsi que d'autres profits. Et vous en mangez aussi.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mcmvii{Ils vous paraissent beaux quand vous les ramenez, le soir, et aussi le matin quand vous les lâchez pour le pâturage.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mcmviii{Et ils portent vos fardeaux vers un pays que vous n'atteindriez qu'avec peine. Vraiment, votre Seigneur est Compatissant et Miséricordieux.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mcmix{Et les chevaux, les mulets et les ânes, pour que vous les montiez, et pour l'apparat. Et Il crée ce que vous ne savez pas.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mcmx{Il appartient à Allah [par Sa grâce, de montrer] le droit chemin car il en est qui s'en détachent. Or, s'Il voulait, Il vous guiderait tous.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mcmxi{C'est Lui qui, du ciel, a fait descendre de l'eau qui vous sert de boisson et grâce à laquelle poussent des plantes dont vous nourrissez vos troupeaux.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mcmxii{D'elle, Il fait pousser pour vous, les cultures, les oliviers, les palmiers, les vignes et aussi toutes sortes de fruits. Voilà bien là une preuve pour des gens qui réfléchissent.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mcmxiii{Pour vous, Il a assujetti la nuit et le jour; le soleil et la lune. Et à Son ordre sont assujetties les étoiles. Voilà bien là des preuves pour des gens qui raisonnent.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mcmxiv{Ce qu'Il a créé pour vous sur la terre a des couleurs diverses. Voilà bien là une preuve pour des gens qui se rappellent.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mcmxv{Et c'est Lui qui a assujetti la mer afin que vous en mangiez une chair fraîche, et que vous en retiriez des parures que vous portez. Et tu vois les bateaux fendre la mer avec bruit, pour que vous partiez en quête de Sa grâce et afin que vous soyez reconnaissants.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mcmxvi{Et Il a implanté des montagnes immobiles dans la terre afin qu'elle ne branle pas en vous emportant avec elle de même que des rivières et des sentiers, pour que vous vous guidiez,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mcmxvii{ainsi que des points de repère. Et au moyen des étoiles [les gens] se guident.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mcmxviii{Celui qui crée est-il semblable à celui qui ne crée rien? Ne vous souvenez-vous pas?\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mcmxix{Et si vous comptez les bienfaits d'Allah, vous ne saurez pas les dénombrer. Car Allah est Pardonneur, et Miséricordieux.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mcmxx{Et Allah sait ce que vous cachez et ce que vous divulguez.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mcmxxi{Et ceux qu'ils invoquent en dehors d'Allah ne créent rien, et ils sont eux-mêmes créés.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mcmxxii{Ils sont morts, et non pas vivants, et ils ne savent pas quand ils seront ressuscités.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mcmxxiii{Votre Dieu est un Dieu unique. Ceux qui ne croient pas en l'au-delà leurs cœurs nient (l'unicité d'Allah) et ils sont remplis d'orgueil.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mcmxxiv{Nul doute qu'Allah sait ce qu'ils cachent et ce qu'ils divulguent. Et assurément Il n'aime pas les orgueilleux.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mcmxxv{Et lorsqu'on leur dit: «Qu'est-ce que votre Seigneur a fait descendre?» Ils disent: «Des légendes anciennes!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mcmxxvi{Qu'ils portent donc, au Jour de la Résurrection, tous les fardeaux de leurs propres œuvres ainsi qu'une partie des fardeaux de ceux qu'ils égarent, sans le savoir; combien est mauvais [le fardeau] qu'ils portent!\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mcmxxvii{Ceux qui ont vécu avant eux, certes, ont comploté, mais Allah attaqua les bases mêmes de leur bâtisse. Le toit s'écroula au-dessus d'eux et le châtiment les surprit d'où ils ne l'avaient pas pressenti.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mcmxxviii{Puis, le Jour de la Résurrection, Il les couvrira d'ignominie, et [leur] dira: «Où sont Mes associés pour lesquels vous combattiez?» - Ceux qui ont le savoir diront: «L'ignominie et le malheur tombent aujourd'hui sur les mécréants».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mcmxxix{Ceux à qui les Anges ôtent la vie, alors qu'ils sont injustes envers eux-mêmes, se soumettront humiliés, (et diront): «Nous ne faisions pas de mal!» - «Mais, en fait, Allah sait bien ce que vous faisiez».\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mcmxxx{Entrez donc par les portes de l'Enfer pour y demeurer éternellement. Combien est mauvaise la demeure des orgueilleux!\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mcmxxxi{Et on dira à ceux qui étaient pieux: «Qu'a fait descendre votre Seigneur?» Ils diront: «Un bien». Ceux qui font les bonnes œuvres auront un bien ici-bas; mais la demeure de l'au-delà est certes meilleure. Combien agréable sera la demeure des pieux!\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mcmxxxii{Les jardins du séjour (éternel), où ils entreront et sous lesquels coulent les ruisseaux. Ils auront là ce qu'ils voudront; c'est ainsi qu'Allah récompense les pieux.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mcmxxxiii{Ceux dont les Anges reprennent l'âme - alors qu'ils sont bons - [les Anges leur] disent: «Paix sur vous! Entrez au Paradis, pour ce que vous faisiez».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mcmxxxiv{[Les infidèles] attendent-ils que les Anges leur viennent, ou que survienne l'ordre de ton Seigneur? Ainsi agissaient les gens avant eux. Allah ne les a pas lésés; mais ils faisaient du tort à eux-mêmes.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mcmxxxv{Les méfaits qu'ils accomplissaient les atteindront, et ce dont ils se moquaient les cernera de toutes parts.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mcmxxxvi{Et les associateurs dirent: «Si Allah avait voulu, nous n'aurions pas adoré quoi que ce soit en dehors de Lui, ni nous ni nos ancêtres; et nous n'aurions rien interdit qu'Il n'ait interdit Lui-même». Ainsi agissaient les gens avant eux. N'incombe-t-il aux messagers sinon de transmettre le message en toute clarté?\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mcmxxxvii{Nous avons envoyé dans chaque communauté un Messager, [pour leur dire]: «Adorez Allah et écartez-vous du Tâgût». Alors Allah en guida certains, mais il y en eut qui ont été destinés à l'égarement. Parcourez donc la terre, et regardez quelle fut la fin de ceux qui traitaient [Nos messagers] de menteurs.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mcmxxxviii{Même si tu désirais ardemment qu'ils soient guidés... [Sache] qu'Allah ne guide pas ceux qui s'égarent. Et ils n'auront pas de secoureurs.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mcmxxxix{Et ils jurent par Allah en prononçant leurs serments les plus solennels: «Allah ne ressuscitera pas celui qui meurt». Bien au contraire! C'est une promesse véritable [de Sa part], mais la plupart des gens ne le savent pas.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mcmxl{(Il les ressuscitera) afin qu'Il leur expose clairement ce en quoi ils divergeaient, et pour que ceux qui ont mécru sachent qu'ils ont été des menteurs.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mcmxli{Quand Nous voulons une chose, Notre seule parole est: «Sois». Et, elle est.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mcmxlii{Et ceux qui, pour (la cause d') Allah, ont émigré après avoir subi des injustices, Nous les installerons dans une situation agréable dans la vie d'ici-bas. Et le salaire de la vie dernière sera plus grand encore s'ils savaient.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mcmxliii{Eux qui ont enduré et placé leur confiance en leur Seigneur.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mcmxliv{Nous n'avons envoyé, avant toi, que des hommes auxquels Nous avons fait des révélations. Demandez donc aux gens du rappel si vous ne savez pas.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mcmxlv{(Nous les avons envoyés) avec des preuves évidentes et des livres saints. Et vers toi, Nous avons fait descendre le Coran, pour que tu exposes clairement aux gens ce qu'on a fait descendre pour eux et afin qu'ils réfléchissent.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mcmxlvi{Ceux qui complotaient des méfaits sont-ils à l'abri de ce qu'Allah les engloutisse en terre ou que leur vienne le châtiment d'où ils ne s'attendaient point?\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mcmxlvii{Ou bien qu'Il les saisisse en pleine activité sans qu'ils puissent échapper (au châtiment d'Allah).\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mcmxlviii{Ou bien qu'Il les saisisse en plein effroi? Mais vraiment, votre Seigneur est Compatissant et Miséricordieux.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mcmxlix{N'ont-ils point vu que les ombres de toute chose qu'Allah a créée s'allongent à droite et à gauche, en se prosternant devant Allah, en toute humilité?\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mcml{Et c'est devant Allah que se prosterne tout être vivant dans les cieux, et sur la terre; ainsi que les Anges qui ne s'enflent pas d'orgueil.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mcmli{Ils craignent leur Seigneur, au-dessus d'eux, et font ce qui leur est commandé.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mcmlii{Allah dit: «Ne prenez pas deux divinités. Il n'est qu'un Dieu unique. Donc, ne craignez que Moi».\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mcmliii{C'est à Lui qu'appartient ce qui est dans les cieux et sur la terre; c'est à Lui que l'obéissance perpétuelle est due. Craindriez-vous donc, d'autres qu'Allah?\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mcmliv{Et tout ce que vous avez comme bienfait provient d'Allah. Puis quand le malheur vous touche, c'est Lui que vous implorez à haute voix.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mcmlv{Et une fois qu'Il a dissipé votre malheur, voilà qu'une partie d'entre vous se mettent à donner des associés à leur Seigneur,\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mcmlvi{méconnaissant ainsi ce que Nous leur avons donné. Jouissez donc [pour un temps!] Bientôt vous saurez!\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mcmlvii{Et ils assignent une partie [des biens] que Nous leur avons attribués à [des idoles] qu'ils ne connaissent pas. Par Allah! Vous serez certes interrogés sur ce que vous inventiez.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mcmlviii{Et ils assignent à Allah des filles. Gloire et pureté à Lui! Et à eux-mêmes, cependant, (ils assignent) ce qu'ils désirent (des fils).\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mcmlix{Et lorsqu'on annonce à l'un d'eux une fille, son visage s'assombrit et une rage profonde [l'envahit].\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mcmlx{Il se cache des gens, à cause du malheur qu'on lui a annoncé. Doit-il la garder malgré la honte ou l'enfouira-t-il dans la terre? Combien est mauvais leur jugement!\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mcmlxi{C'est à ceux qui ne croient pas en l'au-delà que revient le mauvais qualificatif (qu'ils ont attribué à Allah). Tandis qu'à Allah [Seul] est le qualificatif suprême. Et c'est Lui le Tout Puissant, le Sage.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mcmlxii{Si Allah s'en prenait aux gens pour leurs méfaits, Il ne laisserait sur cette terre aucun être vivant. Mais Il les renvoie jusqu'à un terme fixé. Puis, quand leur terme vient, ils ne peuvent ni le retarder d'une heure ni l'avancer.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mcmlxiii{Et ils assignent à Allah ce qu'ils détestent [pour eux-mêmes]. Et leurs langues profèrent un mensonge quand ils disent que la plus belle récompense leur sera réservée. C'est le Feu, sans nul doute, qui leur sera réservé et ils y seront envoyés, les premiers.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mcmlxiv{Par Allah! Nous avons effectivement envoyé (des messagers) à des communautés avant toi. Mais le Diable leur enjoliva ce qu'ils faisaient. C'est lui qui est, leur allié, aujourd'hui [dans ce monde]. Et ils auront un châtiment douloureux [dans l'au-delà].\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mcmlxv{Et Nous n'avons fait descendre sur toi le Livre qu'afin que tu leur montres clairement le motif de leur dissension, de même qu'un guide et une miséricorde pour des gens croyants.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mcmlxvi{Allah a fait descendre du ciel une eau avec laquelle Il revivifie la terre après sa mort. Il y a vraiment là une preuve pour des gens qui entendent.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mcmlxvii{Il y a certes un enseignement pour vous dans les bestiaux: Nous vous abreuvons de ce qui est dans leurs ventres, - [un produit] extrait du [mélange] des excréments [intestinaux] et du sang - un lait pur, délicieux pour les buveurs.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mcmlxviii{Des fruits des palmiers et des vignes, vous retirez une boisson enivrante et un aliment excellent. Il y a vraiment là un signe pour des gens qui raisonnent.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mcmlxix{[Et voilà] ce que ton Seigneur révéla aux abeilles: «Prenez des demeures dans les montagnes, les arbres, et les treillages que [les hommes] font.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mcmlxx{Puis mangez de toute espèce de fruits, et suivez les sentiers de votre Seigneur, rendus faciles pour vous. De leur ventre, sort une liqueur, aux couleurs variées, dans laquelle il y a une guérison pour les gens. Il y a vraiment là une preuve pour des gens qui réfléchissent.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mcmlxxi{Allah vous a créés! Puis Il vous fera mourir. Tel parmi vous sera reconduit jusqu'à l'âge le plus vil, de sorte qu'après avoir su, il arrive à ne plus rien savoir. Allah est, certes, Omniscient et Omnipotent.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mcmlxxii{Allah a favorisé les uns d'entre vous par rapport aux autres dans [la répartition] de Ses dons. Ceux qui ont été favorisés ne sont nullement disposés à donner leur portion à ceux qu'ils possèdent de plein droit [esclaves] au point qu'ils y deviennent associés à part égale. Nieront-ils les bienfaits d'Allah?\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mcmlxxiii{Allah vous a fait à partir de vous-mêmes des épouses, et de vos épouses Il vous a donné des enfants et des petits-enfants. Et Il vous a attribué de bonnes choses. Croient-ils donc au faux et nient-ils le bienfait d'Allah?\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mcmlxxiv{Et ils adorent, en dehors d'Allah, ce qui ne peut leur procurer aucune nourriture des cieux et de la terre et qui n'est capable de rien.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mcmlxxv{N'attribuez donc pas à Allah des semblables. Car Allah sait, tandis que vous ne savez pas.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mcmlxxvi{Allah propose en parabole un esclave appartenant [à son maître], dépourvu de tout pouvoir, et un homme à qui Nous avons accordé de Notre part une bonne attribution dont il dépense en secret et en public. [Ces deux hommes] sont-ils égaux? Louange à Allah! Mais la plupart d'entre eux ne savent pas.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mcmlxxvii{Et Allah propose en parabole deux hommes: l'un d'eux est muet, dépourvu de tout pouvoir et totalement à la charge de son maître; Quelque lieu où celui-ci l'envoie, il ne rapporte rien de bon; serait-il l'égal de celui qui ordonne la justice et qui est sur le droit chemin?\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mcmlxxviii{C'est à Allah qu'appartient l'inconnaissable des cieux et de la terre. Et l'ordre [concernant] l'Heure ne sera que comme un clin d'œil ou plus bref encore! Car Allah est, certes, Omnipotent.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mcmlxxix{Et Allah vous a fait sortir des ventres de vos mères, dénués de tout savoir, et vous a donné l'ouïe, les yeux et les cœurs (l'intelligence), afin que vous; soyez reconnaissants.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mcmlxxx{N'ont-ils pas vu les oiseaux assujettis [au vol] dans l'atmosphère du ciel sans que rien ne les retienne en dehors d'Allah? Il y a vraiment là des preuves pour des gens qui croient.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxi{Et Allah vous a fait de vos maisons une habitation, tout comme Il vous a procuré des maisons faites de peaux de bêtes que vous trouvez légères, le jour où vous vous déplacez et le jour où vous vous campez. De leur laine, de leur poil et de leur crin (Il vous a procuré) des effets et des objets dont vous jouissez pour un certain délai.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxii{Et de ce qu'Il a créé, Allah vous a procuré des ombres. Et Il vous a procuré des abris dans les montagnes. Et Il vous a procuré des vêtements qui vous protègent de la chaleur, ainsi que des vêtements [cuirasses, armures] qui vous protègent de votre propre violence. C'est ainsi qu'Allah parachève sur vous Son bienfait, peut-être que vous vous soumettez.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxiii{S'ils se détournent... il ne t'incombe que la communication claire.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxiv{Ils reconnaissent le bienfait d'Allah; puis, ils le renient. Et la plupart d'entre eux sont des ingrats.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxv{(Et rappelle-toi) le jour où de chaque communauté Nous susciterons un témoin, on ne permettra pas aux infidèles (de s'excuser), et on ne leur demandera pas de revenir [sur ce qui a provoqué la colère d'Allah].\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxvi{Et quand les injustes verront le châtiment, on ne leur accordera ni allégement ni répit.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxvii{Quand les associateurs verront ceux qu'ils associaient à Allah, ils diront: «O notre Seigneur, voilà nos divinités que nous invoquions en dehors de Toi». Mais [leurs associés] leur adresseront la parole: «Vous êtes assurément des menteurs».\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxviii{Ils offriront ce jour-là à Allah la soumission, et ce qu'ils avaient inventé sera perdu pour eux.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mcmlxxxix{Ceux qui ne croyaient pas et obstruaient le sentier d'Allah, Nous leur ajouterons châtiment sur châtiment, pour la corruption qu'ils semaient (sur terre).\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mcmxc{Et le jour où dans chaque communauté, Nous susciterons parmi eux-mêmes un témoin contre eux, Et Nous t'emmenerons [Muhammad] comme témoin contre ceux-ci. Et Nous avons fait descendre sur toi le Livre, comme un exposé explicite de toute chose, ainsi qu'un guide, une grâce et une bonne annonce aux Musulmans.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mcmxci{Certes, Allah commande l'équité, la bienfaisance et l'assistance aux proches. Et Il interdit la turpitude, l'acte répréhensible et la rébellion. Il vous exhorte afin que vous vous souveniez.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mcmxcii{Soyez fidèles au pacte d'Allah après l'avoir contracté et ne violez pas vos serments après les avoir solennellement prêtés et avoir pris Allah comme garant [de votre bonne foi]. Vraiment Allah sait ce que vous faites!\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mcmxciii{Et ne faites pas comme celle qui défaisait brin par brin sa quenouille après l'avoir solidement filée, en prenant vos serments comme un moyen pour vous tromper les uns les autres, du fait que (vous avez trouvé) une communauté plus forte et plus nombreuse que l'autre. Allah ne fait, par là, que vous éprouver. Et, certes, Il vous montrera clairement, au Jour de la Résurrection ce sur quoi vous vous opposiez.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mcmxciv{Si Allah avait voulu, Il aurait certes fait de vous une seule communauté. Mais Il laisse s'égarer qui Il veut et guide qui Il veut. Et vous serez certes, interrogés sur ce que vous faisiez.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mcmxcv{Et ne prenez pas vos serments comme un moyen pour vous tromper les uns les autres, sinon [vos] pas glisseront après avoir été fermes, et vous goûterez le malheur pour avoir barré le sentier d'Allah. Et vous subirez un châtiment terrible.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mcmxcvi{Et ne vendez pas à vil prix le pacte d'Allah. Ce qui se trouve auprès d'Allah est meilleur pour vous, si vous saviez!\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mcmxcvii{Tout ce que vous possédez s'épuisera, tandis que ce qui est auprès d'Allah durera. Et Nous récompenserons ceux qui ont été constants en fonction du meilleur de ce qu'ils faisaient.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mcmxcviii{Quiconque, mâle ou femelle, fait une bonne œuvre tout en étant croyant, Nous lui ferons vivre une bonne vie. Et Nous les récompenserons, certes, en fonction des meilleures de leurs actions.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mcmxcix{Lorsque tu lis le Coran, demande la protection d'Allah contre le Diable banni.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mm{Il n'a aucun pouvoir sur ceux qui croient et qui placent leur confiance en leur Seigneur.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mmi{Il n'a de pouvoir que sur ceux qui le prennent pour allié et qui deviennent associateurs à cause de lui.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mmii{Quand Nous remplaçons un verset par un autre - et Allah sait mieux ce qu'Il fait descendre - ils disent: «Tu n'es qu'un menteur». Mais la plupart d'entre eux ne savent pas.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mmiii{Dis: «C'est le Saint Esprit [Gabriel] qui l'a fait descendre de la part de ton Seigneur en toute vérité, afin de raffermir [la foi] de ceux qui croient, ainsi qu'un guide et une bonne annonce pour les Musulmans.»\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mmiv{Et Nous savons parfaitement qu'ils disent: «Ce n'est qu'un être humain qui lui enseigne (le Coran)». Or, la langue de celui auquel ils font allusion est étrangère [non arabe], et celle-ci est une langue arabe bien claire.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mmv{Ceux qui ne croient pas aux versets d'Allah, Allah ne les guide pas. Et ils ont un châtiment douloureux.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mmvi{Seuls forgent le mensonge ceux qui ne croient pas aux versets d'Allah; et tels sont les menteurs.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mmvii{Quiconque a renié Allah après avoir cru... - sauf celui qui y a été contraint alors que son cœur demeure plein de la sérénité de la foi - mais ceux qui ouvrent délibérément leur cœur à la mécréance, ceux-là ont sur eux une colère d'Allah et ils ont un châtiment terrible.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mmviii{Il en est ainsi, parce qu'ils ont aimé la vie présente plus que l'au-delà. Et Allah, vraiment, ne guide pas les gens mécréants.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mmix{Voilà ceux dont Allah a scellé les cœurs, l'ouïe, et les yeux. Ce sont eux les insouciants.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mmx{Et nul doute que dans l'au-delà, ils seront les perdants.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mmxi{Quant à ceux qui ont émigré après avoir subi des épreuves, puis ont lutté et ont enduré, ton Seigneur après cela, est certes Pardonneur et Miséricordieux.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mmxii{(Rappelle-toi) le jour où chaque âme viendra, plaidant pour elle-même, et chaque âme sera pleinement rétribuée pour ce qu'elle aura œuvré sans qu'ils subissent la moindre injustice.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mmxiii{Et Allah propose en parabole une ville: elle était en sécurité, tranquille; sa part de nourriture lui venait de partout en abondance. Puis elle se montra ingrate aux bienfaits d'Allah. Allah lui fit alors goûter la violence de la faim et de la peur [en punition] de ce qu'ils faisaient.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mmxiv{En effet, un Messager des leurs est venu à eux, mais ils l'ont traité de menteur. Le châtiment, donc, les saisit parce qu'ils étaient injustes.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@mmxv{Mangez donc de ce qu'Allah vous a attribué de licite et de bon. Et soyez reconnaissants pour les bienfaits d'Allah, si c'est Lui que vous adorez.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@mmxvi{Il vous a, en effet, interdit (la chair) de la bête morte, le sang, la chair de porc, et la bête sur laquelle un autre nom que celui d'Allah a été invoqué. Mais quiconque en mange sous contrainte, et n'est ni rebelle ni transgresseur, alors Allah est Pardonneur et Miséricordieux.\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@mmxvii{Et ne dites pas, conformément aux mensonges proférés par vos langues: «Ceci est licite, et cela est illicite», pour forger le mensonge contre Allah. Certes, ceux qui forgent le mensonge contre Allah ne réussiront pas.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@mmxviii{Ce sera pour eux une piètre jouissance, mais un douloureux châtiment les attend.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@mmxix{Aux Juifs, Nous avions interdit ce que Nous t'avons déjà relaté. Nous ne leur avons fait aucun tort; mais ils se faisaient du tort à eux-mêmes.\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@mmxx{Puis ton Seigneur envers ceux qui ont commis le mal par ignorance, et se sont par la suite repentis et ont amélioré leur conduite, ton Seigneur, après cela est certes Pardonneur et Miséricordieux.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@mmxxi{Abraham était un guide ('Umma) parfait. Il était soumis à Allah, voué exclusivement à Lui et il n'était point du nombre des associateurs.\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@mmxxii{Il était reconnaissant pour Ses bienfaits et Allah l'avait élu et guidé vers un droit chemin.\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@mmxxiii{Nous lui avons donné une belle part ici-bas. Et il sera certes dans l'au-delà du nombre des gens de bien.\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@mmxxiv{Puis Nous t'avons révélé: «Suis la religion d'Abraham qui était voué exclusivement à Allah et n'était point du nombre des associateurs».\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@mmxxv{Le Sabbat n'a été imposé qu'à ceux qui divergeaient à son sujet. Au Jour de la Résurrection, ton Seigneur jugera certainement au sujet de ce dont ils divergeaient.\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@mmxxvi{Par la sagesse et la bonne exhortation appelle (les gens) au sentier de ton Seigneur. Et discute avec eux de la meilleure façon. Car c'est ton Seigneur qui connaît le mieux celui qui s'égare de Son sentier et c'est Lui qui connaît le mieux ceux qui sont bien guidés.\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@mmxxvii{Et si vous punissez, infligez [à l'agresseur] une punition égale au tort qu'il vous a fait. Et si vous endurez... cela est certes meilleur pour les endurants.\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@mmxxviii{Endure! Ton endurance [ne viendra] qu'avec (l'aide) d'Allah. Ne t'afflige pas pour eux. Et ne sois pas angoissé à cause de leurs complots.\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@mmxxix{Certes, Allah est avec ceux qui [L'] ont craint avec piété et ceux qui sont bienfaisants.\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@mmxxx{\basmalahfr Gloire et Pureté à Celui qui de nuit, fit voyager Son serviteur [Muhammad], de la Mosquée Al-Harâm à la Mosquée Al-Aqsâ dont Nous avons béni l'alentour, afin de lui faire voir certaines de Nos merveilles. C'est Lui, vraiment, qui est l'Audient, le Clairvoyant.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmxxxi{Et Nous avions donné à Moïse le Livre dont Nous avions fait un guide pour les Enfants d'Israël: «Ne prenez pas de protecteur en dehors de Moi».\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmxxxii{[O vous], les descendants de ceux que Nous avons transportés dans l'arche avec Noé. Celui-ci était vraiment un serviteur fort reconnaissant.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmxxxiii{Nous avions décrété pour les Enfants d'Israël, (et annoncé) dans le Livre: «Par deux fois vous sèmerez la corruption sur terre et vous allez transgresser d'une façon excessive».\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmxxxiv{Lorsque vint l'accomplissement de la première de ces deux [prédictions,] Nous envoyâmes contre vous certains de Nos serviteurs doués d'une force terrible, qui pénétrèrent à l'intérieur des demeures. Et la prédiction fut accomplie.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmxxxv{Ensuite, Nous vous donnâmes la revanche sur eux; et Nous vous renforçâmes en biens et en enfants. Et Nous vous fîmes [un peuple] plus nombreux:\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmxxxvi{«Si vous faites le bien; vous le faites à vous-mêmes; et si vous faites le mal, vous le faites à vous [aussi]». Puis, quand vint la dernière [prédiction,] ce fut pour qu'ils affligent vos visages et entrent dans la Mosquée comme ils y étaient entrés la première fois, et pour qu'ils détruisent complètement ce dont ils se sont emparés.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmxxxvii{Il se peut que votre Seigneur vous fasse miséricorde. Mais si vous récidivez, Nous récidiverons. Et Nous avons assigné l'Enfer comme camp de détention aux infidèles.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmxxxviii{Certes, ce Coran guide vers ce qu'il y a de plus droit, et il annonce aux croyants qui font de bonnes œuvres qu'ils auront une grande récompense,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmxxxix{et à ceux qui ne croient pas en l'au-delà, que Nous leur avons préparé un châtiment douloureux.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmxl{L'homme appelle le mal comme il appelle le bien, car l'homme est très hâtif.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmxli{Nous avons fait de la nuit et du jour deux signes, et Nous avons effacé le signe de la nuit, tandis que Nous avons rendu visible le signe du jour, pour que vous recherchiez des grâces de votre Seigneur, et que vous sachiez le nombre des années et le calcul du temps. Et Nous avons expliqué toute chose d'une manière détaillée.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmxlii{Et au cou de chaque homme, Nous avons attaché son œuvre. Et au Jour de la Résurrection, Nous lui sortirons un écrit qu'il trouvera déroulé:\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmxliii{«Lis ton écrit. Aujourd'hui, tu te suffis d'être ton propre comptable».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmxliv{Quiconque prend le droit chemin ne le prend que pour lui-même; et quiconque s'égare, ne s'égare qu'à son propre détriment. Et nul ne portera le fardeau d'autrui. Et Nous n'avons jamais puni [un peuple] avant de [lui] avoir envoyé un Messager.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmxlv{Et quand Nous voulons détruire une cité, Nous ordonnons à ses gens opulents [d'obéir à Nos prescriptions], mais (au contraire) ils se livrent à la perversité. Alors la Parole prononcée contre elle se réalise, et Nous la détruisons entièrement.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmxlvi{Que de générations avons-nous exterminées, après Noé! Et ton Seigneur suffit qu'Il soit Parfaitement Connaisseur et Clairvoyant sur les péchés de Ses serviteurs.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmxlvii{Quiconque désire [la vie] immédiate, Nous nous hâtons de donner ce que Nous voulons, à qui Nous voulons. Puis, Nous lui assignons l'Enfer où il brûlera méprisé et repoussé.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmxlviii{Et ceux qui recherchent l'au-delà et fournissent les efforts qui y mènent, tout en étant croyants... alors l'effort de ceux-là sera reconnu.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmxlix{Nous accordons abondamment à tous, ceux-ci comme ceux-là, des dons de ton Seigneur. Et les dons de ton Seigneur ne sont refusés [à personne].\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mml{Regarde comment Nous favorisons certains sur d'autres. Et dans l'au-delà, il y a des rangs plus élevés et plus privilégiés.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmli{N'assigne point à Allah d'autre divinité; sinon tu te trouveras méprisé et abandonné.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmlii{Et ton Seigneur a décrété: «N'adorez que Lui; et (marquez) de la bonté envers les père et mère: si l'un d'eux ou tous deux doivent atteindre la vieillesse auprès de toi, alors ne leur dis point: «Fi!» et ne les brusque pas, mais adresse-leur des paroles respectueuses.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmliii{et par miséricorde, abaisse pour eux l'aile de l'humilité, et dis: «O mon Seigneur, fais-leur, à tous deux, miséricorde comme ils m'ont élevé tout petit».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmliv{Votre Seigneur connaît mieux ce qu'il y a dans vos âmes. Si vous êtes bons, Il est certes Pardonneur pour ceux qui Lui reviennent se repentant.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmlv{«Et donne au proche parent ce qui lui est dû ainsi qu'au pauvre et au voyageur (en détresse). Et ne gaspille pas indûment,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmlvi{car les gaspilleurs sont les frères des diables; et le Diable est très ingrat envers son Seigneur.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmlvii{Si tu t'écartes d'eux à la recherche d'une miséricorde de Ton Seigneur, que tu espères, adresse-leur une parole bienveillante.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmlviii{Ne porte pas ta main enchaînée à ton cou [par avarice], et ne l'étend pas non plus trop largement, sinon tu te trouveras blâmé et chagriné.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmlix{En vérité ton Seigneur étend Ses dons largement à qu'Il veut ou les accorde avec parcimonie. Il est, sur Ses serviteurs, Parfaitement Connaisseur et Clairvoyant.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmlx{Et ne tuez pas vos enfants par crainte de pauvreté; c'est Nous qui attribuons leur subsistance, tout comme à vous. Les tuer, c'est vraiment, un énorme péché.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmlxi{Et n'approchez point la fornication. En vérité, c'est une turpitude et quel mauvais chemin!\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmlxii{Et, sauf en droit, ne tuez point la vie qu'Allah a rendu sacrée. Quiconque est tué injustement, alors Nous avons donné pouvoir à son proche [parent]. Que celui-ci ne commette pas d'excès dans le meurtre, car il est déjà assisté (par la loi).\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmlxiii{Et n'approchez les biens de l'orphelin que de la façon la meilleure, jusqu'à ce qu'il atteigne sa majorité. Et remplissez l'engagement, car on sera interrogé au sujet des engagements.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmlxiv{Et donnez la pleine mesure quand vous mesurez, et pesez avec une balance exacte. C'est mieux [pour vous] et le résultat en sera meilleur.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmlxv{Et ne poursuis pas ce dont tu n'as aucune connaissance. L'ouïe, la vue et le cœur: sur tout cela, en vérité, on sera interrogé.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmlxvi{Et ne foule pas la terre avec orgueil: tu ne sauras jamais fendre la terre et tu ne pourras jamais atteindre la hauteur des montagnes!\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmlxvii{Ce qui est mauvais en tout cela est détesté de ton Seigneur.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmlxviii{Tout cela fait partie de ce que ton Seigneur t'a révélé de la Sagesse. N'assigne donc pas à Allah d'autre divinité, sinon tu seras jeté dans l'Enfer, blâmé et repoussé.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmlxix{Votre Seigneur, aurait-Il réservé exclusivement pour vous des fils, et Lui, aurait-Il pris pour Lui des filles parmi les Anges? Vous prononcez là une parole monstrueuse.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmlxx{Très certainement Nous avons exposé [tout ceci] dans ce Coran afin que [les gens] réfléchissent. Mais cela ne fait qu'augmenter leur répulsion.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmlxxi{Dis: «S'il y avait des divinités avec Lui, comme ils le disent, elles auraient alors cherché un chemin [pour atteindre] le Détenteur du Trône».\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmlxxii{Pureté à Lui! Il est plus haut et infiniment au-dessus de ce qu'ils disent!\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmlxxiii{Les sept cieux et la terre et ceux qui s'y trouvent, célèbrent Sa gloire. Et il n'existe rien qui ne célèbre Sa gloire et Ses louanges. Mais vous ne comprenez pas leur façon de Le glorifier. Certes c'est Lui qui est Indulgent et Pardonneur.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmlxxiv{Et quand tu lis le Coran, Nous plaçons, entre toi et ceux qui ne croient pas en l'au-delà, un voile invisible,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmlxxv{Nous avons mis des voiles sur leurs cœurs, de sorte qu'ils ne le comprennent pas: et dans leurs oreilles, une lourdeur. Et quand, dans le Coran, tu évoques Ton Seigneur l'Unique, ils tournent le dos par répulsion.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmlxxvi{Nous savons très bien ce qu'ils écoutent. Quand ils t'écoutent et qu'ils chuchotent entre eux, les injustes disent: «Vous ne suivez qu'un homme ensorcelé».\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmlxxvii{Vois ce à quoi ils te comparent! Ils s'égarent donc et sont incapables de trouver un chemin (vers la vérité).\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmlxxviii{Et ils disent: «Quand nous serons ossements et poussière, serons-nous ressuscités en une nouvelle création?»\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmlxxix{Dis: «Soyez pierre ou fer.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmlxxx{ou toute autre créature que vous puissiez concevoir.» Ils diront alors: «Qui donc nous fera revenir?» - Dis: «Celui qui vous a créés la première fois». Ils secoueront vers toi leurs têtes et diront: «Quand cela?» Dis: «Il se peut que ce soit proche.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmlxxxi{Le jour où Il vous appellera, vous Lui répondrez en Le glorifiant. Vous penserez cependant que vous n'êtes restés [sur terre] que peu de temps!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmlxxxii{Et dis à Mes serviteurs d'exprimer les meilleures paroles, car le Diable sème la discorde parmi eux. Le Diable est certes, pour l'homme, un ennemi déclaré.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmlxxxiii{Votre Seigneur vous connaît mieux. S'Il veut, Il vous fera miséricorde, et s'Il veut, Il vous châtiera. Et Nous ne t'avons pas envoyé pour que tu sois leur protecteur.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmlxxxiv{Et ton Seigneur est plus Connaisseur de ceux qui sont dans les cieux et sur la terre. Et parmi les prophètes, Nous avons donné à certains plus de faveurs qu'à d'autres. Et à David Nous avons donné le «Zabûr».\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmlxxxv{Dis: «Invoquez ceux que vous prétendez, (être des divinités) en dehors de Lui. Ils ne possèdent ni le moyen de dissiper votre malheur ni de le détourner.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmlxxxvi{Ceux qu'ils invoquent, cherchent [eux-mêmes], à qui mieux, le moyen de se rapprocher le plus de leur Seigneur. Ils espèrent Sa miséricorde et craignent Son châtiment. Le châtiment de ton Seigneur est vraiment redouté.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmlxxxvii{Il n'est point de cité [injuste] que Nous ne fassions périr avant le Jour de la Résurrection, ou que Nous ne punissions d'un dur châtiment. Cela est bien tracé dans le Livre [des décrets immuables].\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmlxxxviii{Rien ne Nous empêche d'envoyer les miracles, si ce n'est que les Anciens les avaient traités de mensonges. Nous avions apporté aux Thamûd la chamelle qui était un [miracle] visible: mais ils lui firent du tort. En outre, Nous n'envoyons de miracles qu'à titre de menace.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmlxxxix{Et lorsque Nous te disions que ton Seigneur cerne tous les gens (par Sa puissance et Son savoir). Quant à la vision que Nous t'avons montrée, Nous ne l'avons faite que pour éprouver les gens, tout comme l'arbre maudit mentionné dans le Coran. Nous les menaçons, mais cela ne fait qu'augmenter leur grande transgression.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmxc{Et lorsque Nous avons dit aux Anges: «Prosternez-vous devant Adam», ils se prosternèrent, à l'exception d'Iblis, qui dit: «Me prosternerai-je devant quelqu'un que Tu as créé d'argile?»\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmxci{Il dit encore: «Vois-Tu? Celui que Tu as honoré au-dessus de moi, si Tu me donnais du répit jusqu'au Jour de la Résurrection, j'éprouverai, certes, sa descendance excepté un petit nombre [parmi eux]».\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmxcii{Et [Allah] dit: «Va-t-en! Quiconque d'entre eux te suivra... votre sanction sera l'Enfer, une ample rétribution.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmxciii{Excite, par ta voix, ceux d'entre eux que tu pourras, rassemble contre eux ta cavalerie et ton infanterie, associe-toi à eux dans leur biens et leurs enfants et fais-leur des promesses». Or, le Diable ne leur fait des promesses qu'en tromperie.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmxciv{Quant à Mes serviteurs, tu n'as aucun pouvoir sur eux». Et ton Seigneur suffit pour les protéger!\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmxcv{Votre Seigneur est Celui qui fait voguer le vaisseau pour vous en mer, afin que vous alliez à la recherche de quelque grâce de Sa part; Certes Il est Miséricordieux envers vous,\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmxcvi{Et quand le mal vous touche en mer, ceux que vous invoquiez en dehors de Lui se perdent. Puis, quand Il vous sauve et vous ramène à terre, vous vous détournez. L'homme reste très ingrat!\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmxcvii{Etes-vous à l'abri de ce qu'Il vous fasse engloutir par un pan de terre, ou qu'Il envoie contre vous un ouragan (avec pluie en pierres) et que vous ne trouverez alors aucun protecteur.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmxcviii{Ou êtes-vous à l'abri de ce qu'Il vous y ramène (en mer) une autre fois, qu'Il déchaîne contre vous un de ces vents à tout casser, puis qu'Il vous fasse noyer à cause de votre mécréance? Et alors vous ne trouverez personne pour vous défendre contre Nous!\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmxcix{Certes, Nous avons honoré les fils d'Adam. Nous les avons transportés sur terre et sur mer, leur avons attribué de bonnes choses comme nourriture, et Nous les avons nettement préférés à plusieurs de Nos créatures.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmc{Le jour où Nous appellerons chaque groupement d'hommes par leur chef, ceux à qui on remettra leur livre dans la main droite liront leur livre (avec plaisir) et ne subiront pas la moindre injustice.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmci{Et quiconque aura été aveugle ici-bas, sera aveugle dans l'au-delà, et sera plus égaré [encore] par rapport à la bonne voie.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmcii{Ils ont failli te détourner de ce que Nous t'avions révélé, [dans l'espoir] qu'à la place de ceci, tu inventes quelque chose d'autre et (l'imputes) à Nous. Et alors, ils t'auraient pris pour ami intime.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmciii{Et si Nous ne t'avions pas raffermi, tu aurais bien failli t'incliner quelque peu vers eux.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmciv{Alors, Nous t'aurions certes fait goûter le double [supplice] de la vie et le double [supplice] de la mort; et ensuite tu n'aurais pas trouvé de secoureur contre Nous.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmcv{En vérité, ils ont failli t'inciter à fuir du pays pour t'en bannir. Mais dans ce cas, ils n'y seraient pas restés longtemps après toi.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmcvi{Telle fut la règle appliquée par Nous à Nos messagers que Nous avons envoyés avant toi. Et tu ne trouveras pas de changement en Notre règle.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmcvii{Accomplis la Salât au déclin du soleil jusqu'à l'obscurité de la nuit, et [fais] aussi la Lecture à l'aube, car la Lecture à l'aube a des témoins.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmcviii{Et de la nuit consacre une partie [avant l'aube] pour des Salât surérogatoires: afin que ton Seigneur te ressuscite en une position de gloire.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmcix{Et dis: «O mon Seigneur, fais que j'entre par une entrée de vérité et que je sorte par une sortie de vérité; et accorde-moi de Ta part, un pouvoir bénéficiant de Ton secours».\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmcx{Et dis: «La Vérité (l'Islam) est venue et l'Erreur a disparu. Car l'Erreur est destinée à disparaître».\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmcxi{Nous faisons descendre du Coran, ce qui est une guérison et une miséricorde pour les croyants. Cependant, cela ne fait qu'accroître la perdition des injustes.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmcxii{Et quand Nous comblons l'homme de bienfaits, il se détourne et se replie sur lui-même; et quand un mal le touche, le voilà profondément désespéré.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmcxiii{Dis: «Chacun agit selon sa méthode, alors que votre Seigneur connaît mieux qui suit la meilleure voie».\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmcxiv{Et ils t'interrogent au sujet de l'âme, - Dis: «L'âme relève de l'Ordre de mon Seigneur». Et on ne vous a donné que peu de connaissance.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmcxv{Si Nous voulons, Nous pouvons certes faire disparaître ce que Nous t'avons révélé; et tu n'y trouverais par la suite aucun défenseur contre Nous.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmcxvi{Si ce n'est par une miséricorde de ton Seigneur, car en vérité Sa grâce sur toi est grande.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmcxvii{Dis: «Même si les hommes et les djinns s'unissaient pour produire quelque chose de semblable à ce Coran, ils ne sauraient produire rien de semblable, même s'ils se soutenaient les uns les autres».\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmcxviii{Et certes, Nous avons déployé pour les gens, dans ce Coran, toutes sortes d'exemples. Mais la plupart des gens s'obstinent à être mécréants.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmcxix{Et ils dirent: «Nous ne croirons pas en toi, jusqu'à ce que tu aies fait jaillir de terre, pour nous, une source;\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmcxx{ou que tu aies un jardin de palmiers et de vignes, entre lesquels tu feras jaillir des ruisseaux en abondance;\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmcxxi{ou que tu fasses tomber sur nous, comme tu le prétends, le ciel en morceaux; ou que tu fasses venir Allah et les Anges en face de nous;\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmcxxii{ou que tu aies une maison [garnie] d'ornements; ou que tu sois monté au ciel. Encore ne croirons-nous pas à ta montée au ciel, jusqu'à ce que tu fasses descendre sur nous un Livre que nous puissions lire». Dis-[leur]: «Gloire à mon Seigneur! Ne suis-je qu'un être humain-Messager?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmcxxiii{Et rien n'empêcha les gens de croire, quand le guide leur est parvenu, si ce n'est qu'ils disaient: «Allah envoie-t-Il un être humain-Messager?»\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmcxxiv{Dis: «S'il y avait sur terre des Anges marchant tranquillement, Nous aurions certes fait descendre sur eux du ciel un Ange-Messager».\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmcxxv{Dis: «Allah suffit comme témoin entre vous et moi». Il est, sur Ses serviteurs, Parfaitement Connaisseur et Clairvoyant.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmcxxvi{Celui qu'Allah guide, c'est lui le bien-guidé et ceux qu'Il égare... tu ne leur trouveras jamais d'alliés en dehors de Lui et au Jour de la Résurrection, Nous les rassemblerons traînés sur leurs visages, aveugles, muets et sourds. L'Enfer sera leur demeure: chaque fois que son feu s'affaiblit, Nous leur accroîtrons la flamme ardente.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mmcxxvii{Telle sera leur sanction parce qu'ils ne croient pas en Nos preuves et disent: «Quand nous serons ossements et poussière, serons-nous ressuscités en une nouvelle création?»\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mmcxxviii{N'ont-ils pas vu qu'Allah qui a créé les cieux et la terre est capable de créer leurs pareils? Il leur a fixé un terme, sur lequel il n'y a aucun doute, mais les injustes s'obstinent dans leur mécréance.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mmcxxix{Dis: «Si c'était vous qui possédiez les trésors de la miséricorde de mon Seigneur, vous lésineriez, certes, de peur de les dépenser. Et l'homme est très avare!\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mmcxxx{Et certes, Nous donnâmes à Moïse neuf miracles évidents. Demande donc aux Enfants d'Israël, lorsqu'il leur vint et que Pharaon lui dit: «O Moïse, je pense que tu es ensorcelé».\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mmcxxxi{Il dit: «Tu sais fort bien que ces choses [les miracles], seul le Seigneur des cieux et de la terre les a fait descendre comme autant de preuves illuminantes; et certes, O Pharaon, je te crois perdu».\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mmcxxxii{[Pharaon] voulut donc les expulser du pays. Alors Nous les noyâmes tous, lui et ceux qui étaient avec lui.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mmcxxxiii{Et après lui, Nous dîmes aux Enfants d'Israël: «Habitez la terre». Puis, lorsque viendra la promesse de la (vie) dernière, Nous vous ferons venir en foule.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mmcxxxiv{Et c'est en toute vérité que Nous l'avons fait descendre (le Coran), et avec la vérité il est descendu, et Nous ne t'avons envoyé qu'en annonciateur et avertisseur.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mmcxxxv{(Nous avons fait descendre) un Coran que Nous avons fragmenté, pour que tu le lises lentement aux gens. Et Nous l'avons fait descendre graduellement.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mmcxxxvi{Dis: «Croyez-y ou n'y croyez pas. Ceux à qui la connaissance a été donnée avant cela, lorsqu'on le leur récite, tombent, prosternés, le menton contre terre\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mmcxxxvii{et disent: «Gloire à notre Seigneur! La promesse de notre Seigneur est assurément accomplie».\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mmcxxxviii{Et ils tombent sur leur menton, pleurant, et cela augmente leur humilité.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mmcxxxix{Dis: «Invoquez Allah, ou invoquez le Tout Miséricordieux. Quel que soit le nom par lequel vous l'appelez, Il a les plus beaux noms. Et dans ta Salât, ne récite pas à voix haute; et ne l'y abaisse pas trop, mais cherche le juste milieu entre les deux».\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mmcxl{Et dis: «Louange à Allah qui ne S'est jamais attribué d'enfant, qui n'a point d'associé en la royauté et qui n'a jamais eu de protecteur de l'humiliation». Et proclame hautement Sa grandeur.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mmcxli{\basmalahfr Louange à Allah qui a fait descendre sur Son serviteur (Muhammad), le Livre, et n'y a point introduit de tortuosité (ambiguité)!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmcxlii{[Un Livre] d'une parfaite droiture pour avertir d'une sévère punition venant de Sa part et pour annoncer aux croyants qui font de bonnes œuvres qu'il y aura pour eux une belle récompense.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmcxliii{où ils demeureront éternellement,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmcxliv{et pour avertir ceux qui disent: «Allah S'est attribué un enfant.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmcxlv{Ni eux ni leurs ancêtres n'en savent rien. Quelle monstrueuse parole que celle qui sort de leurs bouches! Ce qu'ils disent n'est que mensonge.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmcxlvi{Tu vas peut-être te consumer de chagrin parce qu'ils se détournent de toi et ne croient pas en ce discours!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmcxlvii{Nous avons placé ce qu'il y a sur la terre pour l'embellir, afin d'éprouver (les hommes et afin de savoir) qui d'entre eux sont les meilleurs dans leurs actions.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmcxlviii{Puis, Nous allons sûrement transformer sa surface en un sol aride.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmcxlix{Penses-tu que les gens de la Caverne et d'ar-Raquîm ont constitué une chose extraordinaire d'entre Nos prodiges?\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmcl{Quand les jeunes gens se furent réfugiés dans la caverne, ils dirent: «O notre Seigneur, donne-nous de Ta part une miséricorde; et assure nous la droiture dans tout ce qui nous concerne».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmcli{Alors, Nous avons assourdi leurs oreilles, dans la caverne pendant de nombreuses années.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmclii{Ensuite, Nous les avons ressuscités, afin de savoir lequel des deux groupes saurait le mieux calculer la durée exacte de leur séjour.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmcliii{Nous allons te raconter leur récit en toute vérité. Ce sont des jeunes gens qui croyaient en leur Seigneur; et Nous leur avons accordé les plus grands moyens de se diriger [dans la bonne voie].\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmcliv{Nous avons fortifié leurs cœurs lorsqu'ils s'étaient levés pour dire: «Notre Seigneur est le Seigneur des cieux et de la terre: jamais nous n'invoquerons de divinité en dehors de Lui, sans quoi, nous transgresserions dans nos paroles.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmclv{Voilà que nos concitoyens ont adopté en dehors de Lui des divinités. Que n'apportent-ils sur elles une preuve évidente? Quel pire injuste, donc que celui qui invente un mensonge contre Allah?\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmclvi{Et quand vous vous serez séparés d'eux et de ce qu'ils adorent en dehors d'Allah, réfugiez-vous donc dans la caverne: votre Seigneur répandra de Sa miséricorde sur vous et disposera pour vous un adoucissement à votre sort.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmclvii{Tu aurais vu le soleil, quand il se lève, s'écarter de leur caverne vers la droite, et quand il se couche, passer à leur gauche, tandis qu'eux-mêmes sont là dans une partie spacieuse (de la caverne)... Cela est une des merveilles d'Allah. Celui qu'Allah guide, c'est lui le bien-guidé. Et quiconque Il égare, tu ne trouveras alors pour lui aucun allié pour le mettre sur la bonne voie.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmclviii{Et tu les aurais cru éveillés, alors qu'ils dorment. Et Nous les tournons sur le côté droit et sur le côté gauche, tandis que leur chien est à l'entrée, pattes étendues. Si tu les avais aperçus, certes tu leur aurais tourné le dos en fuyant; et tu aurais été assurément rempli d'effroi devant eux.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmclix{Et c'est ainsi que Nous les ressuscitâmes, afin qu'ils s'interrogent entre eux. L'un parmi eux dit: «Combien de temps avez-vous demeuré là?» Ils dirent: «Nous avons demeuré un jour ou une partie d'un jour». D'autres dirent: «Votre Seigneur sait mieux combien [de temps] vous y avez demeuré. Envoyez donc l'un de vous à la ville avec votre argent que voici, pour qu'il voie quel aliment est le plus pur et qu'il vous en apporte de quoi vous nourrir. Qu'il agisse avec tact; et qu'il ne donne l'éveil à personne sur vous.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmclx{Si jamais ils vous attrapent, ils vous lapideront ou vous feront retourner à leur religion, et vous ne réussirez alors plus jamais».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmclxi{Et c'est ainsi que Nous fîmes qu'ils furent découverts, afin qu'ils [les gens de la cité] sachent que la promesse d'Allah est vérité et qu'il n'y ait point de doute au sujet de l'Heure. Aussi se disputèrent-ils à leur sujet et déclarèrent-ils: «Construisez sur eux un édifice. Leur Seigneur les connaît mieux». Mais ceux qui l'emportèrent [dans la discussion] dirent: «Elevons sur eux un sanctuaire».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmclxii{Ils diront: «ils étaient trois et le quatrième était leur chien». Et ils diront en conjecturant sur leur mystère qu'ils étaient cinq, le sixième étant leur chien et ils diront: «sept, le huitième étant leur chien». Dis: «Mon Seigneur connaît mieux leur nombre. Il n'en est que peu qui le savent». Ne discute à leur sujet que d'une façon apparente et ne consulte personne en ce qui les concerne.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmclxiii{Et ne dis jamais, à propos d'une chose: «Je la ferai sûrement demain»,\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmclxiv{sans ajouter: «Si Allah le veut», et invoque ton Seigneur quand tu oublies et dis: «Je souhaite que mon Seigneur me guide et me mène plus près de ce qui est correct».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmclxv{Or, ils demeurèrent dans leur caverne trois cents ans et en ajoutèrent neuf (années).\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmclxvi{Dis: «Allah sait mieux combien de temps ils demeurèrent là. A Lui appartient l'Inconnaissable des cieux et de la terre. Comme Il est Voyant et Audient! Ils n'ont aucun allié en dehors de Lui et Il n'associe personne à Son commandement.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmclxvii{Et récite ce qui t'a été révélé du Livre de ton Seigneur. Nul ne peut changer Ses paroles. Et tu ne trouveras, en dehors de Lui, aucun refuge.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmclxviii{Fais preuve de patience [en restant] avec ceux qui invoquent leur Seigneur matin et soir, désirant Sa Face. Et que tes yeux ne se détachent point d'eux, en cherchant (le faux) brillant de la vie sur terre. Et n'obéis pas à celui dont Nous avons rendu le cœur inattentif à Notre Rappel, qui poursuit sa passion et dont le comportement est outrancier.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmclxix{Et dis: «La vérité émane de votre Seigneur». Quiconque le veut, qu'il croie, quiconque le veut qu'il mécroie». Nous avons préparé pour les injustes un Feu dont les flammes les cernent. Et s'ils implorent à boire on les abreuvera d'une eau comme du métal fondu brûlant les visages. Quelle mauvaise boisson et quelle détestable demeure!\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmclxx{Ceux qui croient et font de bonnes œuvres... vraiment Nous ne laissons pas perdre la récompense de celui qui fait le bien.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmclxxi{Voilà ceux qui auront les jardins du séjour (éternel) sous lesquels coulent les ruisseaux. Ils y seront parés de bracelets d'or et se vêtiront d'habits verts de soie fine et de brocart, accoudés sur des divans (bien ornés). Quelle bonne récompense et quelle belle demeure!\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmclxxii{Donne-leur l'exemple de deux hommes: à l'un d'eux Nous avons assigné deux jardins de vignes que Nous avons entourés de palmiers et Nous avons mis entre les deux jardins des champs cultivés.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmclxxiii{Les deux jardins produisaient leur récolte sans jamais manquer. Et Nous avons fait jaillir entre eux un ruisseau.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmclxxiv{Et il avait des fruits et dit alors à son compagnon avec qui il conversait: «Je possède plus de biens que toi, et je suis plus puissant que toi grâce à mon clan».\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmclxxv{Il entra dans son jardin coupable envers lui-même [par sa mécréance]; il dit: «Je ne pense pas que ceci puisse jamais périr,\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmclxxvi{et je ne pense pas que l'Heure viendra. Et si on me ramène vers mon Seigneur, je trouverai certes meilleur lieu de retour que ce jardin.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmclxxvii{Son compagnon lui dit, tout en conversant avec lui: «Serais-tu mécréant envers Celui qui t'a créé de terre, puis de sperme et enfin t'a façonné en homme?\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmclxxviii{Quant à moi, c'est Allah qui est mon Seigneur; et je n'associe personne à mon Seigneur.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmclxxix{En entrant dans ton jardin, que ne dis-tu: «Telle est la volonté (et la grâce) d'Allah! Il n'y a de puissance que par Allah». Si tu me vois moins pourvu que toi en biens et en enfants,\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmclxxx{il se peut que mon Seigneur, bientôt, me donne quelque chose de meilleur que ton jardin, qu'Il envoie sur [ce dernier], du ciel, quelque calamité, et que son sol devienne glissant,\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmclxxxi{ou que son eau tarisse de sorte que tu ne puisses plus la retrouver».\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmclxxxii{Et sa récolte fut détruite et il se mit alors à se tordre les deux mains à cause de ce qu'il y avait dépensé, cependant que ses treilles étaient complètement ravagées. Et il disait: «Que je souhaite n'avoir associé personne à mon Seigneur!»\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmclxxxiii{Il n'eut aucun groupe de gens pour le secourir contre (la punition) d'Allah. Et il ne put se secourir lui-même.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmclxxxiv{En l'occurrence, la souveraine protection appartient à Allah, le Vrai. Il accorde la meilleure récompense et le meilleur résultat.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmclxxxv{Et propose-leur l'exemple de la vie ici-bas. Elle est semblable à une eau que Nous faisons descendre du ciel; la végétation de la terre se mélange à elle. Puis elle devient de l'herbe desséchée que les vents dispersent. Allah est certes Puissant en toutes choses!\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmclxxxvi{Les biens et les enfants sont l'ornement de la vie de ce monde. Cependant, les bonnes œuvres qui persistent ont auprès de ton Seigneur une meilleure récompense et [suscitent] une belle espérance.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmclxxxvii{Le jour où Nous ferons marcher les montagnes et où tu verras la terre nivelée (comme une plaine) et Nous les rassemblerons sans en omettre un seul.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmclxxxviii{Et ils seront présentés en rangs devant ton Seigneur. «Vous voilà venus à Nous comme Nous vous avons créés la première fois. Pourtant vous prétendiez que Nous ne remplirions pas Nos promesses».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmclxxxix{Et on déposera le livre (de chacun). Alors tu verras les criminels, effrayés à cause de ce qu'il y a dedans, dire: «Malheur à nous, qu'a donc ce livre à n'omettre de mentionner ni péché véniel ni péché capital?» Et ils trouveront devant eux tout ce qu'ils ont œuvré. Et ton Seigneur ne fait du tort à personne.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmcxc{Et lorsque nous dîmes aux Anges: «Prosternez-vous devant Adam», ils se prosternèrent, excepté Iblis [Satan] qui était du nombre des djinns et qui se révolta contre le commandement de son Seigneur. Allez-vous cependant le prendre, ainsi que sa descendance, pour alliés en dehors de Moi, alors qu'ils vous sont ennemis? Quel mauvais échange pour les injustes!\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmcxci{Je ne les ai pas pris comme témoins de la création des cieux et de la terre, ni de la création de leurs propres personnes. Et Je n'ai pas pris comme aides ceux qui égarent.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmcxcii{Et le jour où Il dira: «Appelez ceux que vous prétendiez être Mes associés». Ils les invoqueront; mais eux ne leur répondront pas, Nous aurons placé entre eux une vallée de perdition.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmcxciii{Et les criminels verront le Feu. Ils seront alors convaincus qu'ils y tomberont et n'en trouveront pas d'échappatoire.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmcxciv{Et assurément, Nous avons déployé pour les gens, dans ce Coran, toutes sortes d'exemples. L'homme cependant, est de tous les êtres le plus grand disputeur.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmcxcv{Qu'est-ce qui a donc empêché les gens de croire, lorsque le guide leur est venu, ainsi que de demander pardon à leur Seigneur, si ce n'est qu'ils veulent subir le sort des Anciens, ou se trouver face à face avec le châtiment.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmcxcvi{Et Nous n'envoyons des messagers que pour annoncer la bonne nouvelle et avertir. Et ceux qui ont mécru disputent avec de faux arguments, afin d'infirmer la vérité et prennent en raillerie Mes versets (le Coran) ainsi que ce (châtiment) dont on les a avertis.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmcxcvii{Quel pire injuste que celui à qui on a rappelé les versets de son Seigneur et qui en détourna le dos en oubliant ce que ses deux mains ont commis? Nous avons placé des voiles sur leurs cœurs, de sorte qu'ils ne comprennent pas (le Coran), et mis une lourdeur dans leurs oreilles. Même si tu les appelles vers la bonne voie, jamais ils ne pourront donc se guider.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmcxcviii{Et ton Seigneur est le Pardonneur, le Détenteur de la miséricorde. S'Il s'en prenait à eux pour ce qu'ils ont acquis, Il leur hâterait certes le châtiment. Mais il y a pour eux un terme fixé (pour l'accomplissement des menaces) contre lequel ils ne trouveront aucun refuge.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmcxcix{Et voilà les villes que Nous avons fait périr quand leurs peuples commirent des injustices et Nous avons fixé un rendez-vous pour leur destruction.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmcc{(Rappelle-toi) quand Moïse dit à son valet: «Je n'arrêterai pas avant d'avoir atteint le confluent des deux mers, dussé-je marcher de longues années».\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmcci{Puis, lorsque tous deux eurent atteint le confluent, Ils oublièrent leur poisson qui prit alors librement son chemin dans la mer.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmccii{Puis, lorsque tous deux eurent dépassé [cet endroit,] il dit à son valet: «Apporte-nous notre déjeuner: nous avons rencontré de la fatigue dans notre présent voyage».\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmcciii{[Le valet lui] dit: «Quand nous avons pris refuge près du rocher, vois-tu, j'ai oublié le poisson - le Diable seul m'a fait oublier de (te) le rappeler - et il a curieusement pris son chemin dans la mer».\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmcciv{[Moïse] dit: «Voilà ce que nous cherchions». Puis, ils retournèrent sur leurs pas, suivant leurs traces.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmccv{Ils trouvèrent l'un de Nos serviteurs à qui Nous avions donné une grâce, de Notre part, et à qui Nous avions enseigné une science émanant de Nous.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmccvi{Moïse lui dit: «Puis-je te suivre, à la condition que tu m'apprennes de ce qu'on t'a appris concernant une bonne direction?»\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmccvii{[L'autre] dit: «Vraiment, tu ne pourras jamais être patient avec moi.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmccviii{Comment endurerais-tu sur des choses que tu n'embrasses pas par ta connaissance?»\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmccix{[Moïse] lui dit: «Si Allah veut, tu me trouveras patient; et je ne désobéirai à aucun de tes ordres».\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmccx{«Si tu me suis, dit [l'autre,] ne m'interroge sur rien tant que je ne t'en aurai pas fait mention».\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmccxi{Alors les deux partirent. Et après qu'ils furent montés sur un bateau, l'homme y fit une brèche. [Moïse] lui dit: «Est-ce pour noyer ses occupants que tu l'as ébréché? Tu as commis, certes, une chose monstrueuse!»\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmccxii{[L'autre] répondit: «N'ai-je pas dit que tu ne pourrais pas garder patience en ma compagnie?»\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmccxiii{«Ne t'en prends pas à moi, dit [Moïse,] pour un oubli de ma part; et ne m'impose pas de grande difficulté dans mon affaire».\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmccxiv{Puis ils partirent tous deux; et quand ils eurent rencontré un enfant, [l'homme] le tua. Alors [Moïse] lui dit: «As-tu tué un être innocent, qui n'a tué personne? Tu as commis certes, une chose affreuse!»\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmccxv{[L'autre] lui dit: «Ne t'ai je pas dit que tu ne pourrais pas garder patience en ma compagnie?»\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmccxvi{«Si, après cela, je t'interroge sur quoi que ce soit, dit [Moïse], alors ne m'accompagne plus. Tu seras alors excusé de te séparer de moi».\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmccxvii{Ils partirent donc tous deux; et quand ils furent arrivés à un village habité, ils demandèrent à manger à ses habitants; mais ceux-ci refusèrent de leur donner l'hospitalité. Ensuite, ils y trouvèrent un mur sur le point de s'écrouler. L'homme le redressa. Alors [Moïse] lui dit: «Si tu voulais, tu aurais bien pu réclamer pour cela un salaire».\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmccxviii{«Ceci [marque] la séparation entre toi et moi, dit [l'homme,] Je vais t'apprendre l'interprétation de ce que tu n'as pu supporter avec patience.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmccxix{Pour ce qui est du bateau, il appartenait à des pauvres gens qui travaillaient en mer. Je voulais donc le rendre défectueux, car il y avait derrière eux un roi qui saisissait de force tout bateau.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmccxx{Quant au garçon, ses père et mère étaient des croyants; nous avons craint qu'il ne leur imposât la rébellion et la mécréance.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmccxxi{Nous avons donc voulu que leur Seigneur leur accordât en échange un autre plus pur et plus affectueux.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmccxxii{Et quant au mur, il appartenait à deux garçons orphelins de la ville, et il y avait dessous un trésor à eux; et leur père était un homme vertueux. Ton Seigneur a donc voulu que tous deux atteignent leur maturité et qu'ils extraient, [eux-mêmes] leur trésor, par une miséricorde de ton Seigneur. Je ne l'ai d'ailleurs pas fait de mon propre chef. Voilà l'interprétation de ce que tu n'as pas pu endurer avec patience».\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmccxxiii{Et ils t'interrogent sur Dûl-Qarnayn. Dis: «Je vais vous en citer quelque fait mémorable».\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmccxxiv{Vraiment, Nous avons affermi sa puissance sur terre, et Nous lui avons donné libre voie à toute chose.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmccxxv{Il suivit donc une voie.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmccxxvi{Et quand il eut atteint le Couchant, il trouva que le soleil se couchait dans une source boueuse, et, auprès d'elle il trouva une peuplade [impie]. Nous dîmes: «O Dûl-Qarnayn! ou tu les châties, ou tu uses de bienveillance à leur égard».\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmccxxvii{Il dit: «Quant à celui qui est injuste, nous le châtierons; ensuite il sera ramené vers son Seigneur qui le punira d'un châtiment terrible.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmccxxviii{Et quant à celui qui croit et fait bonne œuvre, il aura, en retour, la plus belle récompense. Et nous lui donnerons des ordres faciles à exécuter».\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmccxxix{Puis, il suivit (une autre) voie.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmccxxx{Et quand il eut atteint le Levant, il trouva que le soleil se levait sur une peuplade à laquelle Nous n'avions pas donné de voile pour s'en protéger.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmccxxxi{Il en fut ainsi et Nous embrassons de Notre Science ce qu'il détenait.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmccxxxii{Puis, il suivit (une autre) voie.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmccxxxiii{Et quand il eut atteint un endroit situé entre les Deux Barrières (montagnes), il trouva derrière elles une peuplade qui ne comprenait presque aucun langage.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmccxxxiv{Ils dirent: «O Dûl-Qarnayn, les Yâ jûj et les Mâ jûj commettent du désordre sur terre. Est-ce que nous pourrons t'accorder un tribut pour construire une barrière entre eux et nous?»\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmccxxxv{Il dit: «Ce que Mon Seigneur m'a conféré vaut mieux (que vos dons). Aidez-moi donc avec votre force et je construirai un remblai entre vous et eux.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmccxxxvi{Apportez-moi des blocs de fer». Puis, lorsqu'il en eut comblé l'espace entre les deux montagnes, il dit: «Soufflez!» Puis, lorsqu'il l'eut rendu une fournaise, il dit: «Apportez-moi du cuivre fondu, que je le déverse dessus».\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmccxxxvii{Ainsi, ils ne purent guère l'escalader ni l'ébrécher non plus.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mmccxxxviii{Il dit: «C'est une miséricorde de la part de mon Seigneur. Mais, lorsque la promesse de mon Seigneur viendra, Il le nivellera. Et la promesse de mon Seigneur est vérité».\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mmccxxxix{Nous les laisserons, ce jour-là, déferler comme les flots les uns sur les autres, et on soufflera dans la Trompe et Nous les rassemblerons tous.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mmccxl{Et ce jour-là Nous présenterons de près l'Enfer aux mécréants,\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mmccxli{dont les yeux étaient couverts d'un voile qui les empêchait de penser à Moi, et ils ne pouvaient rien entendre non plus.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mmccxlii{Ceux qui ont mécru, comptent-ils donc pouvoir prendre, pour alliés, Mes serviteurs en dehors de Moi? Nous avons préparé l'Enfer comme résidence pour les mécréants.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mmccxliii{Dis: «Voulez-vous que Nous vous apprenions lesquels sont les plus grands perdants, en œuvres?\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mmccxliv{Ceux dont l'effort, dans la vie présente, s'est égaré, alors qu'ils s'imaginent faire le bien.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mmccxlv{Ceux-là qui ont nié les signes de leur Seigneur, ainsi que Sa rencontre. Leurs actions sont donc vaines». Nous ne leur assignerons pas de poids au Jour de la Résurrection.\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mmccxlvi{C'est que leur rétribution sera l'Enfer, pour avoir mécru et pris en raillerie Mes signes (enseignements) et Mes messagers.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mmccxlvii{Ceux qui croient et font de bonnes œuvres auront pour résidence les Jardins du «Firdaws,» (Paradis),\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mmccxlviii{où ils demeureront éternellement, sans désirer aucun changement.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mmccxlix{Dis: «Si la mer était une encre [pour écrire] les paroles de mon Seigneur, certes la mer s'épuiserait avant que ne soient épuisées les paroles de mon Seigneur, quand même Nous lui apporterions son équivalent comme renfort.»\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mmccl{Dis: «Je suis en fait un être humain comme vous. Il m'a été révélé que votre Dieu est un Dieu unique! Quiconque, donc, espère rencontrer son Seigneur, qu'il fasse de bonnes actions et qu'il n'associe dans son adoration aucun autre à son Seigneur».\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mmccli{\basmalahfr Kâf, Hâ', Yâ', 'Aîn, Sâd.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmcclii{C'est un récit de la miséricorde de ton Seigneur envers Son serviteur Zacharie.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmccliii{Lorsqu'il invoqua son Seigneur d'une invocation secrète,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmccliv{et dit: «O mon Seigneur, mes os sont affaiblis et ma tête s'est enflammée de cheveux blancs. [Cependant], je n'ai jamais été malheureux [déçu] en te priant, ô mon Seigneur.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmcclv{Je crains [le comportement] de mes héritiers, après moi. Et ma propre femme est stérile. Accorde-moi, de Ta part, un descendant\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmcclvi{qui hérite de moi et hérite de la famille de Jacob. Et fais qu'il te soit agréable, ô mon Seigneur».\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmcclvii{«O Zacharie, Nous t'annonçons la bonne nouvelle d'un fils. Son nom sera Yahya [Jean]. Nous ne lui avons pas donné auparavant d'homonyme».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmcclviii{Et [Zacharie dit]: «O mon Seigneur, comment aurai-je un fils, quand ma femme est stérile et que je suis très avancé en vieillesse?»\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmcclix{[Allah] lui dit: «Ainsi sera-t-il! Ton Seigneur a dit: «Ceci m'est facile. Et avant cela, Je t'ai créé alors que tu n'étais rien».\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmcclx{«O mon Seigneur, dit [Zacharie], accorde-moi un signe». «Ton signe, dit [Allah,] sera que tu ne pourras pas parler aux gens pendant trois nuits tout en étant bien portant.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmcclxi{Il sortit donc du sanctuaire vers son peuple; puis il leur fit signe de prier matin et soir.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmcclxii{... «O Yahya, tiens fermement au Livre (la Thora)!» Nous lui donnâmes la sagesse alors qu'il était enfant,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmcclxiii{ainsi que la tendresse de Notre part et la pureté. Il était pieux,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmcclxiv{et dévoué envers ses père et mère; et ne fut ni violent ni désobéissant.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmcclxv{Que la paix soit sur lui le jour où il naquit, le jour où il mourra, et le jour où il sera ressuscité vivant!\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmcclxvi{Mentionne, dans le Livre (le Coran), Marie, quand elle se retira de sa famille en un lieu vers l'Orient.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmcclxvii{Elle mit entre elle et eux un voile. Nous lui envoyâmes Notre Esprit (Gabriel), qui se présenta à elle sous la forme d'un homme parfait.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmcclxviii{Elle dit: «Je me réfugie contre toi auprès du Tout Miséricordieux. Si tu es pieux, [ne m'approche point].»\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmcclxix{Il dit: «Je suis en fait un Messager de ton Seigneur pour te faire don d'un fils pur».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmcclxx{Elle dit: «Comment aurais-je un fils, quand aucun homme ne m'a touchée, et que je ne suis pas prostituée?»\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmcclxxi{Il dit: «Ainsi sera-t-il! Cela M'est facile, a dit ton Seigneur! Et Nous ferons de lui un signe pour les gens, et une miséricorde de Notre part. C'est une affaire déjà décidée».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmcclxxii{Elle devint donc enceinte [de l'enfant], et elle se retira avec lui en un lieu éloigné.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmcclxxiii{Puis les douleurs de l'enfantement l'amenèrent au tronc du palmier, et elle dit: «Malheur à moi! Que je fusse morte avant cet instant! Et que je fusse totalement oubliée!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmcclxxiv{Alors, il l'appela d'au-dessous d'elle, [lui disant:] «Ne t'afflige pas. Ton Seigneur a placé à tes pieds une source.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmcclxxv{Secoue vers toi le tronc du palmier: il fera tomber sur toi des dattes fraîches et mûres.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmcclxxvi{Mange donc et bois et que ton œil se réjouisse! Si tu vois quelqu'un d'entre les humains, dis [lui:] «Assurément, j'ai voué un jeûne au Tout Miséricordieux: je ne parlerai donc aujourd'hui à aucun être humain».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmcclxxvii{Puis elle vint auprès des siens en le portant [le bébé]. Ils dirent: «O Marie, tu as fait une chose monstrueuse!\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmcclxxviii{«Sœur de Hârûn, ton père n'était pas un homme de mal et ta mère n'était pas une prostituée».\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmcclxxix{Elle fit alors un signe vers lui [le bébé]. Ils dirent: «Comment parlerions-nous à un bébé au berceau?»\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmcclxxx{Mais (le bébé) dit: «Je suis vraiment le serviteur d'Allah. Il m'a donné le Livre et m'a désigné Prophète.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxi{Où que je sois, Il m'a rendu béni; et Il m'a recommandé, tant que je vivrai, la prière et la Zakât;\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxii{et la bonté envers ma mère. Il ne m'a fait ni violent ni malheureux.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxiii{Et que la paix soit sur moi le jour où je naquis, le jour où je mourrai, et le jour où je serai ressuscité vivant.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxiv{Tel est Issa (Jésus), fils de Marie: parole de vérité, dont ils doutent.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxv{Il ne convient pas à Allah de S'attribuer un fils. Gloire et Pureté à Lui! Quand Il décide d'une chose, Il dit seulement: «Sois!» et elle est.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxvi{Certes, Allah est mon Seigneur tout comme votre Seigneur. Adorez-le donc. Voilà un droit chemin».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxvii{[par la suite,] les sectes divergèrent entre elles. Alors, malheur aux mécréants lors de la vue d'un jour terrible!\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxviii{Comme ils entendront et verront bien le jour où ils viendront à Nous! Mais aujourd'hui, les injustes sont dans un égarement évident.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmcclxxxix{Et avertis-les du jour du Regret, quand tout sera réglé; alors qu'ils sont [dans ce monde] inattentifs et qu'ils ne croient pas.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmccxc{C'est Nous, en vérité, qui hériterons la terre et tout ce qui s'y trouve, et c'est à Nous qu'ils seront ramenés.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmccxci{Et mentionne dans le Livre, Abraham. C'était un très véridique et un Prophète.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmccxcii{Lorsqu'il dit à son père: «O mon père, pourquoi adores-tu ce qui n'entend ni ne voit, et ne te profite en rien?\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmccxciii{O mon père, il m'est venu de la science ce que tu n'as pas reçu; suis-moi, donc, je te guiderai sur une voie droite.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmccxciv{O mon père, n'adore pas le Diable, car le Diable désobéit au Tout Miséricordieux.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmccxcv{O mon père, je crains qu'un châtiment venant du Tout Miséricordieux ne te touche et que tu ne deviennes un allié du Diable».\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmccxcvi{Il dit: «O Abraham, aurais-tu du dédain pour mes divinités? Si tu ne cesses pas, certes je te lapiderai, éloigne-toi de moi pour bien longtemps».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmccxcvii{«Paix sur toi», dit Abraham. «J'implorerai mon Seigneur de te pardonner car Il m'a toujours comblé de Ses bienfaits.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmccxcviii{Je me sépare de vous, ainsi que de ce que vous invoquez, en dehors d'Allah, et j'invoquerai mon Seigneur. J'espère ne pas être malheureux dans mon appel à mon Seigneur».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmccxcix{Puis, lorsqu'il se fut séparé d'eux et de ce qu'ils adoraient en dehors d'Allah, Nous lui fîmes don d'Isaac et de Jacob; et de chacun Nous fîmes un prophète.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmccc{Et Nous leur donnâmes de par Notre miséricorde, et Nous leur accordâmes un langage sublime de vérité.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmccci{Et mentionne dans le Livre Moïse. C'était vraiment un élu, et c'était un Messager et un prophète.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmcccii{Du côté droit du Mont (Sinaï) Nous l'appelâmes et Nous le fîmes approcher tel un confident.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmccciii{Et par Notre miséricorde, Nous lui donnâmes Aaron son frère comme prophète.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmccciv{Et mentionne Ismaël, dans le Livre. Il était fidèle à ses promesses; et c'était un Messager et un prophète.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmcccv{Et il commandait à sa famille la prière et la Zakât; et il était agréé auprès de son Seigneur.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmcccvi{Et mentionne Idris, dans le Livre. C'était un véridique et un prophète.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmcccvii{Et Nous l'élevâmes à un haut rang.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmcccviii{Voilà ceux qu'Allah a comblés de faveurs, parmi les prophètes, parmi les descendants d'Adam, et aussi parmi ceux que Nous avons transportés en compagnie de Noé, et parmi la descendance d'Abraham et d'Israël, et parmi ceux que Nous avons guidés et choisis. Quand les versets du Tout Miséricordieux leur étaient récités, ils tombaient prosternés en pleurant.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmcccix{Puis leur succédèrent des générations qui délaissèrent la prière et suivirent leurs passions. Ils se trouveront en perdition,\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmcccx{sauf celui qui se repent, croit et fait le bien: ceux-là entreront dans le Paradis et ne seront point lésés,\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmcccxi{aux jardins du séjour (éternel) que le Tout Miséricordieux a promis à Ses serviteurs, [qui ont cru] au mystère. Car Sa promesse arrivera sans nul doute.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmcccxii{On n'y entend nulle parole insignifiante; seulement: «Salâm»; et ils auront là leur nourriture, matin et soir.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmcccxiii{Voilà le Paradis dont Nous ferons hériter ceux de Nos serviteurs qui auront été pieux.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmcccxiv{«Nous ne descendons que sur ordre de ton Seigneur. A Lui tout ce qui est devant nous, tout ce qui est derrière nous et tout ce qui est entre les deux. Ton Seigneur n'oublie rien.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmcccxv{Il est le Seigneur des cieux et de la terre et de tout ce qui est entre eux. Adore-Le donc, et sois constant dans Son adoration. Lui connais-tu un homonyme?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmcccxvi{Et l'homme dit: «Une fois mort, me sortira-t-on vivant?»\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmcccxvii{L'homme ne se rappelle-t-il pas qu'avant cela, c'est Nous qui l'avons créé, alors qu'il n'était rien?\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmcccxviii{Par ton Seigneur! Assurément, Nous les rassemblerons, eux et les diables. Puis, Nous les placerons autour de l'Enfer, agenouillés.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmcccxix{Ensuite, Nous arracherons de chaque groupe ceux d'entre eux qui étaient les plus obstinés contre le Tout Miséricordieux.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmcccxx{Puis nous sommes Le meilleur à savoir ceux qui méritent le plus d'y être brûlés.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmcccxxi{Il n'y a personne parmi vous qui ne passera pas par [L'Enfer]: Car [il s'agit là] pour ton Seigneur d'une sentence irrévocable.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmcccxxii{Ensuite, Nous délivrerons ceux qui étaient pieux et Nous y laisserons les injustes agenouillés.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmcccxxiii{Et lorsque Nos versets évidents leur sont récités les mécréants disent à ceux qui croient: «Lequel des deux groupes a la situation la plus confortable et la meilleure compagnie?»\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmcccxxiv{Combien de générations, avant eux, avons-Nous fait périr, qui les surpassaient en biens et en apparence?\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmcccxxv{Dis: «Celui qui est dans l'égarement, que le Tout Miséricordieux prolonge sa vie pour un certain temps, jusqu'à ce qu'ils voient soit le châtiment, soit l'Heure dont ils sont menacés. Alors, ils sauront qui a la pire situation et la troupe la plus faible».\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmcccxxvi{Allah accroît la rectitude de ceux qui suivent le bon chemin, et les bonnes œuvres durables méritent auprès de ton Seigneur une meilleure récompense et une meilleure destination.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmcccxxvii{As-tu vu celui qui ne croit pas à Nos versets et dit: «On me donnera certes des biens et des enfants»?\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmcccxxviii{Est-il au courant de l'Inconnaissable ou a-t-il pris un engagement avec le Tout Miséricordieux?\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmcccxxix{Bien au contraire! Nous enregistrerons ce qu'il dit et accroîtrons son châtiment.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmcccxxx{C'est Nous qui hériterons ce dont il parle, tandis qu'il viendra à Nous, tout seul.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxi{Ils ont adopté des divinités en dehors d'Allah pour qu'ils leur soient des protecteurs (contre le châtiment).\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxii{Bien au contraire! [ces divinités] renieront leur adoration et seront pour eux des adversaires.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxiii{N'as-tu pas vu que Nous avons envoyé contre les mécréants des diables qui les excitent furieusement [à désobéir]?\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxiv{Ne te hâte donc pas contre eux: Nous tenons un compte précis de [tous leurs actes].\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxv{(Rappelle-toi) le jour où Nous rassemblerons les pieux sur des montures et en grande pompe, auprès du Tout Miséricordieux,\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxvi{et pousserons les criminels à l'Enfer comme (un troupeau) à l'abreuvoir,\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxvii{ils ne disposeront d'aucune intercession, sauf celui qui aura pris un engagement avec le Tout Miséricordieux.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxviii{Et ils ont dit: «Le Tout Miséricordieux S'est attribué un enfant!»\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmcccxxxix{Vous avancez certes là une chose abominable!\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmcccxl{Peu s'en faut que les cieux ne s'entrouvrent à ces mots, que la terre ne se fende et que les montagnes ne s'écroulent,\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmcccxli{du fait qu'ils ont attribué un enfant au Tout Miséricordieux,\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmcccxlii{alors qu'il ne convient nullement au Tout Miséricordieux d'avoir un enfant!\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmcccxliii{Tous ceux qui sont dans les cieux et sur la terre se rendront auprès du Tout Miséricordieux, [sans exception], en serviteurs.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmcccxliv{Il les a certes dénombrés et bien comptés.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmcccxlv{Et au Jour de la Résurrection, chacun d'eux se rendra seul auprès de Lui.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmcccxlvi{A ceux qui croient et font de bonnes œuvres, le Tout Miséricordieux accordera Son amour.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmcccxlvii{Nous l'avons rendu (le Coran) facile [à comprendre] en ta langue, afin que tu annonces par lui la bonne nouvelle aux gens pieux, et que, tu avertisses un peuple irréductible.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mmcccxlviii{Que de générations avant eux avons-Nous fait périr! En retrouves-tu un seul individu? ou en entends-tu le moindre murmure?\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mmcccxlix{\basmalahfr Tâ-Hâ.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmcccl{Nous n'avons point fait descendre sur toi le Coran pour que tu sois malheureux,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmcccli{si ce n'est qu'un Rappel pour celui qui redoute (Allah),\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmccclii{(et comme) une révélation émanant de Celui qui a créé la terre et les cieux sublimes.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmcccliii{Le Tout Miséricordieux S'est établi «Istawâ» sur le Trône.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmcccliv{A Lui appartient ce qui est dans les cieux, sur la terre, ce qui est entre eux et ce qui est sous le sol humide.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmccclv{Et si tu élèves la voix, Il connaît certes les secrets, même les plus cachés.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmccclvi{Allah! Point de divinité que Lui! Il possède les noms les plus beaux.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmccclvii{Le récit de Moïse t'est-il parvenu?\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmccclviii{Lorsqu'il vit du feu, il dit à sa famille: «Restez ici! Je vois du feu de loin; peut-être vous en apporterai-je un tison, ou trouverai-je auprès du feu de quoi me guider».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmccclix{Puis, lorsqu'il y arriva, il fut interpellé: «Moïse!\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmccclx{Je suis ton Seigneur. Enlève tes sandales: car tu es dans la vallée sacrée, Tuwâ.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmccclxi{Moi, Je t'ai choisi. Ecoute donc ce qui va être révélé.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmccclxii{Certes, c'est Moi Allah: point de divinité que Moi. Adore-Moi donc et accomplis la Salât pour te souvenir de Moi.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmccclxiii{L'Heure va certes arriver. Je la cache à peine, pour que chaque âme soit rétribuée selon ses efforts.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmccclxiv{Que celui qui n'y croit pas et qui suit sa propre passion ne t'en détourne pas. Sinon tu périras.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmccclxv{Et qu'est-ce qu'il y a dans ta main droite, ô Moïse?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmccclxvi{Il dit: «C'est mon bâton sur lequel je m'appuie, qui me sert à effeuiller (les arbres) pour mes moutons et j'en fais d'autres usages».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmccclxvii{[Allah lui] dit: «Jette-le, O Moïse».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmccclxviii{Il le jeta: et le voici un serpent qui rampait.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmccclxix{[Allah] dit: «Saisis-le et ne crains rien: Nous le ramènerons à son premier état.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmccclxx{Et serre ta main sous ton aisselle: elle en sortira blanche sans aucun mal, et ce sera là un autre prodige,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmccclxxi{afin que Nous te fassions voir de Nos prodiges les plus importants.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmccclxxii{Rends-toi auprès de Pharaon car il a outrepassé toute limite.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmccclxxiii{[Moïse] dit: «Seigneur, ouvre-moi ma poitrine,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmccclxxiv{et facilite ma mission,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmccclxxv{et dénoue un nœud en ma langue,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmccclxxvi{afin qu'ils comprennent mes paroles,\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmccclxxvii{et assigne-moi un assistant de ma famille:\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmccclxxviii{Aaron, mon frère,\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmccclxxix{accrois par lui ma force!\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmccclxxx{et associe-le à ma mission,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxi{afin que nous Te glorifions beaucoup,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxii{et que nous T'invoquions beaucoup.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxiii{Et Toi, certes, Tu es Très Clairvoyant sur nous».\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxiv{[Allah] dit: «Ta demande est exaucée, ô Moïse.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxv{Et Nous t'avons déjà favorisé une première fois\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxvi{lorsque Nous révélâmes à ta mère ce qui fut révélé:\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxvii{«Mets-le dans le coffret, puis jette celui-ci dans les flots pour qu'ensuite le fleuve le lance sur la rive; un ennemi à Moi et à lui le prendra». Et J'ai répandu sur toi une affection de Ma part, afin que tu sois élevé sous Mon œil.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxviii{Et vœilà que ta sœur (te suivait en) marchant et disait: «Puis-je vous indiquer quelqu'un qui se chargera de lui?» Ainsi, Nous te rapportâmes à ta mère afin que son oil se réjouisse et qu'elle ne s'afflige plus. Tu tuas ensuite un individu; Nous te sauvâmes des craintes qui t'oppressaient; et Nous t'imposâmes plusieurs épreuves. Puis tu demeuras des années durant chez les habitants de Madyan. Ensuite tu es venu, ô Moïse, conformément à un décret.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmccclxxxix{Et je t'ai assigné à Moi-Même.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmcccxc{Pars, toi et ton frère, avec Mes prodiges; et ne négligez pas de M'invoquer.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmcccxci{Allez vers Pharaon: il s'est vraiment rebellé.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmcccxcii{Puis, parlez-lui gentiment. Peut-être se rappellera-t-il ou [Me] craindra-t-il?\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmcccxciii{Ils dirent: «O notre Seigneur, nous craignons qu'il ne nous maltraite indûment, ou qu'il dépasse les limites».\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmcccxciv{Il dit: «Ne craignez rien. Je suis avec vous: J'entends et Je vois.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmcccxcv{Allez donc chez lui; puis, dites-lui: «Nous sommes tous deux, les messagers de ton Seigneur. Envoie donc les Enfants d'Israël en notre compagnie et ne les châtie plus. Nous sommes venus à toi avec une preuve de la part de ton Seigneur. Et que la paix soit sur quiconque suit le droit chemin!\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmcccxcvi{Il nous a été révélé que le châtiment est pour celui qui refuse d'avoir foi et qui tourne le dos».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmcccxcvii{Alors [Pharaon] dit: «Qui donc est votre Seigneur, ô Moïse?»\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmcccxcviii{«Notre Seigneur, dit Moïse, est Celui qui a donné à chaque chose sa propre nature puis l'a dirigée».\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmcccxcix{«Qu'en est-il donc des générations anciennes?» dit Pharaon.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmcd{Moïse dit: «La connaissance de leur sort est auprès de mon Seigneur, dans un livre. Mon Seigneur [ne commet] ni erreur ni oubli.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmcdi{C'est Lui qui vous a assigné la terre comme berceau et vous y a tracé des chemins; et qui du ciel a fait descendre de l'eau avec laquelle Nous faisons germer des couples de plantes de toutes sortes.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmcdii{«Mangez et faites paître votre bétail». Voilà bien là des signes pour les doués d'intelligence.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmcdiii{C'est d'elle (la terre) que Nous vous avons créés, et en elle Nous vous retournerons, et d'elle Nous vous ferons sortir une fois encore.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmcdiv{Certes Nous lui avons montré tous Nos prodiges; mais il les a démentis et a refusé (de croire).\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmcdv{Il dit: «Es-tu venu à nous, ô Moïse, pour nous faire sortir de notre terre par ta magie?\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmcdvi{Nous t'apporterons assurément une magie semblable. Fixe entre nous et toi un rendez-vous auquel ni nous ni toi ne manquerons, dans un lieu convenable».\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmcdvii{Alors Moïse dit: «Votre rendez-vous, c'est le jour de la fête. Et que les gens se rassemblent dans la matinée».\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmcdviii{Pharaon, donc, se retira. Ensuite il rassembla sa ruse puis vint (au rendez-vous).\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmcdix{Moïse leur dit: «Malheur à vous! Ne forgez pas de mensonge contre Allah: sinon par un châtiment Il vous anéantira. Celui qui forge (un mensonge) est perdu».\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmcdx{Là-dessus, ils se mirent à disputer entre eux de leur affaire et tinrent secrètes leurs discussions.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmcdxi{Ils dirent: «Voici deux magiciens qui, par leur magie, veulent vous faire abandonner votre terre et emporter votre doctrine idéale.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmcdxii{Rassemblez donc votre ruse puis venez en rangs serrés. Et celui qui aura le dessus aujourd'hui aura réussi».\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmcdxiii{Ils dirent: «O Moïse, ou tu jettes, [le premier ton bâton] ou que nous soyons les premiers à jeter?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmcdxiv{Il dit: «Jetez plutôt». Et voilà que leurs cordes et leurs bâtons lui parurent ramper par l'effet de leur magie.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmcdxv{Moïse ressentit quelque peur en lui-même.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmcdxvi{Nous lui dîmes: «N'aie pas peur, c'est toi qui auras le dessus.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmcdxvii{Jette ce qu'il y a dans ta main droite; cela dévorera ce qu'ils ont fabriqué. Ce qu'ils ont fabriqué n'est qu'une ruse de magicien; et le magicien ne réussit pas, où qu'il soit».\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmcdxviii{Les magiciens se jetèrent prosternés, disant: «Nous avons foi en le Seigneur d'Aaron et de Moïse».\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmcdxix{Alors Pharaon dit: «Avez-vous cru en lui avant que je ne vous y autorise? C'est lui votre chef qui vous a enseigné la magie. Je vous ferai sûrement, couper mains et jambes opposées, et vous ferai crucifier aux troncs des palmiers, et vous saurez, avec certitude, qui de nous est plus fort en châtiment et qui est le plus durable».\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmcdxx{«Par celui qui nous a créés, dirent-ils, nous ne te préférerons jamais à ce qui nous est parvenu comme preuves évidentes. Décrète donc ce que tu as à décréter. Tes décrets ne touchent que cette présente vie.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmcdxxi{Nous croyons en notre Seigneur, afin qu'Il nous pardonne nos fautes ainsi que la magie à laquelle tu nous as contraints». Et Allah est meilleur et éternel.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmcdxxii{Quiconque vient en criminel à son Seigneur, aura certes l'Enfer où il ne meurt ni ne vit.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmcdxxiii{Et quiconque vient auprès de Lui en croyant, après avoir fait de bonnes œuvres, voilà donc ceux qui auront les plus hauts rangs,\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmcdxxiv{les jardins du séjour (éternel), sous lesquels coulent les ruisseaux, où ils demeureront éternellement. Et voilà la récompense de ceux qui se purifient [de la mécréance et des péchés].\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmcdxxv{Nous révélâmes à Moïse: «Pars la nuit, à la tête de Mes serviteurs, puis, trace-leur un passage à sec dans la mer: sans craindre une poursuite et sans éprouver aucune peur».\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmcdxxvi{Pharaon les poursuivit avec ses armées. La mer les submergea bel et bien.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmcdxxvii{Pharaon égara ainsi son peuple et ne le mît pas sur le droit chemin.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmcdxxviii{O Enfants d'Israël, Nous vous avons déjà délivrés de votre ennemi, et Nous vous avons donné rendez-vous sur le flanc droit du Mont. Et Nous avons fait descendre sur vous la manne et les cailles.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmcdxxix{«Mangez des bonnes choses que Nous vous avons attribuées et ne vous montrez pas ingrats, sinon Ma colère s'abattra sur vous: et celui sur qui Ma colère s'abat, va sûrement vers l'abîme.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmcdxxx{Et je suis Grand Pardonneur à celui qui se repent, croit, fait bonne œuvre, puis se met sur le bon chemin».\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxi{«Pourquoi Moïse t'es-tu hâté de quitter ton peuple?»\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxii{Ils sont là sur mes traces, dit Moïse. Et je me suis hâté vers Toi, Seigneur, afin que Tu sois satisfait.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxiii{Allah dit: «Nous avons mis ton peuple à l'épreuve après ton départ. Et le Sâmirî les a égarés».\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxiv{Moïse retourna donc vers son peuple, courroucé et chagriné; il dit: «O mon peuple, votre Seigneur ne vous a-t-Il pas déjà fait une belle promesse? L'alliance a-t-elle donc été trop longue pour vous? ou avez-vous désiré que la colère de votre Seigneur s'abatte sur vous, pour avoir trahi votre engagement envers moi?»\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxv{Ils dirent: «Ce n'est pas de notre propre gré que nous avons manqué à notre engagement envers toi. Mais nous fûmes chargés de fardeaux d'ornements du peuple (de Pharaon); nous les avons donc jetés (sur le feu) tout comme le Sâmirî les a lancés.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxvi{Puis il en a fait sortir pour eux un veau, un corps à mugissement. Et ils ont dit: «C'est votre divinité et la divinité de Moïse; il a donc oublié»!\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxvii{Quoi! Ne voyaient-ils pas qu'il [le veau] ne leur rendait aucune parole et qu'il ne possédait aucun moyen de leur nuire ou de leur faire du bien?\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxviii{Certes, Aaron leur avait bien dit auparavant: «O mon peuple, vous êtes tombés dans la tentation (à cause du veau). Or, c'est le Tout Miséricordieux qui est vraiment votre Seigneur. Suivez-moi donc et obéissez à mon commandement».\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmcdxxxix{Ils dirent: «Nous continuerons à y être attachés, jusqu'à ce que Moïse retourne vers nous».\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmcdxl{Alors [Moïse] dit: «Qu'est-ce qui t'a empêché, Aaron, quand tu les as vus s'égarer,\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmcdxli{de me suivre? As-tu donc désobéi à mon commandement?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmcdxlii{[Aaron] dit: «O fils de ma mère, ne me prends ni par la barbe ni par la tête. Je craignais que tu ne dises: «Tu as divisé les enfants d'Israël et tu n'as pas observé mes ordres».\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmcdxliii{Alors [Moïse] dit: «Quel a été ton dessein? O Sâmirî?»\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmcdxliv{Il dit: «J'ai vu ce qu'ils n'ont pas vu: j'ai donc pris une poignée de la trace de l'Envoyé; puis, je l'ai lancée. Voilà ce que mon âme m'a suggéré».\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmcdxlv{«Va-t-en, dit [Moïse]. Dans la vie, tu auras à dire (à tout le monde): «Ne me touchez pas!» Et il y aura pour toi un rendez-vous que tu ne pourras manquer. Regarde ta divinité que tu as adorée avec assiduité. Nous la brûlerons certes, et ensuite, nous disperserons [sa cendre] dans les flots.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mmcdxlvi{En vérité, votre seul Dieu est Allah en dehors de qui il n'y a point de divinité. De Sa science Il embrasse tout.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mmcdxlvii{C'est ainsi que Nous te racontons les récits de ce qui s'est passé. C'est bien un rappel de Notre part que Nous t'avons apporté.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mmcdxlviii{Quiconque s'en détourne (de ce Coran), portera au jour de la résurrection un fardeau;\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mmcdxlix{ils resteront éternellement dans cet état, et quel mauvais fardeau pour eux au Jour de la Résurrection,\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mmcdl{Le jour où l'on soufflera dans la Trompe, ce jour-là Nous rassemblerons les criminels tout bleus (de peur)!\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mmcdli{Ils chuchoteront entre eux: «Vous n'êtes restés là que dix [jours]!»\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mmcdlii{Nous connaissons parfaitement ce qu'ils diront lorsque l'un d'entre eux dont la conduite est exemplaire dira: «Vous n'êtes restés qu'un jour».\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mmcdliii{Et ils t'interrogent au sujet des montagnes. Dis: «Mon Seigneur les dispersera comme la poussière,\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mmcdliv{et les laissera comme une plaine dénudée\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mmcdlv{dans laquelle tu ne verras ni tortuosité, ni dépression.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mmcdlvi{Ce jour-là, ils suivront le Convocateur sans tortuosité; et les voix baisseront devant le Tout Miséricordieux. Tu n'entendras alors qu'un chuchotement.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mmcdlvii{Ce jour-là, l'intercession ne profitera qu'à celui auquel le Tout Miséricordieux aura donné Sa permission et dont Il agréera la parole.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mmcdlviii{Il connaît ce qui est devant eux et ce qui est derrière eux, alors qu'eux-mêmes ne Le cernent pas de leur science.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mmcdlix{Et les visages s'humilieront devant Le Vivant, Celui qui subsiste par Lui-même «al-Qayyûm», et malheureux sera celui qui [se présentera devant Lui] chargé d'une iniquité.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mmcdlx{Et quiconque aura fait de bonnes œuvres tout en étant croyant, ne craindra ni injustice ni oppression.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mmcdlxi{C'est ainsi que nous l'avons fait descendre un Coran en [langue] arabe, et Nous y avons multiplié les menaces, afin qu'ils deviennent pieux ou qu'il les incite à s'exhorter?\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@mmcdlxii{Que soit éxalté Allah, le Vrai Souverain! Ne te hâte pas [de réciter] le Coran avant que ne te soit achevée sa révélation. Et dis: «O mon Seigneur, accroît mes connaissances!»\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@mmcdlxiii{En effet, Nous avons auparavant fait une recommandation à Adam; mais il oublia; et Nous n'avons pas trouvé chez lui de résolution ferme.\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@mmcdlxiv{Et quand Nous dîmes aux Anges: «Prosternez-vous devant Adam», ils se prosternèrent, excepté Iblis qui refusa.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@mmcdlxv{Alors Nous dîmes: «O Adam, celui-là est vraiment un ennemi pour toi et ton épouse. Prenez garde qu'il vous fasse sortir du Paradis, car alors tu seras malheureux.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@mmcdlxvi{Car tu n'y auras pas faim ni ne seras nu,\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@mmcdlxvii{tu n'y auras pas soif ni ne seras frappé par l'ardeur du soleil».\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@mmcdlxviii{Puis le Diable le tenta en disant: «O Adam, t'indiquerai-je l'arbre de l'éternité et un royaume impérissable?»\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@mmcdlxix{Tous deux (Adam et Eve) en mangèrent. Alors leur apparut leur nudité. Ils se mirent à se couvrir avec des feuilles du paradis. Adam désobéit ainsi à son Seigneur et il s'égara.\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@mmcdlxx{Son Seigneur l'a ensuite élu, agréé son repentir et l'a guidé.\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxi{Il dit: «Descendez d'ici, (Adam et Eve), [Vous serez] tous (avec vos descendants) ennemis les uns des autres. Puis, si jamais un guide vous vient de Ma part, quiconque suit Mon guide ne s'égarera ni ne sera malheureux.\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxii{Et quiconque se détourne de Mon Rappel, mènera certes, une vie pleine de gêne, et le Jour de la Résurrection Nous l'amènerons aveugle au rassemblement».\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxiii{Il dira: «O mon Seigneur, pourquoi m'as-Tu amené aveugle alors qu'auparavant je voyais?»\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxiv{[Allah lui] dira: «De même que Nos Signes (enseignements) t'étaient venus et que tu les as oubliés, ainsi aujourd'hui tu es oublié».\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxv{Ainsi sanctionnons-nous l'outrancier qui ne croit pas aux révélations de son Seigneur. Et certes, le châtiment de l'au-delà est plus sévère et plus durable.\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxvi{Cela ne leur a-t-il pas servi de direction, que Nous ayons fait périr avant eux tant de générations dans les demeures desquelles ils marchent maintenant? Voilà bien là des leçons pour les doués d'intelligence!\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxvii{N'eussent-été un décret préalable de ton Seigneur et aussi un terme déjà fixé, (leur châtiment) aurait été inévitable (et immédiat).\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxviii{Supporte patiemment ce qu'ils disent et célèbre Sa louange, avant le lever du soleil, avant son coucher et pendant la nuit; et exalte Sa Gloire aux extrémités du jour. Peut-être auras-tu satisfaction:\qt@no{(130)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxix{Et ne tends point les yeux vers ce dont Nous avons donné jouissance temporaire à certains groupes d'entre eux, comme décor de la vie présente, afin de les éprouver par cela. Ce qu'Allah fournit (au Paradis) est meilleur et plus durable.\qt@no{(131)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxx{Et commande à ta famille la Salât, et fais-la avec persévérance. Nous ne te demandons point de nourriture: c'est à Nous de te nourrir. La bonne fin est réservée à la piété.\qt@no{(132)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxi{Et ils disent: «Pourquoi ne nous apporte-t-il pas un miracle de son Seigneur? La Preuve (le Coran) de ce que contiennent les Ecritures anciennes ne leur est-elle pas venue?\qt@no{(133)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxii{Et si Nous les avions fait périr par un châtiment avant lui [Muhammad], ils auraient certainement dit: «O notre Seigneur, pourquoi ne nous as-Tu pas envoyé de Messager? Nous aurions alors suivi Tes enseignements avant d'avoir été humiliés et jetés dans l'ignominie».\qt@no{(134)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxiii{Dis: «Chacun attend. Attendez donc! Vous saurez bientôt qui sont les gens du droit chemin et qui sont les bien-guidés».\qt@no{(135)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxiv{\basmalahfr [L'échéance] du règlement de leur compte approche pour les hommes, alors que dans leur insouciance ils s'en détournent.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxv{Aucun rappel [de révélation] récente ne leur vient de leur Seigneur, sans qu'ils ne l'entendent en s'amusant,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxvi{leurs cœurs distraits; et les injustes tiennent des conversations secrètes et disent: «Ce n'est là qu'un être humain semblable à vous? Allez-vous donc vous adonner à la magie alors que vous voyez clair?»\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxvii{Il a répondu: «Mon Seigneur sait tout ce qui se dit au ciel et sur la terre; et Il est l'Audient, l'Omniscient».\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxviii{Mais ils dirent: «Voilà plutôt un amas de rêves! Ou bien Il l'a inventé. Ou, c'est plutôt un poète. Qu'il nous apporte donc un signe [identique] à celui dont furent chargés les premiers envoyés».\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmcdlxxxix{Pas une seule cité parmi celles que Nous avons fait périr avant eux n'avait cru [à la vue des miracles]. Ceux-ci croiront-ils donc?\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmcdxc{Nous n'avons envoyé avant toi que des hommes à qui Nous faisions des révélations. Demandez donc aux érudits du Livre, si vous ne savez pas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmcdxci{Et Nous n'en n'avons pas fait des corps qui ne consommaient pas de nourriture. Et ils n'étaient pas éternels.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmcdxcii{Puis Nous réalisâmes la promesse (qui leur avait été faite). Nous les sauvâmes avec ceux que Nous voulûmes [sauver]. Et Nous fîmes périr les outranciers.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmcdxciii{Nous avons assurément fait descendre vers vous un livre où se trouve votre rappel [ou votre renom]. Ne comprenez-vous donc pas?\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmcdxciv{Et que de cités qui ont commis des injustices, Nous avons brisées; et Nous avons créé d'autres peuples après eux.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmcdxcv{Quand [ces gens] sentirent Notre rigueur ils s'en enfuirent hâtivement.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmcdxcvi{Ne galopez point. Retournez plutôt au grand luxe où vous étiez et dans vos demeures, afin que vous soyez interrogés.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmcdxcvii{Ils dirent: «Malheur à nous! Nous étions vraiment injustes».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmcdxcviii{Telle ne cessa d'être leur lamentation jusqu'à ce que Nous les eûmes moissonnés et éteints.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmcdxcix{Ce n'est pas par jeu que Nous avons créé le ciel et la terre et ce qui est entre eux.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmd{Si Nous avions voulu prendre une distraction, Nous l'aurions prise de Nous-mêmes, si vraiment Nous avions voulu le faire.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmdi{Bien au contraire, Nous lançons contre le faux la vérité qui le subjugue, et le voilà qui disparaît. Et malheur à vous pour ce que vous attribuez [injustement à Allah].\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmdii{A Lui seul appartiennent tous ceux qui sont dans les cieux et sur la terre. Ceux qui sont auprès de Lui [les Anges] ne se considèrent point trop grands pour L'adorer et ne s'en lassent pas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmdiii{Ils exaltent Sa Gloire nuit et jour et ne s'interrompent point.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmdiv{Ont-ils pris des divinités qui peuvent ressusciter (les morts) de la terre?\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmdv{S'il y avait dans le ciel et la terre des divinités autres qu'Allah, tous deux seraient certes dans le désordre. Gloire, donc à Allah, Seigneur du Trône; Il est au-dessus de ce qu'ils Lui attribuent!\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmdvi{Il n'est pas interrogé sur ce qu'Il fait, mais ce sont eux qui devront rendre compte [de leurs actes].\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmdvii{Ont-ils pris des divinités en dehors de Lui? Dis: «Apportez votre preuve». Ceci est la révélation de ceux qui sont avec moi et de ceux qui étaient avant moi. Mais la plupart d'entre eux ne connaissent pas la vérité et s'en écartent.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmdviii{Et Nous n'avons envoyé avant toi aucun Messager à qui Nous n'ayons révélé: «Point de divinité en dehors de Moi. Adorez-Moi donc».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmdix{Et ils dirent: «Le Tout Miséricordieux s'est donné un enfant». Pureté à Lui! Mais ce sont plutôt des serviteurs honorés.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmdx{Ils ne devancent pas Son Commandement et agissent selon Ses ordres.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmdxi{Il sait ce qui est devant eux et ce qui derrière eux. Et ils n'intercèdent qu'en faveur de ceux qu'Il a agréés [tout en étant] pénétrés de Sa crainte.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmdxii{Et quiconque d'entre eux dirait: «Je suis une divinité en dehors de Lui». Nous le rétribuerons de l'Enfer. C'est ainsi que Nous rétribuons les injustes.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmdxiii{Ceux qui ont mécru, n'ont-ils pas vu que les cieux et la terre formaient une masse compacte? Ensuite Nous les avons séparés et fait de l'eau toute chose vivante. Ne croiront-ils donc pas?\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmdxiv{Et Nous avons placé des montagnes fermes dans la terre, afin qu'elle ne s'ébranle pas en les [entraînant]. Et Nous y avons placé des défilés servant de chemins afin qu'ils se guident.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmdxv{Et Nous avons fait du ciel un toit protégé. Et cependant ils se détournent de ses merveilles.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmdxvi{Et c'est Lui qui a créé la nuit et le jour, le soleil et la lune; chacun voguant dans une orbite.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmdxvii{Et Nous n'avons attribué l'immortalité à nul homme avant toi. Est-ce que si tu meurs, toi, ils seront, eux, éternels?\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmdxviii{Toute âme doit goûter la mort. Nous vous éprouverons par le mal et par le bien [à titre] de tentation. Et c'est à Nous que vous serez ramenés.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmdxix{Quand les mécréants te voient, ils ne te prennent qu'en dérision (disant): «Quoi! Est-ce-là celui qui médit de vos divinités?» Et ils nient [tout] rappel du Tout Miséricordieux.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmdxx{L'homme a été créé prompt dans sa nature. Je vous montrerai Mes signes [la réalisation de Mes menaces]. Ne me hâtez donc pas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmdxxi{Et ils disent: «A quand cette promesse si vous êtes véridiques?»\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmdxxii{Si [seulement] les mécréants connaissaient le moment où ils ne pourront empêcher le feu de leurs visages ni de leurs dos, et où ils ne seront point secourus.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmdxxiii{Mais non, cela leur viendra subitement et ils seront alors stupéfaits; ils ne pourront pas le repousser et on ne leur donnera pas de répit.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmdxxiv{On s'est moqué de messagers venus avant toi. Et ceux qui se sont moqués d'eux, se virent frapper de toutes parts par l'objet même de leurs moqueries.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmdxxv{Dis: «Qui vous protège la nuit et le jour, contre le [châtiment] du Tout Miséricordieux?» Pourtant ils se détournent du rappel de leur Seigneur.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmdxxvi{Ont-ils donc des divinités en dehors de Nous, qui peuvent les protéger? Mais celles-ci ne peuvent ni se secourir elles-mêmes, ni se faire assister contre Nous.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmdxxvii{Au contraire Nous avons accordé une jouissance [temporaire] à ceux-là comme à leurs ancêtres jusqu'à un âge avancé. Ne voient-ils pas que Nous venons à la terre que Nous réduisons de tous côtés? Seront-ils alors les vainqueurs?\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmdxxviii{Dis: «Je vous avertis par ce qui m'est révélé». Les sourds, cependant, n'entendent pas l'appel quand on les avertit.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmdxxix{Si un souffle du châtiment de ton Seigneur les effleurait, ils diraient alors: «Malheur à nous! Nous étions vraiment injustes».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmdxxx{Au Jour de la Résurrection, Nous placerons les balances exactes. Nulle âme ne sera lésée en rien, fût-ce du poids d'un grain de moutarde que Nous ferons venir. Nous suffisons largement pour dresser les comptes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmdxxxi{Nous avons déjà apporté à Moïse et Aaron le Livre du discernement (la Thora) ainsi qu'une lumière et un rappel pour les gens pieux,\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmdxxxii{qui craignent leur Seigneur malgré qu'ils ne Le voient pas, et redoutent l'Heure (la fin du monde).\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmdxxxiii{Et ceci [le Coran] est un rappel béni que Nous avons fait descendre. Allez-vous donc le renier?\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmdxxxiv{En effet, Nous avons mis auparavant Abraham sur le droit chemin. Et Nous en avions bonne connaissance.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmdxxxv{Quand il dit à son père et à son peuple: «Que sont ces statues auxquelles vous vous attachez?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmdxxxvi{ils dirent: «Nous avons trouvé nos ancêtres les adorant».\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmdxxxvii{Il dit: «Certainement, vous avez été, vous et vos ancêtres, dans un égarement évident».\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmdxxxviii{Ils dirent: «Viens-tu à nous avec la vérité ou plaisantes-tu?»\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmdxxxix{Il dit: «Mais votre Seigneur est plutôt le Seigneur des cieux et de la terre, et c'est Lui qui les a créés. Et je suis un de ceux qui en témoignent.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmdxl{Et par Allah! Je ruserai certes contre vos idoles une fois que vous serez partis».\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmdxli{Il les mit en pièces, hormis [la statue] la plus grande. Peut-être qu'ils reviendraient vers elle.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmdxlii{Ils dirent: «Qui a fait cela à nos divinités? Il est certes parmi les injustes».\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmdxliii{(Certains) dirent: «Nous avons entendu un jeune homme médire d'elles; il s'appelle Abraham».\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmdxliv{Ils dirent: «Amenez-le sous les yeux des gens afin qu'ils puissent témoigner.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmdxlv{(Alors) ils dirent: «Est-ce toi qui as fait cela à nos divinités, Abraham?»\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmdxlvi{Il dit: «C'est la plus grande d'entre elles que voici, qui l'a fait. Demandez-leur donc, si elles peuvent parler».\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmdxlvii{Se ravisant alors, ils se dirent entre eux: «C'est vous qui êtes les vrais injustes».\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmdxlviii{Puis ils firent volte-face et dirent: «Tu sais bien que celles-ci ne parlent pas».\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmdxlix{Il dit: «Adorez-vous donc, en dehors d'Allah, ce qui ne saurait en rien vous être utile ni vous nuire non plus.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmdl{Fi de vous et de ce que vous adorez en dehors d'Allah! Ne raisonnez-vous pas?»\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmdli{Ils dirent: «Brûlez-le. Secourez vos divinités si vous voulez faire quelque chose (pour elles)».\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmdlii{Nous dîmes: «O feu, sois pour Abraham une fraîcheur salutaire».\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmdliii{Ils voulaient ruser contre lui, mais ce sont eux que Nous rendîmes les plus grands perdants.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmdliv{Et Nous le sauvâmes, ainsi que Lot, vers une terre que Nous avions bénie pour tout l'univers.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmdlv{Et Nous lui donnâmes Isaac et, de surcroît Jacob, desquels Nous fîmes des gens de bien.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmdlvi{Nous les fîmes des dirigeants qui guidaient par Notre ordre. Et Nous leur révélâmes de faire le bien, d'accomplir la prière et d'acquitter la Zakât. Et ils étaient Nos adorateurs.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmdlvii{Et Lot! Nous lui avons apporté la capacité de juger et le savoir, et Nous l'avons sauvé de la cité où se commettaient les vices; ces gens étaient vraiment des gens du mal, des pervers.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmdlviii{et Nous l'avons fait entrer en Notre miséricorde. Il était vraiment du nombre des gens de bien.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmdlix{Et Noé, quand auparavant il fit son appel. Nous l'exauçâmes et Nous le sauvâmes, ainsi que sa famille, de la grande angoisse,\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmdlx{et Nous le secourûmes contre le peuple qui traitait Nos prodiges de mensonges. Ils furent vraiment des gens du Mal. Nous les noyâmes donc tous.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmdlxi{Et David, et Salomon, quand ils eurent à juger au sujet d'un champ cultivé où des moutons appartenant à une peuplade étaient allés paître, la nuit. Et Nous étions témoin de leur jugement.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmdlxii{Nous la fîmes comprendre à Salomon. Et à chacun Nous donnâmes la faculté de juger et le savoir. Et Nous asservîmes les montagnes à exalter Notre Gloire en compagnie de David, ainsi que les oiseaux. Et c'est Nous qui sommes le Faiseur.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmdlxiii{Nous lui (David) apprîmes la fabrication des cottes de mailles afin qu'elles vous protègent contre vos violences mutuelles (la guerre). En êtes-vous donc reconnaissants?\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmdlxiv{Et (Nous avons soumis) à Salomon le vent impétueux qui, par son ordre, se dirigea vers la terre que Nous avions bénie. Et Nous sommes à même de tout savoir,\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmdlxv{et parmi les diables il en était qui plongeaient pour lui et faisaient d'autres travaux encore, et Nous les surveillions Nous-mêmes.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmdlxvi{Et Job, quand il implora son Seigneur: «Le mal m'a touché. Mais Toi, tu es le plus miséricordieux des miséricordieux»!\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmdlxvii{Nous l'exauçâmes, enlevâmes le mal qu'il avait, lui rendîmes les siens et autant qu'eux avec eux, par miséricorde de Notre part et en tant que rappel aux adorateurs.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmdlxviii{Et Ismaël, Idris, et Dûl-Kifl! qui étaient tous endurants;\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmdlxix{que Nous fîmes entrer en Notre miséricorde car ils étaient vraiment du nombre des gens de bien.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmdlxx{Et Dû'n-Nûn (Jonas) quand il partit, irrité. Il pensa que Nous N'allions pas l'éprouver. Puis il fit, dans les ténèbres, l'appel que voici: «Pas de divinité à part Toi! Pureté à Toi! J'ai été vraiment du nombre des injustes».\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmdlxxi{Nous l'exauçâmes et le sauvâmes de son angoisse. Et c'est ainsi que Nous sauvons les croyants.\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmdlxxii{Et Zacharie, quand il implora son Seigneur: «Ne me laisse pas seul, Seigneur, alors que Tu es le meilleur des héritiers».\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmdlxxiii{Nous l'exauçâmes, lui donnâmes Yahya et guérîmes son épouse. Ils concouraient au bien et Nous invoquaient par amour et par crainte. Et ils étaient humbles devant Nous.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmdlxxiv{Et celle [la vierge Marie] qui avait préservé sa chasteté! Nous insufflâmes en elle un souffle (de vie) venant de Nous et fîmes d'elle ainsi que de son fils, un signe [miracle] pour l'univers.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmdlxxv{Certes, cette communauté qui est la vôtre est une communauté unique, et Je suis votre Seigneur. Adorez-Moi donc.\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmdlxxvi{Ils se sont divisés en sectes. Mais tous, retourneront à Nous.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmdlxxvii{Quiconque fait de bonnes œuvres tout en étant croyant, on ne méconnaîtra pas son effort, et Nous le lui inscrivons [à son actif].\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmdlxxviii{Il est défendu [aux habitants] d'une cité que Nous avons fait périr de revenir [à la vie d'ici-bas]!\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmdlxxix{Jusqu'à ce que soient relâchés les Yâjûj et les Mâjûj et qu'ils se précipiteront de chaque hauteur;\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmdlxxx{c'est alors que la vraie promesse s'approchera, tandis que les regards de ceux qui ont mécru se figent: «Malheur à nous! Nous y avons été inattentifs. Bien plus, nous étions des injustes».\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxi{«Vous serez, vous et ce que vous adoriez en dehors d'Allah, le combustible de l'Enfer, vous vous y rendrez tous.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxii{Si ceux-là étaient vraiment des divinités, ils n'y entreraient pas; et tous y demeureront éternellement.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxiii{Ils y pousseront des gémissements, et n'y entendront rien.\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxiv{En seront écartés, ceux à qui étaient précédemment promises de belles récompenses de Notre part.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxv{Ils n'entendront pas son sifflement et jouiront éternellement de ce que leurs âmes désirent.\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxvi{La grande terreur ne les affligera pas, et les Anges les accueilleront: «voici le jour qui vous a été promis».\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxvii{Le jour où Nous plierons le ciel comme on plie le rouleau des livres. Tout comme Nous avons commencé la première création, ainsi Nous la répéterons; c'est une promesse qui Nous incombe et Nous l'accomplirons!\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxviii{Et Nous avons certes écrit dans le Zabûr, après l'avoir mentionné (dans le Livre céleste), que la terre sera héritée par Mes bons serviteurs».\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mmdlxxxix{Il y a en cela [ces enseignements] une communication à un peuple d'adorateurs!\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mmdxc{Et Nous ne t'avons envoyé qu'en miséricorde pour l'univers.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mmdxci{Dis: «Voilà ce qui m'est révélé: Votre Dieu est un Dieu unique; Etes-vous Soumis?» [décidés à embrasser l'Islam]\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mmdxcii{Si ensuite ils se détournent dis alors: «Je vous ai avertis en toute équité; je ne sais si ce qui vous est promis est proche ou lointain.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mmdxciii{Il connaît ce que vous dites à haute voix et ce que vous cachez.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mmdxciv{Et je ne sais pas; ceci est peut-être une tentation pour vous et une jouissance pour un certain temps»!\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mmdxcv{Il dit: «Seigneur, juge en toute justice! Et Notre Seigneur le Tout Miséricordieux, c'est Lui dont le secours est imploré contre vos assertions».\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mmdxcvi{\basmalahfr O hommes! Craignez votre Seigneur. Le séisme [qui précédera] l'Heure est une chose terrible.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmdxcvii{Le jour où vous le verrez, toute nourrice oubliera ce qu'elle allaitait, et toute femelle enceinte avortera de ce qu'elle portait. Et tu verras les gens ivres, alors qu'ils ne le sont pas. Mais le châtiment d'Allah est dur.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmdxcviii{Et il y a des gens qui discutent au sujet d'Allah sans aucune science, et qui suivent tout diable rebelle.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmdxcix{Il a été prescrit à l'égard de ce dernier qu'il égarera quiconque le prendra pour maître, et qu'il le guidera vers le châtiment de la fournaise.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmdc{O hommes! Si vous doutez au sujet de la Résurrection, c'est Nous qui vous avons créés de terre, puis d'une goutte de sperme, puis d'une adhérence puis d'un embryon [normalement] formé aussi bien qu'informe pour vous montrer [Notre Omnipotence] et Nous déposerons dans les matrices ce que Nous voulons jusqu'à un terme fixé. Puis Nous vous en sortirons [à l'état] de bébé, pour qu'ensuite vous atteignez votre maturité. Il en est parmi vous qui meurent [jeunes] tandis que d'autres parviennent au plus vil de l'âge si bien qu'ils ne savent plus rien de ce qu'ils connaissaient auparavant. De même tu vois la terre desséchée: dès que Nous y faisons descendre de l'eau elle remue, se gonfle, et fait pousser toutes sortes de splendides couples de végétaux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmdci{Il en est ainsi parce qu'Allah est la vérité; et c'est Lui qui rend la vie aux morts; et c'est Lui qui est Omnipotent.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmdcii{Et que l'Heure arrivera; pas de doute à son sujet, et qu'Allah ressuscitera ceux qui sont dans les tombeaux.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmdciii{Or, il y a des gens qui discutent au sujet d'Allah sans aucune science, ni guide, ni Livre pour les éclairer,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmdciv{affichant une attitude orgueilleuse pour égarer les gens du sentier d'Allah. A lui l'ignominie ici-bas; et Nous Lui ferons goûter le Jour de la Résurrection, le châtiment de la fournaise.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmdcv{Voilà, pour ce que tes deux mains ont préparé (ici-bas)! Cependant, Allah n'est point injuste envers Ses serviteurs.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmdcvi{Il en est parmi les gens qui adorent Allah marginalement. S'il leur arrive un bien, ils s'en tranquillisent, et s'il leur arrive une épreuve, ils détournent leur visage, perdant ainsi (le bien) de l'ici-bas et de l'au-delà. Telle est la perte évidente!\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmdcvii{Ils invoquent en dehors d'Allah, ce qui ne peut ni leur nuire ni leur profiter. Tel est l'égarement profond!\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmdcviii{Ils invoquent ce dont le mal est certainement plus proche que l'utilité. Quel mauvais allié, et quel mauvais compagnon!\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmdcix{Ceux qui croient et font de bonnes œuvres, Allah les fait entrer aux Jardins sous lesquels coulent les ruisseaux, car Allah fait certes ce qu'Il veut.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmdcx{Celui qui pense qu'Allah ne le secourra pas dans l'ici-bas et dans l'au-delà qu'il tende une corde jusqu'au ciel, puis qu'il la coupe, et qu'il voie si sa ruse va faire disparaître ce qui l'enrage.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmdcxi{C'est ainsi que Nous le fîmes descendre (Le Coran) en versets clairs et qu'Allah guide qui Il veut.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmdcxii{Certes, ceux qui ont cru, les Juifs, les Sabéens [les adorateurs des étoiles], les Nazaréens, les Mages et ceux qui donnent à Allah des associés, Allah tranchera entre eux le jour du Jugement, car Allah est certes témoin de toute chose.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmdcxiii{N'as-tu pas vu que c'est devant Allah que se prosternent tous ceux qui sont dans les cieux et tous ceux qui sont sur la terre, le soleil, la lune, les étoiles, les montagnes, les arbres, les animaux, ainsi que beaucoup de gens? Il y en a aussi beaucoup qui méritent le châtiment. Et quiconque Allah avilit n'a personne pour l'honorer, car Allah fait ce qu'il veut.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmdcxiv{Voici deux clans adverses qui disputaient au sujet de leur Seigneur. A ceux qui ne croient pas, on taillera des vêtements de feu, tandis que sur leurs têtes on versera de l'eau bouillante,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmdcxv{qui fera fondre ce qui est dans leurs ventres de même que leurs peaux.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmdcxvi{Et il y aura pour eux des maillets de fer.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmdcxvii{Toutes les fois qu'ils voudront en sortir (pour échapper) à la détresse, on les y remettra et (on leur dira): «Goûtez au châtiment de la Fournaise.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmdcxviii{Certes Allah introduit ceux qui croient et font de bonnes œuvres aux Jardins sous lesquels coulent les ruisseaux. Là, ils seront parés de bracelets d'or, et aussi de perles; et leurs vêtements y seront de soie.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmdcxix{Ils ont été guidés vers la bonne parole et ils ont été guidés vers le chemin Du Digne des louanges.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmdcxx{Mais ceux qui mécroient et qui obstruent le sentier d'Allah et celui de la Mosquée sacrée, que Nous avons établie pour les gens: aussi bien les résidents que ceux de passage... Quiconque cherche à y commettre un sacrilège injustement, Nous lui ferons goûter un châtiment douloureux,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmdcxxi{Et quand Nous indiquâmes pour Abraham le lieu de la Maison (La Kaaba) [en lui disant]: «Ne M'associe rien; et purifie Ma Maison pour ceux qui tournent autour, pour ceux qui s'y tiennent debout et pour ceux qui s'y inclinent et se prosternent».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmdcxxii{Et fais aux gens une annonce pour le Hajj. Ils viendront vers toi, à pied, et aussi sur toute monture, venant de tout chemin éloigné,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmdcxxiii{pour participer aux avantages qui leur ont été accordés et pour invoquer le nom d'Allah aux jours fixés, sur la bête de cheptel qu'Il leur a attribuée, «Mangez-en vous-mêmes et faites-en manger le besogneux misérable.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmdcxxiv{Puis qu'ils mettent fin à leurs interdits (qu'ils nettoient leurs corps), qu'ils remplissent leurs vœux, et qu'ils fassent les circuits autour de l'Antique Maison».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmdcxxv{Voilà [ce qui doit être observé] et quiconque prend en haute considération les limites sacrées d'Allah cela lui sera meilleur auprès de son Seigneur. Le bétail, sauf ce qu'on vous a cité, vous a été rendu licite. Abstenez-vous de la souillure des idoles et abstenez-vous des paroles mensongères.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmdcxxvi{(Soyez) exclusivement [acquis à la religion] d'Allah ne Lui associez rien; car quiconque associe à Allah, c'est comme s'il tombait du haut du ciel et que les oiseaux le happaient, ou que le vent le précipitait dans un abîme très profond.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmdcxxvii{Voilà [ce qui est prescrit]. Et quiconque exalte les injonctions sacrées d'Allah, s'inspire en effet de la piété des cœurs.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmdcxxviii{[De ces bêtes-là] vous tirez des avantages jusqu'à un terme fixé; puis son lieu d'immolation est auprès de l'Antique Maison.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmdcxxix{A chaque communauté, Nous avons assigné un rite sacrificiel, afin qu'ils prononcent le nom d'Allah sur la bête de cheptel qu'Il leur a attribuée. Votre Dieu est certes un Dieu unique. Soumettez-vous donc à Lui. Et fais bonne annonce à ceux qui s'humilient,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmdcxxx{ceux dont les cœurs frémissent quand le nom d'Allah est mentionné, ceux qui endurent ce qui les atteint et ceux qui accomplissent la Salât et dépensent de ce que Nous leur avons attribué.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxi{Nous vous avons désigné les chameaux (et les vaches) bien portants pour certains rites établis par Allah. Il y a en eux pour vous un bien. Prononcez donc sur eux le nom d'Allah, quand ils ont eu la patte attachée, [prêts à être immolés]. Puis, lorsqu'ils gisent sur le flanc, mangez-en, et nourrissez-en le besogneux discret et le mendiant. Ainsi Nous vous les avons assujettis afin que vous soyez reconnaissants.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxii{Ni leurs chairs ni leurs sangs n'atteindront Allah, mais ce qui L'atteint de votre part c'est la piété. Ainsi vous les a-t-Il assujettis afin que vous proclamiez la grandeur d'Allah, pour vous avoir mis sur le droit chemin. Et annonce la bonne nouvelle aux bienfaisants.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxiii{Allah prend la défense de ceux qui croient. Allah n'aime aucun traître ingrat.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxiv{Autorisation est donnée à ceux qui sont attaqués (de se défendre) - parce que vraiment ils sont lésés; et Allah est certes Capable de les secourir -\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxv{ceux qui ont été expulsés de leurs demeures, - contre toute justice, simplement parce qu'ils disaient: «Allah est notre Seigneur». - Si Allah ne repoussait pas les gens les uns par les autres, les ermitages seraient démolis, ainsi que les églises, les synagogues et les mosquées où le nom d'Allah est beaucoup invoqué. Allah soutient, certes, ceux qui soutiennent (Sa Religion). Allah est assurément Fort et Puissant,\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxvi{ceux qui, si Nous leur donnons la puissance sur terre, accomplissent la Salât, acquittent la Zakât, ordonnent le convenable et interdisent le blâmable. Cependant, l'issue finale de toute chose appartient à Allah.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxvii{Et s'ils te traitent de menteur, [sache que] le peuple de Noé, les 'Aad, les Tamûd avant eux, ont aussi crié au mensonge (à l'égard de leurs messagers),\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxviii{de même que le peuple d'Abraham, le peuple de Lot.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmdcxxxix{et les gens de Madyan. Et Moïse fut traité de menteur. Puis, J'ai donné un répit aux mécréants; ensuite Je les ai saisis. Et quelle fut Ma réprobation!\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmdcxl{Que de cités, donc, avons-Nous fait périr, parce qu'elles commettaient des tyrannies. Elles sont réduites à des toits écroulés: Que de puits désertés! Que de palais édifiés (et désertés aussi)!\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmdcxli{Que ne voyagent-ils sur la terre afin d'avoir des cœurs pour comprendre, et des oreilles pour entendre? Car ce ne sont pas les yeux qui s'aveuglent, mais, ce sont les cœurs dans les poitrines qui s'aveuglent.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmdcxlii{Et ils te demandent de hâter [l'arrivée] du châtiment. Jamais Allah ne manquera à Sa promesse. Cependant, un jour auprès de ton Seigneur, équivaut à mille ans de ce que vous comptez.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmdcxliii{A combien de cités n'ai-Je pas donné répit alors qu'elles commettaient des tyrannies? Ensuite, Je les ais saisies. Vers Moi est le devenir.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmdcxliv{Dis: «O hommes! Je ne suis pour vous, en vérité, qu'un avertisseur explicite».\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmdcxlv{Ceux donc qui croient et font de bonnes œuvres auront pardon et faveurs généreuses,\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmdcxlvi{tandis que ceux qui s'efforcent à échapper (au châtiment mentionné dans) Nos versets, ceux-là sont les gens de l'Enfer.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmdcxlvii{Nous n'avons envoyé, avant toi, ni Messager ni prophète qui n'ait récité (ce qui lui a été révélé) sans que le Diable n'ait essayé d'intervenir [pour semer le doute dans le cœur des gens au sujet] de sa récitation. Allah abroge ce que le Diable suggère, et Allah renforce Ses versets. Allah est Omniscient et Sage.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmdcxlviii{Afin de faire, de ce que jette le Diable, une tentation pour ceux qui ont une maladie au cœur et ceux qui ont le cœur dur... Les injustes sont certes dans un schisme profond.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmdcxlix{Et afin que ceux à qui le savoir a été donné sachent que (le Coran) est en effet, la Vérité venant de ton Seigneur, qu'ils y croient alors, et que leurs cœurs s'y soumettent en toute humilité. Allah guide certes vers le droit chemin ceux qui croient.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmdcl{Et ceux qui mécroient ne cesseront d'être en doute à son sujet, jusqu'à ce que l'Heure les surprenne à l'improviste ou que les atteigne le châtiment d'un jour terrifiant.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmdcli{La souveraineté ce jour-là appartiendra à Allah qui jugera parmi eux. Ceux qui auront cru et fait de bonnes œuvres seront dans les Jardins du délice,\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmdclii{et quant aux infidèles qui auront traité Nos révélations de mensonges, ils auront un châtiment avilissant!\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmdcliii{Ceux qui émigrent dans le sentier d'Allah et qui sont tués ou meurent, Allah leur accordera certes une belle récompense, car Allah est le meilleur des donateurs.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmdcliv{Il les fera, certes, entrer en un lieu qu'ils agréeront, et Allah est certes Omniscient et Indulgent.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmdclv{Ainsi en est-il. Quiconque châtie de la même façon dont il a été châtié, et qu'ensuite il est victime d'un nouvel outrage, Allah l'aidera, car Allah est certainement Absoluteur et Pardonneur.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmdclvi{C'est ainsi qu'Allah fait pénétrer la nuit dans le jour, et fait pénétrer le jour dans la nuit. Allah est, certes, Audient et Clairvoyant.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmdclvii{C'est ainsi qu'Allah est Lui le Vrai, alors que ce qu'ils invoquent en dehors de Lui est le faux; c'est Allah qui est le Sublime, le Grand.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmdclviii{N'as-tu pas vu qu'Allah fait descendre l'eau du ciel, et la terre devient alors verte? Allah est Plein de bonté et Parfaitement Connaisseur.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmdclix{A Lui appartient ce qui est dans les cieux et sur la terre. Allah est le seul qui se suffit à Lui-Même et qui est Le Digne de louange!\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmdclx{N'as-tu pas vu qu'Allah vous a soumis tout ce qui est sur la terre ainsi que le vaisseau qui vogue sur la mer par Son ordre? Il retient le ciel de tomber sur la terre, sauf quand Il le permettra. Car Allah est Plein de bonté et de miséricorde envers les hommes.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmdclxi{C'est Lui qui vous donne la vie puis vous donne la mort, puis vous fait revivre. Vraiment l'homme est très ingrat!\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmdclxii{A chaque communauté, Nous avons assigné un culte à suivre. Qu'ils ne disputent donc point avec toi l'ordre reçu! Et appelle à ton Seigneur. Tu es certes sur une voie droite.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmdclxiii{Et s'ils discutent avec toi, alors dis: «C'est Allah qui connaît mieux ce que vous faites.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmdclxiv{Allah jugera entre vous, au Jour de la Résurrection, ce en quoi vous divergez».\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmdclxv{Ne sais-tu pas qu'Allah sait ce qu'il y a dans le ciel et sur la terre? Tout cela est dans un Livre, et cela est pour Allah bien facile.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmdclxvi{Et ils adorent en dehors d'Allah, ce en quoi Il n'a fait descendre aucune preuve et ce dont ils n'ont aucune connaissance. Et il n'y aura pas de protecteur pour les injustes.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmdclxvii{Et quand on leur récite Nos versets bien clairs, tu discerneras la réprobation sur les visages de ceux qui ont mécru. Peu s'en faut qu'ils ne se jettent sur ceux qui leur récitent Nos versets. Dis: «Vous informerai-je de quelque chose de plus terrible? - Le Feu: Allah l'a promis à ceux qui ont mécru. Et quel triste devenir!»\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmdclxviii{O hommes! Une parabole vous est proposée, écoutez-la: «Ceux que vous invoquez en dehors d'Allah ne sauraient même pas créer une mouche, quand même ils s'uniraient pour cela. Et si la mouche les dépouillait de quelque chose, ils ne sauraient le lui reprendre. Le solliciteur et le sollicité sont [également] faibles!»\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmdclxix{Ils n'ont pas estimé Allah à sa juste valeur; Allah est certes Fort et Puissant.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmdclxx{Allah choisit des messagers parmi les Anges et parmi les hommes. Allah est Audient et Clairvoyant.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmdclxxi{Il sait ce qui est devant eux et derrière eux. Et c'est vers Allah que tout retournera.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmdclxxii{O vous qui croyez! Inclinez-vous, prosternez-vous, adorez votre Seigneur, et faites le bien. Peut-être réussirez vous!\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmdclxxiii{Et luttez pour Allah avec tout l'effort qu'Il mérite. C'est Lui qui vous a élus; et Il ne vous a imposé aucune gêne dans la religion, celle de votre père Abraham, lequel vous a déjà nommés «Musulmans» avant (ce Livre) et dans ce (Livre), afin que le Messager soit témoin contre vous, et que vous soyez vous-mêmes témoins contre les gens. Accomplissez donc la Salât, acquittez la Zakât et attachez-vous fortement à Allah. C'est Lui votre Maître. Quel Excellent Maître! Et quel Excellent Soutien!\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmdclxxiv{\basmalahfr Bienheureux sont certes les croyants,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmdclxxv{ceux qui sont humbles dans leur Salât,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmdclxxvi{qui se détournent des futilités,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmdclxxvii{qui s'acquittent de la Zakât,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmdclxxviii{et qui préservent leurs sexes [de tout rapport],\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmdclxxix{si ce n'est qu'avec leurs épouses ou les esclaves qu'ils possèdent, car là vraiment, on ne peut les blâmer;\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmdclxxx{alors que ceux qui cherchent au-delà de ces limites sont des transgresseurs;\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxi{et qui veillent à la sauvegarde des dépôts confiés à eux et honorent leurs engagements,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxii{et qui observent strictement leur Salât.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxiii{Ce sont eux les héritiers,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxiv{qui hériteront le Paradis pour y demeurer éternellement.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxv{Nous avons certes créé l'homme d'un extrait d'argile.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxvi{puis Nous en fîmes une goutte de sperme dans un reposoir solide.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxvii{Ensuite, Nous avons fait du sperme une adhérence; et de l'adhérence Nous avons créé un embryon; puis, de cet embryon Nous avons créé des os et Nous avons revêtu les os de chair. Ensuite, Nous l'avons transformé en une tout autre création. Gloire à Allah le Meilleur des créateurs!\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxviii{Et puis, après cela vous mourrez.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmdclxxxix{Et puis au Jour de la Résurrection vous serez ressuscités.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmdcxc{Nous avons créé, au-dessus de vous, sept cieux. Et Nous ne sommes pas inattentifs à la création.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmdcxci{Et Nous avons fait descendre l'eau du ciel avec mesure. Puis Nous l'avons maintenue dans la terre, cependant que Nous sommes bien Capable de la faire disparaître.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmdcxcii{Avec elle, Nous avons produit pour vous des jardins de palmiers et de vignes, dans lesquels vous avez des fruits abondants et desquels vous mangez,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmdcxciii{ainsi qu'un arbre (l'olivier) qui pousse au Mont Sinaî, en produisant l'huile servant à oindre et où les mangeurs trempent leur pain.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmdcxciv{Vous avez certes dans les bestiaux, un sujet de méditation. Nous vous donnons à boire de ce qu'ils ont dans le ventre, et vous y trouvez également maintes utilités; et vous vous en nourrissez.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmdcxcv{Sur eux ainsi que sur des vaisseaux vous êtes transportés.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmdcxcvi{Nous envoyâmes Noé vers son peuple. Il dit: «O mon peuple, adorez Allah. Vous n'avez pas d'autre divinité en dehors de Lui. Ne [Le] craignez-vous pas?»\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmdcxcvii{Alors les notables de son peuple qui avaient mécru dirent: «Celui-ci n'est qu'un être humain comme vous voulant se distinguer à votre détriment. Si Allah avait voulu, ce sont des Anges qu'Il aurait fait descendre. Jamais nous n'avons entendu cela chez nos ancêtres les plus reculés.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmdcxcviii{Ce n'est en vérité qu'un homme atteint de folie, observez-le donc durant quelque temps.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmdcxcix{Il dit: «Seigneur! Apporte-moi secours parce qu'ils me traitent de menteur».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmdcc{Nous lui révélâmes: «Construis l'arche sous Nos yeux et selon Notre révélation. Et quand Notre commandement viendra et que le four bouillonnera, achemine là-dedans un couple de chaque espèce, ainsi que ta famille, sauf ceux d'entre eux contre qui la parole a déjà été prononcée; et ne t'adresse pas à Moi au sujet des injustes, car ils seront fatalement noyés.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmdcci{Et lorsque tu seras installé, toi et ceux qui sont avec toi, dans l'arche, dis: «Louange à Allah qui nous a sauvés du peuple des injustes».\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmdccii{Et dis: «Seigneur, fais-moi débarquer d'un débarquement béni. Tu es Celui qui procure le meilleur débarquement».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmdcciii{Voilà bien là des signes. Nous sommes certes Celui qui éprouve.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmdcciv{Puis, après eux, Nous avons créé d'autres générations,\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmdccv{Nous envoyâmes parmi elles un Messager [issu] d'elles pour leur dire: «Adorez Allah. Vous n'avez pas d'autre divinité en dehors de Lui. Ne le craignez-vous pas?»\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmdccvi{Les notables de son peuple qui avaient mécru et traité de mensonge la rencontre de l'au-delà, et auxquels Nous avions accordé le luxe dans la vie présente, dirent: «Celui-ci n'est qu'un être humain comme vous, mangeant de ce que vous mangez, et buvant de ce que vous buvez.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmdccvii{Si vous obéissez à un homme comme vous, vous serez alors perdants.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmdccviii{Vous promet-il, quand vous serez morts, et devenus poussière et ossements, que vous serez sortis [de vos sépulcres]?\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmdccix{Loin, loin, ce qu'on vous promet!\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmdccx{Ce n'est là que notre vie présente: nous mourons et nous vivons; et nous ne serons jamais ressuscités.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmdccxi{Ce n'est qu'un homme qui forge un mensonge contre Allah; et nous ne croirons pas en lui».\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmdccxii{Il dit: «Seigneur! Apporte-moi secours parce qu'ils me traitent de menteur».\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmdccxiii{[Allah] dit: «Oui, bientôt ils en viendront aux regrets».\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmdccxiv{Le cri, donc, les saisit en toute justice; puis Nous les rendîmes semblables à des débris emportés par le torrent. Que disparaissent à jamais les injustes!\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmdccxv{Puis après eux Nous avons créé d'autres générations.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmdccxvi{Nulle communauté ne peut avancer ni reculer son terme.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmdccxvii{Ensuite, Nous envoyâmes successivement Nos messagers. Chaque fois qu'un messager se présentait à sa communauté, ils le traitaient de menteur. Et Nous les fîmes succéder les unes aux autres [dans la destruction], et Nous en fîmes des thèmes de récits légendaires. Que disparaissent à jamais les gens qui ne croient pas!\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmdccxviii{Ensuite, Nous envoyâmes Moïse et son frère Aaron avec Nos prodiges et une preuve évidente,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmdccxix{vers Pharaon et ses notables mais ceux-ci s'enflèrent d'orgueil: ils étaient des gens hautains.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmdccxx{Ils dirent: «Croirons-nous en deux hommes comme nous dont les congénères sont nos esclaves».\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmdccxxi{Ils les traitèrent [tous deux] de menteurs et ils furent donc parmi les anéantis.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmdccxxii{Et Nous avions apporté le Livre à Moïse afin qu'ils se guident.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmdccxxiii{Et Nous fîmes du fils de Marie, ainsi que de sa mère, un prodige; et Nous donnâmes à tous deux asile sur une colline bien stable et dotée d'une source.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmdccxxiv{O Messagers! Mangez de ce qui est permis et agréable et faites du bien. Car Je sais parfaitement ce que vous faites.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmdccxxv{Cette communauté, la vôtre, est une seule communauté, tandis que Je suis votre Seigneur. Craignez-Moi donc».\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmdccxxvi{Mais ils se sont divisés en sectes, chaque secte exultant de ce qu'elle détenait.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmdccxxvii{Laisse-les dans leur égarement pour un certain temps.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmdccxxviii{Pensent-ils que ce que Nous leur accordons, en biens et en enfants,\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmdccxxix{[soit une avance] que Nous Nous empressons de leur faire sur les biens [de la vie future]? Au contraire, ils n'en sont pas conscients.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmdccxxx{Ceux qui, de la crainte de leur Seigneur, sont pénétrés,\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxi{qui croient aux versets de leur Seigneur,\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxii{qui n'associent rien à leur Seigneur,\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxiii{qui donnent ce qu'ils donnent, tandis que leurs cœurs sont pleins de crainte [à la pensée] qu'ils doivent retourner à leur Seigneur.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxiv{Ceux-là se précipitent vers les bonnes actions et sont les premiers à les accomplir.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxv{Nous n'imposons à personne que selon sa capacité. Et auprès de Nous existe un Livre qui dit la vérité, et ils ne seront pas lésés.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxvi{Mais leurs cœurs restent dans l'ignorance à l'égard de cela [le Coran]. [En outre] ils ont d'autres actes (vils) qu'ils accomplissent,\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxvii{jusqu'à ce que par le châtiment Nous saisissions les plus aisés parmi eux et voilà qu'ils crient au secours.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxviii{«Ne criez pas aujourd'hui. Nul ne vous protègera contre Nous.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmdccxxxix{Mes versets vous étaient récités auparavant; mais vous vous [en] détourniez,\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmdccxl{s'enflant d'orgueil, et vous les dénigriez au cours de vos veillées».\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmdccxli{Ne méditent-ils donc pas sur la parole (le Coran)? Ou est-ce que leur est venu ce qui n'est jamais venu à leurs premiers ancêtres?\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmdccxlii{Ou n'ont-ils pas connu leur Messager, au point de le renier?\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmdccxliii{Ou diront-ils: «Il est fou?» Au contraire, c'est la vérité qu'il leur a apportée. Et la plupart d'entre eux dédaignent la vérité.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmdccxliv{Si la vérité était conforme à leurs passions, les cieux et la terre et ceux qui s'y trouvent seraient, certes, corrompus. Au contraire, Nous leur avons donné leur rappel. Mais ils s'en détournent.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmdccxlv{Ou leur demandes-tu une rétribution? Mais la rétribution de ton Seigneur est meilleure. Et c'est Lui, le Meilleur des pourvoyeurs.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmdccxlvi{Et tu les appelles, certes, vers le droit chemin.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmdccxlvii{Or, ceux qui ne croient pas à l'au-delà sont bien écartés de ce chemin.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmdccxlviii{Si Nous leur faisions miséricorde et écartions d'eux le mal, ils persisteraient certainement dans leur transgression, confus et hésitants.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmdccxlix{Nous les avons certes saisis du châtiment, mais ils ne se sont pas soumis à leur Seigneur; de même qu'ils ne [Le] supplient point,\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmdccl{jusqu'au jour où Nous ouvrirons sur eux une porte au dur châtiment, et voilà qu'ils en seront désespérés.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmdccli{Et c'est Lui qui a créé pour vous l'ouïe, les yeux et les cœurs. Mais vous êtes rarement reconnaissants.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmdcclii{C'est Lui qui vous a répandus sur la terre, et c'est vers Lui que vous serez rassemblés.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmdccliii{Et c'est Lui qui donne la vie et qui donne la mort; et l'alternance de la nuit et du jour dépend de Lui. Ne raisonnerez-vous donc pas?\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmdccliv{Ils ont plutôt tenu les mêmes propos que les anciens.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmdcclv{Ils ont dit: «lorsque nous serons morts et que nous serons poussière et ossements, serons-nous vraiment ressuscités?\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmdcclvi{On nous a promis cela, ainsi qu'à nos ancêtres auparavant; ce ne sont que de vieilles sornettes».\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmdcclvii{Dis: «A qui appartient la terre et ceux qui y sont? si vous savez».\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmdcclviii{Ils diront: «A Allah». Dis: «Ne vous souvenez-vous donc pas?»\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmdcclix{Dis: «Qui est le Seigneur des sept cieux et le Seigneur du Trône sublime?»\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmdcclx{Ils diront: [ils appartiennent] «A Allah». Dis: «Ne craignez-vous donc pas?»\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmdcclxi{Dis: «Qui détient dans sa main la royauté absolue de toute chose, et qui protège et n'a pas besoin d'être protégé? [Dites], si vous le savez!»\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmdcclxii{Ils diront: «Allah». Dis: «Comment donc se fait-il que vous soyez ensorcelés?» [au point de ne pas croire en Lui].\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmdcclxiii{Nous leur avons plutôt apporté la vérité et ils sont assurément des menteurs.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmdcclxiv{Allah ne S'est point attribué d'enfant et il n'existe point de divinité avec Lui; sinon, chaque divinité s'en irait avec ce qu'elle a créé, et certaines seraient supérieures aux autres. (Gloire et pureté) à Allah! Il est Supérieur à tout ce qu'ils décrivent.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmdcclxv{[Il est] Connaisseur de toute chose visible et invisible! Il est bien au-dessus de ce qu'ils [Lui] associent!\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmdcclxvi{Dis: «Seigneur, si jamais Tu me montres ce qui leur est promis;\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmdcclxvii{alors, Seigneur, ne me place pas parmi les gens injustes.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmdcclxviii{Nous sommes Capable, certes, de te montrer ce que Nous leur promettons.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmdcclxix{Repousse le mal par ce qui est meilleur. Nous savons très bien ce qu'ils décrivent.\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmdcclxx{Et dis: «Seigneur, je cherche Ta protection, contre les incitations des diables.\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxi{et je cherche Ta protection, Seigneur, contre leur présence auprès de moi».\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxii{...Puis, lorsque la mort vient à l'un deux, il dit: «Mon Seigneur! Fais-moi revenir (sur terre),\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxiii{afin que je fasse du bien dans ce que je délaissais». Non, c'est simplement une parole qu'il dit. Derrière eux, cependant, il y a une barrière, jusqu'au jour où ils seront ressuscités».\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxiv{Puis quand on soufflera dans la Trompe, il n'y aura plus de parenté entre eux ce jour là, et ils ne se poseront pas de questions.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxv{Ceux dont la balance est lourde seront les bienheureux;\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxvi{et ceux dont la balance est légère seront ceux qui ont ruiné leurs propres âmes et ils demeureront éternellement dans l'Enfer.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxvii{Le feu brûlera leurs visages et ils auront les lèvres crispées.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxviii{«Mes versets ne vous étaient-ils pas récités et vous les traitiez alors de mensonges?»\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxix{Ils dirent: «Seigneur! Notre malheur nous a vaincus, et nous étions des gens égarés.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxx{Seigneur, fais nous-en sortir! Et si nous récidivons, nous serons alors des injustes».\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxi{Il dit: «Soyez-y refoulés (humiliés) et ne Me parlez plus».\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxii{Il y eut un groupe de Mes serviteurs qui dirent: «Seigneur, nous croyons; pardonne-nous donc et fais-nous miséricorde, car Tu es le meilleur des Miséricordieux»\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxiii{mais vous les avez pris en raillerie jusqu'à oublier de M'invoquer, et vous vous riiez d'eux.\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxiv{Vraiment, Je les ai récompensés aujourd'hui pour ce qu'ils ont enduré; et ce sont eux les triomphants.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxv{Il dira: «Combien d'années êtes-vous restés sur terre?»\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxvi{Ils diront: «Nous y avons demeuré un jour, ou une partie d'un jour. Interroge donc ceux qui comptent.»\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxvii{Il dira: «Vous n'y avez demeuré que peu [de temps], si seulement vous saviez.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxviii{Pensiez-vous que Nous vous avions créés sans but, et que vous ne seriez pas ramenés vers Nous?»\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@mmdcclxxxix{Que soit exalté Allah, le vrai Souverain! Pas de divinité en dehors de Lui, le Seigneur du Trône sublime!\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@mmdccxc{Et quiconque invoque avec Allah une autre divinité, sans avoir la preuve évidente [de son existence], aura à en rendre compte à son Seigneur. En vérité, les mécréants, ne réussiront pas.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@mmdccxci{Et dis: «Seigneur, pardonne et fais miséricorde. C'est Toi le Meilleur des miséricordieux».\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@mmdccxcii{\basmalahfr Voici une Sourate que Nous avons fait descendre et que Nous avons imposée, et Nous y avons fait descendre des versets explicites afin que vous vous souveniez».\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmdccxciii{La fornicatrice et le fornicateur, fouettez-les chacun de cent coups de fouet. Et ne soyez point pris de pitié pour eux dans l'exécution de la loi d'Allah - si vous croyez en Allah et au Jour dernier. Et qu'un groupe de croyants assiste à leur punition.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmdccxciv{Le fornicateur n'épousera qu'une fornicatrice ou une associatrice. Et la fornicatrice ne sera épousée que par un fornicateur ou un associateur; et cela a été interdit aux croyants.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmdccxcv{Et ceux qui lancent des accusations contre des femmes chastes sans produire par la suite quatre témoins, fouettez-les de quatre-vingts coups de fouet, et n'acceptez plus jamais leur témoignage. Et ceux-là sont les pervers,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmdccxcvi{à l'exception de ceux qui, après cela, se repentent et se réforment, car Allah est Pardonneur et Miséricordieux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmdccxcvii{Et quant à ceux qui lancent des accusations contre leurs propres épouses, sans avoir d'autres témoins qu'eux-mêmes, le témoignage de l'un d'eux doit être une quadruple attestation par Allah qu'il est du nombre des véridiques,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmdccxcviii{et la cinquième [attestation] est «que la malédiction d'Allah tombe sur lui s'il est du nombre des menteurs».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmdccxcix{Et on ne lui infligera pas le châtiment [de la lapidation] si elle atteste quatre fois par Allah qu'il [son mari] est certainement du nombre des menteurs,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmdccc{et la cinquième [attestation] est que la colère d'Allah soit sur elle, s'il était du nombre des véridiques.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmdccci{Et, n'étaient la grâce d'Allah sur vous et Sa miséricorde...! Allah est Grand Accueillant au repentir et Sage!\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmdcccii{Ceux qui sont venus avec la calomnie sont un groupe d'entre vous. Ne pensez pas que c'est un mal pour vous, mais plutôt, c'est un bien pour vous. A chacun d'eux ce qu'il s'est acquis comme péché. Celui d'entre eux qui s'est chargé de la plus grande part aura un énorme châtiment.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmdccciii{Pourquoi, lorsque vous l'avez entendue [cette calomnie], les croyants et les croyantes n'ont-ils pas, en eux-mêmes, conjecturé favorablement, et n'ont-ils pas dit: «C'est une calomnie évidente?»\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmdccciv{Pourquoi n'ont-ils pas produit [à l'appui de leurs accusations] quatre témoins? S'ils ne produisent pas de témoins, alors ce sont eux, auprès d'Allah, les menteurs.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmdcccv{N'eussent-été la grâce d'Allah sur vous et Sa miséricorde ici-bas comme dans l'au-delà, un énorme châtiment vous aurait touchés pour cette (calomnie) dans laquelle vous vous êtes lancés,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmdcccvi{quand vous colportiez la nouvelle avec vos langues et disiez de vos bouches ce dont vous n'aviez aucun savoir; et vous le comptiez comme insignifiant alors qu'auprès d'Allah cela est énorme.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmdcccvii{Et pourquoi, lorsque vous l'entendiez, ne disiez-vous pas: «Nous ne devons pas en parler. Gloire à Toi (ô Allah)! C'est une énorme calomnie»?\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmdcccviii{Allah vous exhorte à ne plus jamais revenir à une chose pareille si vous êtes croyants.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmdcccix{Allah vous expose clairement les versets et Allah est Omniscient et Sage.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmdcccx{Ceux qui aiment que la turpitude se propage parmi les croyants auront un châtiment douloureux, ici-bas comme dans l'au-delà. Allah sait, et vous, vous ne savez pas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmdcccxi{Et n'eussent été la grâce d'Allah sur vous et Sa miséricorde et (n'eût été) qu'Allah est Compatissant et Miséricordieux...\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmdcccxii{O vous qui avez cru! Ne suivez pas les pas du Diable. Quiconque suit les pas du Diable, [sachez que] celui-ci ordonne la turpitude et le blâmable. Et n'eussent été la grâce d'Allah envers vous et Sa miséricorde, nul d'entre vous n'aurait jamais été pur. Mais Allah purifie qui Il veut. Et Allah est Audient et Omniscient.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmdcccxiii{Et que les détenteurs de richesse et d'aisance parmi vous, ne jurent pas de ne plus faire des dons aux proches, aux pauvres, et à ceux qui émigrent dans le sentier d'Allah. Qu'ils pardonnent et absolvent. N'aimez-vous pas qu'Allah vous pardonne? et Allah est Pardonneur et Miséricordieux!\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmdcccxiv{Ceux qui lancent des accusations contre des femmes vertueuses, chastes [qui ne pensent même pas à commettre la turpitude] et croyantes sont maudits ici-bas comme dans l'au-delà; et ils auront un énorme châtiment,\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmdcccxv{Le jour où leurs langues, leurs mains et leurs pieds témoigneront contre eux de ce qu'ils faisaient.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmdcccxvi{Ce Jour-là, Allah leur donnera leur pleine et vraie rétribution; et ils sauront que c'est Allah qui est le Vrai de toute évidence.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmdcccxvii{Les mauvaises [femmes] aux mauvais [hommes], et les mauvais [hommes] aux mauvaises [femmes]. De même, les bonnes [femmes] aux bons [hommes], et les bons [hommes] aux bonnes [femmes]. Ceux-là sont innocents de ce que les autres disent. Ils ont un pardon et une récompense généreuse.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmdcccxviii{O vous qui croyez! N'entrez pas dans des maisons autres que les vôtres avant de demander la permission [d'une façon délicate] et de saluer leurs habitants. Cela est meilleur pour vous. Peut-être vous souvenez-vous.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmdcccxix{Si vous n'y trouvez personne, alors n'y entrez pas avant que permission vous soit donnée. Et si on vous dit: «Retournez», eh bien, retournez. Cela est plus pur pour vous. Et Allah, de ce que vous faites est Omniscient.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmdcccxx{Nul grief contre vous à entrer dans des maisons inhabitées où se trouve un bien pour vous. Allah sait ce que vous divulguez et ce que vous cachez.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxi{Dis aux croyants de baisser leurs regards et de garder leur chasteté. C'est plus pur pour eux. Allah est, certes, Parfaitement Connaisseur de ce qu'ils font.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxii{Et dis aux croyantes de baisser leurs regards, de garder leur chasteté, et de ne montrer de leurs atours que ce qui en paraît et qu'elles rabattent leur voile sur leurs poitrines; et qu'elles ne montrent leurs atours qu'à leurs maris, ou à leurs pères, ou aux pères de leurs maris, ou à leurs fils, ou aux fils de leurs maris, ou à leurs frères, ou aux fils de leurs frères, ou aux fils de leurs sœurs, ou aux femmes musulmanes, ou aux esclaves qu'elles possèdent, ou aux domestiques mâles impuissants, ou aux garçons impubères qui ignorent tout des parties cachées des femmes. Et qu'elles ne frappent pas avec leurs pieds de façon que l'on sache ce qu'elles cachent de leurs parures. Et repentez-vous tous devant Allah, ô croyants, afin que vous récoltiez le succès.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxiii{Mariez les célibataires d'entre vous et les gens de bien parmi vos esclaves, hommes et femmes. S'ils sont besogneux, Allah les rendra riches par Sa grâce. Car (la grâce d') Allah est immense et Il est Omniscient.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxiv{Et que ceux qui n'ont pas de quoi se marier, cherchent à rester chastes jusqu'à ce qu'Allah les enrichisse par Sa grâce. Ceux de vos esclaves qui cherchent un contrat d'affranchissement, concluez ce contrat avec eux si vous reconnaissez du bien en eux; et donnez-leur des biens d'Allah qu'Il vous a accordés. Et dans votre recherche des profits passagers de la vie présente, ne contraignez pas vos femmes esclaves à la prostitution, si elles veulent rester chastes. Si on les y contraint, Allah leur accorde après qu'elles aient été contraintes, Son pardon et Sa miséricorde.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxv{Nous avons effectivement fait descendre vers vous des versets clairs, donnant une parabole de ceux qui ont vécu avant vous, et une exhortation pour les pieux!\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxvi{Allah est la Lumière des cieux et de la terre. Sa lumière est semblable à une niche où se trouve une lampe. La lampe est dans un (récipient de) cristal et celui-ci ressemble à un astre de grand éclat; son combustible vient d'un arbre béni: un olivier ni oriental ni occidental dont l'huile semble éclairer sans même que le feu la touche. Lumière sur lumière. Allah guide vers Sa lumière qui Il veut. Allah propose aux hommes des paraboles et Allah est Omniscient.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxvii{Dans des maisons [des mosquées] qu'Allah a permis que l'on élève, et où Son Nom est invoqué; Le glorifient en elles matin et après-midi,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxviii{des hommes que ni le négoce, ni le troc ne distraient de l'invocation d'Allah, de l'accomplissement de la Salât et de l'acquittement de la Zakât, et qui redoutent un Jour où les cœurs seront bouleversés ainsi que les regards.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxix{Afin qu'Allah les récompense de la meilleure façon pour ce qu'ils ont fait [de bien]. Et Il leur ajoutera de Sa grâce. Allah attribue à qui Il veut sans compter.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxx{Quant à ceux qui ont mécru, leurs actions sont comme un mirage dans une plaine désertique que l'assoiffé prend pour de l'eau. Puis quand il y arrive, il s'aperçoit que ce n'était rien; mais y trouve Allah qui lui règle son compte en entier, car Allah est prompt à compter.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxi{[Les actions des mécréants] sont encore semblables à des ténèbres sur une mer profonde: des vagues la recouvrent, [vagues] au dessus desquelles s'élèvent [d'autres] vagues, sur lesquelles il y a [d'épais] nuages. Ténèbres [entassées] les unes au-dessus des autres. Quand quelqu'un étend la main, il ne la distingue presque pas. Celui qu'Allah prive de lumière n'a aucune lumière.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxii{N'as-tu pas vu qu'Allah est glorifié par tous ceux qui sont dans les cieux et la terre; ainsi que par les oiseaux déployant leurs ailes? Chacun, certes, a appris sa façon de L'adorer et de Le glorifier. Allah sait parfaitement ce qu'ils font.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxiii{C'est à Allah qu'appartient la royauté des cieux et de la terre. Et vers Allah sera le retour final.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxiv{N'as-tu pas vu qu'Allah pousse les nuages? Ensuite Il les réunit et Il en fait un amas, et tu vois la pluie sortir de son sein. Et Il fait descendre du ciel, de la grêle [provenant] des nuages [comparables] à des montagnes. Il en frappe qui Il veut et l'écarte de qui Il veut. Peu s'en faut que l'éclat de son éclair ne ravisse la vue.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxv{Allah fait alterner la nuit et le jour. Il y a là un sujet de réflexion pour ceux qui ont des yeux.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxvi{Et Allah a créé d'eau tout animal. Il y en a qui marche sur le ventre, d'autres marchent sur deux pattes, et d'autres encore marchent sur quatre. Allah crée ce qu'Il veut et Allah est Omnipotent.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxvii{Nous avons certes fait descendre des versets explicites. Et Allah guide qui Il veut vers un droit chemin.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxviii{Et ils disent: «Nous croyons en Allah et au messager et nous obéissons». Puis après cela, une partie d'entre eux fait volte-face. Ce ne sont point ceux-là les croyants.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmdcccxxxix{Et quand on les appelle vers Allah et Son messager pour que celui-ci juge parmi eux, voilà que quelques-uns d'entre eux s'éloignent.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmdcccxl{Mais s'ils ont le droit en leur faveur, ils viennent à lui, soumis.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmdcccxli{Y a-t-il une maladie dans leurs cœurs? ou doutent-ils ? ou craignent-ils qu'Allah les opprime, ainsi que Son messager? Non!... mais ce sont eux les injustes.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmdcccxlii{La seule parole des croyants, quand on les appelle vers Allah et Son messager, pour que celui-ci juge parmi eux, est: «Nous avons entendu et nous avons obéi». Et voilà ceux qui réussissent.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmdcccxliii{Et quiconque obéit à Allah et à Son messager, et craint Allah et Le redoute... alors, voilà ceux qui récoltent le succès.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmdcccxliv{Et ils jurent par Allah en serments solennels que si tu le leur ordonnais, ils sortiraient à coup sûr (au combat). Dis: «Ne jurez donc pas. [Votre] obéissance [verbale] est bien connue. Allah est Parfaitement Connaisseur de ce que vous faites».\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmdcccxlv{Dis: «Obéissez à Allah et obéissez au messager. S'ils se détournent, ...il [le messager] n'est alors responsable que de ce dont il est chargé; et vous assumez ce dont vous êtes chargés. Et si vous lui obéissez, vous serez bien guidés». Et il n'incombe au messager que de transmettre explicitement (son message).\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmdcccxlvi{Allah a promis à ceux d'entre vous qui ont cru et fait les bonnes œuvres qu'Il leur donnerait la succession sur terre comme Il l'a donnée à ceux qui les ont précédés. Il donnerait force et suprématie à leur religion qu'Il a agréée pour eux. Il leur changerait leur ancienne peur en sécurité. Ils M'adorent et ne M'associent rien et celui qui mécroit par la suite, ce sont ceux-là les pervers.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmdcccxlvii{Accomplissez la Salât, acquittez la Zakât et obéissez au messager, afin que vous ayez la miséricorde.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmdcccxlviii{Ne pense point que ceux qui ne croient pas puissent s'opposer à l'autorité d'Allah sur terre. Le Feu sera leur refuge. Quelle mauvaise destination.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmdcccxlix{O vous qui avez-cru! Que les esclaves que vous possédez vous demandent permission avant d'entrer, ainsi que ceux des vôtres qui n'ont pas encore atteint la puberté, à trois moments: avant la Salât de l'aube, à midi quand vous enlevez vos vêtements, ainsi qu'après la Salât de la nuit; trois occasions de vous dévêtir. En dehors de ces moments, nul reproche ni à vous ni à eux d'aller et venir, les uns chez les autres. C'est ainsi qu'Allah vous expose clairement Ses versets, et Allah est Omniscient et Sage.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmdcccl{Et quand les enfants parmi vous atteignent la puberté, qu'ils demandent permission avant d'entrer, comme font leurs aînés. C'est ainsi qu'Allah vous expose clairement Ses versets, et Allah est Omniscient et Sage.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmdcccli{Et quant aux femmes atteintes par la ménopause qui n'espèrent plus le mariage, nul reproche à elles d'enlever leurs vêtements de [sortie], sans cependant exhiber leurs atours et si elle cherchent la chasteté c'est mieux pour elles. Allah est Audient et Omniscient.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmdccclii{Il n'y a pas d'empêchement à l'aveugle, au boiteux, au malade, ainsi qu'à vous-mêmes de manger dans vos maisons, ou dans les maisons de vos pères, ou dans celles de vos mères, ou de vos frères, ou de vos sœurs, ou de vos oncles paternels, ou de vos tantes paternelles ou de vos oncles maternels, ou de vos tantes maternelles, ou dans celles dont vous possédez les clefs, ou chez vos amis. Nul empêchement à vous, non plus, de manger ensemble, ou séparément. Quand donc vous entrez dans des maisons, adressez-vous mutuellement des salutations venant d'Allah, bénies et agréables. C'est ainsi qu'Allah vous expose Ses versets, afin que vous compreniez.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmdcccliii{Les vrais croyants sont ceux qui croient en Allah et en Son messager, et qui, lorsqu'ils sont en sa compagnie pour une affaire d'intérêt général, ne s'en vont pas avant de lui avoir demandé la permission. Ceux qui te demandent cette permission sont ceux qui croient en Allah et en Son messager. Si donc ils te demandent la permission pour une affaire personnelle, donne-la à qui tu veux d'entre eux; et implore le pardon d'Allah pour eux, car Allah est Pardonneur et Miséricordieux.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmdcccliv{Ne considérez pas l'appel du messager comme un appel que vous vous adresseriez les uns aux autres. Allah connaît certes ceux des vôtres qui s'en vont secrètement en s'entrecachant. Que ceux, donc, qui s'opposent à son commandement prennent garde qu'une épreuve ne les atteigne, ou que ne les atteigne un châtiment douloureux.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmdccclv{C'est à Allah, vraiment, qu'appartient tout ce qui est dans les cieux et sur la terre. Il sait parfaitement l'état dans lequel vous êtes, et le Jour où les hommes seront ramenés vers Lui, Il les informera alors de ce qu'ils œuvraient. Allah est Omniscient.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmdccclvi{\basmalahfr Qu'on exalte la Bénédiction de Celui qui a fait descendre le Livre de Discernement sur Son serviteur, afin qu'il soit un avertisseur à l'univers.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmdccclvii{Celui à qui appartient la royauté des cieux et de la terre, qui ne S'est point attribué d'enfant, qui n'a point d'associé en Sa royauté et qui a créé toute chose en lui donnant ses justes proportions.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmdccclviii{Mais ils ont adopté en dehors de Lui des divinités qui, étant elles-mêmes créées, ne créent rien, et qui ne possèdent la faculté de faire ni le mal ni le bien pour elles-mêmes, et qui ne sont maîtresses ni de la mort, ni de la vie, ni de la résurrection.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmdccclix{Les mécréants disent: «Tout ceci n'est qu'un mensonge qu'il (Muhammad) a inventé, et où d'autres gens l'ont aidé». Or, ils commettent là une injustice et un mensonge.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmdccclx{Et ils disent: «Ce sont des contes d'anciens qu'il se fait écrire! On les lui dicte matin et soir!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmdccclxi{Dis: «L'a fait descendre Celui qui connaît les secrets dans les cieux et la terre. Et Il est Pardonneur et Miséricordieux.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmdccclxii{Et ils disent: «Qu'est-ce donc que ce Messager qui mange de la nourriture et circule dans les marchés? Que n'a-t-on fait descendre vers lui un Ange qui eût été avertisseur en sa compagnie?\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmdccclxiii{Ou que ne lui a-t-on lancé un trésor? Ou que n'a-t-il un jardin à lui, dont il pourrait manger (les fruits)?» Les injustes disent: «Vous ne suivez qu'un homme ensorcelé».\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmdccclxiv{Vois à quoi ils te comparent! Ils se sont égarés. Ils ne pourront trouver aucun chemin.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmdccclxv{Béni soit Celui qui, s'Il le veut, t'accordera bien mieux que cela: des Jardins sous lesquels coulent les ruisseaux; et Il t'assignera des châteaux.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmdccclxvi{Mais ils ont plutôt qualifié l'Heure de mensonge. Nous avons cependant préparé, pour quiconque qualifie l'Heure de mensonge, une Flamme brûlante.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmdccclxvii{Lorsque de loin elle les voit, ils entendront sa fureur et ses pétillements.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmdccclxviii{Et quand on les y aura jetés, dans un étroit réduit, les mains liées derrière le cou, ils souhaiteront alors leur destruction complète.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmdccclxix{«Aujourd'hui, ne souhaitez pas la destruction une seule fois, mais souhaitez-en plusieurs.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmdccclxx{Dis: «Est-ce mieux ceci? ou bien le Paradis éternel qui a été promis aux pieux, comme récompense et destination dernière?\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxi{Ils auront là tout ce qu'ils désireront et une demeure éternelle. C'est une promesse incombant à ton Seigneur.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxii{Et le jour où Il les rassemblera, eux et ceux qu'ils adoraient en dehors d'Allah, Il dira: «Est-ce vous qui avez égaré Mes serviteurs que voici, ou ont-ils eux-mêmes perdu le sentier?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxiii{Ils diront: «Gloire à Toi! Il ne nous convenait nullement de prendre en dehors de Toi des patrons protecteurs mais Tu les as comblés de jouissance ainsi que leurs ancêtres au point qu'ils en ont oublié le livre du rappel [le Coran]. Et ils ont été des gens perdus».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxiv{«Ils vous ont démentis en ce que vous dites. Il n'y aura pour vous ni échappatoire ni secours (possible). Et quiconque des vôtres est injuste, Nous lui ferons goûter un grand châtiment».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxv{Et Nous n'avons envoyé avant toi que des messagers qui mangeaient de la nourriture et circulaient dans les marchés. Et Nous avons fait de certains d'entre vous une épreuve pour les autres -endurerez-vous avec constance? - Et ton Seigneur demeure Clairvoyant.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxvi{Et ceux qui n'espèrent pas Nous rencontrer disent: «Si seulement on avait fait descendre sur nous des Anges ou si nous pouvions voir notre Seigneur!» En effet, ils se sont enflés d'orgueil en eux-mêmes, et ont dépassé les limites de l'arrogance.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxvii{Le jour où ils verront les Anges, ce ne sera pas une bonne nouvelle, ce jour-là, pour les injustes, ils (les Anges) diront: «Barrage totalement défendu»!\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxviii{Nous avons considéré l'œuvre qu'ils ont accomplie et Nous l'avons réduite en poussière éparpillée.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxix{Les gens du Paradis seront, ce jour-là, en meilleure demeure et au plus beau lieu de repos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxx{Et le jour où le ciel sera fendu par les nuages et qu'on fera descendre des Anges,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxi{ce jour-là, la vraie royauté appartient au Tout Miséricordieux, et ce sera un Jour difficile aux infidèles.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxii{Le jour où l'injuste se mordra les deux mains et dira: «[Hélas pour moi!] Si seulement j'avais suivi chemin avec le Messager!...\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxiii{Malheur à moi! Hélas! Si seulement je n'avais pas pris «un tel» pour ami!...\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxiv{Il m'a, en effet, égaré loin du rappel [le Coran], après qu'il me soit parvenu». Et le Diable déserte l'homme (après l'avoir tenté).\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxv{Et le Messager dit: «Seigneur, mon peuple a vraiment pris ce Coran pour une chose délaissée!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxvi{C'est ainsi que Nous fîmes à chaque prophète un ennemi parmi les criminels. Mais ton Seigneur suffit comme guide et comme soutien.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxvii{Et ceux qui ne croient pas disent: «Pourquoi n'a-t-on pas fait descendre sur lui le Coran en une seule fois?» Nous l'avons révélé ainsi pour raffermir ton cœur. Et Nous l'avons récité soigneusement.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxviii{Ils ne t'apporteront aucune parabole, sans que Nous ne t'apportions la vérité avec la meilleure interprétation.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmdccclxxxix{Ceux qui seront traînés [ensemble] sur leurs visages vers l'Enfer, ceux-là seront dans la pire des situations et les plus égarés hors du chemin droit.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmdcccxc{En effet, Nous avons apporté à Moïse le Livre et lui avons assigné son frère Aaron comme assistant.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmdcccxci{Puis Nous avons dit: «Allez tous deux vers les gens qui ont traité de mensonge Nos preuves». Nous les avons ensuite détruits complètement.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmdcccxcii{Et le peuple de Noé, quand ils eurent démenti les messagers, Nous les noyâmes et en fîmes pour les gens un signe d'avertissement. Et Nous avons préparé pour les injustes un châtiment douloureux.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmdcccxciii{Et les 'Aad, les Thamûd, les gens d'Ar-Rass et de nombreuses générations intermédiaires!\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmdcccxciv{A tous, cependant, Nous avions fait des paraboles et Nous les avions tous anéantis d'une façon brutale.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmdcccxcv{Ils sont passés par la cité sur laquelle est tombée une pluie de malheurs. Ne la voient-ils donc pas? Mais ils n'espèrent pas de résurrection!\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmdcccxcvi{Et quand ils te voient, ils ne te prennent qu'en raillerie: «Est-ce là celui qu'Allah a envoyé comme Messager?\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmdcccxcvii{Peu s'en est fallu qu'il ne nous égare de nos divinités, si ce n'était notre attachement patient à elles!». Cependant, ils sauront quand ils verront le châtiment, qui est le plus égaré en son chemin.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmdcccxcviii{Ne vois-tu pas celui qui a fait de sa passion sa divinité? Est-ce à toi d'être un garant pour lui?\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmdcccxcix{Ou bien penses-tu que la plupart d'entre eux entendent ou comprennent? Ils ne sont en vérité comparables qu'à des bestiaux. Ou plutôt, ils sont plus égarés encore du sentier.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmcm{N'as-tu pas vu comment ton Seigneur étend l'ombre? S'Il avait voulu, certes, Il l'aurait faite immobile. Puis Nous lui fîmes du soleil son indice,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmcmi{puis Nous la saisissons [pour la ramener] vers Nous avec facilité.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmcmii{Et c'est Lui qui vous fit de la nuit un vêtement, du sommeil un repos et qui fit du jour un retour à la vie active.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmcmiii{Et c'est Lui qui envoya les vents comme une annonce précédant Sa miséricorde. Nous fîmes descendre du ciel une eau pure et purifiante,\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmcmiv{pour faire revivre par elle une contrée morte, et donner à boire aux multiples bestiaux et hommes que Nous avons créés.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmcmv{Nous l'avions répartie entre eux afin qu'ils se rappellent (de Nous). Mais la plupart des gens se refusent à tout sauf à être ingrats.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmcmvi{Or, si Nous avions voulu, Nous aurions certes envoyé dans chaque cité un avertisseur.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmcmvii{N'obéis donc pas aux infidèles; et avec ceci (le Coran), lutte contre eux vigoureusement.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmcmviii{Et c'est Lui qui donne libre cours aux deux mers: l'une douce, rafraîchissante, l'autre salée, amère. Et Il assigne entre les deux une zone intermédiaire et un barrage infranchissable.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmcmix{Et c'est Lui qui de l'eau a créé une espèce humaine qu'Il unit par les liens de la parenté et de l'alliance. Et ton Seigneur demeure Omnipotent.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmcmx{Mais ils adorent en dehors d'Allah, ce qui ne leur profite point, ni ne leur nuit! Et l'infidèle sera toujours l'allié des ennemis de son Seigneur!\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmcmxi{Or, Nous ne t'avons envoyé que comme annonciateur et avertisseur.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmcmxii{Dis: «Je ne vous en demande aucun salaire (pour moi même). Toutefois, celui qui veut suivre un chemin conduisant vers son Seigneur [est libre de dépenser dans la voie d'Allah]».\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmcmxiii{Et place ta confiance en Le Vivant qui ne meurt jamais. Et par Sa louange, glorifie-Le. Il suffit comme Parfait Connaisseur des péchés de Ses serviteurs.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmcmxiv{C'est Lui qui, en six jours, a créé les cieux, la terre et tout ce qui existe entre eux, et le Tout Miséricordieux S'est établi «Istawâ» ensuite sur le Trône. Interroge donc qui est bien informé de Lui.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmcmxv{Et quand on leur dit: «Prosternez-vous devant le Tout Miséricordieux», ils disent: «Qu'est-ce donc que le Tout Miséricordieux? Allons-nous nous prosterner devant ce que tu nous commandes?» - Et cela accroît leur répulsion.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmcmxvi{Que soit béni Celui qui a placé au ciel des constellations et y a placé un luminaire (le soleil) et aussi une lune éclairante!\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmcmxvii{Et c'est Lui qui a assigné une alternance à la nuit et au jour pour quiconque veut y réfléchir ou montrer sa reconnaissance.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmcmxviii{Les serviteurs du Tout Miséricordieux sont ceux qui marchent humblement sur terre, qui, lorsque les ignorants s'adressent à eux, disent: «Paix»,\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmcmxix{qui passent les nuits prosternés et debout devant leur Seigneur;\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmcmxx{qui disent: «Seigneur, écarte de nous le châtiment de l'Enfer». - car son châtiment est permanent.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmcmxxi{Quels mauvais gîte et lieu de séjour!\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmcmxxii{Qui, lorsqu'ils dépensent, ne sont ni prodigues ni avares mais se tiennent au juste milieu.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmcmxxiii{Qui n'invoquent pas d'autre dieu avec Allah et ne tuent pas la vie qu'Allah a rendue sacrée, sauf à bon droit; qui ne commettent pas de fornication - car quiconque fait cela encourra une punition\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmcmxxiv{et le châtiment lui sera doublé, au Jour de la Résurrection, et il y demeurera éternellement couvert d'ignominie;\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmcmxxv{sauf celui qui se repent, croit et accomplit une bonne œuvre; ceux-là Allah changera leurs mauvaises actions en bonnes, et Allah est Pardonneur et Miséricordieux;\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmcmxxvi{et quiconque se repent et accomplit une bonne œuvre c'est vers Allah qu'aboutira son retour.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmcmxxvii{Ceux qui ne donnent pas de faux témoignages; et qui, lorsqu'ils passent auprès d'une frivolité, s'en écartent noblement;\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmcmxxviii{qui lorsque les versets de leur Seigneur leur sont rappelés, ne deviennent ni sourds ni aveugles;\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmcmxxix{et qui disent: «Seigneur, donne-nous, en nos épouses et nos descendants, la joie des yeux, et fais de nous un guide pour les pieux».\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmcmxxx{Ceux-là auront pour récompense un lieu élevé [du Paradis] à cause de leur endurance, et ils y seront accueillis avec le salut et la paix,\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxi{pour y demeurer éternellement. Quel beau gîte et lieu de séjour!\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxii{Dis: «Mon Seigneur ne se souciera pas de vous sans votre prière; mais vous avez, démenti (le Prophète). Votre [châtiment] sera inévitable et permanent.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxiii{\basmalahfr T'â, Sîn, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxiv{Voici les versets du Livre explicite.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxv{Il se peut que tu te consumes de chagrin parce qu'ils ne sont pas croyants!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxvi{Si Nous voulions, Nous ferions descendre du ciel sur eux un prodige devant lequel leurs nuques resteront courbées.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxvii{Aucun nouveau rappel ne leur vient du Tout Miséricordieux sans qu'ils ne l'esquivent.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxviii{Et ils ont traité de mensonge [tout ce qui leur vient du Seigneur]. Il leur viendra bientôt des nouvelles de ce dont ils se raillent.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmcmxxxix{N'ont-ils pas observé la terre, combien Nous y avons fait pousser de couples généreux de toutes sortes?\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmcmxl{Voilà bien là une preuve! Et la plupart d'entre eux ne croient pas.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmcmxli{Et ton Seigneur est en vérité Lui le Tout Puissant, le Très Miséricordieux.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmcmxlii{Et lorsque ton Seigneur appela Moïse: «Rends-toi auprès du peuple injuste,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmcmxliii{[auprès du] peuple de Pharaon» ne craindront-ils pas (Allah)?\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmcmxliv{Il dit: «Seigneur, je crains qu'ils ne me traitent de menteur;\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmcmxlv{que ma poitrine ne se serre, et que ma langue ne soit embarrassée: Mande donc Aaron.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmcmxlvi{Ils ont un crime à me reprocher; je crains donc qu'ils ne me tuent».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmcmxlvii{Mais [Allah lui] dit: «Jamais! Allez tous deux avec Nos prodiges, Nous resterons avec vous et Nous écouterons.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmcmxlviii{Rendez-vous donc tous deux auprès de Pharaon, puis dites: «Nous sommes les messagers du Seigneur de l'univers,\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmcmxlix{pour que tu renvoies les Enfants d'Israël avec nous».\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmcml{«Ne t'avons-nous pas, dit Pharaon, élevé chez nous tout enfant? Et n'as-tu pas demeuré parmi nous des années de ta vie?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmcmli{Puis tu as commis le méfait que tu as fait, en dépit de toute reconnaissance».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmcmlii{«Je l'ai fait, dit Moïse, alors que j'étais encore du nombre des égarés.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmcmliii{Je me suis donc enfui de vous quand j'ai eu peur de vous: puis, mon Seigneur m'a donné la sagesse et m'a désigné parmi Ses messagers.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmcmliv{Est-ce là un bienfait de ta part [que tu me rappelles] avec reproche, alors que tu as asservi les Enfants d'Israël?»\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmcmlv{«Et qu'est-ce que le Seigneur de l'univers?» dit Pharaon.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmcmlvi{«Le Seigneur des cieux et de la terre et de ce qui existe entre eux, dit [Moïse], si seulement vous pouviez en être convaincus!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmcmlvii{[Pharaon] dit à ceux qui l'entouraient: «N'entendez-vous pas?\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmcmlviii{[Moïse] continue: «... Votre Seigneur, et le Seigneur de vos plus anciens ancêtres».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmcmlix{«Vraiment, dit [Pharaon], votre messager qui vous a été envoyé, est un fou».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmcmlx{[Moïse] ajouta: «... Le Seigneur du Levant et du Couchant et de ce qui est entre les deux; si seulement vous compreniez!»\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmcmlxi{«Si tu adoptes, dit [Pharaon], une autre divinité que moi, je te mettrai parmi les prisonniers».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmcmlxii{«Et même si je t'apportais, dit [Moïse], une chose (une preuve) évidente?\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmcmlxiii{«Apporte-la, dit [Pharaon], si tu es du nombre des véridiques».\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmcmlxiv{[Moïse] jeta donc son bâton et le voilà devenu un serpent manifeste.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmcmlxv{Et il tira sa main et voilà qu'elle était blanche (étincelante) à ceux qui regardaient.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmcmlxvi{[Pharaon] dit aux notables autour de lui: «Voilà en vérité un magicien savant.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmcmlxvii{Il veut par sa magie vous expulser de votre terre. Que commandez-vous?»\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmcmlxviii{Ils dirent: «Remets-les à plus tard, [lui] et son frère, et envoie des gens dans les villes, pour rassembler,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmcmlxix{et t'amener tout grand magicien savant».\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmcmlxx{Les magiciens furent donc réunis en rendez-vous au jour convenu.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxi{Et il fut dit aux gens: «Est-ce que vous allez vous réunir,\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxii{afin que nous suivions les magiciens, si ce sont eux les vainqueurs?»\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxiii{Puis, lorsque les magiciens arrivèrent, ils dirent à Pharaon: «Y aura-t-il vraiment une récompense pour nous, si nous sommes les vainqueurs?»\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxiv{Il dit: «Oui, bien sûr, vous serez alors parmi mes proches!»\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxv{Moïse leur dit: «Jetez ce que vous avez à jeter».\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxvi{Ils jetèrent donc leurs cordes et leurs bâtons et dirent: «Par la puissance de Pharaon!... C'est nous qui serons les vainqueurs».\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxvii{Puis Moïse jeta son bâton, et voilà qu'il happait ce qu'ils avaient fabriqué.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxviii{Alors les magiciens tombèrent prosternés,\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxix{disant: «Nous croyons au Seigneur de l'univers,\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxx{Le Seigneur de Moïse et d'Aaron».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxi{[Pharaon] dit: «Avez-vous cru en lui avant que je ne vous le permette? En vérité, c'est lui votre chef, qui vous a enseigné la magie! Eh bien, vous saurez bientôt! Je vous couperai, sûrement, mains et jambes opposées, et vous crucifierai tous».\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxii{Ils disent: «Il n'y a pas de mal! Car c'est vers notre Seigneur que nous retournerons.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxiii{Nous convoitons que notre Seigneur nous pardonne nos fautes pour avoir été les premiers à croire».\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxiv{Et Nous révélâmes à Moïse [ceci]: «Pars de nuit avec Mes serviteurs, car vous serez poursuivis».\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxv{Puis, Pharaon envoya des rassembleurs [dire] dans les villes:\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxvi{«Ce sont, en fait, une bande peu nombreuse,\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxvii{mais ils nous irritent,\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxviii{tandis que nous sommes tous vigilants».\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmcmlxxxix{Ainsi, Nous les fîmes donc sortir des jardins, des sources,\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmcmxc{des trésors et d'un lieu de séjour agréable.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmcmxci{Il en fut ainsi! Et Nous les donnâmes en héritage aux enfants d'Israël.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmcmxcii{Au lever du soleil, ils les poursuivirent.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmcmxciii{Puis, quand les deux partis se virent, les compagnons de Moïse dirent: «Nous allons être rejoints».\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmcmxciv{Il dit: «Jamais, car j'ai avec moi mon Seigneur qui va me guider».\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmcmxcv{Alors Nous révélâmes à Moïse: «Frappe la mer de ton bâton». Elle se fendit alors, et chaque versant fut comme une énorme montagne.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmcmxcvi{Nous fîmes approcher les autres [Pharaon et son peuple].\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmcmxcvii{Et Nous sauvâmes Moïse et tous ceux qui étaient avec lui;\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmcmxcviii{ensuite Nous noyâmes les autres.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmcmxcix{Voilà bien là un prodige, mais la plupart d'entre eux ne croient pas.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmm{Et ton Seigneur, c'est en vérité Lui le Tout Puissant, le Très Miséricordieux.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmi{Et récite-leur la nouvelle d'Abraham:\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmii{Quand il dit à son père et à son peuple: «Qu'adorez-vous?»\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmiii{Ils dirent: «Nous adorons des idoles et nous leurs restons attachés».\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmiv{Il dit: «Vous entendent-elles lorsque vous [les] appelez?\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmv{ou vous profitent-elles? ou vous nuisent-elles?»\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmvi{Ils dirent: «Non! mais nous avons trouvé nos ancêtres agissant ainsi».\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmvii{Il dit: «Que dites-vous de ce que vous adoriez...?\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmviii{Vous et vos vieux ancêtres?\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmix{Ils sont tous pour moi des ennemis sauf le Seigneur de l'univers,\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmx{qui m'a créé, et c'est Lui qui me guide;\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmxi{et c'est Lui qui me nourrit et me donne à boire;\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmxii{et quand je suis malade, c'est Lui qui me guérit,\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmxiii{et qui me fera mourir, puis me redonnera la vie,\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmxiv{et c'est de Lui que je convoite le pardon de mes fautes le Jour de la Rétribution.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmxv{Seigneur, accorde-moi sagesse (et savoir) et fais-moi rejoindre les gens de bien;\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmxvi{fais que j'aie une mention honorable sur les langues de la postérité;\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmmxvii{et fais de moi l'un des héritiers du Jardin des délices.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmmxviii{et pardonne à mon père: car il a été du nombre des égarés;\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmmxix{et ne me couvre pas d'ignominie, le jour où l'on sera ressuscité,\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmmxx{le jour où ni les biens, ni les enfants ne seront d'aucune utilité,\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmmxxi{sauf celui qui vient à Allah avec un cœur sain».\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmmxxii{On rapprochera alors le Paradis pour les pieux,\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmmxxiii{et l'on exposera aux errants la Fournaise,\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmmxxiv{et on leur dira: «Où sont ceux que vous adoriez,\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmmxxv{en dehors d'Allah? vous secourent-ils? ou se secourent-ils eux-mêmes?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmmxxvi{Ils y seront donc jetés pêle-mêle, et les errants aussi,\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmmxxvii{ainsi que toutes les légions de Iblis.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmmxxviii{Ils diront, tout en s'y querellant:\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmmxxix{«Par Allah! Nous étions certes dans un égarement évident,\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mmmxxx{quand nous faisions de vous les égaux du Seigneur de l'univers.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mmmxxxi{Ce ne sont que les criminels qui nous ont égarés.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mmmxxxii{Et nous n'avons pas d'intercesseurs,\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mmmxxxiii{ni d'ami chaleureux.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mmmxxxiv{Si un retour nous était possible, alors nous serions parmi les croyants!»\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mmmxxxv{Voilà bien là un signe; cependant, la plupart d'entre eux ne croient pas.\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mmmxxxvi{Et ton Seigneur, c'est Lui vraiment le Puissant, le Très Miséricordieux.\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mmmxxxvii{Le peuple de Noé traita de menteurs les Messagers,\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mmmxxxviii{lorsque Noé, leur frère, (contribule) leur dit: «Ne craindrez-vous pas [Allah]?\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mmmxxxix{Je suis pour vous un messager digne de confiance.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mmmxl{Craignez Allah donc et obéissez-moi.\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mmmxli{Et je ne vous demande pas de salaire pour cela; mon salaire n'incombe qu'au Seigneur de l'univers.\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mmmxlii{Craignez Allah donc, et obéissez-moi».\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mmmxliii{Ils dirent: «Croirons-nous en toi, alors que ce sont les plus vils qui te suivent.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mmmxliv{Il dit: «Je ne sais pas ce que ceux-là faisaient.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mmmxlv{Leur compte n'incombe qu'à mon Seigneur. Si seulement vous êtes conscients.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@mmmxlvi{Je ne suis pas celui qui repousse les croyants.\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@mmmxlvii{Je ne suis qu'un avertisseur explicite».\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@mmmxlviii{Ils dirent: «Si tu ne cesses pas, Noé, tu seras certainement du nombre des lapidés!»\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@mmmxlix{Il dit: «O mon Seigneur, mon peuple me traite de menteur.\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@mmml{Tranche donc clairement entre eux et moi; et sauve-moi ainsi que ceux des croyants qui sont avec moi».\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@mmmli{Nous le sauvâmes donc, de même que ceux qui étaient avec lui dans l'arche, pleinement chargée.\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@mmmlii{Et ensuite nous noyâmes le reste (les infidèles).\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@mmmliii{Voilà bien là un signe. Cependant, la plupart d'entre eux ne croient pas.\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@mmmliv{Et Ton Seigneur, c'est lui vraiment le Puissant, le Très Miséricordieux.\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@mmmlv{Les 'Aad traitèrent de menteurs les Envoyés.\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@mmmlvi{Et quand Hûd, leur frère (contribule), leur dit: «Ne craindrez-vous pas [Allah]?»\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@mmmlvii{Je suis pour vous un messager digne de confiance,\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@mmmlviii{Craignez Allah donc et obéissez-moi.\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@mmmlix{Et je ne vous demande pas de salaire pour cela; mon salaire n'incombe qu'au Seigneur de l'univers.\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@mmmlx{Bâtissez-vous par frivolité sur chaque colline un monument?\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@mmmlxi{Et édifiez-vous des châteaux comme si vous deviez demeurer éternellement?\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@mmmlxii{Et quand vous sévissez contre quelqu'un, vous le faites impitoyablement.\qt@no{(130)}}
+\qt@newcmd\qurantrans@fr@mmmlxiii{Craignez Allah donc et obéissez-moi.\qt@no{(131)}}
+\qt@newcmd\qurantrans@fr@mmmlxiv{Craignez Celui qui vous a pourvus de [toutes les bonnes choses] que vous connaissez,\qt@no{(132)}}
+\qt@newcmd\qurantrans@fr@mmmlxv{qui vous a pourvus de bestiaux et d'enfants,\qt@no{(133)}}
+\qt@newcmd\qurantrans@fr@mmmlxvi{de jardins et de sources.\qt@no{(134)}}
+\qt@newcmd\qurantrans@fr@mmmlxvii{Je crains pour vous le châtiment d'un Jour terrible».\qt@no{(135)}}
+\qt@newcmd\qurantrans@fr@mmmlxviii{Ils dirent: «Que tu nous exhortes ou pas, cela nous est parfaitement égal!\qt@no{(136)}}
+\qt@newcmd\qurantrans@fr@mmmlxix{Ce ne sont là que des mours des anciens:\qt@no{(137)}}
+\qt@newcmd\qurantrans@fr@mmmlxx{Nous ne serons nullement châtiés».\qt@no{(138)}}
+\qt@newcmd\qurantrans@fr@mmmlxxi{Ils le traitèrent donc de menteur. Et nous les fîmes périr. Voilà bien là un signe! Cependant, la plupart d'entre eux ne croient pas.\qt@no{(139)}}
+\qt@newcmd\qurantrans@fr@mmmlxxii{Et Ton Seigneur, c'est Lui vraiment le Puissant, le Très Miséricordieux.\qt@no{(140)}}
+\qt@newcmd\qurantrans@fr@mmmlxxiii{Les Thamûd traitèrent de menteurs les Messagers.\qt@no{(141)}}
+\qt@newcmd\qurantrans@fr@mmmlxxiv{Quand Sâlih, leur frère (contribule) leur dit: «Ne craindrez-vous pas [Allah]?»\qt@no{(142)}}
+\qt@newcmd\qurantrans@fr@mmmlxxv{Je suis pour vous un messager digne de confiance.\qt@no{(143)}}
+\qt@newcmd\qurantrans@fr@mmmlxxvi{Craignez Allah donc et obéissez-moi.\qt@no{(144)}}
+\qt@newcmd\qurantrans@fr@mmmlxxvii{Je ne vous demande pas de salaire pour cela, mon salaire n'incombe qu'au Seigneur de l'univers.\qt@no{(145)}}
+\qt@newcmd\qurantrans@fr@mmmlxxviii{Vous laissera-t-on en sécurité dans votre présente condition?\qt@no{(146)}}
+\qt@newcmd\qurantrans@fr@mmmlxxix{Au milieu de jardins, de sources,\qt@no{(147)}}
+\qt@newcmd\qurantrans@fr@mmmlxxx{de cultures et de palmiers aux fruits digestes?\qt@no{(148)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxi{Creusez-vous habilement des maisons dans les montagnes?\qt@no{(149)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxii{Craignez Allah donc et obéissez-moi.\qt@no{(150)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxiii{N'obéissez pas à l'ordre des outranciers,\qt@no{(151)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxiv{qui sèment le désordre sur la terre et n'améliorent rien».\qt@no{(152)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxv{Ils dirent: «Tu n'es qu'un ensorcelé.\qt@no{(153)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxvi{Tu n'es qu'un homme comme nous. Apporte donc un prodige, si tu es du nombre des véridiques».\qt@no{(154)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxvii{Il dit: «Voici une chamelle: à elle de boire un jour convenu, et à vous de boire un jour.\qt@no{(155)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxviii{Et ne lui infligez aucun mal, sinon le châtiment d'un jour terrible vous saisira».\qt@no{(156)}}
+\qt@newcmd\qurantrans@fr@mmmlxxxix{Mais ils la tuèrent. Eh bien, ils eurent à regretter!\qt@no{(157)}}
+\qt@newcmd\qurantrans@fr@mmmxc{Le châtiment, en effet, les saisit. Voilà bien là un prodige. Cependant, la plupart d'entre eux ne croient pas.\qt@no{(158)}}
+\qt@newcmd\qurantrans@fr@mmmxci{Et ton Seigneur, c'est en vérité Lui le Tout Puissant, le Très Miséricordieux.\qt@no{(159)}}
+\qt@newcmd\qurantrans@fr@mmmxcii{Le peuple de Lot traita de menteurs les Messagers,\qt@no{(160)}}
+\qt@newcmd\qurantrans@fr@mmmxciii{quand leur frère Lot leur dit: «Ne craindrez-vous pas [Allah]?\qt@no{(161)}}
+\qt@newcmd\qurantrans@fr@mmmxciv{Je suis pour vous un messager digne de confiance.\qt@no{(162)}}
+\qt@newcmd\qurantrans@fr@mmmxcv{Craignez Allah donc et obéissez-moi.\qt@no{(163)}}
+\qt@newcmd\qurantrans@fr@mmmxcvi{Je ne vous demande pas de salaire pour cela; mon salaire n'incombe qu'au Seigneur de l'univers.\qt@no{(164)}}
+\qt@newcmd\qurantrans@fr@mmmxcvii{Accomplissez-vous l'acte charnel avec les mâles de ce monde?\qt@no{(165)}}
+\qt@newcmd\qurantrans@fr@mmmxcviii{Et délaissez-vous les épouses que votre Seigneur a créées pour vous? Mais vous n'êtes que des gens transgresseurs».\qt@no{(166)}}
+\qt@newcmd\qurantrans@fr@mmmxcix{Ils dirent: «Si tu ne cesses pas, Lot, tu seras certainement du nombre des expulsés».\qt@no{(167)}}
+\qt@newcmd\qurantrans@fr@mmmc{Il dit: «Je déteste vraiment ce que vous faites.\qt@no{(168)}}
+\qt@newcmd\qurantrans@fr@mmmci{Seigneur, sauve-moi ainsi que ma famille de ce qu'ils font».\qt@no{(169)}}
+\qt@newcmd\qurantrans@fr@mmmcii{Nous le sauvâmes alors, lui et toute sa famille,\qt@no{(170)}}
+\qt@newcmd\qurantrans@fr@mmmciii{sauf une vieille qui fut parmi les exterminés.\qt@no{(171)}}
+\qt@newcmd\qurantrans@fr@mmmciv{Puis Nous détruisîmes les autres;\qt@no{(172)}}
+\qt@newcmd\qurantrans@fr@mmmcv{et Nous fîmes pleuvoir sur eux une pluie (de pierres). Et quelle pluie fatale pour ceux qui sont avertis!\qt@no{(173)}}
+\qt@newcmd\qurantrans@fr@mmmcvi{Voilà bien là un prodige. Cependant, la plupart d'entre eux ne croient pas.\qt@no{(174)}}
+\qt@newcmd\qurantrans@fr@mmmcvii{Et ton Seigneur, c'est en vérité Lui le Tout Puissant, le Très Miséricordieux.\qt@no{(175)}}
+\qt@newcmd\qurantrans@fr@mmmcviii{Les gens d'Al-Ayka traitèrent de menteurs les Messagers.\qt@no{(176)}}
+\qt@newcmd\qurantrans@fr@mmmcix{Lorsque Chuayb leur dit: «Ne craindrez-vous pas [Allah]».\qt@no{(177)}}
+\qt@newcmd\qurantrans@fr@mmmcx{Je suis pour vous un messager digne de confiance.\qt@no{(178)}}
+\qt@newcmd\qurantrans@fr@mmmcxi{Craignez Allah donc et obéissez-moi,\qt@no{(179)}}
+\qt@newcmd\qurantrans@fr@mmmcxii{et je ne vous demande pas de salaire pour cela; mon salaire n'incombe qu'au Seigneur de l'univers.\qt@no{(180)}}
+\qt@newcmd\qurantrans@fr@mmmcxiii{Donnez la pleine mesure et n'en faites rien perdre [aux gens].\qt@no{(181)}}
+\qt@newcmd\qurantrans@fr@mmmcxiv{et pesez avec une balance exacte.\qt@no{(182)}}
+\qt@newcmd\qurantrans@fr@mmmcxv{Ne donnez pas aux gens moins que leur dû; et ne commettez pas de désordre et de corruption sur terre.\qt@no{(183)}}
+\qt@newcmd\qurantrans@fr@mmmcxvi{Et craignez Celui qui vous a créés, vous et les anciennes générations».\qt@no{(184)}}
+\qt@newcmd\qurantrans@fr@mmmcxvii{Ils dirent: «Tu es certes du nombre des ensorcelés;\qt@no{(185)}}
+\qt@newcmd\qurantrans@fr@mmmcxviii{Tu n'es qu'un homme comme nous; et vraiment nous pensons que tu es du nombre des menteurs.\qt@no{(186)}}
+\qt@newcmd\qurantrans@fr@mmmcxix{Fais donc tomber sur nous des morceaux du ciel si tu es du nombre des véridiques!»\qt@no{(187)}}
+\qt@newcmd\qurantrans@fr@mmmcxx{Il dit: «Mon Seigneur sait mieux ce que vous faites».\qt@no{(188)}}
+\qt@newcmd\qurantrans@fr@mmmcxxi{Mais ils le traitèrent de menteur. Alors, le châtiment du jour de l'Ombre les saisit. Ce fut le châtiment d'un jour terrible.\qt@no{(189)}}
+\qt@newcmd\qurantrans@fr@mmmcxxii{Voilà bien là un prodige. Cependant, la plupart d'entre eux ne croient pas.\qt@no{(190)}}
+\qt@newcmd\qurantrans@fr@mmmcxxiii{Et ton Seigneur, c'est en vérité Lui le Tout Puissant, le Très Miséricordieux.\qt@no{(191)}}
+\qt@newcmd\qurantrans@fr@mmmcxxiv{Ce (Coran) ci, c'est le Seigneur de l'univers qui l'a fait descendre,\qt@no{(192)}}
+\qt@newcmd\qurantrans@fr@mmmcxxv{et l'Esprit fidèle est descendu avec cela\qt@no{(193)}}
+\qt@newcmd\qurantrans@fr@mmmcxxvi{sur ton cœur, pour que tu sois du nombre des avertisseurs,\qt@no{(194)}}
+\qt@newcmd\qurantrans@fr@mmmcxxvii{en une langue arabe très claire.\qt@no{(195)}}
+\qt@newcmd\qurantrans@fr@mmmcxxviii{Et ceci était déjà mentionné dans les Ecrits des anciens (envoyés).\qt@no{(196)}}
+\qt@newcmd\qurantrans@fr@mmmcxxix{N'est-ce pas pour eux un signe, que les savants des Enfants d'Israël le sachent?\qt@no{(197)}}
+\qt@newcmd\qurantrans@fr@mmmcxxx{Si Nous l'avions fait descendre sur quelqu'un des non-Arabes,\qt@no{(198)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxi{et que celui-ci le leur eut récité, ils n'y auraient pas cru.\qt@no{(199)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxii{Ainsi l'avons Nous fait pénétrer [le doute] dans les cœurs des criminels;\qt@no{(200)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxiii{mais ils n'y [le Coran] croiront pas avant de voir le châtiment douloureux,\qt@no{(201)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxiv{qui viendra sur eux soudain, sans qu'ils s'en rendent compte;\qt@no{(202)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxv{alors ils diront: «Est-ce qu'on va nous donner du répit?»\qt@no{(203)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxvi{Est-ce qu'ils cherchent à hâter Notre châtiment?\qt@no{(204)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxvii{Vois-tu si Nous leur permettions de jouir, des années durant,\qt@no{(205)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxviii{et qu'ensuite leur arrive ce dont on les menaçait,\qt@no{(206)}}
+\qt@newcmd\qurantrans@fr@mmmcxxxix{les jouissances qu'on leur a permises ne leur serviraient à rien.\qt@no{(207)}}
+\qt@newcmd\qurantrans@fr@mmmcxl{Et Nous ne faisons pas périr de cité avant qu'elle n'ait eu des avertisseurs,\qt@no{(208)}}
+\qt@newcmd\qurantrans@fr@mmmcxli{[à titre de] rappel, et Nous ne sommes pas injuste.\qt@no{(209)}}
+\qt@newcmd\qurantrans@fr@mmmcxlii{Et ce ne sont point les diables qui sont descendus avec ceci (le Coran):\qt@no{(210)}}
+\qt@newcmd\qurantrans@fr@mmmcxliii{cela ne leur convient pas; et ils n'auraient pu le faire.\qt@no{(211)}}
+\qt@newcmd\qurantrans@fr@mmmcxliv{Car ils sont écartés de toute écoute (du message divin).\qt@no{(212)}}
+\qt@newcmd\qurantrans@fr@mmmcxlv{N'invoque donc pas une autre divinité avec Allah, sinon tu seras du nombre des châtiés.\qt@no{(213)}}
+\qt@newcmd\qurantrans@fr@mmmcxlvi{Et avertis les gens qui te sont les plus proches.\qt@no{(214)}}
+\qt@newcmd\qurantrans@fr@mmmcxlvii{Et abaisse ton aile [sois bienveillant] pour les croyants qui te suivent.\qt@no{(215)}}
+\qt@newcmd\qurantrans@fr@mmmcxlviii{Mais s'ils te désobéissent, dis-leur: «Moi, je désavoue ce que vous faites».\qt@no{(216)}}
+\qt@newcmd\qurantrans@fr@mmmcxlix{Et place ta confiance dans le Tout Puissant, le Très Miséricordieux,\qt@no{(217)}}
+\qt@newcmd\qurantrans@fr@mmmcl{qui te voit quand tu te lèves,\qt@no{(218)}}
+\qt@newcmd\qurantrans@fr@mmmcli{et (voit) tes gestes parmi ceux qui se prosternent.\qt@no{(219)}}
+\qt@newcmd\qurantrans@fr@mmmclii{C'est Lui vraiment, l'Audient, l'Omniscient.\qt@no{(220)}}
+\qt@newcmd\qurantrans@fr@mmmcliii{Vous apprendrai-Je sur qui les diables descendent?\qt@no{(221)}}
+\qt@newcmd\qurantrans@fr@mmmcliv{Ils descendent sur tout calomniateur, pécheur.\qt@no{(222)}}
+\qt@newcmd\qurantrans@fr@mmmclv{Ils tendent l'oreille... Cependant, la plupart d'entre eux sont menteurs.\qt@no{(223)}}
+\qt@newcmd\qurantrans@fr@mmmclvi{Et quant aux poètes, ce sont les égarés qui les suivent.\qt@no{(224)}}
+\qt@newcmd\qurantrans@fr@mmmclvii{Ne vois-tu pas qu'ils divaguent dans chaque vallée,\qt@no{(225)}}
+\qt@newcmd\qurantrans@fr@mmmclviii{et qu'ils disent ce qu'ils ne font pas?\qt@no{(226)}}
+\qt@newcmd\qurantrans@fr@mmmclix{à part ceux qui croient et font de bonnes œuvres, qui invoquent souvent le nom d'Allah et se défendent contre les torts qu'on leur fait. Les injustes verront bientôt le revirement qu'ils [éprouveront]!\qt@no{(227)}}
+\qt@newcmd\qurantrans@fr@mmmclx{\basmalahfr T'â, Sîn. Voici les versets du Coran et d'un Livre explicite,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmclxi{un guide et une bonne annonce aux croyants,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmclxii{qui accomplissent la Salât, acquittent la Zakât et croient avec certitude en l'au-delà.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmclxiii{Quant à ceux qui ne croient pas en l'au-delà, Nous embellissons [à leurs yeux] leurs actions, et alors ils deviennent confus et hésitants.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmclxiv{Ce sont eux qui subiront le pire châtiment, tandis qu'ils seront dans l'au-delà les plus grands perdants.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmclxv{Certes, c'est toi qui reçois le Coran, de la part d'un Sage, d'un Savant.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmclxvi{(Rappelle) quand Moïse dit à sa famille: «J'ai aperçu un feu; je vais vous en apporter des nouvelles, ou bien je vous apporterai un tison allumé afin que vous vous réchauffiez».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmclxvii{Lorsqu'il y arriva, on l'appela, - béni soit Celui qui est dans le feu et Celui qui est tout autour, et gloire à Allah, Seigneur de l'univers.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmclxviii{«O Moïse, c'est Moi, Allah le Tout Puissant, le Sage».\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmclxix{Et: «Jette ton bâton». Quand il le vit remuer comme un serpent, il tourna le dos [pour fuir] sans revenir sur ses pas. «N'aie pas peur, Moïse. Les Messagers n'ont point peur auprès de Moi.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmclxx{Sauf celui qui a commis une injustice puis a remplacé le mal par le bien... alors Je suis Pardonneur et Miséricordieux».\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmclxxi{Et introduis ta main dans l'ouverture de ta tunique. Elle sortira blanche et sans aucun mal - un des neuf prodiges à Pharaon et à son peuple, car ils sont vraiment des gens pervers» -.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmclxxii{Et lorsque Nos prodiges leur parvinrent, clairs et explicites, ils dirent: «C'est là une magie évidente!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmclxxiii{Ils les nièrent injustement et orgueilleusement, tandis qu'en eux-mêmes ils y croyaient avec certitude. Regarde donc ce qu'il est advenu des corrupteurs.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmclxxiv{Nous avons effectivement donné à David et à Salomon une science; et ils dirent: «Louange à Allah qui nous a favorisés à beaucoup de Ses serviteurs croyants».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmclxxv{Et Salomon hérita de David et dit: «O hommes! On nous a appris le langage des oiseaux; et on nous a donné part de toutes choses. C'est là vraiment la grâce évidente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmclxxvi{Et furent rassemblées pour Salomon, ses armées de djinns, d'hommes et d'oiseaux, et furent placées en rangs.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmclxxvii{Quand ils arrivèrent à la Vallée des Fourmis, une fourmi dit: «O fourmis, entrez dans vos demeures, [de peur] que Salomon et ses armées ne vous écrasent [sous leurs pieds] sans s'en rendre compte».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmclxxviii{Il sourit, amusé par ses propos et dit: «Permets-moi Seigneur, de rendre grâce pour le bienfait dont Tu m'as comblé ainsi que mes père et mère, et que je fasse une bonne œuvre que tu agrées et fais-moi entrer, par Ta miséricorde, parmi Tes serviteurs vertueux».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmclxxix{Puis il passa en revue les oiseaux et dit: «Pourquoi ne vois-je pas la huppe? est-elle parmi les absents?\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmclxxx{Je la châtierai sévèrement! ou je l'égorgerai! ou bien elle m'apportera un argument explicite».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxi{Mais elle n'était restée (absente) que peu de temps et dit: «J'ai appris ce que tu n'as point appris; et je te rapporte de Saba' une nouvelle sûre:\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxii{J'ai trouvé qu'une femme est leur reine, que de toute chose elle a été comblée et qu'elle a un trône magnifique.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxiii{Je l'ai trouvée, elle et son peuple, se prosternant devant le soleil au lieu d'Allah. Le Diable leur a embelli leurs actions, et les a détournés du droit chemin, et ils ne sont pas bien guidés.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxiv{Que ne se prosternent-ils devant Allah qui fait sortir ce qui est caché dans les cieux et la terre, et qui sait ce que vous cachez et aussi ce que vous divulguez?\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxv{Allah! Point de divinité à part Lui, le Seigneur du Trône Immense.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxvi{Alors, Salomon dit: «Nous allons voir si tu as dis la vérité ou si tu as menti.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxvii{Pars avec ma lettre que voici; puis lance-la à eux; ensuite tiens-toi à l'écart d'eux pour voir ce que sera leur réponse.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxviii{La reine dit: «O notables! Une noble lettre m'a été lancée.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmclxxxix{Elle vient de Salomon; et c'est: «Au nom d'Allah, le Tout Miséricordieux, le Très Miséricordieux,\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmcxc{Ne soyez pas hautains avec moi et venez à moi en toute soumission».\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmcxci{Elle dit: «O notables! Conseillez-moi sur cette affaire: je ne déciderai rien sans que vous ne soyez présents (pour me conseiller)».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmcxcii{Ils dirent: «Nous sommes détenteurs d'une force et d'une puissance redoutable. Le commandement cependant t'appartient. Regarde donc ce que tu veux ordonner».\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmcxciii{Elle dit: «En vérité, quand les rois entrent dans une cité ils la corrompent, et font de ses honorables citoyens des humiliés. Et c'est ainsi qu'ils agissent.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmcxciv{Moi, je vais leur envoyer un présent, puis je verrai ce que les envoyés ramèneront».\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmcxcv{Puis, lorsque [la délégation] arriva auprès de Salomon, celui-ci dit: «Est-ce avec des biens que vous voulez m'aider? alors que ce qu'Allah m'a procuré est meilleur que ce qu'Il vous a procuré. Mais c'est vous plutôt qui vous réjouissez de votre cadeau.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmcxcvi{Retourne vers eux. Nous viendrons avec des armées contre lesquelles ils n'auront aucune résistance, et nous les en expulserons tout humiliés et méprisés.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmcxcvii{Il dit: «O notables! Qui de vous m'apportera son trône avant qu'ils ne viennent à moi soumis?»\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmcxcviii{Un djinn redoutable dit: «Je te l'apporterai avant que tu ne te lèves de ta place: pour cela, je suis fort et digne de confiance».\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmcxcix{Quelqu'un qui avait une connaissance du Livre dit: «Je te l'apporterai avant que tu n'aies cligné de l'œil». Quand ensuite, Salomon a vu le trône installé auprès de lui, il dit: «Cela est de la grâce de mon Seigneur, pour m'éprouver si je suis reconnaissant ou si je suis ingrat. Quiconque est reconnaissant c'est dans son propre intérêt qu'il le fait, et quiconque est ingrat... alors mon Seigneur Se suffit à Lui-même et Il est Généreux».\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmcc{Et il dit [encore]: «Rendez-lui son trône méconnaissable, nous verrons alors si elle sera guidée ou si elle est du nombre de ceux qui ne sont pas guidés».\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmcci{Quand elle fut venue on lui dit: «Est-ce que ton trône est ainsi?» Elle dit: «C'est comme s'il l'était». - [Salomon dit]: «Le savoir nous a été donné avant elle; et nous étions déjà soumis».\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmccii{Or, ce qu'elle adorait en dehors d'Allah l'empêchait (d'être croyante) car elle faisait partie d'un peuple mécréant.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmcciii{On lui dit: «Entre dans le palais». Puis, quand elle le vit, elle le prit pour de l'eau profonde et elle se découvrit les jambes. Alors, [Salomon] lui dit: «Ceci est un palais pavé de cristal». - Elle dit: «Seigneur, je me suis fait du tort à moi-même: Je me soumets avec Salomon à Allah, Seigneur de l'univers».\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmcciv{Nous envoyâmes effectivement vers les Thamûd leur frère Sâlih. [qui leur dit]: «Adorez Allah». Et voilà qu'ils se divisèrent en deux groupes qui se disputèrent.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmccv{Il dit: «O mon peuple, pourquoi cherchez-vous à hâter le mal plutôt que le bien? Si seulement vous demandiez pardon à Allah? Peut-être vous serait-il fait miséricorde.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmccvi{Ils dirent: «Nous voyons en toi et en ceux qui sont avec toi, des porteurs de malheur». Il dit: «Votre sort dépend d'Allah. Mais vous êtes plutôt des gens qu'on soumet à la tentation.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmccvii{Et il y avait dans la ville un groupe de neuf individus qui semaient le désordre sur terre et ne faisaient rien de bon.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmccviii{Ils dirent: «Jurons par Allah que nous l'attaquerons de nuit, lui et sa famille. Ensuite nous dirons à celui qui est chargé de le venger: «Nous n'avons pas assisté à l'assassinat de sa famille, et nous sommes sincères».\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmccix{Ils ourdirent une ruse et Nous ourdîmes une ruse sans qu'ils s'en rendent compte.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmccx{Regarde donc ce qu'a été la conséquence de leur stratagème: Nous les fîmes périr, eux et tout leur peuple.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmccxi{Voilà donc leurs maisons désertes à cause de leurs méfaits. C'est bien là un avertissement pour des gens qui savent.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmccxii{Et Nous sauvâmes ceux qui avaient cru et étaient pieux.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmccxiii{[Et rappelle-leur] Lot, quand il dit à son peuple: «Vous livrez-vous à la turpitude [l'homosexualité] alors que vous voyez clair».\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmccxiv{Vous allez aux hommes au lieu de femmes pour assouvir vos désirs? Vous êtes plutôt un peuple ignorant.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmccxv{Puis son peuple n'eut que cette réponse: «Expulsez de votre cité la famille de Lot! Car ce sont des gens qui affectent la pureté.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmccxvi{Nous le sauvâmes ainsi que sa famille, sauf sa femme pour qui Nous avions déterminé qu'elle serait du nombre des exterminés.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmccxvii{Et Nous fîmes pleuvoir sur eux une pluie (de pierres). Et quelle mauvaise pluie que celle des gens prévenus!\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmccxviii{Dis: «Louange à Allah et paix sur Ses serviteurs qu'Il a élus!» Lequel est meilleur: Allah ou bien ce qu'ils Lui associent?\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmccxix{N'est-ce pas Lui qui a créé les cieux et la terre et qui vous a fait descendre du ciel une eau avec laquelle Nous avons fait pousser des jardins pleins de beauté. Vous n'étiez nullement capables de faire pousser leurs arbres. Y a-t-il donc une divinité avec Allah? Non, mais ce sont des gens qui Lui donnent des égaux.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmccxx{N'est-ce pas Lui qui a établi la terre comme lieu de séjour, placé des rivières à travers elle, lui a assigné des montagnes fermes et établi une séparation entre les deux mers, - Y a-t-il donc une divinité avec Allah? Non, mais la plupart d'entre eux ne savent pas.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmccxxi{N'est-ce pas Lui qui répond à l'angoissé quand il L'invoque, et qui enlève le mal, et qui vous fait succéder sur la terre, génération après génération, - Y a-t-il donc une divinité avec Allah? C'est rare que vous vous rappeliez!\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmccxxii{N'est-ce pas Lui qui vous guide dans les ténèbres de la terre et de la mer, et qui envoie les vents, comme une bonne annonce précédent Sa grâce. - Y a-t-il donc une divinité avec Allah? Allah est Très Elevé au-dessus de ce qu'ils [Lui] associent.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmccxxiii{N'est-ce pas Lui qui commence la création, puis la refait, et qui vous nourrit du ciel et de la terre. Y a-t-il donc une divinité avec Allah? Dis: «Apportez votre preuve, si vous êtes véridiques!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmccxxiv{Dis: «Nul de ceux qui sont dans les cieux et sur la terre ne connaît l'Inconnaissable, à part Allah». Et ils ne savent pas quand ils seront ressuscités!\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmccxxv{Mais leurs sciences se sont rejointes au sujet de l'autre monde. Ils doutent plutôt là-dessus. Ou plutôt ils sont aveugles à son sujet.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmccxxvi{Et ceux qui ne croient pas disent: «Est-ce que, quand nous serons poussière, nous et nos pères, est-ce que vraiment on nous fera sortir (de nos tombes)?\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmccxxvii{Certes, on nous l'a promis à nous et à nos pères, auparavant. Ce ne sont que des contes d'anciens!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmccxxviii{Dis: «Parcourez la terre et voyez ce qu'il est advenu des criminels».\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmccxxix{Et ne t'afflige pas sur eux et ne sois pas angoissé à cause de leur complot.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmccxxx{Et ils disent: «Pour quand cette promesse si vous êtes véridiques?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxi{Dis: «Il se peut qu'une partie de ce que vous cherchez à hâter soit déjà sur vos talons».\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxii{Certes, ton Seigneur est pourvoyeur de grâce aux hommes, mais la plupart d'entre eux ne sont pas reconnaissants.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxiii{Certes, ton Seigneur sait ce que cachent leurs poitrines et ce qu'ils divulguent.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxiv{Et il n'y a rien de caché, dans le ciel et la terre, qui ne soit dans un Livre explicite.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxv{Ce Coran raconte aux Enfants d'Israël la plupart des sujets sur lesquels ils divergent,\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxvi{cependant qu'il est pour les croyants un guide et une miséricorde.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxvii{Ton Seigneur décidera certes entre eux par Son jugement; et Il est le Tout Puissant, le Sage.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxviii{Place donc ta confiance en Allah, car tu es de toute évidence dans la vérité et le bon droit.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmccxxxix{Tu ne peux faire entendre les morts ni faire entendre l'appel aux sourds quand ils s'enfuient en tournant le dos.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmccxl{Et tu ne peux non plus guider les aveugles hors de leur égarement. Tu ne feras entendre que ceux qui croient en Nos versets et se soumettent.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmccxli{Et quand la Parole tombera sur eux, Nous leur ferons sortir de terre une bête qui leur parlera; les gens n'étaient nullement convaincus de la vérité de Nos signes [ou versets].\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmccxlii{Et le jour où Nous rassemblerons, de chaque communauté, une foule de ceux qui démentaient Nos révélations, et qu'ils seront placés en rangs.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmccxliii{puis, quand ils seront arrivés, [Allah] dira: «Avez-vous traité de mensonges Mes signes sans les avoir embrassés de votre savoir? Ou que faisiez-vous donc?»\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmmccxliv{Et la Parole leur tombera dessus à cause de leurs méfaits. Et ils ne pourront rien dire.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmmccxlv{N'ont-ils pas vu qu'en vérité, Nous avons désigné la nuit pour qu'ils y aient du repos, et le jour pour voir? Voilà bien des preuves pour des gens qui croient.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmmccxlvi{Et le jour où l'on soufflera dans la Trompe, tous ceux qui sont dans les cieux et ceux qui sont dans la terre seront effrayés, - sauf ceux qu'Allah a voulu [préserver]! - Et tous viendront à Lui en s'humiliant.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmmccxlvii{Et tu verras les montagnes - tu les crois figées - alors qu'elles passent comme des nuages. Telle est l'œuvre d'Allah qui a tout façonné à la perfection. Il est Parfaitement Connaisseur de ce que vous faites!\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmmccxlviii{Quiconque viendra avec le bien aura bien mieux, et ce jour-là, ils seront à l'abri de tout effroi.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmmccxlix{Et quiconque viendra avec le mal... alors ils seront culbutés le visage dans le Feu. N'êtes-vous pas uniquement rétribués selon ce que vous œuvriez?»\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmmccl{«Il m'a été seulement commandé d'adorer le Seigneur de cette Ville (la Mecque) qu'Il a sanctifiée, - et à Lui toute chose - et il m'a été commandé d'être du nombre des Musulmans,\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmmccli{et de réciter le Coran». Quiconque se guide, c'est pour lui-même en effet qu'il se guide. Et quiconque s'égare..., alors dis: «Je ne suis que l'un des avertisseurs».\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmmcclii{Dis: «Louange à Allah! Il vous fera voir Ses preuves, et vous les reconnaîtrez». Ton Seigneur n'est pas inattentif à ce que vous faites.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmmccliii{\basmalahfr T'â, Sîn, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmccliv{Voici les versets du Livre explicite.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmcclv{Nous te racontons en toute vérité, de l'histoire de Moïse et de Pharaon, à l'intention des gens qui croient.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmcclvi{Pharaon était hautain sur terre; il répartit en clans ses habitants, afin d'abuser de la faiblesse de l'un d'eux: Il égorgeait leurs fils et laissait vivantes leurs femmes. Il était vraiment parmi les fauteurs de désordre.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmcclvii{Mais Nous voulions favoriser ceux qui avaient été faibles sur terre et en faire des dirigeants et en faire les héritiers,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmcclviii{et les établir puissamment sur terre, et faire voir à Pharaon, à Hâmân, et à leurs soldats, ce dont ils redoutaient.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmcclix{Et Nous révélâmes à la mère de Moïse [ceci]: «Allaite-le. Et quand tu craindras pour lui, jette-le dans le flot. Et n'aie pas peur et ne t'attriste pas: Nous te le rendrons et ferons de lui un Messager».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmcclx{Les gens de Pharaon le recueillirent, pour qu'il leur soit un ennemi et une source d'affliction! Pharaon, Hâmân et leurs soldats étaient fautifs.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmcclxi{Et la femme de Pharaon dit: «(Cet enfant) réjouira mon œil et le tien! Ne le tuez pas. Il pourrait nous être utile ou le prendrons-nous pour enfant». Et ils ne pressentaient rien.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmcclxii{Et le cœur de la mère de Moïse devint vide. Peu s'en fallut qu'elle ne divulguât tout, si Nous n'avions pas renforcé son cœur pour qu'elle restât du nombre des croyants.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmcclxiii{Elle dit à sa sœur: «Suis-le» elle l'aperçut alors de loin sans qu'ils ne s'en rendent compte.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmcclxiv{Nous lui avions interdit auparavant (le sein) des nourrices. Elle (la sœur de Moïse) dit donc: «Voulez-vous que je vous indique les gens d'une maison qui s'en chargeront pour vous tout en étant bienveillants à son égard?»...\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmcclxv{Ainsi Nous le rendîmes à sa mère, afin que son œil se réjouisse, qu'elle ne s'affligeât pas et qu'elle sût que la promesse d'Allah est vraie. Mais la plupart d'entre eux ne savent pas.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmcclxvi{Et quand il eut atteint sa maturité et sa pleine formation, Nous lui donnâmes la faculté de juger et une science. C'est ainsi que Nous récompensons les bienfaisants.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmcclxvii{Il entra dans la ville à un moment d'inattention de ses habitants; il y trouva deux hommes qui se battaient, l'un était de ses partisans et l'autre de ses adversaires. L'homme de son parti l'appela au secours contre son ennemi. Moïse lui donna un coup de poing qui l'acheva. - [Moïse] dit: «Cela est l'œuvre du Diable. C'est vraiment un ennemi, un égareur évident».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmcclxviii{Il dit: «Seigneur, je me suis fait du tort à moi-même; pardonne-moi». Et Il lui pardonna. C'est Lui vraiment le Pardonneur, le Miséricordieux!\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmcclxix{Il dit: «Seigneur, grâce aux bienfaits dont tu m'as comblé, jamais je ne soutiendrai les criminels».\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmcclxx{Le lendemain matin, il se trouva en ville, craintif et regardant autour de lui, quand voilà que celui qui lui avait demandé secours la veille, l'appelait à grands cris. Moïse lui dit: «Tu es certes un provocateur déclaré».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxi{Quand il voulut porter un coup à leur ennemi commun, il (l'Israélite) dit: «O Moïse, veux-tu me tuer comme tu as tué un homme hier? Tu ne veux être qu'un tyran sur terre; et tu ne veux pas être parmi les bienfaiteurs».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxii{Et c'est alors qu'un homme vint du bout de la ville en courant et dit: «O Moïse, les notables sont en train de se concerter à ton sujet pour te tuer. Quitte (la ville). C'est le conseil que je te donne».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxiii{Il sortit de là, craintif, regardant autour de lui. Il dit: «Seigneur, sauve-moi de [ce] peuple injuste!»\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxiv{Et lorsqu'il se dirigea vers Madyan, il dit: «Je souhaite que mon Seigneur me guide sur la voie droite».\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxv{Et quand il fut arrivé au point d'eau de Madyan, il y trouva un attroupement de gens abreuvant [leurs bêtes] et il trouva aussi deux femmes se tenant à l'écart et retenant [leurs bêtes]. Il dit: «Que voulez-vous?» Elles dirent: «Nous n'abreuverons que quand les bergers seront partis; et notre père est fort âgé».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxvi{Il abreuva [les bêtes] pour elles puis retourna à l'ombre et dit: «Seigneur, j'ai grand besoin du bien que tu feras descendre vers moi».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxvii{Puis l'une des deux femmes vint à lui, d'une démarche timide, et lui dit: «Mon père t'appelle pour te récompenser pour avoir abreuvé pour nous». Et quand il fut venu auprès de lui et qu'il lui eut raconté son histoire, il (le vieillard) dit: «N'aie aucune crainte: tu as échappé aux gens injustes».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxviii{L'une d'elles dit: «O mon père, engage-le [à ton service] moyennant salaire, car le meilleur à engager c'est celui qui est fort et digne de confiance».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxix{Il dit: «Je voudrais te marier à l'une de mes deux filles que voici, à condition que tu travailles à mon service durant huit ans. Si tu achèves dix [années], ce sera de ton bon gré; je ne veux cependant rien t'imposer d'excessif. Tu me trouveras, si Allah le veut, du nombre des gens de bien».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxx{«C'est (conclu) entre toi et moi, dit [Moïse]. Quel que soit celui des deux termes que je m'assigne, il n'y aura nulle pression sur moi. Et Allah est Garant de ce que nous disons».\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxi{Puis, lorsque Moïse eut accompli la période convenue et qu'il se mit en route avec sa famille, il vit un feu du côté du Mont. Il dit à sa famille: «Demeurez ici. J'ai vu du feu. Peut-être vous en apporterai-je une nouvelle ou un tison de feu afin que vous vous réchauffiez».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxii{Puis quand il y arriva, on l'appela, du flanc droit de la vallée, dans la place bénie, à partir de l'arbre: «O Moïse! C'est Moi Allah, le Seigneur de l'univers».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxiii{Et: «Jette ton bâton» Puis quand il le vit remuer comme si c'était un serpent, il tourna le dos sans même se retourner. «O Moïse! Approche et n'aie pas peur: tu es du nombre de ceux qui sont en sécurité.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxiv{Introduis ta main dans l'ouverture de ta tunique: elle sortira blanche sans aucun mal. Et serre ton bras contre toi pour ne pas avoir peur. Voilà donc deux preuves de ton Seigneur pour Pharaon et ses notables. Ce sont vraiment des gens pervers».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxv{«Seigneur, dit [Moïse], j'ai tué un des leurs et je crains qu'ils ne me tuent.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxvi{Mais Aaron, mon frère, est plus éloquent que moi. Envoie-le donc avec moi comme auxiliaire, pour déclarer ma véracité: je crains, vraiment, qu'ils ne me traitent de menteur».\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxvii{[Allah] dit: «Nous allons, par ton frère, fortifier ton bras, et vous donner des arguments irréfutables; ils ne sauront vous atteindre, grâce à Nos signes [Nos miracles]. Vous deux et ceux qui vous suivront seront les vainqueurs.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxviii{Puis, quand Moïse vint à eux avec Nos prodiges évidents, ils dirent: «Ce n'est là que magie inventée. Jamais nous n'avons entendu parler de cela chez nos premiers ancêtres».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmcclxxxix{Et Moïse dit: «Mon Seigneur connaît mieux qui est venu de Sa part avec la guidée, et à qui appartiendra la Demeure finale. Vraiment, les injustes ne réussiront pas».\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmccxc{Et Pharaon dit: «O notables, je ne connais pas de divinité pour vous, autre que moi. Hâmân, allume-moi du feu sur l'argile puis construis-moi une tour peut-être alors monterai-je jusqu'au Dieu de Moïse. Je pense plutôt qu'il est du nombre des menteurs».\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmccxci{Et il s'enfla d'orgueil sur terre ainsi que ses soldats, sans aucun droit. Et ils pensèrent qu'ils ne seraient pas ramenés vers Nous.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmccxcii{Nous le saisîmes donc, ainsi que ses soldats, et les jetâmes dans le flot. Regarde donc ce qu'il est advenu des injustes!\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmccxciii{Nous fîmes d'eux des dirigeants qui appellent les gens au Feu. Et au Jour de la Résurrection ils ne seront pas secourus.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmccxciv{Nous les fîmes suivre, dans cette vie ici-bas, d'une malédiction. Et au Jour de la Résurrection, ils seront parmi les honnis.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmccxcv{Nous avons en effet, donné le Livre à Moïse, - après avoir fait périr les anciennes générations, - en tant que preuves illuminantes pour les gens, ainsi que guidée et miséricorde afin qu'ils se souviennent.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmccxcvi{Tu n'étais pas sur le versant ouest (du Sinaï), quand Nous avons décrété les commandements à Moïse; tu n'étais pas parmi les témoins.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmccxcvii{Mais Nous avons fait naître des générations dont l'âge s'est prolongé. Et tu n'étais pas [non plus] résident parmi les gens de Madyan leur récitant Nos versets; mais c'est Nous qui envoyons les Messagers.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmccxcviii{Et tu n'étais pas au flanc du Mont Tor quand Nous avons appelé. Mais (tu es venu comme) une miséricorde de ton Seigneur, pour avertir un peuple à qui nul avertisseur avant toi n'est venu, afin qu'ils se souviennent.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmccxcix{Si un malheur les atteignait en rétribution de ce que leurs propres mains avaient préparé, ils diraient: «Seigneur, pourquoi ne nous as-Tu pas envoyé un Messager? Nous aurions alors suivi Tes versets et nous aurions été croyants».\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmccc{Mais quand la vérité leur est venue de Notre part, ils ont dit: «Si seulement il avait reçu la même chose que Moïse! «Est-ce qu'ils n'ont pas nié ce qui auparavant fut apporté à Moïse? Ils dirent: «Deux magies se sont mutuellement soutenues!» Et ils dirent: «Nous n'avons foi en aucune».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmccci{Dis-leur: «Apportez donc un Livre venant d'Allah qui soit meilleur guide que ces deux-là, et je le suivrai si vous êtes véridiques».\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmcccii{Mais s'ils ne te répondent pas, sache alors que c'est seulement leurs passions qu'ils suivent. Et qui est plus égaré que celui qui suit sa passion sans une guidée d'Allah? Allah vraiment, ne guide pas les gens injustes.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmccciii{Nous leur avons déjà exposé la Parole (le Coran) afin qu'ils se souviennent.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmccciv{Ceux à qui, avant lui [le Coran], Nous avons apporté le Livre, y croient.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmcccv{Et quand on le leur récite, ils disent: «Nous y croyons. Ceci est bien la vérité émanant de notre Seigneur. Déjà avant son arrivée, nous étions Soumis».\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmcccvi{Voilà ceux qui recevront deux fois leur récompense pour leur endurance, pour avoir répondu au mal par le bien, et pour avoir dépensé de ce que Nous leur avons attribué;\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmcccvii{et quand ils entendent des futilités, ils s'en détournent et disent: «A nous nos actions, et à vous les vôtres. Paix sur vous. Nous ne recherchons pas les ignorants».\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmcccviii{Tu [Muhammad] ne diriges pas celui que tu aimes: mais c'est Allah qui guide qui Il veut. Il connaît mieux cependant les bien-guidés.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmcccix{Et ils dirent: «Si nous suivons avec toi la bonne voie, on nous arrachera de notre terre». - Ne les avons-Nous pas établis dans une enceinte sacrée, sûre, vers laquelle des produits de toute sorte sont apportés comme attribution de Notre part? Mais la plupart d'entre eux ne savent pas.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmcccx{Et combien avons-Nous fait périr de cités qui étaient ingrates (alors que leurs habitants vivaient dans l'abondance), et voilà qu'après eux leurs demeures ne sont que très peu habitées, et c'est Nous qui en fûmes l'héritier.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmcccxi{Ton Seigneur ne fait pas périr des cités avant d'avoir envoyé dans leur métropole un Messager pour leur réciter Nos versets. Et Nous ne faisons périr les cités que lorsque leurs habitants sont injustes.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmcccxii{Tout ce qui vous a été donné est la jouissance éphémère de la vie ici-bas et sa parure, alors que ce qui est auprès d'Allah est meilleur et plus durable... Ne comprenez-vous donc pas?\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmcccxiii{Celui à qui Nous avons fait une belle promesse dont il verra l'accomplissement, est-il comparable à celui à qui Nous avons accordé la jouissance de la vie présente et qui sera ensuite le Jour de la Résurrection, de ceux qui comparaîtront (devant Nous).\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmcccxiv{Et le jour où Il les appellera, Il dira: «Où sont ceux que vous prétendiez être Mes associés?»\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmcccxv{Ceux contre qui la Parole se réalisera diront: «Voici, Seigneur, ceux que nous avons séduits. Nous les avons séduits comme nous nous sommes dévoyés nous-mêmes. Nous les désavouons devant Toi: ce n'est pas nous qu'ils adoraient».\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmcccxvi{Et on [leur] dira: «Appelez vos associés». Ils les appelleront, mais ceux-ci ne leur répondront pas. Quand ils verront le châtiment, ils désireront alors avoir suivi le chemin droit (dans la vie d'ici-bas).\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmcccxvii{Et le jour où Il les appellera et qu'Il dira: «Que répondiez-vous aux Messagers?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmcccxviii{Ce jour-là, leurs arguments deviendront obscurs et ils ne se poseront point de questions.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmcccxix{Mais celui qui se sera repenti, qui aura cru et fait le bien, il se peut qu'il soit parmi ceux qui réussissent.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmcccxx{Ton Seigneur crée ce qu'Il veut et Il choisit; il ne leur a jamais appartenu de choisir. Gloire à Allah! Il transcende ce qu'ils associent à Lui!\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxi{Ton Seigneur sait ce que cachent leurs poitrines et ce qu'ils divulguent.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxii{C'est lui Allah. Pas de divinité à part Lui. A Lui la louange ici-bas comme dans l'au-delà. A Lui appartient le jugement. Et vers Lui vous serez ramenés.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxiii{Dis: «Que diriez-vous? Si Allah vous assignait la nuit en permanence jusqu'au Jour de la Résurrection, quelle divinité autre qu'Allah pourrait vous apporter une lumière? N'entendez-vous donc pas?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxiv{Dis: «Que diriez-vous? Si Allah vous assignait le jour en permanence jusqu'au Jour de la Résurrection, quelle divinité autre qu'Allah pourrait vous apporter une nuit durant laquelle vous reposeriez? N'observez-vous donc pas?»\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxv{C'est de par Sa miséricorde qu'Il vous a assigné la nuit et le jour: pour que vous vous y reposiez et cherchiez de Sa grâce, et afin que vous soyez reconnaissants.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxvi{Et le jour où Il les appellera, Il dira: «Où sont ceux que vous prétendiez être Mes associés?»\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxvii{Cependant, Nous ferons sortir de chaque communauté un témoin, puis Nous dirons: «Apportez votre preuve décisive». Ils sauront alors que la Vérité est à Allah; et que ce qu'ils avaient inventé les a abandonnés.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxviii{En vérité, Coré [Karoûn] était du peuple de Moïse mais il était empli de violence envers eux. Nous lui avions donné des trésors dont les clefs pesaient lourd à toute une bande de gens forts. Son peuple lui dit: «Ne te réjouis point. Car Allah n'aime pas les arrogants.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxix{Et recherche à travers ce qu'Allah t'a donné, la Demeure dernière. Et n'oublie pas ta part en cette vie. Et sois bienfaisant comme Allah a été bienfaisant envers toi. Et ne recherche pas la corruption sur terre. Car Allah n'aime point les corrupteurs».\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxx{Il dit: «C'est par une science que je possède que ceci m'est venu». Ne savait-il pas qu'avant lui Allah avait fait périr des générations supérieures à lui en force et plus riches en biens? Et les criminels ne seront pas interrogés sur leurs péchés»!\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxi{Il sortit à son peuple dans tout son apparat. Ceux qui aimaient la vie présente dirent: «Si seulement nous avions comme ce qui a été donné à Coré. Il a été doté, certes, d'une immense fortune».\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxii{Tandis que ceux auxquels le savoir a été donné dirent: «Malheur à vous! La récompense d'Allah est meilleure pour celui qui croit et fait le bien». Mais elle ne sera reçue que par ceux qui endurent.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxiii{Nous fîmes donc que la terre l'engloutît, lui et sa maison. Aucun clan en dehors d'Allah ne fut là pour le secourir, et il ne pût se secourir lui-même.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxiv{Et ceux qui, la veille, souhaitaient d'être à sa place, se mirent à dire: «Ah! Il est vrai qu'Allah augmente la part de qui Il veut, parmi Ses serviteurs, ou la restreint. Si Allah ne nous avait pas favorisés, Il nous aurait certainement fait engloutir. Ah! Il est vrai que ceux qui ne croient pas ne réussissent pas».\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxv{Cette Demeure dernière, Nous la réservons à ceux qui ne recherchent, ni à s'élever sur terre, ni à y semer la corruption. Cependant, l'heureuse fin appartient aux pieux.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxvi{Quiconque viendra avec le bien, aura meilleur que cela encore; et quiconque viendra avec le mal, (qu'il sache que) ceux qui commettront des méfaits ne seront rétribués que selon ce qu'ils ont commis.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxvii{Celui qui t'a prescrit le Coran te ramènera certainement là où tu (souhaites) retourner. Dis: «Mon Seigneur connaît mieux celui qui a apporté la guidée et celui qui est dans un égarement évident.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxviii{Tu n'espérais nullement que le Livre te serait révélé. Ceci n'a été que par une miséricorde de ton Seigneur. Ne sois donc jamais un soutien pour les infidèles;\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmmcccxxxix{et que ceux-ci ne te détournent point des versets d'Allah une fois qu'on les a fait descendre vers toi. Appelle les gens vers ton Seigneur et ne sois point du nombre des Associateurs.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmmcccxl{Et n'invoque nulle autre divinité avec Allah. Point de divinité à part Lui. Tout doit périr, sauf Son Visage. A Lui appartient le jugement; et vers Lui vous serez ramenés.\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmmcccxli{\basmalahfr Alif, Lâm, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmcccxlii{Est-ce que les gens pensent qu'on les laissera dire: «Nous croyons!» sans les éprouver?\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmcccxliii{Certes, Nous avons éprouvé ceux qui ont vécu avant eux; [Ainsi] Allah connaît ceux qui disent la vérité et ceux qui mentent.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmcccxliv{Ou bien ceux qui commettent des méfaits, comptent-ils pouvoir Nous échapper? Comme leur jugement est mauvais!\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmcccxlv{Celui qui espère rencontrer Allah, le terme fixé par Allah va certainement venir. Et c'est Lui l'Audient, l'Omniscient.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmcccxlvi{Et quiconque lutte, ne lutte que pour lui-même, car Allah peut Se passer de tout l'univers.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmcccxlvii{Et quant à ceux qui croient et font de bonnes œuvres, Nous leur effacerons leurs méfaits, et Nous les rétribuerons de la meilleure récompense pour ce qu'ils auront accompli.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmcccxlviii{Et Nous avons enjoint à l'homme de bien traiter ses père et mère, et «si ceux-ci te forcent à M'associer, ce dont tu n'as aucun savoir, alors ne leur obéis pas». Vers Moi est votre retour, et alors Je vous informerai de ce que vous faisiez.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmcccxlix{Et quant à ceux qui croient et font de bonnes œuvres, Nous les ferons certainement entrer parmi les gens de bien.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmcccl{Parmi les gens il en est qui disent: «Nous croyons en Allah» puis, si on les fait souffrir pour la cause d'Allah, ils considèrent l'épreuve de la part des hommes comme un châtiment d'Allah. Or, s'il vient du secours de ton Seigneur, ils diront certes: «Nous étions avec vous!» Allah n'est-Il pas le meilleur à savoir ce qu'il y a dans les poitrines de tout le monde?\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmcccli{Allah connaît parfaitement les croyants et connaît parfaitement les hypocrites.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmccclii{Et ceux qui ne croient pas disent à ceux qui croient; «Suivez notre sentier, et que nous supportions vos fautes». Mais ils ne supporteront rien de leurs fautes. En vérité ce sont des menteurs.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmcccliii{Et très certainement, ils porteront leurs fardeaux et d'autres fardeaux en plus de leurs propres fardeaux. et ils seront interrogés, le Jour de la Résurrection, sur ce qu'ils inventaient.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmcccliv{Et en effet, Nous avons envoyé Noé vers son peuple. Il demeura parmi eux mille ans moins cinquante années. Puis le déluge les emporta alors qu'ils étaient injustes.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmccclv{Puis Nous le sauvâmes, lui et les gens de l'arche; et Nous en fîmes un avertissement pour l'univers.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmccclvi{Et Abraham, quand il dit à son peuple; «Adorez Allah et craignez-Le: cela vous est bien meilleur si vous saviez».\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmccclvii{Vous n'adorez que des idoles, en dehors d'Allah, et vous forgez un mensonge. Ceux que vous adorez en dehors d'Allah ne possèdent aucun moyen pour vous procurer nourriture; recherchez votre subsistance auprès d'Allah. Adorez-Le et soyez-Lui reconnaissants. C'est à Lui que vous serez ramenés.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmccclviii{Et si vous criez au mensonge, d'autres nations avant vous, ont aussi traité (leurs prophètes) de menteurs. Au Messager, cependant, n'incombe que la transmission claire.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmccclix{Ne voient-ils pas comment Allah commence la création puis la refait? Cela est facile pour Allah.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmccclx{Dis: «Parcourez la terre et voyez comment Il a commencé la création. Puis comment Allah crée la génération ultime. Car Allah est Omnipotent».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmccclxi{Il châtie qui Il veut et fait miséricorde à qui Il veut; et c'est vers Lui que vous serez ramenés.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmccclxii{Et vous ne pourrez vous opposer à Sa puissance ni sur terre, ni au ciel; et il n'y a pas pour vous, en dehors d'Allah, ni allié ni secoureur.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmccclxiii{Et ceux qui ne croient pas aux versets d'Allah et à Sa rencontre, désespèrent de Ma miséricorde. Et ceux-là auront un châtiment douloureux.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmccclxiv{Son peuple ne fit d'autre réponse que: «tuez-le ou brûlez-le». Mais Allah le sauva du feu. C'est bien là des signes pour des gens qui croient.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmccclxv{Et [Abraham] dit: «En effet, c'est pour cimenter des liens entre vous-mêmes dans la vie présente, que vous avez adopté des idoles, en dehors d'Allah. Ensuite, le Jour de la Résurrection, les uns rejetteront les autres, et les uns maudiront les autres, tandis que vous aurez le Feu pour refuge, n'aurez pas de protecteurs.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmccclxvi{Lot crut en lui. Il dit: «Moi, j'émigre vers mon Seigneur, car c'est Lui le Tout Puissant, le Sage».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmccclxvii{Nous lui donnâmes Isaac et Jacob, et plaçâmes dans sa descendance la prophétie et le Livre. Nous lui accordâmes sa récompense ici-bas, tandis que dans l'au-delà, il sera parmi les gens de bien.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmccclxviii{Et Lot, quand il dit à son peuple: «Vraiment, vous commettez la turpitude où nul dans l'univers ne vous a précédés.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmccclxix{Aurez-vous commerce charnel avec des mâles? Pratiquerez-vous le brigandage? Commettrez-vous le blâmable dans votre assemblée?» Mais son peuple ne fit d'autre réponse que: «Fais que le châtiment d'Allah nous vienne, si tu es du nombre des véridiques».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmccclxx{Il dit: «Seigneur, donne-moi victoire sur ce peuple de corrupteurs!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxi{Et quand Nos Anges apportèrent à Abraham la bonne annonce, ils dirent: «Nous allons anéantir les habitants de cette cité car ses habitants sont injustes».\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxii{Il dit: «Mais Lot s'y trouve!» Ils dirent: «Nous savons parfaitement qui y habite: nous le sauverons certainement, lui et sa famille, excepté sa femme qui sera parmi ceux qui périront».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxiii{Et quand Nos Anges vinrent à Lot, il fut affligé pour eux, et se sentit incapable de les protéger. Ils lui dirent: «Ne crains rien et ne t'afflige pas... Nous te sauverons ainsi que ta famille, excepté ta femme qui sera parmi ceux qui périront.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxiv{Nous ferons tomber du ciel un châtiment sur les habitants de cette cité, pour leur perversité».\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxv{Et certainement, Nous avons laissé (des ruines de cette cité) un signe (d'avertissement) évident pour des gens qui comprennent.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxvi{De même, aux Madyan (Nous envoyâmes) leur frère Chuayb qui leur dit: «O mon peuple, adorez Allah et attendez-vous au Jour dernier, et ne semez pas la corruption sur terre».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxvii{Mais ils le traitèrent de menteur. Le cataclysme les saisit, et au matin, ils gisaient sans vie dans leurs demeures.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxviii{De même (Nous anéantîmes) les 'Aad et les Thamûd. - Vous le voyez clairement à travers leurs habitations - Le Diable, cependant, leur avait embelli leurs actions, au point de les repousser loin du Sentier; ils étaient pourtant invités à être clairvoyants.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxix{De même (Nous détruisîmes) Coré, Pharaon et Hâmân. Alors que Moïse leur apporta des preuves, ils s'enorgueillirent sur terre. Et ils n'ont pas pu [Nous] échapper.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxx{Nous saisîmes donc chacun pour son péché: Il y en eut sur qui Nous envoyâmes un ouragan; il y en eut que le Cri saisit; il y en eut que Nous fîmes engloutir par la terre; et il y en eut que Nous noyâmes. Cependant, Allah n'est pas tel à leur faire du tort; mais ils ont fait du tort à eux-mêmes.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxi{Ceux qui ont pris des protecteurs en dehors d'Allah ressemblent à l'araignée qui s'est donnée maison. Or la maison la plus fragile est celle de l'araignée. Si seulement ils savaient!\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxii{Allah connaît toute chose qu'ils invoquent en dehors de Lui. Et c'est Lui le Tout Puissant, le Sage.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxiii{Telles sont les paraboles que Nous citons aux gens; cependant, seuls les savants les comprennent.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxiv{C'est pour une juste raison qu'Allah a créé les cieux et la terre. Voilà bien là une preuve pour les croyants.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxv{Récite ce qui t'est révélé du Livre et accomplis la Salât. En vérité la Salât préserve de la turpitude et du blâmable. Le rappel d'Allah est certes ce qu'il y a de plus grand. Et Allah sait ce que vous faites.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxvi{Et ne discutez que de la meilleure façon avec les gens du Livre, sauf ceux d'entre eux qui sont injustes. Et dites: «Nous croyons en ce qu'on a fait descendre vers nous et descendre vers vous, tandis que notre Dieu et votre Dieu est le même, et c'est à Lui que nous nous soumettons».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxvii{C'est ainsi que Nous t'avons fait descendre le Livre (le Coran). Ceux à qui Nous avons donné le Livre y croient. Et parmi ceux-ci, il en est qui y croient. Seuls les mécréants renient Nos versets.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxviii{Et avant cela, tu ne récitais aucun livre et tu n'en écrivais aucun de ta main droite. Sinon, ceux qui nient la vérité auraient eu des doutes.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmccclxxxix{Il consiste plutôt en des versets évidents, (préservés) dans les poitrines de ceux à qui le savoir a été donné. Et seuls les injustes renient Nos versets.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmcccxc{Et ils dirent: «Pourquoi n'a-t-on pas fait descendre sur lui des prodiges de la part de son Seigneur?» Dis: «Les prodiges sont auprès d'Allah. Moi, je ne suis qu'un avertisseur bien clair».\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmcccxci{Ne leur suffit-il donc point que Nous ayons fait descendre sur toi le Livre et qu'il leur soit récité? Il y a assurément là une miséricorde et un rappel pour des gens qui croient.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmcccxcii{Dis: «Allah suffit comme témoin entre moi et vous». Il sait ce qui est dans les cieux et la terre. Et quant à ceux qui croient au faux et ne croient pas en Allah, ceux-là seront les perdants.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmcccxciii{Et ils te demandent de hâter [la venue] du châtiment. S'il n'y avait pas eu un terme fixé, le châtiment leur serait certes venu. Et assurément, il leur viendra soudain, sans qu'ils en aient conscience.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmcccxciv{Ils te demandent de hâter [la venue] du châtiment, tandis que l'Enfer cerne les mécréants de toutes parts.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmcccxcv{Le jour où le châtiment les enveloppera d'en haut et sous leurs pieds. Il [leur] dira: «Goûtez à ce que vous faisiez!»\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmcccxcvi{O Mes serviteurs qui avaient cru! Ma terre est bien vaste. Adorez-Moi donc!\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmcccxcvii{Toute âme goûtera la mort. Ensuite c'est vers Nous que vous serez ramenés.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmcccxcviii{Et quant à ceux qui croient et accomplissent de bonnes œuvres, Nous les installerons certes à l'étage dans le Paradis sous lequel coulent les ruisseaux, pour y demeurer éternellement. Quelle belle récompense que celle de ceux qui font le bien,\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmcccxcix{qui endurent, et placent leur confiance en leur Seigneur!\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmcd{Que de bêtes ne se chargent point de leur propre nourriture! C'est Allah qui les nourrit ainsi que vous. Et c'est Lui l'Audient, l'Omniscient.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmcdi{Si tu leur demandes: «Qui a créé les cieux et la terre, et assujetti le soleil et la lune?», ils diront très certainement: «Allah». Comment se fait-il qu'ensuite ils se détournent (du chemin droit)?\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmcdii{Allah dispense largement ou restreint Ses dons à qui Il veut parmi Ses serviteurs. Certes, Allah est Omniscient.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmcdiii{Si tu leur demandes: «Qui a fait descendre du ciel une eau avec laquelle Il fit revivre la terre après sa mort?», ils diront très certainement: «Allah». Dis: «Louange à Allah!» Mais la plupart d'entre eux ne raisonnent pas.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmcdiv{Cette vie d'ici-bas n'est qu'amusement et jeu. La Demeure de l'au-delà est assurément la vraie vie. S'ils savaient!\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmcdv{Quand ils montent en bateau, ils invoquent Allah Lui vouant exclusivement leur culte. Une fois qu'Il les a sauvés [des dangers de la mer en les ramenant] sur la terre ferme, voilà qu'ils [Lui] donnent des associés.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmcdvi{Qu'ils nient ce que nous leur avons donné et jouissent des biens de ce monde! Ils sauront bientôt!\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmcdvii{Ne voient-ils pas que vraiment Nous avons fait un sanctuaire sûr [la Mecque], alors que tout autour d'eux on enlève les gens? Croiront-ils donc au faux et nieront-ils les bienfaits d'Allah?\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmcdviii{Et quel pire injuste que celui qui invente un mensonge contre Allah, ou qui dément la Vérité quand elle lui parvient? N'est-ce pas dans l'Enfer une demeure pour les mécréants?\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmcdix{Et quant à ceux qui luttent pour Notre cause, Nous les guiderons certes sur Nos sentiers. Allah est en vérité avec les bienfaisants.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmcdx{\basmalahfr Alif, Lâm, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmcdxi{Les Romains ont été vaincus,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmcdxii{dans le pays voisin, et après leur défaite ils seront les vainqueurs,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmcdxiii{dans quelques années. A Allah appartient le commandement, au début et à la fin, et ce jour-là les Croyants se réjouiront\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmcdxiv{du secours d'Allah. Il secourt qui Il veut et Il est le Tout Puissant, le Tout Miséricordieux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmcdxv{C'est [là] la promesse d'Allah. Allah ne manque jamais à Sa promesse mais la plupart des gens ne savent pas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmcdxvi{Ils connaissent un aspect de la vie présente, tandis qu'ils sont inattentifs à l'au-delà.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmcdxvii{N'ont-ils pas médité en eux-mêmes? Allah n'a créé les cieux et la terre et ce qui est entre eux, qu'à juste raison et pour un terme fixé. Beaucoup de gens cependant ne croient pas en la rencontre de leur Seigneur.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmcdxviii{N'ont-ils pas parcouru la terre pour voir ce qu'il est advenu de ceux qui ont vécu avant eux? Ceux-là les surpassaient en puissance et avaient labouré et peuplé la terre bien plus qu'ils ne l'ont fait eux-mêmes. Leurs messagers leur vinrent avec des preuves évidentes. Ce n'est pas Allah qui leur fit du tort; mais ils se firent du tort à eux-mêmes.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmcdxix{Puis, mauvaise fut la fin de ceux qui faisaient le mal, ayant traité de mensonges les versets d'Allah et les ayant raillés.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmcdxx{C'est Allah qui commence la création; ensuite Il la refait; puis, vers Lui vous serez ramenés.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxi{Et le jour où l'Heure arrivera, les criminels seront frappés de désespoir.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxii{Et ils n'auront point d'intercesseurs parmi ceux qu'ils associaient [à Allah] et ils renieront même leurs divinités.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxiii{Le jour où l'Heure arrivera, ce jour-là ils se sépareront [les uns des autres].\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxiv{Ceux qui auront cru et accompli de bonnes œuvres se réjouiront dans un jardin;\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxv{et quant à ceux qui n'auront pas cru et auront traité de mensonges Nos signes ainsi que la rencontre de l'au-delà, ceux-là seront emmenés au châtiment.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxvi{Glorifiez Allah donc, soir et matin!\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxvii{A Lui toute louange dans les cieux et la terre, dans l'après-midi et au milieu de la journée.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxviii{Du mort, Il fait sortir le vivant, et du vivant, Il fait sortir le mort. Et Il redonne la vie à la terre après sa mort. Et c'est ainsi que l'on vous fera sortir (à la résurrection).\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxix{Parmi Ses signes: Il vous a créés de terre, - puis, vous voilà des hommes qui se dispersent [dans le monde] -.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxx{Et parmi Ses signes Il a créé de vous, pour vous, des épouses pour que vous viviez en tranquillité avec elles et Il a mis entre vous de l'affection et de la bonté. Il y a en cela des preuves pour des gens qui réfléchissent.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxi{Et parmi Ses signes la création des cieux et de la terre et la variété de vos idiomes et de vos couleurs. Il y a en cela des preuves pour les savants.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxii{Et parmi Ses signes votre sommeil la nuit et le jour, et aussi votre quête de Sa grâce. Il y a en cela des preuves pour des gens qui entendent.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxiii{Et parmi Ses signes Il vous montre l'éclair avec crainte (de la foudre) et espoir (de la pluie), et fait descendre du ciel une eau avec laquelle Il redonne la vie à la terre après sa mort. Il y a en cela des preuves pour des gens qui raisonnent.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxiv{Et parmi Ses signes le ciel et la terre sont maintenus par Son ordre; ensuite lorsqu'Il vous appellera d'un appel, voilà que de la terre vous surgirez.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxv{A Lui tous ceux qui sont dans les cieux et la terre: tous Lui sont entièrement soumis.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxvi{Et c'est Lui qui commence la création puis la refait; et cela Lui est plus facile. Il a la transcendance absolue dans les cieux et sur la terre. C'est Lui le Tout Puissant, le Sage.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxvii{Il vous a cité une parabole de vous-mêmes: Avez-vous associé vos esclaves à ce que Nous vous avons attribué en sorte que vous soyez tous égaux [en droit de propriété] et que vous les craignez [autant] que vous vous craignez mutuellement? C'est ainsi que Nous exposons Nos versets pour des gens qui raisonnent.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxviii{Ceux qui ont été injustes ont plutôt suivi leurs propres passions, sans savoir. Qui donc peut guider celui qu'Allah égare? Et ils n'ont pas pour eux, de protecteur.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmcdxxxix{Dirige tout ton être vers la religion exclusivement [pour Allah], telle est la nature qu'Allah a originellement donnée aux hommes - pas de changement à la création d'Allah -. Voilà la religion de droiture; mais la plupart des gens ne savent pas.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmcdxl{Revenez repentants vers Lui; craignez-Le, accomplissez la Salât et ne soyez pas parmi les associateurs,\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmcdxli{parmi ceux qui ont divisé leur religion et sont devenus des sectes, chaque parti exultant de ce qu'il détenait.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmcdxlii{Et quand un mal touche les gens, ils invoquent leur Seigneur en revenant à Lui repentants. Puis s'Il leur fait goûter de Sa part une miséricorde, voilà qu'une partie d'entre eux donnent à leur Seigneur des associés,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmcdxliii{en sorte qu'ils deviennent ingrats envers ce que Nous leur avons donné. «Et jouissez donc. Vous saurez bientôt».\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmcdxliv{Avons-Nous fait descendre sur eux une autorité (un Livre) telle qu'elle parle de ce qu'ils Lui associaient?\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmcdxlv{Et quand Nous faisons goûter une miséricorde aux gens, ils en exultent. Mais si un malheur les atteint à cause de ce que leurs propres mains ont préparé, voilà qu'ils désespèrent.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmcdxlvi{N'ont-ils pas vu qu'Allah dispense Ses dons ou les restreint à qui Il veut? Il y a en cela des preuves pour des gens qui croient.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmcdxlvii{Donne donc au proche parent son dû, ainsi qu'au pauvre, et au voyageur en détresse. Cela est meilleur pour ceux qui recherchent la face d'Allah (Sa satisfaction); et ce sont eux qui réussissent.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmcdxlviii{Tout ce que vous donnerez à usure pour augmenter vos biens aux dépens des biens d'autrui ne les accroît pas auprès d'Allah, mais ce que vous donnez comme Zakât, tout en cherchant la Face d'Allah (Sa satisfaction)... Ceux-là verront [leurs récompenses] multipliées.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmcdxlix{C'est Allah qui vous a créés et vous a nourris. Ensuite Il vous fera mourir, puis Il vous redonnera vie. Y en a-t-il, parmi vos associés, qui fasse quoi que ce soit de tout cela? Gloire à Lui! Il transcende ce qu'on Lui associe.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmcdl{La corruption est apparue sur la terre et dans la mer à cause de ce que les gens ont accompli de leurs propres mains; afin qu'[Allah] leur fasse goûter une partie de ce qu'ils ont œuvré; peut-être reviendront-ils (vers Allah).\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmcdli{Dis: «Parcourez la terre et regardez ce qu'il est advenu de ceux qui ont vécu avant. La plupart d'entre eux étaient des associateurs».\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmcdlii{Dirige tout ton être vers la religion de droiture, avant que ne vienne d'Allah un jour qu'on ne peut repousser. Ce jour-là [les gens] seront divisés:\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmcdliii{Celui qui aura mécru subira [les conséquences] de son infidélité. Et quiconque aura œuvré en bien... C'est pour eux-mêmes qu'ils préparent (leur avenir),\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmcdliv{afin qu'[Allah] récompense par Sa grâce ceux qui croient et accomplissent les bonnes œuvres. En vérité, Il n'aime pas les infidèles.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmcdlv{Parmi Ses signes, Il envoie les vents comme annonciateurs, pour vous faire goûter de Sa miséricorde et pour que le vaisseau vogue, par Son ordre, et que vous recherchiez de Sa grâce. Peut-être seriez-vous reconnaissants!\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmcdlvi{Nous avons effectivement envoyé avant toi des Messagers vers leurs peuples et ils leur apportèrent les preuves. Nous Nous vengeâmes de ceux qui commirent les crimes [de la négation]; et c'était Notre devoir de secourir les croyants.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmcdlvii{Allah, c'est Lui qui envoie les vents qui soulèvent des nuages; puis Il les étend dans le ciel comme Il veut; et Il les met en morceaux. Tu vois alors la pluie sortir de leurs profondeurs. Puis, lorsqu'Il atteint avec elle qui Il veut parmi Ses serviteurs, les voilà qui se réjouissent,\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmcdlviii{même s'ils étaient auparavant, avant qu'on ne l'ait fait descendre sur eux, désespérés.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmcdlix{Regarde donc les effets de la miséricorde d'Allah comment Il redonne la vie à la terre après sa mort. C'est Lui qui fait revivre les morts et Il est Omnipotent.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmcdlx{Et si Nous envoyons un vent et qu'ils voient jaunir [leur végétation], ils demeurent après cela ingrats (oubliant les bienfaits antérieurs).\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxi{En vérité, tu ne fais pas entendre les morts; et tu ne fais pas entendre aux sourds l'appel, s'ils s'en vont en tournant le dos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxii{Tu n'es pas celui qui guide les aveugles hors de leur égarement. Tu ne fais entendre que ceux qui croient en Nos versets et qui sont alors entièrement soumis [musulmans].\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxiii{Allah, c'est Lui qui vous a créés faibles; puis après la faiblesse, Il vous donne la force; puis après la force, Il vous réduit à la faiblesse et à la vieillesse: Il crée ce qu'Il veut et c'est Lui l'Omniscient, l'Omnipotent.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxiv{Et le jour où l'Heure arrivera, les criminels jureront qu'ils n'ont demeuré qu'une heure. C'est ainsi qu'ils ont été détournés (de la vérité);\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxv{tandis que ceux à qui le savoir et la foi furent donnés diront: «Vous avez demeuré d'après le Décret d'Allah, jusqu'au Jour de la Résurrection, voici le Jour de la Résurrection, - mais vous ne saviez point».\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxvi{ce jour-là donc, les excuses ne seront pas utiles aux injustes et on ne leur demandera pas à chercher à plaire à [Allah].\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxvii{Et dans ce Coran, Nous avons certes cité, pour les gens, des exemples de toutes sortes. Et si tu leur apportes un prodige, ceux qui ne croient pas diront: «Certes, vous n'êtes que des imposteurs».\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxviii{C'est ainsi qu'Allah scelle les cœurs de ceux qui ne savent pas.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxix{Sois donc patient, car la promesse d'Allah est vérité. Et que ceux qui ne croient pas fermement ne t'ébranlent pas!\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxx{\basmalahfr Alif, Lâm, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxi{Voici les versets du Livre plein de sagesse,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxii{c'est un guide et une miséricorde aux bienfaisants,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxiii{qui accomplissent la Salât, acquittent la Zakât et qui croient avec certitude en l'au-delà.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxiv{Ceux-là sont sur le chemin droit de leur Seigneur et ce sont eux les bienheureux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxv{Et, parmi les hommes, il est [quelqu'un] qui, dénué de science, achète de plaisants discours pour égarer hors du chemin d'Allah et pour le prendre en raillerie. Ceux-là subiront un châtiment avilissant.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxvi{Et quand on lui récite Nos versets, il tourne le dos avec orgueil, comme s'il ne les avait point entendus, comme s'il y avait un poids dans ses oreilles. Fais-lui donc l'annonce d'un châtiment douloureux.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxvii{Ceux qui croient et accomplissent les bonnes œuvres auront les Jardins des délices,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxviii{pour y demeurer éternellement, - c'est en vérité une promesse d'Allah-. C'est Lui le Puissant, le Sage.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxix{Il a créé les cieux sans piliers que vous puissiez voir; et Il a enfoncé des montagnes fermes dans la terre pour l'empêcher de basculer avec vous; et Il y a propagé des animaux de toute espèce. Et du ciel, Nous avons fait descendre une eau, avec laquelle Nous avons fait pousser des plantes productives par couples de toute espèce.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxx{«Voilà la création d'Allah. Montrez-Moi donc ce qu'ont créé, ceux qui sont en dehors de Lui?» Mais les injustes sont dans un égarement évident.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxi{Nous avons effectivement donné à Luqmân la sagesse: «Sois reconnaissant à Allah, car quiconque est reconnaissant, n'est reconnaissant que pour soi-même; quant à celui qui est ingrat... En vérité, Allah se dispense de tout, et Il est digne de louange».\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxii{Et lorsque Luqmân dit à son fils tout en l'exhortant: «O mon fils, ne donne pas d'associé à Allah, car l'association à [Allah] est vraiment une injustice énorme.»\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxiii{Nous avons commandé à l'homme [la bienfaisance envers] ses père et mère; sa mère l'a porté [subissant pour lui] peine sur peine: son sevrage a lieu à deux ans. «Sois reconnaissant envers Moi ainsi qu'envers tes parents. Vers Moi est la destination.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxiv{Et si tous deux te forcent à M'associer ce dont tu n'as aucune connaissance, alors ne leur obéis pas; mais reste avec eux ici-bas de façon convenable. Et suis le sentier de celui qui se tourne vers Moi. Vers Moi, ensuite, est votre retour, et alors Je vous informerai de ce que vous faisiez».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxv{«O mon enfant, fût-ce le poids d'un grain de moutarde, au fond d'un rocher, ou dans les cieux ou dans la terre, Allah le fera venir. Allah est infiniment Doux et Parfaitement Connaisseur.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxvi{O mon enfant accomplis la Salât, commande le convenable, interdis le blâmable et endure ce qui t'arrive avec patience. Telle est la résolution à prendre dans toute entreprise!\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxvii{Et ne détourne pas ton visage des hommes, et ne foule pas la terre avec arrogance: car Allah n'aime pas le présomptueux plein de gloriole.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxviii{Sois modeste dans ta démarche, et baisse ta voix, car la plus détestée des voix, c'est bien la voix des ânes».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmcdlxxxix{Ne voyez-vous pas qu'Allah vous a assujetti ce qui est dans les cieux et sur la terre? Et Il vous a comblés de Ses bienfaits apparents et cachés. Et parmi les gens, il y en a qui disputent à propos d'Allah, sans science, ni guidée, ni Livre éclairant.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmcdxc{Et quand on leur dit: «Suivez ce qu'Allah a fait descendre», ils disent: «Nous suivons plutôt ce sur quoi nous avons trouvé nos ancêtres». Est-ce donc même si le Diable les appelait au châtiment de la fournaise!\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmcdxci{Et quiconque soumet son être à Allah, tout en étant bienfaisant, s'accroche réellement à l'anse la plus ferme. La fin de toute chose appartient à Allah.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmcdxcii{Celui qui a mécru, que sa mécréance ne t'afflige pas: vers Nous sera leur retour et Nous les informerons de ce qu'ils faisaient. Allah connaît bien le contenu des poitrines.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmcdxciii{Nous leur donnons de la jouissance pour peu de temps; ensuite Nous les forcerons vers un dur châtiment.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmcdxciv{Si tu leur demandes: «Qui a créé les cieux et la terre?», ils diront, certes: «Allah!» Dis: «Louange à Allah!». Mais la plupart d'entre eux ne savent pas.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmcdxcv{A Allah appartient tout ce qui est dans les cieux et en terre. Allah est Celui qui se suffit à Lui-même, Il est Le Digne de louange!\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmcdxcvi{Quand bien même tous les arbres de la terre se changeraient en calames [plumes pour écrire], quand bien même l'océan serait un océan d'encre où conflueraient sept autres océans, les paroles d'Allah ne s'épuiseraient pas. Car Allah est Puissant et Sage.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmcdxcvii{Votre création et votre résurrection [à tous] sont [aussi faciles à Allah] que s'il s'agissait d'une seule âme. Certes Allah est Audient et Clairvoyant.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmcdxcviii{N'as-tu pas vu qu'Allah fait pénétrer la nuit dans le jour, et qu'il fait pénétrer le jour dans la nuit, et qu'Il a assujetti le soleil et la lune chacun poursuivant sa course jusqu'à un terme fixé? Et Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmcdxcix{Il en est ainsi parce qu'Allah est la Vérité, et que tout ce qu'ils invoquent en dehors de Lui est le Faux, et qu'Allah, c'est Lui le Haut, le Grand.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmd{N'as-tu pas vu que c'est par la grâce d'Allah que le vaisseau vogue dans la mer, afin qu'Il vous fasse voir de Ses merveilles? Il y a en cela des preuves pour tout homme patient et reconnaissant.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmdi{Quand une vague les recouvre comme des ombres, ils invoquent Allah, vouant leur culte exclusivement à Lui; et lorsqu'Il les sauve, en les ramenant vers la terre ferme, certains d'entre eux deviennent réticents; mais, seul le grand traître et le grand ingrat renient Nos signes.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmdii{O hommes! Craignez votre Seigneur et redoutez un jour où le père ne répondra en quoi que ce soit pour son enfant, ni l'enfant pour son père. La promesse d'Allah est vérité. Que la vie présente ne vous trompe donc pas, et que le Trompeur (Satan) ne vous induise pas en erreur sur Allah!\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmdiii{La connaissance de l'Heure est auprès d'Allah; et c'est Lui qui fait tomber la pluie salvatrice; et Il sait ce qu'il y a dans les matrices. Et personne ne sait ce qu'il acquerra demain, et personne ne sait dans quelle terre il mourra. Certes, Allah est Omniscient et Parfaitement Connaisseur.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmdiv{\basmalahfr Alif, Lâm, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmdv{La Révélation du Livre, nul doute là-dessus, émane du Seigneur de l'univers.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmdvi{Diront-ils qu'il (Muhammad) l'a inventé? Ceci est, au contraire, la vérité venant de ton Seigneur pour que tu avertisses un peuple à qui nul avertisseur avant toi n'est venu, afin qu'ils se guident.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmdvii{Allah qui a créé en six jours les cieux et la terre, et ce qui est entre eux. Ensuite Il S'est établi «Istawâ» sur le Trône. Vous n'avez, en dehors de Lui, ni allié ni intercesseur. Ne vous rappelez-vous donc pas?\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmdviii{Du ciel à la terre, Il administre l'affaire, laquelle ensuite monte vers Lui en un jour équivalent à mille ans de votre calcul.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmdix{C'est Lui le Connaisseur [des mondes] inconnus et visibles, le Puissant, le Miséricordieux,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmdx{qui a bien fait tout ce qu'Il a créé. Et Il a commencé la création de l'homme à partir de l'argile,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmdxi{puis Il tira sa descendance d'une goutte d'eau vile [le sperme];\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmdxii{puis Il lui donna sa forme parfaite et lui insuffla de Son Esprit. Et Il vous a assigné l'ouïe, les yeux et le cœur. Que vous êtes peu reconnaissants!\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmdxiii{Et ils disent: «Quand nous serons perdus dans la terre [sous forme de poussière], redeviendrons-nous une création nouvelle?» En outre, ils ne croient pas en la rencontre avec leur Seigneur.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmdxiv{Dis: «L'Ange de la mort qui est chargé de vous, vous fera mourir. Ensuite, vous serez ramenés vers Votre Seigneur».\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmdxv{Si tu voyais alors les criminels [comparaître], têtes basses devant leur Seigneur! «Notre Seigneur, Nous avons vu et entendu, renvoie-nous donc afin que nous puissions faire du bien; nous croyons [maintenant] avec certitude».\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmdxvi{«Si Nous voulions, Nous apporterions à chaque âme sa guidée. Mais la parole venant de Moi doit être réalisée: «J'emplirai l'Enfer de djinns et d'hommes réunis».\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmdxvii{«Goûtez donc! Pour avoir oublié la rencontre de votre jour que voici. Nous aussi Nous vous avons oubliés. Goûtez au châtiment éternel pour ce que vous faisiez».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmdxviii{Seuls croient en Nos versets ceux qui, lorsqu'on les leur rappelle, tombent prosternés et, par des louanges à leur Seigneur, célèbrent Sa gloire et ne s'enflent pas d'orgueil.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmdxix{Ils s'arrachent de leurs lits pour invoquer leur Seigneur, par crainte et espoir; et ils font largesse de ce que Nous leur attribuons.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmdxx{Aucun être ne sait ce qu'on a réservé pour eux comme réjouissance pour les yeux, en récompense de ce qu'ils œuvraient!\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmdxxi{Celui qui est croyant est-il comparable au pervers? (Non), ils ne sont point égaux.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmdxxii{Ceux qui croient et accomplissent les bonnes œuvres, auront leur résidence dans les Jardins du Refuge, en récompense de ce qu'ils œuvraient.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmdxxiii{Et quant à ceux qui auront été pervers, leur refuge sera le Feu: toutes les fois qu'ils voudront en sortir, ils y seront ramenés, et on leur dira: «Goûtez au châtiment du Feu auquel vous refusiez de croire».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmdxxiv{Nous leur ferons certainement goûter au châtiment ici-bas, avant le grand châtiment afin qu'ils retournent (vers le chemin droit)!\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmdxxv{Qui est plus injuste que celui à qui les versets d'Allah sont rappelés et qui ensuite s'en détourne? Nous nous vengerons certes des criminels.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmdxxvi{Nous avons effectivement donné à Moïse le Livre - ne sois donc pas en doute sur ta rencontre avec lui -, et l'avons assigné comme guide aux Enfants d'Israël.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmdxxvii{Et Nous avons désigné parmi eux des dirigeants qui guidaient (les gens) par Notre ordre aussi longtemps qu'ils enduraient et croyaient fermement en Nos versets.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmdxxviii{Ton Seigneur, c'est Lui qui décidera entre eux, au Jour de la Résurrection, de ce sur quoi ils divergeaient.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmdxxix{N'est-ce pas pour eux une indication le fait qu'avant eux, Nous ayons fait périr tant de générations dans les maisons desquelles ils marchent? Il y a en cela des preuves! N'écouteront-ils donc pas?\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmdxxx{N'ont-ils pas vu que Nous poussons l'eau vers un sol aride, qu'ensuite Nous en faisons sortir une culture que consomment leurs bestiaux et eux-mêmes? Ne voient-ils donc pas,?\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxi{Et ils disent: «A quand cette victoire, si vous êtes véridiques?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxii{Dis: «Le jour de la Victoire, il sera inutile aux infidèles de croire! Et aucun délai ne leur sera donné».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxiii{Eloigne-toi d'eux et attends. Eux aussi demeurent dans l'attente.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxiv{\basmalahfr O Prophète! Crains Allah et n'obéis pas aux infidèles et aux hypocrites, car Allah demeure Omniscient et Sage.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxv{Et suis ce qui t'est révélé émanant de Ton Seigneur. Car Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxvi{Et place ta confiance en Allah. Allah te suffit comme protecteur.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxvii{Allah n'a pas placé à l'homme deux cœurs dans sa poitrine. Il n'a point assimilé à vos mères vos épouses [à qui vous dites en les répudiant]: «Tu es [aussi illicite] pour moi que le dos de ma mère». Il n'a point fait de vos enfants adoptifs vos propres enfants. Ce sont des propos [qui sortent] de votre bouche. Mais Allah dit la vérité et c'est Lui qui met [l'homme] dans la bonne direction.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxviii{Appelez-les du nom de leurs pères: c'est plus équitable devant Allah. Mais si vous ne connaissez pas leurs pères, alors considérez-les comme vos frères en religion ou vos alliés. Nul blâme sur vous pour ce que vous faites par erreur, mais (vous serez blâmés pour) ce que vos cœurs font délibérément. Allah, cependant, est Pardonneur et Miséricordieux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmdxxxix{Le Prophète a plus de droit sur les croyants qu'ils n'en ont sur eux-mêmes; et ses épouses sont leurs mères. Les liens de consanguinité ont [dans les successions] la priorité [sur les liens] unissant les croyants [de Médine] et les émigrés [de la Mecque] selon le livre d'Allah, à moins que vous ne fassiez un testament convenable en faveur de vos frères en religion. Et cela est inscrit dans le Livre.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmdxl{Lorsque Nous prîmes des prophètes leur engagement, de même que de toi, de Noé, d'Abraham, de Moïse, et de Jésus fils de Marie: et Nous avons pris d'eux un engagement solennel,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmdxli{afin [qu'Allah] interroge les véridiques sur leur sincérité. Et Il a préparé aux infidèles un châtiment douloureux.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmdxlii{O vous qui croyez! Rappelez-vous le bienfait d'Allah sur vous, quand des troupes vous sont venues et que Nous avons envoyé contre elles un vent et des troupes que vous n'avez pas vues. Allah demeure Clairvoyant sur ce que vous faites.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmdxliii{Quand ils vous vinrent d'en haut et d'en bas [de toutes parts], et que les regards étaient troublés, et les cœurs remontaient aux gorges, et vous faisiez sur Allah toutes sortes de suppositions...\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmdxliv{Les croyants furent alors éprouvés et secoués d'une dure secousse.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmdxlv{Et quand les hypocrites et ceux qui ont la maladie [le doute] au cœur disaient: «Allah et Son messager ne nous ont promis que tromperie».\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmdxlvi{De même, un groupe d'entre eux dit: «Gens de Yathrib! Ne demeurez pas ici. Retournez [chez vous]». Un groupe d'entre eux demande au Prophète la permission de partir en disant: «Nos demeures sont sans protection», alors qu'elles ne l'étaient pas: ils ne voulaient que s'enfuir.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmdxlvii{Et si une percée avait été faite sur eux par les flancs de la ville et qu'ensuite on leur avait demandé de renier leur foi, ils auraient accepté certes, et n'auraient guère tardé,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmdxlviii{tandis qu'auparavant ils avaient pris l'engagement envers Allah qu'ils ne tourneraient pas le dos. Et il sera demandé compte de tout engagement vis-à-vis d'Allah.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmdxlix{Dis: «Jamais la fuite ne vous sera utile si c'est la mort (sans combat) ou le meurtre (dans le combat) que vous fuyez; dans ce cas, vous ne jouirez (de la vie) que peu (de temps)».\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmdl{Dis: «Quel est celui qui peut vous protéger d'Allah, s'Il vous veut du mal ou s'Il veut vous accorder une miséricorde?» Et ils ne trouveront pour eux-mêmes en dehors d'Allah, ni allié ni secoureur.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmdli{Certes, Allah connaît ceux d'entre vous qui suscitent des obstacles, ainsi que ceux qui disent à leurs frères: «Venez à nous», tandis qu'ils ne déploient que peu d'ardeur au combat,\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmdlii{avares à votre égard. Puis, quand leur vient la peur, tu les vois te regarder avec des yeux révulsés, comme ceux de quelqu'un qui s'est évanoui par peur de la mort. Une fois la peur passée, ils vous lacèrent avec des langues affilées, alors qu'ils sont chiches à faire le bien. Ceux-là n'ont jamais cru. Allah donc, rend vaines leurs actions. Et cela est facile à Allah.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmdliii{Ils pensent que les coalisés ne sont pas partis. Or si les coalisés revenaient, [ces gens-là] souhaiteraient être des nomades parmi les Bédouins et [se contenteraient] de demander de vos nouvelles. S'ils étaient parmi vous, ils n'auraient combattu que très peu.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmdliv{En effet, vous avez dans le Messager d'Allah un excellent modèle [à suivre], pour quiconque espère en Allah et au Jour dernier et invoque Allah fréquemment.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmdlv{Et quand les croyants virent les coalisés, ils dirent: «Voilà ce qu'Allah et Son messager nous avaient promis; et Allah et Son messager disaient la vérité». Et cela ne fit que croître leur foi et leur soumission.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmdlvi{Il est, parmi les croyants, des hommes qui ont été sincères dans leur engagement envers Allah. Certains d'entre eux ont atteint leur fin, et d'autres attendent encore; et ils n'ont varié aucunement (dans leur engagement);\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmdlvii{afin qu'Allah récompense les véridiques pour leur sincérité, et châtie, s'Il veut, les hypocrites, ou accepte leur repentir. Car Allah est Pardonneur et Miséricordieux.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmdlviii{Et Allah a renvoyé, avec leur rage, les infidèles sans qu'ils n'aient obtenu aucun bien, et Allah a épargné aux croyants le combat. Allah est Fort et Puissant.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmdlix{Et Il a fait descendre de leurs forteresses ceux des gens du Livre qui les avaient soutenus [les coalisés], et Il a jeté l'effroi dans leurs cœurs; un groupe d'entre eux vous tuiez, et un groupe vous faisiez prisonniers.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmdlx{Et Il vous a fait hériter leur terre, leurs demeures, leurs biens, et aussi une terre que vous n'aviez point foulée. Et Allah est Omnipotent.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmdlxi{O Prophète! Dis à tes épouses: «Si c'est la vie présente que vous désirez et sa parure, alors venez! Je vous donnerai [les moyens] d'en jouir et vous libérerai [par un divorce] sans préjudice.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmdlxii{Mais si c'est Allah que vous voulez et Son messager ainsi que la Demeure dernière, Allah a préparé pour les bienfaisantes parmi vous une énorme récompense.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmdlxiii{O femmes du Prophète! Celle d'entre vous qui commettra une turpitude prouvée, le châtiment lui sera doublé par deux fois! Et ceci est facile pour Allah.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmdlxiv{Et celle d'entre vous qui est entièrement soumise à Allah et à Son messager et qui fait le bien, Nous lui accorderons deux fois sa récompense, et Nous avons préparé pour elle une généreuse attribution.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmdlxv{O femmes du Prophète! Vous n'êtes comparables à aucune autre femme. Si vous êtes pieuses, ne soyez pas trop complaisantes dans votre langage, afin que celui dont le cœur est malade [l'hypocrite] ne vous convoite pas. Et tenez un langage décent.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmdlxvi{Restez dans vos foyers; et ne vous exhibez pas à la manière des femmes d'avant l'Islam (Jâhiliyah). Accomplissez la Salât, acquittez la Zakât et obéissez à Allah et à Son messager. Allah ne veut que vous débarrasser de toute souillure, ô gens de la maison [du prophète], et veut vous purifier pleinement.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmdlxvii{Et gardez dans vos mémoires ce qui, dans vos foyers, est récité des versets d'Allah et de la sagesse. Allah est Doux et Parfaitement Connaisseur.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmdlxviii{Les Musulmans et Musulmanes, croyants et croyantes, obéissants et obéissantes, loyaux et loyales, endurants et endurantes, craignants et craignantes, donneurs et donneuses d'aumône, jeûnants et jeûnantes, gardiens de leur chasteté et gardiennes, invocateurs souvent d'Allah et invocatrices: Allah a préparé pour eux un pardon et une énorme récompense.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmdlxix{Il n'appartient pas à un croyant ou à une croyante, une fois qu'Allah et Son messager ont décidé d'une chose d'avoir encore le choix dans leur façon d'agir. Et quiconque désobéit à Allah et à Son messager, s'est égaré certes, d'un égarement évident.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmdlxx{Quand tu disais à celui qu'Allah avait comblé de bienfait, tout comme toi-même l'avais comblé: «Garde pour toi ton épouse et crains Allah», et tu cachais en ton âme ce qu'Allah allait rendre public. Tu craignais les gens, et c'est Allah qui est plus digne de ta crainte. Puis quand Zayd eut cessé toute relation avec elle, Nous te la fîmes épouser, afin qu'il n'y ait aucun empêchement pour les croyants d'épouser les femmes de leurs fils adoptifs, quand ceux-ci cessent toute relation avec elles. Le commandement d'Allah doit être exécuté.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxi{Nul grief à faire au Prophète en ce qu'Allah lui a imposé, conformément aux lois établies pour ceux qui vécurent antérieurement. Le commandement d'Allah est un décret inéluctable.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxii{Ceux qui communiquaient les messages d'Allah, Le craignaient et ne redoutaient nul autre qu'Allah. Et Allah suffit pour tenir le compte de tout.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxiii{Muhammad n'a jamais été le père de l'un de vos hommes, mais le messager d'Allah et le dernier des prophètes. Allah est Omniscient.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxiv{O vous qui croyez! Evoquez Allah d'une façon abondante,\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxv{et glorifiez-Le à la pointe et au déclin du jour.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxvi{C'est lui qui prie sur vous, - ainsi que Ses Anges -, afin qu'Il vous fasse sortir des ténèbres à la lumière; et Il est Miséricordieux envers les croyants.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxvii{Leur salutation au jour où ils Le rencontreront sera: «Salâm» [paix], et Il leur a préparé une généreuse récompense.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxviii{O Prophète! Nous t'avons envoyé [pour être] témoin, annonciateur, avertisseur,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxix{appelant (les gens) à Allah, par Sa permission; et comme une lampe éclairante.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxx{Et fais aux croyants la bonne annonce qu'ils recevront d'Allah une grande grâce.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxi{Et n'obéis pas aux infidèles et aux hypocrites, ne prête pas attention à leur méchanceté et place ta confiance en Allah et Allah suffit comme protecteur.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxii{O vous qui croyez! Quand vous vous mariez avec des croyantes et qu'ensuite vous divorcez d'avec elles avant de les avoir touchées, vous ne pouvez leur imposer un délai d'attente. Donnez-leur jouissance [d'un bien] et libérez-les [par un divorce] sans préjudice.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxiii{O Prophète! Nous t'avons rendu licites tes épouses à qui tu as donné leur mahr (dot), ce que tu as possédé légalement parmi les captives [ou esclaves] qu'Allah t'a destinées, les filles de ton oncle paternel, les filles de tes tantes paternelles, les filles de ton oncle maternel, et les filles de tes tantes maternelles, - celles qui avaient émigré en ta compagnie -, ainsi que toute femme croyante si elle fait don de sa personne au Prophète, pourvu que le Prophète consente à se marier avec elle: c'est là un privilège pour toi, à l'exclusion des autres croyants. Nous savons certes, ce que Nous leur avons imposé au sujet de leurs épouses et des esclaves qu'ils possèdent, afin qu'il n'y eût donc point de blâme contre toi. Allah est Pardonneur et Miséricordieux.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxiv{Tu fais attendre qui tu veux d'entre elles, et tu héberges chez toi qui tu veux. Puis il ne t'est fait aucun grief si tu invites chez toi l'une de celles que tu avais écartées. Voilà ce qui est le plus propre à les réjouir, à leur éviter tout chagrin et à leur faire accepter de bon cœur ce que tu leur as donné à toutes. Allah sait, cependant, ce qui est en vos cœurs. Et Allah est Omniscient et Indulgent.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxv{Il ne t'est plus permis désormais de prendre [d'autres] femmes, ni de changer d'épouses, même si leur beauté te plaît; - à l'exception des esclaves que tu possèdes. Et Allah observe toute chose.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxvi{O vous qui croyez! N'entrez pas dans les demeures du Prophète, à moins qu'invitation ne vous soit faite à un repas, sans être là à attendre sa cuisson. Mais lorsqu'on vous appelle, alors, entrez. Puis, quand vous aurez mangé, dispersez-vous, sans chercher à vous rendre familiers pour causer. Cela faisait de la peine au Prophète, mais il se gênait de vous (congédier), alors qu'Allah ne se gêne pas de la vérité. Et si vous leur demandez (à ses femmes) quelque objet, demandez-le leur derrière un rideau: c'est plus pur pour vos cœurs et leurs cœurs; vous ne devez pas faire de la peine au Messager d'Allah, ni jamais vous marier avec ses épouses après lui; ce serait, auprès d'Allah, un énorme péché.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxvii{Que vous divulguiez une chose ou que vous la cachiez,... Allah demeure Omniscient.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxviii{Nul grief sur elles au sujet de leurs pères, leurs fils, leurs frères, les fils de leurs frères, les fils de leurs sœurs, leurs femmes [de suite] et les esclaves qu'elles possèdent. Et craignez Allah. Car Allah est témoin de toute chose.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmdlxxxix{Certes, Allah et Ses Anges prient sur le Prophète; ô vous qui croyez priez sur lui et adressez [lui] vos salutations.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmdxc{Ceux qui offensent Allah et Son messager, Allah les maudit ici-bas, comme dans l'au-delà et leur prépare un châtiment avilissant.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmdxci{Et ceux qui offensent les croyants et les croyantes sans qu'ils l'aient mérité, se chargent d'une calomnie et d'un péché évident.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmdxcii{O Prophète! Dis à tes épouses, à tes filles, et aux femmes des croyants, de ramener sur elles leurs grands voiles: elles en seront plus vite reconnues et éviteront d'être offensées. Allah est Pardonneur et Miséricordieux.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmdxciii{Certes, si les hypocrites, ceux qui ont la maladie au cœur, et les alarmistes [semeurs de troubles] à Médine ne cessent pas, Nous t'inciterons contre eux, et alors, ils n'y resteront que peu de temps en ton voisinage.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmdxciv{Ce sont des maudits. Où qu'on les trouve, ils seront pris et tués impitoyablement:\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmdxcv{Telle était la loi établie par Allah envers ceux qui ont vécu auparavant et tu ne trouveras pas de changement dans la loi d'Allah.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmdxcvi{Les gens t'interrogent au sujet de l'Heure. Dis: «Sa connaissance est exclusive à Allah». Qu'en sais-tu? Il se peut que l'Heure soit proche.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmdxcvii{Allah a maudit les infidèles et leur a préparé une fournaise,\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmdxcviii{pour qu'ils y demeurent éternellement, sans trouver ni allié ni secoureur.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmdxcix{Le jour où leurs visages seront tournés et retournés dans le Feu, ils diront: «Hélas pour nous! Si seulement nous avions obéi à Allah et obéi au Messager!»\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmdc{Et ils dirent: «Seigneur, nous avons obéi à nos chefs et à nos grands. C'est donc eux qui nous ont égarés du Sentier.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmdci{O notre Seigneur, inflige-leur deux fois le châtiment et maudis les d'une grande malédiction».\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmdcii{O vous qui croyez! Ne soyez pas comme ceux qui ont offensé Moïse. Allah l'a déclaré innocent de leurs accusations, car il était honorable auprès d'Allah.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmdciii{O vous qui croyez! Craignez Allah et parlez avec droiture,\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmdciv{afin qu'Il améliore vos actions et vous pardonne vos péchés. Quiconque obéit à Allah et à Son messager obtient certes une grande réussite.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmdcv{Nous avions proposé aux cieux, à la terre et aux montagnes la responsabilité (de porter les charges de faire le bien et d'éviter le mal). Ils ont refusé de la porter et en ont eu peur, alors que l'homme s'en est chargé; car il est très injuste [envers lui-même] et très ignorant.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmdcvi{[Il en est ainsi] afin qu'Allah châtie les hypocrites, hommes et femmes, et les associateurs et les associatrices et Allah accueille le repentir des croyants et des croyantes. Allah est Pardonneur et Miséricordieux.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmdcvii{\basmalahfr Louange à Allah à qui appartient tout ce qui est dans les cieux et tout ce qui est sur la terre. Et louange à Lui dans l'au-delà. Et c'est Lui le Sage, le Parfaitement Connaisseur.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmdcviii{Il sait ce qui pénètre en terre et ce qui en sort, ce qui descend du ciel et ce qui y remonte. Et c'est Lui le Miséricordieux, le Pardonneur.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmdcix{Ceux qui ne croient pas disent: «L'Heure ne nous viendra pas». Dis: «Par mon Seigneur! Très certainement, elle vous viendra. [Mon Seigneur] le Connaisseur de l'Inconnaissable. Rien ne Lui échappe fût-il du poids d'un atome dans les cieux, comme sur la terre. Et rien n'existe de plus petit ni de plus grand, qui ne soit inscrit dans un Livre explicite,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmdcx{afin qu'Il récompense ceux qui croient et accomplissent les bonnes œuvres. Pour ceux-ci, il y aura un pardon et un don généreux.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmdcxi{Et ceux qui s'efforcent de rendre vains Nos versets, ceux-là auront le châtiment d'un supplice douloureux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmdcxii{Et ceux à qui le savoir a été donné voient que ce qu'on t'a fait descendre de la part de ton Seigneur est la vérité qui guide au chemin du Tout Puissant, du Digne de Louange.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmdcxiii{Et ceux qui ne croient pas dirent: «Voulez-vous que l'on vous montre un homme qui vous prédise que lorsque vous serez complètement désintégrés, vous reparaîtrez, sans nul doute, en une nouvelle création?\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmdcxiv{Invente-t-il un mensonge contre Allah? ou bien est-il fou?» [Non], mais ceux qui ne croient pas en l'au-delà sont voués au châtiment et à l'égarement lointain.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmdcxv{Ne voient-ils donc pas ce qu'il y a comme ciel et comme terre devant et derrière eux? Si Nous voulions, Nous ferions que la terre les engloutisse, ou que des morceaux du ciel tombent sur eux. Il y a en cela une preuve pour tout serviteur repentant.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmdcxvi{Nous avons certes accordé une grâce à David de Notre part. O montagnes et oiseaux, répétez avec lui (les louanges d'Allah). Et pour lui, Nous avons amolli le fer,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmdcxvii{(en lui disant): «Fabrique des cottes de mailles complètes et mesure bien les mailles». Et faites le bien. Je suis Clairvoyant sur ce que vous faites.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmdcxviii{Et à Salomon (Nous avons assujetti) le vent, dont le parcours du matin équivaut à un mois (de marche) et le parcours du soir, un mois aussi. Et pour lui Nous avons fait couler la source de cuivre. Et parmi les djinns il y en a qui travaillaient sous ses ordres, par permission de son Seigneur. Quiconque d'entre eux, cependant, déviait de Notre ordre, Nous lui faisions goûter au châtiment de la fournaise.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmdcxix{Ils exécutaient pour lui ce qu'il voulait: sanctuaires, statues, plateaux comme des bassins, et marmites bien ancrées. - «O famille de David, œuvrez par gratitude», alors qu'il y a eu peu de Mes serviteurs qui sont reconnaissants.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmdcxx{Puis, quand Nous décidâmes sa mort, il n'y eut pour les avertir de sa mort que la «bête de terre», qui rongea sa canne. Puis lorsqu'il s'écroula, il apparut de toute évidence aux djinns que s'ils savaient vraiment l'inconnu, ils ne seraient pas restés dans le supplice humiliant [de la servitude].\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxi{Il y avait assurément, pour la tribu de Saba' un Signe dans leurs habitat: deux jardins, l'un à droite et l'autre à gauche. «Mangez de ce que votre Seigneur vous a attribué, et soyez-Lui reconnaissants: une bonne contrée et un Seigneur Pardonneur».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxii{Mais ils se détournèrent. Nous déchaînâmes contre eux l'inondation du Barrage, et leur changeâmes leurs deux jardins en deux jardins aux fruits amers, tamaris et quelques jujubiers.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxiii{Ainsi les rétribuâmes Nous pour leur mécréance. Saurions-Nous sanctionner un autre que le mécréant?\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxiv{Et Nous avions placé entre eux et les cités que Nous avions bénies, d'autres cités proéminentes, et Nous avions évalué les étapes de voyage entre elles. «Voyagez entre elles pendant des nuits et des jours, en sécurité».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxv{Puis, ils dirent: «Seigneur, allonge les distances entre nos étapes», et ils se firent du tort à eux-mêmes. Nous fîmes d'eux, donc, des sujets de légendes et les désintégrâmes totalement. Il y a en cela des avertissements pour tous grand endurant et grand reconnaissant.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxvi{Et Satan a très certainement rendu véridique sa conjecture à leur égard. Ils l'ont suivi donc, sauf un groupe parmi les croyants.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxvii{Et pourtant il n'avait sur eux aucun pouvoir si ce n'est que Nous voulions distinguer celui qui croyait en l'au-delà et celui qui doutait. Ton Seigneur, cependant, assure la sauvegarde de toute chose.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxviii{Dis: «Invoquez ceux qu'en dehors d'Allah vous prétendez [être des divinités]. Ils ne possèdent même pas le poids d'un atome, ni dans les cieux ni sur la terre. Ils n'ont jamais été associés à leur création et Il n'a personne parmi eux pour Le soutenir».\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxix{L'intercession auprès de Lui ne profite qu'à celui en faveur duquel Il la permet. Quand ensuite la frayeur se sera éloignée de leurs cœurs, ils diront: «Qu'a dit votre Seigneur?» Ils répondront: «La Vérité; C'est Lui le Sublime, le Grand».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxx{Dis: «Qui vous nourrit du ciel et de la terre?» Dis: «Allah. C'est nous ou bien vous qui sommes sur une bonne voie, ou dans un égarement manifeste».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxi{Dis: «Vous ne serez pas interrogés sur les crimes que nous avons commis, et nous ne serons pas interrogés sur ce que vous faites».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxii{Dis: «Notre Seigneur nous réunira, puis Il tranchera entre nous, avec la vérité, car c'est Lui le Grand Juge, l'Omniscient».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxiii{Dis: «Montrez-moi ceux que vous Lui avez donnés comme associés. Eh bien, non! C'est plutôt Lui, Allah, le Puissant, le Sage».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxiv{Et Nous ne t'avons envoyé qu'en tant qu'annonciateur et avertisseur pour toute l'humanité. Mais la plupart des gens ne savent pas.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxv{Et ils disent: «A quand cette promesse, si vous êtes véridiques?»\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxvi{Dis: «Le rendez-vous est pour un jour que vous ne saurez retarder d'une heure, ni avancer!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxvii{Et ceux qui avaient mécru dirent: «Jamais nous ne croirons à ce Coran ni à ce qui l'a précédé». Et si tu pouvais voir quand les injustes seront debout devant leur Seigneur, se renvoyant la parole les uns aux autres! Ceux que l'on considérait comme faibles diront à ceux qui s'enorgueillissaient: «Sans vous, nous aurions certes été croyants».\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxviii{Ceux qui s'enorgueillissaient diront à ceux qu'ils considéraient comme faibles: «Est-ce nous qui vous avons repoussés de la bonne direction après qu'elle vous fut venue? Mais vous étiez plutôt des criminels».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmdcxxxix{Et ceux que l'on considérait comme faibles diront à ceux qui s'enorgueillissaient: «C'était votre stratagème, plutôt, nuit et jour, de nous commander de ne pas croire en Allah et de Lui donner des égaux». Et ils cacheront leur regret quand ils verront le châtiment. Nous placerons des carcans aux cous de ceux qui ont mécru: les rétribuerait-on autrement que selon ce qu'ils œuvraient?»\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmdcxl{Et Nous n'avons envoyé aucun avertisseur dans une cité sans que ses gens aisés n'aient dit: «Nous ne croyons pas au message avec lequel vous êtes envoyés».\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmdcxli{Et ils dirent: «Nous avons davantage de richesses et d'enfants et nous ne serons pas châtiés».\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmdcxlii{Dis: «Mon Seigneur dispense avec largesse ou restreint Ses dons à qui Il veut. Mais la plupart des gens ne savent pas».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmdcxliii{Ni vos biens ni vos enfants ne vous rapprocheront à proximité de Nous. Sauf celui qui croit et œuvre dans le bien. Ceux-là auront une double récompense pour ce qu'ils œuvraient, tandis qu'ils seront en sécurité, aux étages supérieurs (du Paradis).\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmdcxliv{Et quant à ceux qui s'efforcent à rendre Nos versets inefficients, ceux-là seront forcés de se présenter au châtiment.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmdcxlv{Dis: «Mon Seigneur dispense avec largesse ou restreint Ses dons à qui Il veut parmi ses serviteurs. Et toute dépense que vous faites [dans le bien], Il la remplace, et c'est Lui le Meilleur des donateurs».\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmdcxlvi{Et un jour Il les rassemblera tous. Puis Il dira aux Anges: «Est-ce vous que ces gens-là adoraient?»\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmdcxlvii{Ils diront: «Gloire à Toi! Tu es notre Allié en dehors d'eux. Ils adoraient plutôt les djinns, en qui la plupart d'entre eux croyaient.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmdcxlviii{Ce jour-là donc, vous n'aurez aucun moyen pour profiter ou nuire les uns aux autres, tandis que Nous dirons aux injustes: «Goûtez au châtiment du Feu que vous traitiez de mensonge».\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmdcxlix{Et quand Nos versets édifiants leur sont récités, ils disent: Ce n'est là qu'un homme qui veut vous repousser de ce que vos ancêtres adoraient». Et ils disent: «Ceci (Le Coran) n'est qu'un mensonge inventé». Et ceux qui ne croient pas disent de la Vérité quand elle leur vient: «Ce n'est là qu'une magie évidente!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmdcl{[Pourtant] Nous ne leur avons pas donné de livres à étudier. Et Nous ne leur avons envoyé avant toi aucun avertisseur.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmdcli{Ceux d'avant eux avaient [aussi] démenti (leurs messagers). [Les Mecquois] n'ont pas atteint le dixième de ce que Nous leur avons donné [en force et en richesse]. Ils traitaient Mes Messagers de menteurs. Et quelle réprobation fut la mienne!\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmdclii{Dis: «Je vous exhorte seulement à une chose: que pour Allah vous vous leviez, par deux ou isolément, et qu'ensuite vous réfléchissiez. Votre compagnon (Muhammad) n'est nullement possédé: il n'est pour vous qu'un avertisseur annonçant un dur châtiment».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmdcliii{Dis: «Ce que je vous demande comme salaire, c'est pour vous-mêmes. Car mon salaire n'incombe qu'à Allah. Il est Témoin de toute chose».\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmdcliv{Dis: «Certes, mon Seigneur lance la Vérité, [à Ses messagers], Il est le Parfait Connaisseur des inconnaissables».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmdclv{Dis: «La vérité [l'Islam] est venue. Et le Faux [la mécréance] ne peut rien commencer ni renouveler».\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmdclvi{Dis: «Si je m'égare, je ne m'égare qu'à mes dépens; tandis que si je me guide, alors c'est grâce à ce que Mon Seigneur me révèle, car Il est Audient et Proche».\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmdclvii{Si tu les voyais quand ils seront saisis de peur, - pas d'échappatoire pour eux -, et ils seront saisis de près!\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmdclviii{Ils diront alors: «Nous croyons en lui». - Mais comment atteindront-ils la foi de si loin?\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmdclix{alors qu'auparavant ils y avaient effectivement mécru et ils offensent l'inconnu à partir d'un endroit éloigné !\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmdclx{On les empêchera d'atteindre ce qu'ils désirent, comme cela fut fait auparavant avec leurs semblables, car ils se trouvaient dans un doute profond.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmdclxi{\basmalahfr Louange à Allah, Créateur des cieux et de la terre, qui a fait des Anges des messagers dotés de deux, trois ou quatre ailes. Il ajoute à la création ce qu'Il veut, car Allah est Omnipotent.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmdclxii{Ce qu'Allah accorde en miséricorde aux gens, il n'est personne à pouvoir le retenir. Et ce qu'Il retient, il n'est personne à le relâcher après Lui. Et c'est Lui le Puissant, le Sage.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmdclxiii{O hommes! Rappelez-vous le bienfait d'Allah sur vous: existe-t-il en dehors d'Allah, un créateur qui du ciel et de la terre vous attribue votre subsistance? Point de divinité à part Lui! Comment pouvez-vous vous détourner [de cette vérité]?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmdclxiv{Et s'ils te traitent de menteur, certes on a traité de menteurs des Messagers avant toi. Vers Allah cependant, tout est ramené.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmdclxv{O hommes! La promesse d'Allah est vérité. Ne laissez pas la vie présente vous tromper, et que le grand trompeur (Satan) ne vous trompe pas à propos d'Allah!\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmdclxvi{Le Diable est pour vous un ennemi. Prenez-le donc pour ennemi. Il ne fait qu'appeler ses partisans pour qu'ils soient des gens de la Fournaise.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmdclxvii{Ceux qui ont mécru auront un dur châtiment, tandis que ceux qui croient et accomplissent les bonnes œuvres auront un pardon et une grosse récompense.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmdclxviii{Eh quoi! Celui à qui on a enjolivé sa mauvaise action au point qu'il la voit belle...? - Mais Allah égare qui Il veut, et guide qui Il veut - Que ton âme ne se répande donc pas en regrets pour eux: Allah est Parfaitement Savant de ce qu'ils fabriquent.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmdclxix{Et c'est Allah qui envoie les vents qui soulèvent un nuage que Nous poussons ensuite vers une contrée morte; puis, Nous redonnons la vie à la terre après sa mort. C'est ainsi que se fera la Résurrection!\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmdclxx{Quiconque veut la puissance (qu'il la cherche auprès d'Allah) car la puissance tout entière est à Allah: vers Lui monte la bonne parole, et Il élève haut la bonne action. Et quand à ceux qui complotent de mauvaises actions, ils auront un dur châtiment. Cependant, leur stratagème est voué à l'échec.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxi{Et Allah vous a créés de terre, puis d'une goutte de sperme, Il vous a ensuite établis en couples. Nulle femelle ne porte ni ne met bas sans qu'Il le sache. Et aucune existence n'est prolongée ou abrégée sans que cela soit consigné dans un livre. Cela est vraiment facile pour Allah.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxii{Les deux mers ne sont pas identiques: [l'eau de] celle-ci est potable, douce et agréable à boire, et celle-là est salée, amère. Cependant de chacune vous mangez une chair fraîche, et vous extrayez un ornement que vous portez. Et tu vois le vaisseau fendre l'eau avec bruit, pour que vous cherchiez certains [des produits] de Sa grâce. Peut-être serez-vous reconnaissants!\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxiii{Il fait que la nuit pénètre le jour et que le jour pénètre la nuit. Et Il a soumis le soleil et la lune. Chacun d'eux s'achemine vers un terme fixé. Tel est Allah, votre Seigneur: à Lui appartient la royauté, tandis que ceux que vous invoquez, en dehors de Lui, ne sont même pas maîtres de la pellicule d'un noyau de datte.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxiv{Si vous les invoquez, ils n'entendent pas votre invocation; et même s'ils entendaient, ils ne sauraient vous répondre. Et le jour du Jugement ils vont nier votre association. Nul ne peut te donner des nouvelles comme Celui qui est parfaitement informé.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxv{O hommes, vous êtes les indigents ayant besoin d'Allah, et c'est Allah, Lui qui se dispense de tout et Il est Le Digne de louange.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxvi{S'Il voulait, Il vous ferait disparaître, et ferait surgir une nouvelle création.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxvii{Et cela n'est point difficile pour Allah.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxviii{Or, personne ne portera le fardeau d'autrui. Et si une âme surchargée [de péchés] appelle à l'aide, rien de sa charge ne sera supporté par une autre même si c'est un proche parent. Tu n'avertis en fait, que ceux qui craignent leur Seigneur malgré qu'ils ne Le voient pas, et qui accomplissent la Salât. Et quiconque se purifie ne se purifie que pour lui-même, et vers Allah est la destination.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxix{L'aveugle et celui qui voit ne sont pas semblables,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxx{ni les ténèbres et la lumière,\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxi{ni l'ombre et la chaleur ardente.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxii{De même, ne sont pas semblables les vivants et les morts. Allah fait entendre qui Il veut, alors que toi [Muhammad], tu ne peux faire entendre ceux qui sont dans les tombeaux.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxiii{Tu n'es qu'un avertisseur.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxiv{Nous t'avons envoyé avec la Vérité en tant qu'annonciateur et avertisseur. Il n'est pas une nation qui n'ait déjà eu un avertisseur.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxv{Et s'ils te traitent de menteur, eh bien, ceux d'avant eux avaient traité (leurs Messagers) de menteurs, cependant que leurs Messagers leur avaient apporté les preuves, les Ecrits et le Livre illuminant.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxvi{Puis J'ai saisi ceux qui ont mécru. Et quelle réprobation fut la Mienne!\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxvii{N'as-tu pas vu que, du ciel, Allah fait descendre l'eau? Puis Nous en faisons sortir des fruits de couleurs différentes. Et dans les montagnes, il y a des sillons blancs et rouges, de couleurs différentes, et des roches excessivement noires.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxviii{Il y a pareillement des couleurs différentes, parmi les hommes, les animaux, et les bestiaux. Parmi Ses serviteurs, seuls les savants craignent Allah. Allah est, certes, Puissant et Pardonneur.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmdclxxxix{Ceux qui récitent le Livre d'Allah, accomplissent la Salât, et dépensent, en secret et en public de ce que Nous leur avons attribué, espèrent ainsi faire un commerce qui ne périra jamais,\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmdcxc{afin [qu'Allah] les récompense pleinement et leur ajoute de Sa grâce. Il est Pardonneur et Reconnaissant.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmdcxci{Et ce que Nous t'avons révélé du Livre est la Vérité confirmant ce qui l'a précédé. Certes Allah est Parfaitement Connaisseur et Clairvoyant sur Ses serviteurs.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmdcxcii{Ensuite, Nous fîmes héritiers du Livre ceux de Nos serviteurs que Nous avons choisis. Il en est parmi eux qui font du tort à eux-mêmes, d'autres qui se tiennent sur une voie moyenne, et d'autres avec la permission d'Allah devancent [tous les autres] par leurs bonnes actions; telle est la grâce infinie\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmdcxciii{Les jardins d'Eden où ils entreront, parés de bracelets en or ainsi que de perles; et là, leurs vêtements sont de soie.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmdcxciv{Et ils diront: «Louange à Allah qui a écarté de nous l'affliction. Notre Seigneur est certes Pardonneur et Reconnaissant.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmdcxcv{C'est Lui qui nous a installés, par Sa grâce, dans la Demeure de la stabilité, où nulle fatigue, nulle lassitude ne nous touchent».\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmdcxcvi{Et ceux qui ont mécru auront le feu de l'Enfer: on ne les achève pas pour qu'ils meurent; on ne leur allège rien de ses tourments. C'est ainsi que Nous récompensons tout négateur obstiné.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmdcxcvii{Et là, ils hurleront: «Seigneur, fais-nous sortir; nous ferons le bien, contrairement à ce que nous faisions». «Ne vous avons-Nous pas donné une vie assez longue pour que celui qui réfléchit réfléchisse? L'avertisseur, cependant, vous était venu. Et bien, goûtez (votre punition). Car pour les injustes, il n'y a pas de secoureur».\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmdcxcviii{Allah connaît l'Inconnaissable dans les cieux et la terre. Il connaît le contenu des poitrines.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmdcxcix{C'est Lui qui a fait de vous des successeurs sur terre. Quiconque mécroit, sa mécréance retombera sur lui. Leur mécréance n'ajoute aux mécréants qu'opprobre auprès de leur Seigneur. Leur mécréance n'ajoute que perte aux mécréants.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmdcc{Dis: «Voyez-vous vos associés que vous invoquez en dehors d'Allah? Montrez-moi ce qu'ils ont créé de la terre. Ont-ils été associés à la création des cieux? Ou leur avons-Nous apporté un Livre qui contienne des preuves [pour ce qu'ils font?]» Non! Mais ce n'est qu'en tromperie que les injustes se font des promesses les uns aux autres.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmdcci{Allah retient les cieux et la terre pour qu'ils ne s'affaissent pas. Et s'ils s'affaissaient, nul autre après Lui ne pourra les retenir. Il est Indulgent et Pardonneur.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmdccii{Et ils ont juré solennellement par Allah, que si un avertisseur leur venait, ils seraient certes mieux guidés que n'importe quelle autre communauté. Puis, quand un avertisseur (Muhammad) leur est venu, cela n'a fait qu'accroître leur répulsion,\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmdcciii{par orgueil sur terre et par manœuvre perfide. Cependant, la manœuvre perfide n'enveloppe que ses propres auteurs. Attendent-ils donc un autre sort que celui des Anciens? Or, jamais tu ne trouveras de changement dans la règle d'Allah et jamais tu ne trouveras de déviation dans la règle d'Allah.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmdcciv{N'ont-ils donc jamais parcouru la terre pour voir ce qu'il est advenu de ceux qui vécurent avant eux et qui étaient plus puissants qu'eux? Et rien, dans les cieux ni sur terre ne saurait réduire l'autorité d'Allah. Car Il est certes Omniscient, Omnipotent.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmdccv{Et si Allah s'en prenait aux gens pour ce qu'ils acquièrent, Il ne laisserait à la surface [de la terre] aucun être vivant. Mais Il leur donne un délai jusqu'à un terme fixé. Puis quand leur terme viendra... (Il se saisira d'eux) car Allah est Très Clairvoyant sur Ses serviteurs.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmdccvi{\basmalahfr Yâ Sîn.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmdccvii{Par le Coran plein de sagesse.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmdccviii{Tu (Muhammad) es certes du nombre des messagers,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmdccix{sur un chemin droit.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmdccx{C'est une révélation de la part du Tout Puissant, du Très Miséricordieux,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmdccxi{pour que tu avertisses un peuple dont les ancêtres n'ont pas été avertis: ils sont donc insouciants.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmdccxii{En effet, la Parole contre la plupart d'entre eux s'est réalisée: ils ne croiront donc pas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmdccxiii{Nous mettrons des carcans à leurs cous, et il y en aura jusqu'aux mentons: et voilà qu'ils iront têtes dressées.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmdccxiv{et Nous mettrons une barrière devant eux et une barrière derrière eux; Nous les recouvrirons d'un voile: et voilà qu'ils ne pourront rien voir.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmdccxv{Cela leur est égal que tu les avertisses ou que tu ne les avertisses pas: ils ne croiront jamais.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmdccxvi{Tu avertis seulement celui qui suit le Rappel (le Coran), et craint le Tout Miséricordieux, malgré qu'il ne Le voit pas. Annonce-lui un pardon et une récompense généreuse.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmdccxvii{C'est Nous qui ressuscitons les morts et écrivons ce qu'ils ont fait [pour l'au-delà] ainsi que leurs traces. Et Nous avons dénombré toute chose dans un registre explicite.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmdccxviii{Donne-leur comme exemple les habitants de la cité, quand lui vinrent les envoyés.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmdccxix{Quand Nous leur envoyâmes deux [envoyés] et qu'ils les traitèrent de menteurs. Nous [les] renforçâmes alors par un troisième et ils dirent: «Vraiment, nous sommes envoyés à vous».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmdccxx{Mais ils [les gens] dirent: «Vous n'êtes que des hommes comme nous. Le Tout Miséricordieux n'a rien fait descendre et vous ne faites que mentir».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxi{Ils [les messagers] dirent: «Notre Seigneur sait qu'en vérité nous sommes envoyés à vous,\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxii{et il ne nous incombe que de transmettre clairement (notre message)».\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxiii{Ils dirent: «Nous voyons en vous un mauvais présage. Si vous ne cessez pas, nous vous lapiderons et un douloureux châtiment de notre part vous touchera».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxiv{Ils dirent: «Votre mauvais présage est avec vous-mêmes. Est-ce que (c'est ainsi que vous agissez) quand on vous [le] rappelle? Mais vous êtes des gens outranciers!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxv{Et du bout de la ville, un homme vint en toute hâte et dit: «O mon peuple, suivez les messagers:\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxvi{suivez ceux qui ne vous demandent aucun salaire et qui sont sur la bonne voie.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxvii{et qu'aurais-je à ne pas adorer Celui qui m'a créé? Et c'est vers Lui que vous serez ramenés.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxviii{Prendrais-je en dehors de Lui des divinités? Si le Tout Miséricordieux me veut du mal, leur intercession de me servira à rien et ils ne me sauveront pas.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxix{Je serai alors dans un égarement évident.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxx{[Mais] je crois en votre Seigneur. Ecoutez-moi donc».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxi{Alors, il [lui] fut dit: «Entre au Paradis». Il dit: «Ah si seulement mon peuple savait!\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxii{...en raison de quoi mon Seigneur m'a pardonné et mis au nombre des honorés».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxiii{Et après lui Nous ne fîmes descendre du ciel aucune armée. Nous ne voulions rien faire descendre sur son peuple.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxiv{Ce ne fut qu'un seul Cri et les voilà éteints.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxv{Hélas pour les esclaves [les humains]! Jamais il ne leur vient de messager sans qu'ils ne s'en raillent.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxvi{Ne voient-ils pas combien de générations avant eux Nous avons fait périr? Lesquelles ne retourneront jamais parmi eux.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxvii{Et tous sans exception comparaîtront devant Nous.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxviii{Une preuve pour eux est la terre morte, à laquelle Nous redonnons la vie, et d'où Nous faisons sortir des grains dont ils mangent.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmdccxxxix{Nous y avons mis des jardins de palmiers et de vignes et y avons fait jaillir des sources,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmdccxl{afin qu'ils mangent de Ses fruits et de ce que leurs mains ont produit. Ne seront-ils pas reconnaissants?\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmdccxli{Louange à Celui qui a créé tous les couples de ce que la terre fait pousser, d'eux-mêmes, et de ce qu'ils ne savent pas!\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmdccxlii{Et une preuve pour eux est la nuit. Nous en écorchons le jour et ils sont alors dans les ténèbres.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmdccxliii{et le soleil court vers un gîte qui lui est assigné; telle est la détermination du Tout Puissant, de l'Omniscient.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmdccxliv{Et la lune, Nous lui avons déterminé des phases jusqu'à ce qu'elle devienne comme la palme vieillie.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmdccxlv{Le soleil ne peut rattraper la lune, ni la nuit devancer le jour; et chacun vogue dans une orbite.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmdccxlvi{Et un (autre) signe pour eux est que Nous avons transporté leur descendance sur le bateau chargé;\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmdccxlvii{et Nous leur créâmes des semblables sur lesquels ils montent.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmdccxlviii{Et si Nous le voulons, Nous les noyons; pour eux alors, pas de secoureur et ils ne seront pas sauvés,\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmdccxlix{sauf par une miséricorde de Notre part, et à titre de jouissance pour un temps.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmdccl{Et quand on leur dit: «Craignez ce qu'il y a devant vous et ce qu'il y a derrière vous afin que vous ayez la miséricorde»!...\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmdccli{Or, pas une preuve ne leur vient, parmi les preuves de leur Seigneur sans qu'ils ne s'en détournent.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmdcclii{Et quand on leur dit: «Dépensez de ce qu'Allah vous a attribué», ceux qui ont mécru disent à ceux qui ont cru: «Nourrirons-nous quelqu'un qu'Allah aurait nourri s'Il l'avait voulu? Vous n'êtes que dans un égarement évident».\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmdccliii{Et ils disent: «A quand cette promesse si vous êtes véridiques?»\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmdccliv{Ils n'attendent qu'un seul Cri qui les saisira alors qu'ils seront en train de disputer.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmdcclv{Ils ne pourront donc ni faire de testament, ni retourner chez leurs familles.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmdcclvi{Et on soufflera dans la Trompe, et voilà que, des tombes, ils se précipiteront vers leur Seigneur,\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmdcclvii{en disant: «Malheur à nous! Qui nous a ressuscités de là où nous dormions?» C'est ce que le Tout Miséricordieux avait promis; et les Messagers avaient dit vrai.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmdcclviii{Ce ne sera qu'un seul Cri, et voilà qu'ils seront tous amenés devant Nous.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmdcclix{Ce jour-là, aucune âme ne sera lésée en rien. Et vous ne serez rétribués que selon ce que vous faisiez.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmdcclx{Les gens du Paradis seront, ce jour-là, dans une occupation qui les remplit de bonheur;\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxi{eux et leurs épouses sont sous des ombrages, accoudés sur les divans.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxii{Là ils auront des fruits et ils auront ce qu'ils réclameront,\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxiii{«Salâm» [paix et salut]! Parole de la part d'un Seigneur Très Miséricordieux.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxiv{«O injustes! Tenez-vous à l'écart ce jour-là!\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxv{Ne vous ai-Je pas engagés, enfants d'Adam, à ne pas adorer le Diable? Car il est vraiment pour vous un ennemi déclaré,\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxvi{et [ne vous ai-Je pas engagés] à M'adorer? Voilà un chemin bien droit.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxvii{Et il a très certainement égaré un grand nombre d'entre vous. Ne raisonniez-vous donc pas?\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxviii{Voici l'Enfer qu'on vous promettait.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxix{Brûlez-y aujourd'hui, pour avoir mécru».\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxx{Ce jour-là, Nous scellerons leurs bouches, tandis que leurs mains Nous parleront et que leurs jambes témoigneront de ce qu'ils avaient accompli.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxi{Et si Nous voulions, Nous effacerions leurs yeux et ils courront vers le chemin. Mais comment alors pourront-ils voir?\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxii{Et si Nous voulions, Nous les métamorphoserions sur place; alors ils ne sauront ni avancer ni revenir.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxiii{A quiconque Nous accordons une longue vie, Nous faisons baisser sa forme. Ne comprendront-ils donc pas?\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxiv{Nous ne lui (à Muhammad) avons pas enseigné la poésie; cela ne lui convient pas non plus. Ceci n'est qu'un rappel et une Lecture [Coran] claire,\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxv{pour qu'il avertisse celui qui est vivant et que la Parole se réalise contre les mécréants.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxvi{Ne voient-ils donc pas que, parmi ce que Nos mains ont fait, Nous leur avons créé des bestiaux dont ils sont propriétaires;\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxvii{et Nous les leur avons soumis: certains leur servent de monture et d'autres de nourriture;\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxviii{et ils en retirent d'autres utilités et des boissons. Ne seront-ils donc pas reconnaissants?\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxix{Et ils adoptèrent des divinités en dehors d'Allah, dans l'espoir d'être secourus...\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxx{Celles-ci ne pourront pas les secourir, elles formeront au contraire une armée dressée contre eux.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxi{Que leurs paroles ne t'affligent donc pas! Nous savons ce qu'ils cachent et ce qu'ils divulguent.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxii{L'homme ne voit-il pas que Nous l'avons créé d'une goutte de sperme? Et le voilà [devenu] un adversaire déclaré!\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxiii{Il cite pour Nous un exemple, tandis qu'il oublie sa propre création; il dit: «Qui va redonner la vie à des ossements une fois réduits en poussière?»\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxiv{Dis: «Celui qui les a créés une première fois, leur redonnera la vie. Il Se connaît parfaitement à toute création.\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxv{c'est Lui qui, de l'arbre vert, a fait pour vous du feu, et voilà que de cela vous allumez.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxvi{Celui qui a créé les cieux et la terre ne sera-t-Il pas capable de créer leur pareil? Oh que si! et Il est le grand Créateur, l'Omniscient.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxvii{Quand Il veut une chose, Son commandement consiste à dire: «Sois», et c'est.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxviii{Louange donc, à Celui qui détient en Sa main la royauté sur toute chose! Et c'est vers Lui que vous serez ramenés.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmdcclxxxix{\basmalahfr Par ceux qui sont rangés en rangs.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmdccxc{Par ceux qui poussent (les nuages) avec force.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmdccxci{Par ceux qui récitent, en rappel:\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmdccxcii{«Votre Dieu est en vérité unique,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmdccxciii{le Seigneur des cieux et de la terre et de ce qui existe entre eux et Seigneur des Levants»\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmdccxciv{Nous avons décoré le ciel le plus proche d'un décor: les étoiles,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmdccxcv{afin de le protéger contre tout diable rebelle.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmdccxcvi{Ils ne pourront être à l'écoute des dignitaires suprêmes [les Anges]; car ils seront harcelés de tout côté,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmdccxcvii{et refoulés. Et ils auront un châtiment perpétuel.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmdccxcviii{Sauf celui qui saisit au vol quelque [information]; il est alors pourchassé par un météore transperçant.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmdccxcix{Demande-leur s'ils sont plus difficiles à créer que ceux que Nous avons créés? Car Nous les avons créés de boue collante!\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmdccc{Mais tu t'étonnes, et ils se moquent!\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmdccci{Et quand on le leur rappelle (le Coran), ils ne se rappellent pas;\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmdcccii{et quand ils voient un prodige, ils cherchent à s'en moquer,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmdccciii{et disent: «Ceci n'est que magie évidente.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmdccciv{Lorsque nous serons morts et que nous deviendrons poussière et ossements, serons-nous ressuscités?\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmdcccv{ainsi que nos premiers ancêtres?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmdcccvi{Dis: «Oui! et vous vous humilierez».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmdcccvii{Il n'y aura qu'un seul Cri, et voilà qu'ils regarderont,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmdcccviii{et ils diront: «Malheur à nous! c'est le jour de la Rétribution».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmdcccix{«C'est le jour du Jugement que vous traitiez de mensonge».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmdcccx{«Rassemblez les injustes et leurs épouses et tout ce qu'ils adoraient,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxi{en dehors d'Allah. Puis conduisez-les au chemin de la Fournaise.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxii{Et arrêtez-les: car ils doivent être interrogés».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxiii{«Pourquoi ne vous portez-vous pas secours mutuellement?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxiv{Mais ce jour-là, ils seront complètement soumis,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxv{et les uns se tourneront vers les autres s'interrogeant mutuellement;\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxvi{Ils diront: «C'est vous qui nous forciez (à la mécréance)».\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxvii{«C'est vous plutôt (diront les chefs) qui ne vouliez pas croire.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxviii{Et nous n'avions aucun pouvoir sur vous. C'est vous plutôt qui étiez des gens transgresseurs.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxix{La parole de notre Seigneur s'est donc réalisée contre nous; certes, nous allons goûter [au châtiment].\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxx{Nous vous avons induits en erreur car, en vérité, nous étions égarés nous-mêmes».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxi{Ce jour-là donc, ils seront tous associés dans le châtiment.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxii{Ainsi traitons-Nous les criminels.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxiii{Quand on leur disait: «Point de divinité à part Allah», ils se gonflaient d'orgueil,\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxiv{et disaient: «Allons-nous abandonner nos divinités pour un poète fou?»\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxv{Il est plutôt venu avec la Vérité et il a confirmé les messagers (précédents).\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxvi{Vous allez certes, goûter au châtiment douloureux.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxvii{Et vous ne serez rétribués que selon ce que vous œuvriez,\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxviii{sauf les serviteurs élus d'Allah,\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxix{Ceux-là auront une rétribution bien connue:\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxx{des fruits, et ils seront honorés,\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxi{dans les Jardins du délice,\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxii{sur des lits, face à face.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxiii{On fera circuler entre eux une coupe d'eau remplie à une source\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxiv{blanche, savoureuse à boire,\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxv{Elle n'offusquera point leur raison et ne les enivrera pas.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxvi{Et Ils auront auprès d'eux des belles aux grands yeux, au regard chaste,\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxvii{semblables au blanc bien préservé de l'œuf.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxviii{Puis les uns se tourneront vers les autres s'interrogeant mutuellement.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxxxix{L'un d'eux dira: «J'avais un compagnon\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxl{qui disait: «Es-tu vraiment de ceux qui croient?\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxli{Est-ce que quand nous mourrons et serons poussière et ossements, nous aurons à rendre des comptes?»\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxlii{Il dira: «Est-ce que vous voudriez regarder d'en haut?»\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxliii{Alors il regardera d'en haut et il le verra en plein dans la Fournaise,\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxliv{et dira: «Par Allah! Tu as bien failli causer ma perte!\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxlv{et sans le bienfait de mon Seigneur, j'aurais certainement été du nombre de ceux qu'on traîne [au supplice].\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxlvi{N'est-il pas vrai que nous ne mourrons\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxlvii{que de notre première mort et que nous ne serons pas châtiés?»\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxlviii{C'est cela, certes, le grand succès.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxlix{C'est pour une chose pareille que doivent ouvrer ceux qui ouvrent.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmdcccl{Est-ce que ceci est meilleur comme séjour, ou l'arbre de Zaqqûm?\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmdcccli{Nous l'avons assigné en épreuve aux injustes.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmdccclii{C'est un arbre qui sort du fond de la Fournaise.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmdcccliii{Ses fruits sont comme des têtes de diables.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmdcccliv{Ils doivent certainement en manger et ils doivent s'en remplir le ventre.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmdccclv{Ensuite ils auront par-dessus une mixture d'eau bouillante.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmdccclvi{Puis leur retour sera vers la Fournaise.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmdccclvii{C'est qu'ils ont trouvé leurs ancêtres dans l'égarement,\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmdccclviii{et les voilà courant sur leurs traces.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmdccclix{En effet, avant eux, la plupart des anciens se sont égarés.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmdccclx{Et Nous avions certes envoyé parmi eux des avertisseurs.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxi{Regarde donc ce qu'il est advenu de ceux qui ont été avertis!\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxii{Exception faite des élus, parmi les serviteurs d'Allah:\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxiii{Noé, en effet, fit appel à Nous qui sommes le Meilleur Répondeur (qui exauce les prières).\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxiv{Et Nous le sauvâmes, lui et sa famille, de la grande angoisse,\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxv{et Nous fîmes de sa descendance les seuls survivants.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxvi{et Nous avons perpétué son souvenir dans la postérité,\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxvii{Paix sur Noé dans tout l'univers!\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxviii{Ainsi récompensons-Nous les bienfaisants.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxix{Il était, certes, un de Nos serviteurs croyants.\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxx{Ensuite Nous noyâmes les autres.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxi{Du nombre de ses coreligionnaires, certes, fut Abraham.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxii{Quand il vint à son Seigneur avec un cœur sain.\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxiii{Quand il dit à son père et à son peuple: «Qu'est-ce que vous adorez?»\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxiv{Cherchez-vous dans votre égarement, des divinités en dehors d'Allah?\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxv{Que pensez-vous du Seigneur de l'univers?»\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxvi{Puis, il jeta un regard attentif sur les étoiles,\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxvii{et dit: «Je suis malade».\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxviii{Ils lui tournèrent le dos et s'en allèrent.\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxix{Alors il se glissa vers leurs divinités et dit: «Ne mangez-vous pas?\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxx{Qu'avez-vous à ne pas parler?»\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxi{Puis il se mit furtivement à les frapper de sa main droite.\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxii{Alors [les gens] vinrent à lui en courant.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxiii{Il [leur] dit: «Adorez-vous ce que vous-mêmes sculptez,\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxiv{alors que c'est Allah qui vous a créés, vous et ce que vous fabriquez?»\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxv{Ils dirent: «Qu'on lui construise un four et qu'on le lance dans la fournaise!»\qt@no{(97)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxvi{Ils voulurent lui jouer un mauvais tour; mais ce sont eux que Nous mîmes à bas.\qt@no{(98)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxvii{Et il dit: «Moi, je pars vers mon Seigneur et Il me guidera.\qt@no{(99)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxviii{Seigneur, fais-moi don d'une [progéniture] d'entre les vertueux».\qt@no{(100)}}
+\qt@newcmd\qurantrans@fr@mmmdccclxxxix{Nous lui fîmes donc la bonne annonce d'un garçon (Ismaël) longanime.\qt@no{(101)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxc{Puis quand celui-ci fut en âge de l'accompagner, [Abraham] dit: «O mon fils, je me vois en songe en train de t'immoler. Vois donc ce que tu en penses». (Ismaël) dit: «O mon cher père, fais ce qui t'es commandé: tu me trouveras, s'il plaît à Allah, du nombre des endurants».\qt@no{(102)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxci{Puis quand tous deux se furent soumis (à l'ordre d'Allah) et qu'il l'eut jeté sur le front,\qt@no{(103)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxcii{voilà que Nous l'appelâmes «Abraham!\qt@no{(104)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxciii{Tu as confirmé la vision. C'est ainsi que Nous récompensons les bienfaisants».\qt@no{(105)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxciv{C'était là certes, l'épreuve manifeste.\qt@no{(106)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxcv{Et Nous le rançonnâmes d'une immolation généreuse.\qt@no{(107)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxcvi{Et Nous perpétuâmes son renom dans la postérité:\qt@no{(108)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxcvii{«Paix sur Abraham».\qt@no{(109)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxcviii{Ainsi récompensons-Nous les bienfaisants;\qt@no{(110)}}
+\qt@newcmd\qurantrans@fr@mmmdcccxcix{car il était de Nos serviteurs croyants.\qt@no{(111)}}
+\qt@newcmd\qurantrans@fr@mmmcm{Nous lui fîmes la bonne annonce d'Isaac comme prophète d'entre les gens vertueux.\qt@no{(112)}}
+\qt@newcmd\qurantrans@fr@mmmcmi{Et Nous le bénîmes ainsi que Isaac. Parmi leurs descendances il y a [l'homme] de bien et celui qui est manifestement injuste envers lui-même.\qt@no{(113)}}
+\qt@newcmd\qurantrans@fr@mmmcmii{Et Nous accordâmes certes à Moïse et Aaron des faveurs,\qt@no{(114)}}
+\qt@newcmd\qurantrans@fr@mmmcmiii{Et les sauvâmes ainsi que leur peuple, de la grande angoisse,\qt@no{(115)}}
+\qt@newcmd\qurantrans@fr@mmmcmiv{et les secourûmes, et ils furent eux les vainqueurs.\qt@no{(116)}}
+\qt@newcmd\qurantrans@fr@mmmcmv{Et Nous leur apportâmes le livre explicite\qt@no{(117)}}
+\qt@newcmd\qurantrans@fr@mmmcmvi{et les guidâmes vers le droit chemin.\qt@no{(118)}}
+\qt@newcmd\qurantrans@fr@mmmcmvii{Et Nous perpétuâmes leur renom dans la postérité:\qt@no{(119)}}
+\qt@newcmd\qurantrans@fr@mmmcmviii{«Paix sur Moïse et Aaron»\qt@no{(120)}}
+\qt@newcmd\qurantrans@fr@mmmcmix{Ainsi récompensons-Nous les bienfaisants;\qt@no{(121)}}
+\qt@newcmd\qurantrans@fr@mmmcmx{car ils étaient du nombre de Nos serviteurs croyants.\qt@no{(122)}}
+\qt@newcmd\qurantrans@fr@mmmcmxi{Elie était, certes, du nombre des Messagers.\qt@no{(123)}}
+\qt@newcmd\qurantrans@fr@mmmcmxii{Quand il dit à son peuple: «Ne craignez-vous pas [Allah]?»\qt@no{(124)}}
+\qt@newcmd\qurantrans@fr@mmmcmxiii{Invoquerez-vous Ball (une idole) et délaisserez-vous le Meilleur des créateurs,\qt@no{(125)}}
+\qt@newcmd\qurantrans@fr@mmmcmxiv{Allah, votre Seigneur et le Seigneur de vos plus anciens ancêtres?»\qt@no{(126)}}
+\qt@newcmd\qurantrans@fr@mmmcmxv{Ils le traitèrent de menteur. Et bien, ils seront emmenées (au châtiment).\qt@no{(127)}}
+\qt@newcmd\qurantrans@fr@mmmcmxvi{Exception faite des serviteurs élus d'Allah.\qt@no{(128)}}
+\qt@newcmd\qurantrans@fr@mmmcmxvii{Et Nous perpétuâmes son renom dans la postérité:\qt@no{(129)}}
+\qt@newcmd\qurantrans@fr@mmmcmxviii{«Paix sur Elie et ses adeptes».\qt@no{(130)}}
+\qt@newcmd\qurantrans@fr@mmmcmxix{Ainsi récompensons-Nous les bienfaisants,\qt@no{(131)}}
+\qt@newcmd\qurantrans@fr@mmmcmxx{car il était du nombre de Nos serviteurs croyants.\qt@no{(132)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxi{Et Loût était, certes, du nombre des Messagers.\qt@no{(133)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxii{Quand Nous le sauvâmes, lui et sa famille, tout entière,\qt@no{(134)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxiii{sauf une vieille femme qui devait disparaître avec les autres,\qt@no{(135)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxiv{Et Nous détruisîmes les autres\qt@no{(136)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxv{Et vous passez certainement auprès d'eux le matin\qt@no{(137)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxvi{et la nuit. Ne raisonnez-vous donc pas?\qt@no{(138)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxvii{Jonas était certes, du nombre des Messagers.\qt@no{(139)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxviii{Quand il s'enfuit vers le bateau comble,\qt@no{(140)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxix{Il prit part au tirage au sort qui le désigna pour être jeté [à la mer].\qt@no{(141)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxx{Le poisson l'avala alors qu'il était blâmable.\qt@no{(142)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxi{S'il n'avait pas été parmi ceux qui glorifient Allah,\qt@no{(143)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxii{il serait demeuré dans son ventre jusqu'au jour où l'on sera ressuscité.\qt@no{(144)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxiii{Nous le jetâmes sur la terre nue, indisposé qu'il était.\qt@no{(145)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxiv{Et Nous fîmes pousser au-dessus de lui un plant de courge,\qt@no{(146)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxv{et l'envoyâmes ensuite (comme prophète) vers cent mille hommes ou plus.\qt@no{(147)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxvi{Ils crurent, et nous leur donnâmes jouissance de la vie pour un temps.\qt@no{(148)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxvii{Pose-leur donc la question: «Ton Seigneur aurait-Il des filles et eux des fils?\qt@no{(149)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxviii{Ou bien avons-Nous créé des Anges de sexe féminin, et en sont-ils témoins?».\qt@no{(150)}}
+\qt@newcmd\qurantrans@fr@mmmcmxxxix{Certes, ils disent dans leur mensonge:\qt@no{(151)}}
+\qt@newcmd\qurantrans@fr@mmmcmxl{«Allah a engendré» mais ce sont certainement des menteurs!\qt@no{(152)}}
+\qt@newcmd\qurantrans@fr@mmmcmxli{Aurait-Il choisi des filles de préférence à des fils?\qt@no{(153)}}
+\qt@newcmd\qurantrans@fr@mmmcmxlii{Qu'avez-vous donc à juger ainsi?\qt@no{(154)}}
+\qt@newcmd\qurantrans@fr@mmmcmxliii{Ne réfléchissez-vous donc pas?\qt@no{(155)}}
+\qt@newcmd\qurantrans@fr@mmmcmxliv{Ou avez-vous un argument évident?\qt@no{(156)}}
+\qt@newcmd\qurantrans@fr@mmmcmxlv{Apportez donc votre Livre si vous êtes véridiques!»\qt@no{(157)}}
+\qt@newcmd\qurantrans@fr@mmmcmxlvi{Et ils ont établi entre Lui et les djinns une parenté, alors que les djinns savent bien qu'ils [les mécréants] vont être emmenés (pour le châtiment).\qt@no{(158)}}
+\qt@newcmd\qurantrans@fr@mmmcmxlvii{Gloire à Allah. Il est au-dessus de ce qu'ils décrivent!\qt@no{(159)}}
+\qt@newcmd\qurantrans@fr@mmmcmxlviii{Exception faite des serviteurs élus d'Allah.\qt@no{(160)}}
+\qt@newcmd\qurantrans@fr@mmmcmxlix{En vérité, vous et tout ce que vous adorez,\qt@no{(161)}}
+\qt@newcmd\qurantrans@fr@mmmcml{ne pourrez tenter [personne],\qt@no{(162)}}
+\qt@newcmd\qurantrans@fr@mmmcmli{excepté celui qui sera brûlé dans la Fournaise.\qt@no{(163)}}
+\qt@newcmd\qurantrans@fr@mmmcmlii{Il n'y en a pas un, parmi nous, qui n'ait une place connue;\qt@no{(164)}}
+\qt@newcmd\qurantrans@fr@mmmcmliii{nous sommes certes, les rangés en rangs;\qt@no{(165)}}
+\qt@newcmd\qurantrans@fr@mmmcmliv{et c'est nous certes, qui célébrons la gloire [d'Allah].\qt@no{(166)}}
+\qt@newcmd\qurantrans@fr@mmmcmlv{Même s'ils disaient:\qt@no{(167)}}
+\qt@newcmd\qurantrans@fr@mmmcmlvi{«Si nous avions eu un Rappel de [nos] ancêtres,\qt@no{(168)}}
+\qt@newcmd\qurantrans@fr@mmmcmlvii{nous aurions été certes les serviteurs élus d'Allah!\qt@no{(169)}}
+\qt@newcmd\qurantrans@fr@mmmcmlviii{Ils y ont mécru et ils sauront bientôt.\qt@no{(170)}}
+\qt@newcmd\qurantrans@fr@mmmcmlix{En effet, Notre Parole a déjà été donnée à Nos serviteurs, les Messagers,\qt@no{(171)}}
+\qt@newcmd\qurantrans@fr@mmmcmlx{que ce sont eux qui seront secourus,\qt@no{(172)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxi{et que Nos soldats auront le dessus.\qt@no{(173)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxii{Eloigne-toi d'eux, jusqu'à un certain temps;\qt@no{(174)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxiii{et observe-les: ils verront bientôt!\qt@no{(175)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxiv{Quoi! est-ce Notre châtiment qu'ils cherchent à hâter?\qt@no{(176)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxv{Quand il tombera dans leur place, ce sera alors un mauvais matin pour ceux qu'on a avertis!\qt@no{(177)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxvi{Et éloigne-toi d'eux jusqu'à un certain temps;\qt@no{(178)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxvii{et observe; ils verront bientôt!\qt@no{(179)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxviii{Gloire à ton Seigneur, le Seigneur de la puissance. Il est au-dessus de ce qu'ils décrivent!\qt@no{(180)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxix{Et paix sur les Messagers,\qt@no{(181)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxx{et louange à Allah, Seigneur de l'univers!\qt@no{(182)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxi{\basmalahfr Sâd. Par le Coran, au renom glorieux (dikr)!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxii{Ceux qui ont mécru sont plutôt dans l'orgueil et le schisme!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxiii{Que de générations avant eux avons-Nous fait périr, qui ont crié, hélas, quand il n'était plus temps d'échapper?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxiv{Et ils (les Mecquois) s'étonnèrent qu'un avertisseur parmi eux leur soit venu, et les infidèles disent: «C'est un magicien et un grand menteur,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxv{Réduira-t-il les divinités à un Seul Dieu? Voilà une chose vraiment étonnante».\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxvi{Et leurs notables partirent en disant: «Allez-vous en, et restez constants à vos dieux: c'est là vraiment une chose souhaitable.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxvii{Nous n'avons pas entendu cela dans la dernière religion (le Christianisme); ce n'est en vérité que pure invention!\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxviii{Quoi! C'est sur lui, parmi nous, qu'on aurait fait descendre le Rappel [le Coran]?» Plutôt ils sont dans le doute au sujet de Mon message. Ou plutôt ils n'ont pas encore goûté à Mon châtiment!\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxix{Ou bien détiennent-ils les trésors de la miséricorde de ton Seigneur, le Puissant, le Dispensateur par excellence.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxx{Ou bien ont-ils le royaume des cieux et de la terre et de ce qui existe entre eux? Eh bien, qu'ils y montent par n'importe quel moyen!\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxi{Une armée de coalisés qui, ici-même, sera mise en déroute!\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxii{Avant eux, le peuple de Noé, les Aad et Pharaon l'homme aux pals (ou aux Pyramides),\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxiii{et les Tamûd, le peuple de Lot, et les gens d'Al-Aykah, (ont tous démenti leurs Messagers). Voilà les coalisés.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxiv{Il n'en est aucun qui n'ait traité les Messagers de menteurs. Et bien, Ma punition s'est avérée contre eux!\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxv{Ceux-ci n'attendant qu'un seul Cri, sans répétition.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxvi{Et ils disent: «Seigneur, hâte-nous notre part avant le jour des Comptes».\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxvii{Endure ce qu'ils disent; et rappelle-toi David, Notre serviteur, doué de force [dans l'adoration] et plein de repentir [à Allah].\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxviii{Nous soumîmes les montagnes à glorifier Allah, soir et matin, en sa compagnie,\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmcmlxxxix{de même que les oiseaux assemblés en masse, tous ne faisant qu'obéir à lui [Allah].\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmcmxc{Et Nous renforçâmes son royaume et lui donnâmes la sagesse et la faculté de bien juger.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmcmxci{Et t'est-elle parvenue la nouvelle des disputeurs quand ils grimpèrent au mur du sanctuaire!\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmcmxcii{Quand ils entrèrent auprès de David, il en fut effrayé. Ils dirent: «N'aie pas peur! Nous sommes tous deux en dispute; l'un de nous a fait du tort à l'autre. Juge donc en toute équité entre nous, ne sois pas injuste et guide-nous vers le chemin droit.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmcmxciii{Celui-ci est mon frère: il a quatre-vingt-dix-neuf brebis, tandis que je n'ai qu'une brebis. Il m'a dit: «Confie-la-moi» et dans la conversation, il a beaucoup fait pression sur moi».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmcmxciv{Il [David] dit: «Il a été certes injuste envers toi en demandant de joindre ta brebis à ses brebis». Beaucoup de gens transgressent les droits de leurs associés, sauf ceux qui croient et accomplissent les bonnes œuvres - cependant ils sont bien rares -. Et David pensa alors que Nous l'avions mis à l'épreuve. Il demanda donc pardon à son Seigneur et tomba prosterné et se repentit.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmcmxcv{Nous lui pardonnâmes. Il aura une place proche de Nous et un beau refuge.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmcmxcvi{«O David, Nous avons fait de toi un calife sur la terre. Juge donc en toute équité parmi les gens et ne suis pas la passion: sinon elle t'égarera du sentier d'Allah». Car ceux qui s'égarent du sentier d'Allah auront un dur châtiment pour avoir oublié le Jour des Comptes.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmcmxcvii{Nous n'avons pas créé le ciel et la terre et ce qui existe entre eux en vain. C'est ce que pensent ceux qui ont mécru. Malheur à ceux qui ont mécru pour le feu [qui les attend]!\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmcmxcviii{Traiterons-Nous ceux qui croient et accomplissent les bonnes œuvres comme ceux qui commettent du désordre sur terre? ou traiterons-Nous les pieux comme les pervers?\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmcmxcix{[Voici] un Livre béni que Nous avons fait descendre vers toi, afin qu'ils méditent sur ses versets et que les doués d'intelligence réfléchissent!\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmm{Et à David Nous fîmes don de Salomon, - quel bon serviteur! - Il était plein de repentir.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmi{Quand un après-midi, on lui présenta de magnifiques chevaux de course,\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmii{il dit: «Oui, je me suis complu à aimer les biens (de ce monde) au point [d'oublier] le rappel de mon Seigneur jusqu'à ce que [le soleil] se soit caché derrière son voile.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmiii{Ramenez-les moi.» Alors il se mit à leur couper les pattes et les cous.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmiv{Et Nous avions certes éprouvé Salomon en plaçant sur son siège un corps. Ensuite, il se repentit.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmv{Il dit: «Seigneur, pardonne-moi et fais-moi don d'un royaume tel que nul après moi n'aura de pareil. C'est Toi le grand Dispensateur».\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmvi{Nous lui assujettîmes alors le vent qui, par son ordre, soufflait modérément partout où il voulait.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmvii{De même que les diables, bâtisseurs et plongeurs de toutes sortes.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmviii{Et d'autres encore, accouplés dans des chaînes.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmix{«Voilà Notre don; distribue-le ou retiens-le sans avoir à en rendre compte».\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmx{Et il a une place rapprochée de Nous et un beau refuge.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmxi{Et rappelle-toi Job, Notre serviteur, lorsqu'il appela son Seigneur: «Le Diable m'a infligé détresse et souffrance».\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmxii{Frappe [la terre] de ton pied: voici une eau fraîche pour te laver et voici de quoi boire.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmxiii{Et Nous lui rendîmes sa famille et la fîmes deux fois plus nombreuse, comme une miséricorde de Notre part et comme un rappel pour les gens doués d'intelligence.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmxiv{«Et prends dans ta main un faisceau de brindilles, puis frappe avec cela. Et ne viole pas ton serment». Oui, Nous l'avons trouvé vraiment endurant. Quel bon serviteur! Sans cesse il se repentait.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmxv{Et rappelle-toi Abraham, Isaac et Jacob, Nos serviteurs puissants et clairvoyants.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmxvi{Nous avons fait d'eux l'objet d'une distinction particulière: le rappel de l'au-delà.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmxvii{Ils sont auprès de Nous, certes, parmi les meilleurs élus.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmxviii{Et rappelle-toi Ismaël et Elisée, et Dal Kifl, chacun d'eux parmi les meilleurs.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmxix{Cela est un rappel. C'est aux pieux qu'appartient, en vérité, la meilleure retraite,\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmxx{Les Jardins d'Eden, aux portes ouvertes pour eux,\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmxxi{où, accoudés, ils demanderont des fruits abondants et des boissons.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmxxii{Et auprès d'eux seront les belles au regard chaste, toutes du même âge.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmxxiii{Voilà ce qui vous est promis pour le Jour des Comptes.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmxxiv{Ce sera Notre attribution inépuisable.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmxxv{Voilà! Alors que les rebelles auront certes la pire retraite,\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmxxvi{L'Enfer où ils brûleront. Et quel affreux lit!\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmxxvii{Voilà! Qu'ils y goûtent: eau bouillante et eau purulente,\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmxxviii{et d'autres punitions du même genre.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmxxix{Voici un groupe qui entre précipitamment en même temps que vous, nulle bienvenue à eux. Ils vont brûler dans le Feu.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmxxx{Ils dirent: «Pas de bienvenue pour vous, plutôt. C'est vous qui avez préparé cela pour nous». Quel mauvais lieu de séjour!\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxi{Ils dirent: «Seigneur, celui qui nous a préparé cela, ajoute-lui un double châtiment dans le Feu».\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxii{Et ils dirent: «Pourquoi ne voyons-nous pas des gens que nous comptions parmi les malfaiteurs?\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxiii{Est-ce que nous les avons raillés (à tort) ou échappent-ils à nos regards?»\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxiv{Telles sont en vérité les querelles des gens du Feu.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxv{Dis: «Je ne suis qu'un avertisseur. Point de divinité à part Allah, l'Unique, le Dominateur Suprême,\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxvi{Seigneur des cieux et de la terre et de ce qui existe entre eux, le Puissant, le Grand Pardonneur».\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxvii{Dis: «Ceci (le Coran) est une grande nouvelle,\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxviii{mais vous vous en détournez.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmmxxxix{Je n'avais aucune connaissance de la cohorte sublime au moment où elle disputait.\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmmxl{Il m'est seulement révélé que je suis un avertisseur clair».\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmmxli{Quand ton Seigneur dit aux Anges: «Je vais créer d'argile un être humain.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmmxlii{Quand Je l'aurai bien formé et lui aurai insufflé de Mon Esprit, jetez-vous devant lui, prosternés».\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmmxliii{Alors tous les Anges se prosternèrent,\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmmxliv{à l'exception d'Iblîs qui s'enfla d'orgueil et fut du nombre des infidèles.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmmxlv{(Allah) lui dit: «O Iblîs, qui t'a empêché de te prosterner devant ce que J'ai créé de Mes mains? T'enfles-tu d'orgueil ou te considères-tu parmi les hauts placés?»\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmmxlvi{«Je suis meilleur que lui, dit [Iblîs,] Tu m'as créé de feu et tu l'as créé d'argile».\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmmxlvii{(Allah) dit: «Sors d'ici, te voilà banni;\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmmxlviii{et sur toi sera ma malédiction jusqu'au jour de la Rétribution».\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmmxlix{«Seigneur, dit [Iblîs], donne-moi donc un délai, jusqu'au jour où ils seront ressuscités».\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmml{(Allah) dit: «Tu es de ceux à qui un délai est accordé,\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmmli{jusqu'au jour de l'Instant bien Connu».\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmmlii{«Par Ta puissance! dit [Satan]. Je les séduirai assurément tous,\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmmliii{sauf Tes serviteurs élus parmi eux».\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmmliv{(Allah) dit: «En vérité, et c'est la vérité que je dis,\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmmmlv{J'emplirai certainement l'Enfer de toi et de tous ceux d'entre eux qui te suivront».\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmmmlvi{Dis: «Pour cela, je ne vous demande aucun salaire; et je ne suis pas un imposteur.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmmmlvii{Ceci [le Coran] n'est qu'un rappel à l'univers.\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmmmlviii{Et certainement vous en aurez des nouvelles bientôt!»\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmmmlix{\basmalahfr La révélation du Livre vient d'Allah, le Puissant, le Sage.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmlx{Nous t'avons fait descendre le Livre en toute vérité. Adore donc Allah en Lui vouant un culte exclusif.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmlxi{C'est à Allah qu'appartient la religion pure. Tandis que ceux qui prennent des protecteurs en dehors de Lui (disent): «Nous ne les adorons que pour qu'ils nous rapprochent davantage d'Allah». En vérité, Allah jugera parmi eux sur ce en quoi ils divergent. Allah ne guide pas celui qui est menteur et grand ingrat.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmlxii{Si Allah avait voulu S'attribuer un enfant, Il aurait certes choisi ce qu'Il eût voulu parmi ce qu'Il crée. Gloire à Lui! C'est Lui Allah, l'Unique, le Dominateur suprême.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmlxiii{Il a créé les cieux et la terre en toute vérité. Il enroule la nuit sur le jour et enroule le jour sur la nuit, et Il a assujetti le soleil et la lune à poursuivre chacun sa course pour un terme fixé. C'est bien Lui le Puissant, le Grand Pardonneur!\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmlxiv{Il vous a créés d'une personne unique et a tiré d'elle son épouse. Et Il a fait descendre [créé] pour vous huit couples de bestiaux. Il vous crée dans les ventres de vos mères, création après création, dans trois ténèbres. Tel est Allah, votre Seigneur! A Lui appartient toute la Royauté. Point de divinité à part Lui. Comment pouvez-vous vous détourner [de son culte]?\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmlxv{Si vous ne croyez pas, Allah se passe largement de vous. De Ses serviteurs cependant, Il n'agrée pas la mécréance. Et si vous êtes reconnaissants, Il l'agrée pour vous. Nul pécheur ne portera les péchés d'autrui. Ensuite, vers votre Seigneur sera votre retour: Il vous informera alors de ce que vous faisiez car Il connaît parfaitement le contenu des poitrines.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmlxvi{Et quand un malheur touche l'homme, il appelle son Seigneur en se tournant vers Lui. Puis quand Il lui accorde de Sa part un bienfait, il oublie la raison pour laquelle il faisait appel, et il assigne à Allah des égaux, afin d'égarer (les gens) de son chemin. Dis «Jouis de ta mécréance un court moment. Tu fais partie des gens du Feu».\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmlxvii{Est-ce que celui qui, aux heures de la nuit, reste en dévotion, prosterné et debout, prenant garde à l'au-delà et espérant la miséricorde de son Seigneur... Dis: «Sont-ils égaux, ceux qui savent et ceux qui ne savent pas?» Seuls les doués d'intelligence se rappellent.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmlxviii{Dis: «O Mes serviteurs qui avez cru! Craignez votre Seigneur». Ceux qui ici-bas font le bien, auront une bonne [récompense]. La terre d'Allah est vaste et les endurants auront leur pleine récompense sans compter.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmlxix{Dis: «Il m'a été ordonné d'adorer Allah en Lui vouant exclusivement le culte,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmlxx{et il m'a été ordonné d'être le premier des Musulmans.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxi{Dis: «Je crains, si je désobéis à mon Seigneur, le châtiment d'un jour terrible».\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxii{Dis: «C'est Allah que j'adore, et Lui voue exclusivement mon culte.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxiii{Adorez donc, en dehors de Lui, qui vous voudrez!» - Dis: «Les perdants sont ceux qui, au Jour de la Résurrection, auront causé la perte de leurs propres âmes et celles de leurs familles». C'est bien cela la perte évidente.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxiv{Au-dessus d'eux ils auront des couches de feu et des couches au-dessous d'eux. Voilà ce dont Allah menace Ses esclaves. «O Mes esclaves, craignez-Moi donc!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxv{Et à ceux qui s'écartent des Taghût pour ne pas les adorer, tandis qu'ils reviennent à Allah, à eux la bonne nouvelle! Annonce la bonne nouvelle à Mes serviteurs\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxvi{qui prêtent l'oreille à la Parole, puis suivent ce qu'elle contient de meilleur. Ce sont ceux-là qu'Allah a guidés et ce sont eux les doués d'intelligence!\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxvii{Et bien quoi! Celui contre qui s'avère le décret du châtiment,... est-ce que tu sauves celui qui est dans le Feu?\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxviii{Mais ceux qui auront craint leur Seigneur auront [pour demeure] des étages [au Paradis] au-dessus desquels d'autres étages sont construits et sous lesquels coulent les rivières. Promesse d'Allah! Allah ne manque pas à Sa promesse.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxix{Ne vois-tu pas qu'Allah fait descendre du ciel de l'eau, puis Il l'achemine vers des sources dans la terre; ensuite avec cela, Il fait sortir une culture aux couleurs diverses, laquelle se fane ensuite, de sorte que tu la vois jaunie; ensuite, Il la réduit en miettes. C'est là certainement un rappel aux [gens] doués d'intelligence.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxx{Est-ce que celui dont Allah ouvre la poitrine à l'Islam et qui détient ainsi une lumière venant de Son Seigneur... Malheur donc à ceux dont les cœurs sont endurcis contre le rappel d'Allah. Ceux-là sont dans un égarement évident.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxi{Allah a fait descendre le plus beau des récits, un Livre dont [certains versets] se ressemblent et se répètent. Les peaux de ceux qui redoutent leur Seigneur frissonnent (à l'entendre); puis leurs peaux et leurs cœurs s'apaisent au rappel d'Allah. Voilà le [Livre] guide d'Allah par lequel Il guide qui Il veut. Mais quiconque Allah égare n'a point de guide.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxii{Est-ce que celui qui, au Jour de la Résurrection, se sera protégé le visage contre le pire châtiment... Et l'on dira aux injustes: «Goûtez à ce que vous avez acquis».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxiii{Ceux qui ont vécu avant eux ont démenti (les Messagers), le châtiment leur est venu par où ils ne le pressentaient pas.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxiv{Allah leur a fait goûter l'ignominie dans la vie présente. Le châtiment de l'au-delà, cependant, est plus grand, si seulement ils savaient!\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxv{Nous avons, dans ce Coran, cité pour les gens des exemples de toutes sortes afin qu'ils se souviennent.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxvi{Un Coran [en langue] arabe, dénué de tortuosité, afin qu'ils soient pieux!\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxvii{Allah a cité comme parabole un homme appartenant à des associés se querellant à son sujet et un [autre] homme appartenant à un seul homme: sont-ils égaux en exemple? Louanges à Allah! Mais la plupart d'entre eux ne savent pas.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxviii{En vérité tu mourras et ils mourront eux aussi;\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmlxxxix{ensuite, au Jour de la Résurrection, vous vous disputerez auprès de votre Seigneur.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmxc{Quel pire injuste donc, que celui qui ment contre Allah et qui traite de mensonge la vérité quand elle lui vient? N'est-ce pas dans l'Enfer qu'il y a un refuge pour les mécréants?\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmxci{Tandis que celui qui vient avec la vérité et celui qui la confirme, ceux-là sont les pieux.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmxcii{Ils auront tout ce qu'ils désireront auprès de leur Seigneur; voilà la récompense des bienfaisants,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmxciii{afin qu'Allah leur efface les pires de leurs actions et les récompense selon ce qu'ils auront fait de meilleur.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmxciv{Allah ne suffit-Il pas à Son esclave [comme soutien]? Et ils te font peur avec ce qui est en dehors de Lui. Et quiconque Allah égare n'a point de guide.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmxcv{Quiconque Allah guide, nul ne peut l'égarer. Allah n'est-Il pas Puissant et Détenteur du pouvoir de châtier?\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmxcvi{Si tu leur demandais: «Qui a créé les cieux et la terre?», Ils diraient assurément: «Allah». Dis: «Voyez-vous ceux que vous invoquez en dehors d'Allah; si Allah me voulait du mal, est-ce que [ces divinités] pourraient dissiper Son mal? Ou s'Il me voulait une miséricorde, pourraient-elles retenir Sa miséricorde?» - Dis: «Allah me suffit: c'est en Lui que placent leur confiance ceux qui cherchent un appui».\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmxcvii{Dis: «O mon peuple, agissez selon votre méthode, moi j'agirai [selon la mienne]. Bientôt vous saurez\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmxcviii{sur qui s'abattra un châtiment qui l'avilira; et sur qui se justifiera un châtiment durable».\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmxcix{Nous t'avons fait descendre le Livre, pour les hommes, en toute vérité. Quiconque se guide [le fait] pour son propre bien; et quiconque s'égare, s'égare à son détriment. Tu n'es nullement responsable [de leurs propres affaires].\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmc{Allah reçoit les âmes au moment de leur mort ainsi que celles qui ne meurent pas au cours de leur sommeil. Il retient celles à qui Il a décrété la mort, tandis qu'Il renvoie les autres jusqu'à un terme fixé. Il y a certainement là des preuves pour des gens qui réfléchissent.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmci{Ont-ils adopté, en dehors d'Allah, des intercesseurs? Dis: «Quoi! Même s'ils ne détiennent rien et sont dépourvus de raison?\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmcii{Dis: «L'intercession toute entière appartient à Allah. A Lui la royauté des cieux et de la terre. Puis c'est vers Lui que vous serez ramenés».\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmciii{Et quand Allah est mentionné seul (sans associés), les cœurs de ceux qui ne croient pas en l'au-delà se crispent et quand on mentionne ceux qui sont en dehors de Lui, voilà qu'ils se réjouissent.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmciv{Dis: «O Allah, Créateur des cieux et de la terre, Connaisseur de tout ce que le monde ignore comme de ce qu'il perçoit, c'est Toi qui jugeras entre Tes serviteurs ce sur quoi ils divergeaient».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmcv{Si les injustes possédaient tout ce qui se trouve sur la terre, - et autant encore -, ils l'offriraient comme rançon pour échapper au pire châtiment le Jour de la Résurrection; et leur apparaîtra, de la part d'Allah, ce qu'ils n'avaient jamais imaginé;\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmcvi{et leur apparaîtront les méfaits qu'ils ont commis, et ce dont ils se raillaient les enveloppera.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmcvii{Quand un malheur touche l'homme, il Nous invoque. Quand ensuite Nous lui accordons une faveur de Notre part, il dit: «Je ne la dois qu'à [ma] science». C'est une épreuve, plutôt; mais la plupart d'entre eux ne savent pas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmcviii{Ainsi parlaient ceux qui vécurent avant eux. Mais ce qu'ils ont acquis ne leur a servi à rien;\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmcix{Ils furent donc atteints par les mauvaises conséquences de leurs acquis. Ceux de ces gens [les Mecquois] qui auront commis l'injustice seront atteints par les mauvaises conséquences de leurs acquis et ils ne pourront s'opposer à la puissance [d'Allah].\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmcx{Ne savent-ils pas qu'Allah attribue Ses dons avec largesse ou les restreint à qui Il veut? Il y a en cela des preuves pour des gens qui croient.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmcxi{Dis: «O Mes serviteurs qui avez commis des excès à votre propre détriment, ne désespérez pas de la miséricorde d'Allah. Car Allah pardonne tous les péchés. Oui, c'est Lui le Pardonneur, le Très Miséricordieux.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmcxii{Et revenez repentant à votre Seigneur, et soumettez-vous à Lui, avant que ne vous vienne le châtiment et vous ne recevez alors aucun secours.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmcxiii{Et suivez la meilleure révélation qui vous est descendue de la part de votre Seigneur, avant que le châtiment ne vous vienne soudain, sans que vous ne [le] pressentiez;\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmcxiv{avant qu'une âme ne dise: «Malheur à moi pour mes manquements envers Allah. Car j'ai été certes, parmi les railleurs»\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmcxv{ou qu'elle ne dise: «Si Allah m'avait guidée, j'aurais été certes, parmi les pieux»\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmcxvi{ou bien qu'elle ne dise en voyant le châtiment: «Ah! S'il y avait pour moi un retour! Je serais alors parmi les bienfaisants».\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmcxvii{«Oh que si! Mes versets te sont venus et tu les as traités de mensonge, tu t'es enflé d'orgueil et tu étais parmi les mécréants».\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmcxviii{Et au Jour de la Résurrection, tu verras les visages de ceux qui mentaient sur Allah, assombris. N'est-ce pas dans l'Enfer qu'il y aura une demeure pour les orgueilleux?\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmmcxix{Et Allah sauvera ceux qui ont été pieux en leur faisant gagner [leur place au Paradis]. Nul mal ne les touchera et ils ne seront point affligés.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmmcxx{Allah est le Créateur de toute chose, et de toute chose Il est Garant.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxi{Il détient les clefs des cieux et de la terre; et ceux qui ne croient pas aux versets d'Allah, ce sont ceux-là les perdants.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxii{Dis: «Me commanderez-vous d'adorer autre qu'Allah, O ignorants?»\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxiii{En effet, il t'a été révélé, ainsi qu'à ceux qui t'ont précédé: «Si tu donnes des associés à Allah, ton œuvre sera certes vaine; et tu seras très certainement du nombre des perdants.\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxiv{Tout au contraire, adore Allah seul et sois du nombre des reconnaissants».\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxv{Ils n'ont pas estimé Allah comme Il devrait l'être alors qu'au Jour de la Résurrection, Il fera de la terre entière une poignée, et les cieux seront pliés dans Sa [main] droite. Gloire à Lui! Il est au-dessus de ce qu'ils Lui associent.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxvi{Et on soufflera dans la Trompe, et voilà que ceux qui seront dans les cieux et ceux qui seront sur la terre seront foudroyés, sauf ceux qu'Allah voudra [épargner]. Puis on y soufflera de nouveau, et les voilà debout à regarder.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxvii{Et la terre resplendira de la lumière de son Seigneur; le Livre sera déposé et on fera venir les prophètes et les témoins; on décidera parmi eux en toute équité et ils ne seront point lésés;\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxviii{et chaque âme sera pleinement rétribuée pour ce qu'elle aura œuvré. Il [Allah] connaît mieux ce qu'ils font.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxix{Et ceux qui avaient mécru seront conduits par groupes à l'Enfer. Puis, quand ils y parviendront, ses portes s'ouvriront et ses gardiens leur diront: «Des messagers [choisis] parmi vous ne vous sont-ils pas venus, vous récitant les versets de votre Seigneur et vous avertissant de la rencontre de votre jour que voici?» Ils diront: si, mais le décret du châtiment s'est avéré juste contre les mécréants.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxx{«Entrez, [leur] dira-t-on, par les portes de l'Enfer, pour y demeurer éternellement». Qu'il est mauvais le lieu de séjour des orgueilleux!\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxi{Et ceux qui avaient craint leur Seigneur seront conduits par groupes au Paradis. Puis, quand ils y parviendront et que ses portes s'ouvriront ses gardiens leur diront: «Salut à vous! vous avez été bons: entrez donc, pour y demeurer éternellement».\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxii{Et ils diront: «Louange à Allah qui nous a tenu Sa promesse et nous a fait hériter la terre! Nous allons nous installer dans le Paradis là où nous voulons». Que la récompense de ceux qui font le bien est excellente!\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxiii{Et tu verras les Anges faisant cercle autour du Trône, célébrant les louanges de leur Seigneur et Le glorifiant. Et il sera jugé entre eux en toute équité, et l'on dira: «Louange à Allah, Seigneur de l'univers».\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxiv{\basmalahfr H'â, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxv{La révélation du Livre vient d'Allah, le Puissant, l'Omniscient.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxvi{Le Pardonneur des péchés, l'Accueillant au repentir, le Dur en punition, le Détenteur des faveurs. Point de divinité à part Lui et vers Lui est la destination.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxvii{Seuls ceux qui ont mécru discutent les versets d'Allah. Que leurs activités dans le pays ne te trompent pas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxviii{Avant eux, le peuple de Noé a traité (Son Messager) de menteur, et les coalisés après eux (ont fait de même), et chaque communauté a conçu le dessein de s'emparer de Son Messager. Et ils ont discuté de faux arguments pour rejeter la vérité. Alors Je les ai saisis. Et quelle punition fut la Mienne!\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmcxxxix{Ainsi s'avéra juste la Parole de ton Seigneur contre ceux qui ont mécru: «Ils seront les gens du Feu».\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmcxl{Ceux (les Anges) qui portent le Trône et ceux qui l'entourent célèbrent les louanges de leur Seigneur, croient en Lui et implorent le pardon pour ceux qui croient: «Seigneur! Tu étends sur toute chose Ta miséricorde et Ta science. Pardonne donc à ceux qui se repentent et suivent Ton chemin et protège-les du châtiment de l'Enfer.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmcxli{Seigneur! Fais-les entrer aux jardins d'Eden que Tu leur as promis, ainsi qu'aux vertueux parmi leurs ancêtres, leurs épouses et leurs descendants, car c'est Toi le Puissant, le Sage.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmcxlii{Et préserve-les [du châtiment] des mauvaises actions. Quiconque Tu préserves [du châtiment] des mauvaises actions ce jour-là, Tu lui feras miséricorde». Et c'est là l'énorme succès.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmcxliii{A ceux qui n'auront pas cru on proclamera: «l'aversion d'Allah [envers vous] est plus grande que votre aversion envers vous-mêmes, lorsque vous étiez appelés à la foi et que vous persistiez dans la mécréance».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmcxliv{Ils diront: «Notre Seigneur, Tu nous as fais mourir deux fois et redonné la vie deux fois: nous reconnaissons donc nos péchés. Y a-t-il un moyen d'en sortir?»\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmcxlv{«... Il en est ainsi car lorsqu'Allah était invoqué seul (sans associé), vous ne croyiez pas; et si on Lui donnait des associés, alors vous croyiez. Le jugement appartient à Allah, le Très Haut, le Très Grand».\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmcxlvi{C'est Lui qui vous fait voir Ses preuves, et fait descendre du ciel, pour vous, une subsistance. Seul se rappelle celui qui revient [à Allah].\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmcxlvii{Invoquez Allah donc, en Lui vouant un culte exclusif quelque répulsion qu'en aient les mécréants.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmcxlviii{Il est Celui qui est élevé aux degrés les plus hauts, Possesseur du Trône, Il envoie par son ordre l'Esprit sur celui qu'Il veut parmi Ses serviteurs, afin que celui-ci avertisse du jour de la Rencontre,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmcxlix{le jour où ils comparaîtront sans que rien en eux ne soit caché à Allah. A qui appartient la royauté, aujourd'hui? A Allah, l'Unique, le Dominateur.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmcl{Ce jour-là, chaque âme sera rétribuée selon ce qu'elle aura acquis. Ce jour-là, pas d'injustice, car Allah est prompt dans [Ses] comptes.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmcli{Et avertis-les du jour qui approche, quand les cœurs remonteront aux gorges, terrifiés (ou angoissés). Les injustes n'auront ni ami zélé, ni intercesseur écouté.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmclii{Il (Allah) connaît la trahison des yeux, tout comme ce que les poitrines cachent.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmcliii{Et Allah juge en toute équité, tandis que ceux qu'ils invoquent en dehors de Lui ne jugent rien. En vérité c'est Allah qui est l'Audient, le Clairvoyant.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmcliv{Ne parcourent-ils pas la terre, pour voir ce qu'il est advenu de ceux qui ont vécu avant eux? Ils étaient [pourtant] plus forts qu'eux et ont laissé sur terre bien plus de vestiges. Allah les saisit pour leurs péchés et ils n'eurent point de protecteur contre Allah.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmclv{Ce fut ainsi, parce que leurs Messagers leur avaient apporté les preuves, mais ils se montrèrent mécréants. Allah donc les saisit, car Il est fort et redoutable dans Son châtiment.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmclvi{Nous envoyâmes effectivement Moïse avec Nos signes et une preuve évidente,\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmclvii{vers Pharaon, Hâmân et Coré. Mais ils dirent: «Magicien! Grand menteur!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmclviii{Puis, quand il leur eut apporté la vérité venant de Nous, ils dirent: «Tuez les fils de ceux qui ont cru avec lui, et laissez vivre leurs femmes». Et les ruses des mécréants ne vont qu'en pure perte.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmclix{Et Pharaon dit: «Laissez-moi tuer Moïse. Et qu'il appelle son Seigneur! Je crains qu'il ne change votre religion ou qu'il ne fasse apparaître la corruption sur terre».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmclx{Moïse [lui] dit: «Je cherche auprès de mon Seigneur et le vôtre, protection contre tout orgueilleux qui ne croit pas au jour du Compte».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmclxi{Et un homme croyant de la famille de Pharaon, qui dissimulait sa foi dit: «Tuez-vous un homme parce qu'il dit: «Mon Seigneur est Allah?» Alors qu'il est venu à vous avec les preuves évidentes de la part de votre Seigneur. S'il est menteur, son mensonge sera à son détriment; tandis que s'il est véridique, alors une partie de ce dont il vous menace tombera sur vous». Certes, Allah ne guide pas celui qui est outrancier et imposteur!\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmclxii{«O mon peuple, triomphant sur la terre, vous avez la royauté aujourd'hui. Mais qui nous secourra de la rigueur d'Allah si elle nous vient?» Pharaon dit: «Je ne vous indique que ce que je considère bon. Je ne vous guide qu'au sentier de la droiture».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmclxiii{Et celui qui était croyant dit: «O mon peuple, je crains pour vous un jour semblable à celui des coalisés.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmclxiv{Un sort semblable à celui du peuple de Noé, des 'Aad et des Thamûd et de ceux [qui vécurent] après eux». Allah ne veut [faire subir] aucune injustice aux serviteurs.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmclxv{«O mon peuple, je crains pour vous le jour de l'Appel Mutuel,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmclxvi{Le jour où vous tournerez le dos en déroute, sans qu'il y ait pour vous de protecteur contre Allah». Et quiconque Allah égare, n'a point de guide.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmclxvii{Certes, Joseph vous est venu auparavant avec les preuves évidentes, mais vous n'avez jamais cessé d'avoir des doutes sur ce qu'il vous avait apporté. Mais lorsqu'il mourut, vous dites alors: «Allah n'enverra plus jamais de Messager après lui». Ainsi Allah égare-t-Il celui qui est outrancier et celui qui doute.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmclxviii{Ceux qui discutent les prodiges d'Allah sans qu'aucune preuve ne leur soit venue, [leur action] est grandement haïssable auprès d'Allah et auprès de ceux qui croient. Ainsi Allah scelle-t-Il le cœur de tout orgueilleux tyran.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmclxix{Et Pharaon dit: «O Hâmân, bâtis-moi une tour: peut-être atteindrai-je les voies,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmclxx{les voies des cieux, et apercevrai-je le Dieu de Moïse; mais je pense que celui-ci est menteur». Ainsi la mauvaise action de Pharaon lui parut enjolivée; et il fut détourné du droit chemin; et le stratagème de Pharaon n'est voué qu'à la destruction.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxi{Et celui qui avait cru dit: «O mon peuple, suivez-moi. Je vous guiderai au sentier de la droiture.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxii{O mon peuple, cette vie n'est que jouissance temporaire, alors que l'au-delà est vraiment la demeure de la stabilité.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxiii{Quiconque fait une mauvaise action ne sera rétribué que par son pareil; et quiconque, mâle ou femelle, fait une bonne action tout en étant croyant, alors ceux-là entreront au Paradis pour y recevoir leur subsistance sans compter.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxiv{O mon peuple, mais qu'ai-je à vous appeler au salut, alors que vous m'appelez au Feu?\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxv{Vous m'invitez à nier Allah et à Lui donner des associés dont je n'ai aucun savoir, alors que je vous appelle au Tout Puissant, au Grand Pardonneur.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxvi{Nul doute que ce à quoi vous m'appelez ne peut exaucer une invocation ni ici-bas ni dans l'au-delà. C'est vers Allah qu'est notre retour, et les outranciers sont eux les gens du Feu.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxvii{Bientôt vous vous rappellerez ce que je vous dis; et je confie mon sort à Allah. Allah est, certes, Clairvoyant sur les serviteurs.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxviii{Allah donc le protégea des méfaits de leurs ruses, alors que le pire châtiment cerna les gens de Pharaon:\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxix{le Feu, auquel ils sont exposés matin et soir. Et le jour où l'Heure arrivera (il sera dit): «Faites entrer les gens de Pharaon au plus dur du châtiment».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxx{Et quand ils se disputeront dans le Feu, les faibles diront à ceux qui s'enflaient d'orgueil: «Nous vous avions suivis: pourriez-vous nous préserver d'une partie du feu?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxi{Et ceux qui s'enflaient d'orgueil diront: «En vérité, nous y voilà tous». Allah a déjà rendu son jugement entre les serviteurs.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxii{Et ceux qui seront dans le Feu diront aux gardiens de l'Enfer: «Priez votre Seigneur de nous alléger un jour de [notre] supplice».\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxiii{Ils diront: «vos Messagers, ne vous apportaient-ils pas les preuves évidentes?» Ils diront: «Si»! Ils [les gardiens] diront: «Eh bien, priez» ! Et l'invocation des mécréants n'est qu'aberration.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxiv{Nous secourrons, certes, Nos Messagers et ceux qui croient, dans la vie présente tout comme au jour où les témoins [les Anges gardiens] se dresseront (le Jour du Jugement),\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxv{au jour où leur excuse ne sera pas utile aux injustes, tandis qu'il y aura pour eux la malédiction et la pire demeure.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxvi{En effet, Nous avons apporté à Moïse la guidée, et fait hériter aux Enfants d'Israël, le Livre,\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxvii{une guidée et un rappel aux gens doués d'intelligence.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxviii{Endure donc, car la promesse d'Allah est vérité, implore le pardon pour ton péché et célèbre la gloire et la louange de ton Seigneur, soir et matin.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmclxxxix{Ceux qui discutent sur les versets d'Allah sans qu'aucune preuve ne leur soit venue, n'ont dans leurs poitrines qu'orgueil. Ils n'atteindront pas leur but. Implore donc la protection d'Allah, car c'est Lui l'Audient, le Clairvoyant.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmcxc{La création des cieux et de la terre est quelque chose de plus grand que la création des gens. Mais la plupart des gens ne savent pas.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmcxci{L'aveugle et le voyant ne sont pas égaux, et ceux qui croient et accomplissent les bonnes œuvres ne peuvent être comparés à celui qui fait le mal. C'est rare que vous vous rappeliez!\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmcxcii{En vérité; L'Heure va arriver: pas de doute là-dessus; mais la plupart des gens n'y croient pas.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmcxciii{Et votre Seigneur dit: «Appelez-Moi, Je vous répondrai. Ceux qui, par orgueil, se refusent à M'adorer entreront bientôt dans l'Enfer, humiliés».\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmmcxciv{Allah est celui qui vous a assigné la nuit pour que vous vous y reposiez, et le jour pour y voir clair. Allah est le Pourvoyeur de grâce aux hommes, mais la plupart des gens ne sont pas reconnaissants.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmmcxcv{Tel est votre Seigneur, Créateur de toute chose. Point de divinité à part Lui. Comment se fait-il que vous vous détourniez (du chemin droit)?\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmmcxcvi{Ainsi ceux qui nient les prodiges d'Allah se détournent-ils [du chemin droit.]\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmmcxcvii{C'est Allah qui vous a assigné la terre comme demeure stable et le ciel comme toit et vous a donné votre forme, - et quelle belle forme Il vous a donnée! - et Il vous a nourris de bonnes choses. Tel est Allah, votre Seigneur; gloire à Allah, Seigneur de l'univers!\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmmcxcviii{C'est Lui le Vivant. Point de divinité à part Lui. Appelez-Le donc, en Lui vouant un culte exclusif. Louange à Allah, Seigneur de l'univers!\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmmcxcix{Dis: «Il m'a été interdit, une fois que les preuves me sont venues de mon Seigneur, d'adorer ceux que vous invoquez en dehors d'Allah, et il m'a été ordonné de me soumettre au Seigneur de l'univers».\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmmcc{C'est Lui qui vous a créés de terre, puis d'une goutte sperme, puis d'une adhérence; puis Il vous fait sortir petit enfant pour qu'ensuite vous atteigniez votre maturité et qu'ensuite vous deveniez vieux, - certains parmi vous meurent plus tôt, - et pour que vous atteigniez un terme fixé, afin que vous raisonniez.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmmcci{C'est Lui qui donne la vie et donne la mort. Puis quand Il décide une affaire, Il n'a qu'à dire: «Sois», et elle est.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmmccii{N'as-tu pas vu comment ceux qui discutent sur les versets d'Allah se laissent détourner?\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmmcciii{Ceux qui traitent de mensonge le Livre (le Coran) et ce avec quoi Nous avons envoyé Nos Messagers; ils sauront bientôt,\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmmcciv{quand, des carcans à leurs cous et avec des chaînes ils seront traînés\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmmccv{dans l'eau bouillante; et qu'ensuite ils brûleront dans le Feu.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmmccvi{Puis on leur dira: «Où sont ceux que vous associez\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmmccvii{à Allah?» «Ils se sont écartés de nous, diront-ils. Ou plutôt, nous n'invoquions rien, auparavant». Ainsi Allah égare-t-Il les mécréants.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmmccviii{Voilà le prix de votre exultation sur terre, sans raison, ainsi que de votre joie immodérée.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmmccix{Franchissez les portes de l'Enfer pour y demeurer éternellement. Qu'il est mauvais le lieu de séjour des orgueilleux!\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmmccx{Endure donc. La promesse d'Allah est vraie. Que Nous te montrions une partie de ce dont Nous les menaçons ou que Nous te fassions mourir (avant cela)... c'est vers Nous qu'ils seront ramenés.\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmmccxi{Certes, Nous avons envoyé avant toi des Messagers. Il en est dont Nous t'avons raconté l'histoire; et il en est dont Nous ne t'avons pas raconté l'histoire. Et il n'appartient pas à un Messager d'apporter un signe [ou verset] si ce n'est avec la permission d'Allah. Lorsque le commandement d'Allah viendra, tout sera décidé en toute justice; et ceux qui profèrent des mensonges sont alors les perdants.\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmmccxii{C'est Allah qui vous a fait les bestiaux pour que vous en montiez et que vous en mangiez,\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmmccxiii{et vous y avez des profits et afin que vous atteigniez sur eux une chose nécessaire qui vous tenait à cœur. C'est sur eux et sur les vaisseaux que vous êtes transportés.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmmccxiv{Et Il vous montre Ses merveilles. Quelles merveilles d'Allah niez-vous donc?\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmmccxv{Ne parcourent-ils donc pas la terre pour voir ce qu'il est advenu de ceux qui étaient avant eux? Ils étaient [pourtant] plus nombreux qu'eux et bien plus puissants et ils [avaient laissé] sur terre beaucoup plus de vestiges. Mais ce qu'ils ont acquis ne leur a servi à rien.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmmccxvi{Lorsque leurs Messagers leur apportaient les preuves évidentes, ils exultaient des connaissances qu'ils avaient. Et ce dont ils se moquaient les enveloppa.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmmccxvii{Puis, quand ils virent Notre rigueur ils dirent: «Nous croyons en Allah Seul, et nous renions ce que nous Lui donnions comme associés».\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmmmccxviii{Mais leur croyance, au moment où ils eurent constaté Notre rigueur, ne leur profita point; Telle est la règle d'Allah envers Ses serviteurs dans le passé. Et c'est là que les mécréants se trouvèrent perdants.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmmmccxix{\basmalahfr H'â, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmccxx{[C'est] une Révélation descendue de la part du Tout Miséricordieux, du Très Miséricordieux.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxi{Un Livre dont les versets sont détaillés (et clairement exposés), un Coran [lecture] arabe pour des gens qui savent,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxii{annonciateur [d'une bonne nouvelle] et avertisseur. Mais la plupart d'entre eux se détournent; c'est qu'ils n'entendent pas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxiii{Et ils dirent: «Nos cœurs sont voilés contre ce à quoi tu nous appelles, nos oreilles sont sourdes. Et entre nous et toi, il y a une cloison. Agis donc de ton côté; nous agissons du nôtre.»\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxiv{Dis: «Je ne suis qu'un homme comme vous. Il m'a été révélé que votre Dieu est un Dieu unique. Cherchez le droit chemin vers Lui et implorez son pardon». Et malheur aux Associateurs\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxv{qui n'acquittent pas la Zakât et ne croient pas en l'au-delà!\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxvi{Ceux qui croient et accomplissent de bonnes œuvres auront une énorme récompense jamais interrompue.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxvii{Dis: «Renierez-vous [l'existence] de celui qui a créé la terre en deux jours et Lui donnerez-vous des égaux? Tel est le Seigneur de l'univers,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxviii{c'est Lui qui a fermement fixé des montagnes au-dessus d'elle, l'a bénie et lui assigna ses ressources alimentaires en quatre jours d'égale durée. [Telle est la réponse] à ceux qui t'interrogent.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxix{Il S'est ensuite adressé au ciel qui était alors fumée et lui dit, ainsi qu'à la terre: «Venez tous deux, bon gré, mal gré». Tous deux dirent: «Nous venons obéissants».\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxx{Il décréta d'en faire sept cieux en deux jours et révéla à chaque ciel sa fonction. Et Nous avons décoré le ciel le plus proche de lampes [étoiles] et l'avons protégé. Tel est l'Ordre établi par le Puissant, l'Omniscient.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxi{S'ils s'en détournent, alors dis-leur; «Je vous ai avertis d'une foudre semblable à celle qui frappa les 'Aad et les Tamûd».\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxii{Quand les Messagers leur étaient venus, de devant eux et par derrière, [leur disant]: «N'adorez qu'Allah», ils dirent: «Si notre Seigneur avait voulu, Il aurait certainement fait descendre des Anges. Nous ne croyons donc pas [au message] avec lequel vous avez été envoyés».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxiii{Quant aux 'Aad, ils s'enflèrent d'orgueil sur terre injustement et dirent: «Qui est plus fort que nous?» Quoi! N'ont-ils pas vu qu'en vérité Allah qui les a créés est plus fort qu'eux? Et ils reniaient Nos signes.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxiv{Nous déchaînâmes contre eux un vent violent et glacial en des jours néfastes, afin de leur faire goûter le châtiment de l'ignominie dans la vie présente. Le châtiment de l'au-delà cependant est plus ignominieux encore, et ils ne seront pas secourus.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxv{Et quant aux Tamûd, Nous les guidâmes; mais ils ont préféré l'aveuglement à la guidée. C'est alors qu'ils furent saisis par la foudre du supplice le plus humiliant pour ce qu'ils avaient acquis.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxvi{Et Nous sauvâmes ceux qui croyaient et craignaient Allah.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxvii{Et le jour où les ennemis d'Allah seront rassemblés en masse vers le Feu... Puis on les poussera [dans sa direction].\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxviii{Alors, quand ils y seront, leur ouïe, leurs yeux et leurs peaux témoigneront contre eux de ce qu'ils œuvraient.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmccxxxix{Ils diront à leurs peaux: «Pourquoi avez-vous témoigné contre nous?» Elles diront: «C'est Allah qui nous a fait parler, Lui qui fait parler toute chose. C'est Lui qui vous a créés une première fois et c'est vers Lui que vous serez retournés».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmccxl{Vous ne pouviez vous cacher au point que ni votre ouïe, ni vos yeux et ni vos peaux ne puissent témoigner contre vous. Mais vous pensiez qu'Allah ne savait pas beaucoup de ce que vous faisiez.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmccxli{Et c'est cette pensée que vous avez eue de votre Seigneur, qui vous a ruinés, de sorte que vous êtes devenus du nombre des perdants.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmccxlii{S'ils endurent, le Feu sera leur lieu de séjour; et s'ils cherchent à s'excuser, ils ne seront pas excusés.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmccxliii{Et Nous leur avons destiné des compagnons inséparables [des démons] qui leur ont enjolivé ce qui était devant et derrière eux. Et le décret s'est avéré juste contre eux, comme contre les autres communautés de djinns et d'hommes qui ont vécu avant eux. Ils sont certes perdants!\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmccxliv{Et ceux qui avaient mécru dirent: «Ne prêtez pas l'oreille à ce Coran, et faites du chahut (pendant sa récitation), afin d'avoir le dessus».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmccxlv{Nous ferons certes, goûter à ceux qui ne croient pas un dur châtiment, et les rétribuerons certes [d'une punition] pire que ce [que méritent] leurs méfaits.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmccxlvi{Ainsi, la rétribution des ennemis d'Allah sera le Feu où ils auront une demeure éternelle, comme punition pour avoir nié Nos versets [le Coran].\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmccxlvii{Et les mécréants diront: «Seigneur, fais-nous voir ceux des djinns et des humains qui nous ont égarés, afin que nous les placions tous sous nos pieds, pour qu'ils soient parmi les plus bas».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmccxlviii{Ceux qui disent: «Notre Seigneur est Allah», et qui se tiennent dans le droit chemin, les Anges descendent sur eux. «N'ayez pas peur et ne soyez pas affligés; mais ayez la bonne nouvelle du Paradis qui vous était promis.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmccxlix{Nous sommes vos protecteurs dans la vie présente et dans l'au-delà; et vous y aurez ce que vos âmes désireront et ce que vous réclamerez,\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmccl{un lieu d'accueil de la part d'un Très Grand Pardonneur, d'un Très Miséricordieux».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmccli{Et qui profère plus belles paroles que celui qui appelle à Allah, fait bonne œuvre et dit: «Je suis du nombre des Musulmans?»\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmcclii{La bonne action et la mauvaise ne sont pas pareilles. Repousse (le mal) par ce qui est meilleur; et voilà que celui avec qui tu avais une animosité devient tel un ami chaleureux.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmccliii{Mais (ce privilège) n'est donné qu'à ceux qui endurent et il n'est donné qu'au possesseur d'une grâce infinie.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmccliv{Et si jamais le Diable t'incite (à agir autrement), alors cherche refuge auprès d'Allah; c'est Lui, vraiment l'Audient, l'Omniscient.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmcclv{Parmi Ses merveilles, sont la nuit et le jour, le soleil et la lune: ne vous prosternez ni devant le soleil, ni devant la lune, mais prosternez-vous devant Allah qui les a créés, si c'est Lui que vous adorez.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmcclvi{Mais s'ils s'enflent d'orgueil... ceux qui sont auprès de ton Seigneur [les Anges] Le glorifient, nuit et jour, sans jamais se lasser!\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmcclvii{Et parmi Ses merveilles est que tu vois la terre humiliée (toute nue). Puis aussitôt que Nous faisons descendre l'eau sur elle, elle se soulève et augmente [de volume]. Celui qui lui redonne la vie est certes Celui qui fera revivre les morts, car Il est Omnipotent.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmcclviii{Ceux qui dénaturent le sens de Nos versets (le Coran) ne Nous échappent pas. Celui qui sera jeté au Feu sera-t-il meilleur que celui qui viendra en toute sécurité le Jour de la Résurrection? Faites ce que vous voulez car Il est Clairvoyant sur tout ce que vous faites;\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmcclix{Ceux qui ne croient pas au Rappel [le Coran] quand il leur parvient... alors que c'est un Livre puissant [inattaquable];\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmcclx{Le faux ne l'atteint [d'aucune part], ni par devant ni par derrière: c'est une révélation émanant d'un Sage, Digne de louange.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxi{Il ne t'est dit que ce qui a été dit aux Messagers avant toi. Ton Seigneur est certes Détenteur du pardon et Détenteur aussi d'une punition douloureuse.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxii{Si Nous en avions fait un Coran en une langue autre que l'arabe, ils auraient dit: «Pourquoi ses versets n'ont-ils pas été exposés clairement? quoi? Un [Coran] non-arabe et [un Messager] arabe?» Dis: «Pour ceux qui croient, il est une guidée et une guérison». Et quant à ceux qui ne croient pas, il y a une surdité dans leurs oreilles et ils sont frappés d'aveuglement en ce qui le concerne; ceux-là sont appelés d'un endroit lointain.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxiii{Nous avons effectivement donné à Moïse le Livre. Puis, il y eut controverse là-dessus. Et si ce n'était une parole préalable de ton Seigneur, on aurait certainement tranché entre eux. Ils sont vraiment, à son sujet, dans un doute troublant.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxiv{Quiconque fait une bonne œuvre, c'est pour son bien. Et quiconque fait le mal, il le fait à ses dépens. Ton Seigneur, cependant, n'est point injuste envers les serviteurs.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxv{A Lui revient la connaissance de l'Heure. Aucun fruit ne sort de son enveloppe, aucune femelle ne conçoit ni ne met bas sans qu'Il n'en ait connaissance. Et le jour où Il les appellera: «Où sont Mes associés?», ils diront: «Nous Te déclarons qu'il n'y a point de témoin parmi nous»!\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxvi{Et ce qu'auparavant ils invoquaient les délaissera; et ils réaliseront qu'ils n'ont point d'échappatoire.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxvii{L'homme ne se lasse pas d'implorer le bien. Si le mal le touche, le voilà désespéré, désemparé.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxviii{Et si nous lui faisons goûter une miséricorde de Notre part, après qu'une détresse l'ait touché, il dit certainement: «Cela m'est dû! Et je ne pense pas que l'Heure se lèvera [un jour]. Et si je suis ramené vers mon Seigneur, je trouverai, près de Lui, la plus belle part». Nous informerons ceux qui ont mécru de ce qu'ils ont fait et Nous leur ferons sûrement goûter à un dur châtiment.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxix{Quand Nous comblons de bienfaits l'homme, il s'esquive et s'éloigne. Et quand un malheur le touche, il se livre alors à une longue prière.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxx{Dis: «Voyez-vous? Si ceci (le Coran) émane d'Allah et qu'ensuite vous le reniez; qui se trouvera plus égaré que celui qui s'éloigne dans la dissidence?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxi{Nous leur montrerons Nos signes dans l'univers et en eux-mêmes, jusqu'à ce qu'il leur devienne évident que c'est cela (le Coran), la vérité. Ne suffit-il pas que ton Seigneur soit témoin de toute chose?\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxii{Ils sont dans le doute, n'est-ce pas, au sujet de la rencontre de leur Seigneur? C'est Lui certes qui embrasse toute chose (par Sa science et Sa puissance).\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxiii{\basmalahfr H'â, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxiv{Aîn, Sîn, Qâf.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxv{C'est ainsi qu'Allah, le Puissant, le Sage, te fait des révélations, comme à ceux qui ont vécu avant toi.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxvi{A Lui appartient ce qui est dans les cieux et ce qui est sur la terre. Et Il est le Sublime, le Très Grand,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxvii{Peu s'en faut que les cieux ne se fendent depuis leur faîte quand les anges glorifient leur Seigneur, célèbrent Ses louanges et implorent le pardon pour ceux qui sont sur la terre. Allah est certes le Pardonneur, le Très Miséricordieux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxviii{Et quant à ceux qui prennent des protecteurs en dehors de Lui, Allah veille à ce qu'ils font. Et tu n'es pas pour eux un garant.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxix{Et c'est ainsi que Nous t'avons révélé un Coran arabe, afin que tu avertisses la Mère des cités (la Mecque) et ses alentours et que tu avertisses du Jour du rassemblement, - sur lequel il n'y a pas de doute - Un groupe au Paradis et un groupe dans la fournaise ardente.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxx{Et si Allah avait voulu, Il en aurait fait une seule communauté. Mais Il fait entrer qui Il veut dans Sa miséricorde. Et les injustes n'auront ni maître ni secoureur.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxi{Ont-ils pris des maîtres en dehors de Lui ? C'est Allah qui est le seul Maître et c'est Lui qui redonne la vie aux morts; et c'est Lui qui est Omnipotent.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxii{Sur toutes vos divergences, le jugement appartient à Allah. Tel est Allah mon Seigneur; en Lui je place ma confiance et c'est à Lui que je retourne [repentant]\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxiii{...Créateur des cieux et de la terre. Il vous a donné des épouses [issues] de vous-mêmes et des bestiaux par couples; par ce moyen Il vous multiplie. Il n'y a rien qui Lui ressemble; et c'est Lui l'Audient, le Clairvoyant.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxiv{Il possède les clefs [des trésors] des cieux et de la terre. Il attribue Ses dons avec largesse, ou les restreint à qui Il veut. Certes, Il est Omniscient.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxv{Il vous a légiféré en matière de religion, ce qu'Il avait enjoint à Noé, ce que Nous t'avons révélé, ainsi que ce que Nous avons enjoint à Abraham, à Moïse et à Jésus: «Etablissez la religion; et n'en faites pas un sujet de divisions». Ce à quoi tu appelles les associateurs leur paraît énorme Allah élit et rapproche de Lui qui Il veut et guide vers Lui celui qui se repent.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxvi{Ils ne se sont divisés qu'après avoir reçu la science et ceci par rivalité entre eux. Et si ce n'était une parole préalable de ton Seigneur pour un terme fixé, on aurait certainement tranché entre eux. Ceux à qui le Livre a été donné en héritage après eux sont vraiment à son sujet, dans un doute troublant.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxvii{Appelle donc (les gens) à cela; reste droit comme il t'a été commandé; ne suis pas leurs passions; et dis: «Je crois en tout ce qu'Allah a fait descendre comme Livre, et il m'a été commandé d'être équitable entre vous. Allah est notre Seigneur et votre Seigneur. A nous nos œuvres et à vous vos œuvres. Aucun argument [ne peut trancher] entre nous et vous. Allah nous regroupera tous. Et vers Lui est la destination».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxviii{Et ceux qui discutent au sujet d'Allah, après qu'il a été répondu à [Son appel], leur argumentation est auprès d'Allah sans valeur. Une colère tombera sur eux et ils auront un dur châtiment.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmcclxxxix{C'est Allah qui a fait descendre le Livre en toute vérité, ainsi que la balance. Et qu'en sais-tu? Peut-être que l'Heure est proche?\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmccxc{Ceux qui n'y croient pas cherchent à la hâter; tandis que ceux qui croient en sont craintifs et savent qu'elle est la pure vérité. Et ceux qui discutent à propos de l'Heure sont dans un égarement lointain.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmccxci{Allah est doux envers Ses serviteurs. Il attribue [Ses biens] à qui Il veut. Et c'est Lui le Fort, le Puissant.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmccxcii{Quiconque désire labourer [le champ] de la vie future, Nous augmenterons pour lui son labour. Quiconque désire labourer [le champ] de la présente vie, Nous lui en accorderons de [ses jouissances]; mais il n'aura pas de part dans l'au-delà.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmccxciii{Ou bien auraient-ils des associés [à Allah] qui auraient établi pour eux des lois religieuses qu'Allah n'a jamais permises? Or, si l'arrêt décisif n'avait pas été prononcé, il aurait été tranché entre eux. Les injustes auront certes un châtiment douloureux.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmccxciv{Tu verras les injustes épouvantés par ce qu'ils ont fait, et le châtiment s'abattra sur eux (inéluctablement). Et ceux qui croient et accomplissent les bonnes œuvres, seront dans les sites fleuris des jardins, ayant ce qu'ils voudront auprès de leur Seigneur. Telle est la grande grâce!\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmccxcv{Telle est la [bonne nouvelle] qu'Allah annonce à ceux de Ses serviteurs qui croient et accomplissent les bonnes œuvres! Dis: «Je ne vous en demande aucun salaire si ce n'est l'affection eu égard à [nos liens] de parenté». Et quiconque accomplit une bonne action, Nous répondons par [une récompense] plus belle encore. Allah est certes Pardonneur et Reconnaissant.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmccxcvi{Ou bien ils disent il a inventé un mensonge contre Allah. Or, si Allah voulait, Il scellerait ton cœur. Par Ses Paroles cependant, Allah efface le faux et confirme le vrai. Il connaît parfaitement le contenu des poitrines.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmccxcvii{Et c'est lui qui agrée de Ses serviteurs le repentir, pardonne les méfaits et sait ce que vous faites,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmccxcviii{et exauce [les vœux] de ceux qui croient et accomplissent les bonnes œuvres et leur accroît Sa faveur, tandis que les mécréants ont un dur châtiment.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmccxcix{Si Allah attribuait Ses dons avec largesse à [tous] Ses serviteurs, ils commettraient des abus sur la terre; mais, Il fait descendre avec mesure ce qu'Il veut. Il connaît parfaitement Ses serviteurs et en est Clairvoyant.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmccc{Et c'est Lui qui fait descendre la pluie après qu'on en a désespéré, et répand Sa miséricorde. Et c'est Lui le Maître, le Digne de louange.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmccci{Parmi Ses preuves est la création des cieux et de la terre et des êtres vivants qu'Il y a disséminés. Il a en outre le pouvoir de les réunir quand Il voudra.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmcccii{Tout malheur qui vous atteint est dû à ce que vos mains ont acquis. Et Il pardonne beaucoup.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmccciii{Vous ne pouvez pas échapper à la puissance d'Allah sur la terre; et vous n'avez en dehors d'Allah, ni maître ni défenseur.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmccciv{Et parmi Ses preuves, sont les vaisseaux à travers la mer, semblables à des montagnes.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmcccv{S'Il veut, Il calme le vent, et les voilà qui restent immobiles à sa surface. Ce sont certainement là des preuves pour tout [homme] endurant et reconnaissant.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmcccvi{Ou bien, Il les détruit en punition de ce qu'ils ont acquis [comme péchés]. Cependant, Il pardonne beaucoup.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmcccvii{Ceux qui disputent à propos de Nos preuves savent bien qu'ils n'ont pas d'échappatoire.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmcccviii{Tout ce qui vous a été donné [comme bien] n'est que jouissance de la vie présente; mais ce qui est auprès d'Allah est meilleur et plus durable pour ceux qui ont cru et qui placent leur confiance en leur Seigneur,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmcccix{qui évitent [de commettre] les péchés les plus graves ainsi que les turpitudes, et qui pardonnent après s'être mis en colère,\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmcccx{qui répondent à l'appel de leur Seigneur, accomplissent la Salât, se consultent entre eux à propos de leurs affaires, dépensent de ce que Nous leur attribuons,\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxi{et qui, atteints par l'injustice, ripostent.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxii{La sanction d'une mauvaise action est une mauvaise action [une peine] identique. Mais quiconque pardonne et réforme, son salaire incombe à Allah. Il n'aime point les injustes!\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxiii{Quant à ceux qui ripostent après avoir été lésés, ...ceux-là pas de voie (recours légal) contre eux;\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxiv{il n'y a de voie [de recours] que contre ceux qui lèsent les gens et commettent des abus, contrairement au droit, sur la terre: ceux-là auront un châtiment douloureux.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxv{Et celui qui endure et pardonne, cela en vérité, fait partie des bonnes dispositions et de la résolution dans les affaires.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxvi{Et quiconque Allah égare n'a aucun protecteur après Lui. Cependant tu verras les injustes dire, en voyant le châtiment: «Y a-t-il un moyen de retourner [sur terre]?»\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxvii{Et tu les verras exposés devant l'Enfer, confondus dans l'avilissement, et regardant d'un œil furtif, tandis que ceux qui ont cru diront: «Les perdants sont certes, ceux qui au Jour de la Résurrection font leur propre perte et celle de leurs familles». Les injustes subiront certes un châtiment permanent.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxviii{Ils n'auront pas de protecteur en dehors d'Allah pour les secourir et quiconque Allah égare n'a plus aucune voie.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxix{Répondez à l'appel de votre Seigneur avant que ne vienne un jour dont Allah ne reportera jamais le terme. Ce jour-là, nul refuge pour vous et vous ne pourrez point nier (vos péchés).\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxx{S'ils se détournent, ...Nous ne t'avons pas envoyé pour assurer leur sauvegarde: tu n'es chargé que de transmettre [le message]. Et lorsque Nous faisons goûter à l'homme une miséricorde venant de Nous, il en exulte; mais si un malheur les atteint pour ce que leurs mains ont perpétré..., l'homme est alors très ingrat!\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxi{A Allah appartient la royauté des cieux et de la terre. Il crée ce qu'Il veut. Il fait don de filles à qui Il veut, et don de garçons à qui Il veut,\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxii{ou bien Il donne à la fois garçons et filles; et Il rend stérile qui Il veut. Il est certes Omniscient et Omnipotent.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxiii{Il n'a pas été donné à un mortel qu'Allah lui parle autrement que par révélation ou de derrière un voile, ou qu'Il [Lui] envoie un messager (Ange) qui révèle, par Sa permission, ce qu'Il [Allah] veut. Il est Sublime et Sage.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxiv{Et c'est ainsi que Nous t'avons révélé un esprit [le Coran] provenant de Notre ordre. Tu n'avais aucune connaissance du Livre ni de la foi; mais Nous en avons fait une lumière par laquelle Nous guidons qui Nous voulons parmi Nos serviteurs. Et en vérité tu guides vers un chemin droit,\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxv{le chemin d'Allah à Qui appartient ce qui est dans les cieux et ce qui est sur la terre. Oui c'est à Allah que s'acheminent toutes les choses.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxvi{\basmalahfr H'â, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxvii{Par le Livre explicite!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxviii{Nous en avons fait un Coran arabe afin que vous raisonniez.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxix{Il est auprès de Nous, dans l'Ecriture-Mère (l'original au ciel), sublime et rempli de sagesse.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxx{Quoi! Allons-Nous vous dispenser du Rappel [le Coran] pour la raison que vous êtes des gens outranciers?\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxi{Que de prophètes avons-Nous envoyés aux Anciens!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxii{et pas un prophète ne leur venait qu'ils ne le tournaient en dérision.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxiii{Nous avons fait périr de plus redoutables qu'eux! Et on a déjà cité l'exemple des anciens.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxiv{Et si tu leur demandes: «Qui a créé les cieux et la terre?» Ils diront très certainement: «Le Puissant, l'Omniscient les a créés».\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxv{Celui qui vous a donné la terre pour berceau et vous y a tracé des sentiers afin que vous vous guidiez;\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxvi{Celui qui a fait descendre l'eau du ciel avec mesure et avec laquelle Nous ranimons une cité morte [aride]. Ainsi vous serez ressuscités;\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxvii{Celui qui a créé les couples dans leur totalité et a fait pour vous, des vaisseaux et des bestiaux, des montures,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxviii{afin que vous vous installiez sur leurs dos, et qu'ensuite, après vous y être installés, vous vous rappeliez le bienfait de votre Seigneur et que vous disiez: «Gloire à Celui qui nous a soumis tout cela alors que nous n'étions pas capables de les dominer.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxxxix{C'est vers notre Seigneur que nous retournerons».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxl{Et ils Lui firent de Ses serviteurs une partie [de Lui-Même]. L'homme est vraiment un ingrat déclaré!\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxli{Ou bien Se serait-Il attribué des filles parmi ce qu'Il crée et accordé à vous par préférence des fils?\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxlii{Or, quand on annonce à l'un d'eux (la naissance) d'une semblable de ce qu'il attribue au Tout Miséricordieux, son visage s'assombrit d'un chagrin profond.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxliii{Quoi! Cet être (la fille) élevé au milieu des parures et qui, dans la dispute, est incapable de se défendre par une argumentation claire et convaincante?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxliv{Et ils firent des Anges qui sont les serviteurs du Tout Miséricordieux des [êtres] féminins! Etaient-ils témoins de leur création? Leur témoignage sera alors inscrit; et ils seront interrogés.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxlv{Et ils dirent: «Si le Tout Miséricordieux avait voulu, nous ne les aurions pas adorés». Ils n'en ont aucune connaissance; ils ne font que se livrer à des conjectures.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxlvi{Ou bien, leur avions-Nous donné avant lui [le Coran] un Livre auquel ils seraient fermement attachés?\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxlvii{Mais plutôt ils dirent: «Nous avons trouvé nos ancêtres sur une religion, et nous nous guidons sur leurs traces».\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxlviii{Et c'est ainsi que Nous n'avons pas envoyé avant toi d'avertisseur en une cité, sans que ses gens aisés n'aient dit: «Nous avons trouvé nos ancêtres sur une religion et nous suivons leurs traces».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxlix{Il dit: «Même si je viens à vous avec une meilleure direction que celle sur laquelle vous avez trouvé vos ancêtres?» Ils dirent: «Nous ne croyons pas au message avec lequel vous avez été envoyés».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmcccl{Nous Nous vengeâmes d'eux. Regarde ce qu'il est advenu de ceux qui criaient au mensonge.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmcccli{Et lorsqu'Abraham dit à son père et à son peuple: «Je désavoue totalement ce que vous adorez,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmccclii{à l'exception de Celui qui m'a créé, car c'est Lui en vérité qui me guidera».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmcccliii{Et il en fit une parole qui devait se perpétuer parmi sa descendance. Peut-être reviendront-ils?\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmcccliv{Mais à ces gens ainsi qu'à leurs ancêtres J'ai accordé la jouissance jusqu'à ce que leur vinrent la Vérité (le Coran) et un Messager explicite.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmccclv{Et quand la Vérité leur vint, ils dirent: «C'est de la magie et nous n'y croyons pas».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmccclvi{Et ils dirent: «Pourquoi n'a-t-on pas fait descendre ce Coran sur un haut personnage de l'une des deux cités?» (la Mecque et Tâ'îf).\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmccclvii{Est-ce eux qui distribuent la miséricorde de ton Seigneur? C'est Nous qui avons réparti entre eux leur subsistance dans la vie présente et qui les avons élevés en grades les uns sur les autres, afin que les uns prennent les autres à leur service. La miséricorde de ton Seigneur vaut mieux, cependant, que ce qu'ils amassent.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmccclviii{Si les hommes ne devaient pas constituer une seule communauté (mécréante), Nous aurions certes pourvu les maisons de ceux qui ne croient pas au Tout Miséricordieux, de toits d'argent avec des escaliers pour y monter;\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmccclix{(Nous aurions pourvu) leurs maisons de portes et de divans où ils s'accouderaient,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmccclx{ainsi que des ornements. Et tout cela ne serait que jouissance temporaire de la vie d'ici-bas, alors que l'au-delà, auprès de ton Seigneur, est pour les pieux.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxi{Et quiconque s'aveugle (et s'écarte) du rappel du Tout Miséricordieux, Nous lui désignons un diable qui devient son compagnon inséparable.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxii{Ils [Les diables] détournent certes [les hommes] du droit chemin, tandis que ceux-ci s'estiment être bien guidés.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxiii{Lorsque cet [homme] vient à Nous, il dira [à son démon]: «Hélas! Que n'y a-t-il entre toi et moi la distance entre les deux orients [l'Est et l'Ouest]» - Quel mauvais compagnon [que tu es]!\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxiv{Il ne vous profitera point ce jour-là - du moment que vous avez été injustes - que vous soyez associés dans le châtiment.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxv{Est-ce donc toi qui fait entendre les sourds ou qui guide les aveugles et ceux qui sont dans un égarement évident?\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxvi{Soit que Nous t'enlevons [te ferons mourir] et alors Nous Nous vengerons d'eux;\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxvii{ou bien que Nous te ferons voir ce que Nous leur avons promis [le châtiment]; car Nous avons sur eux un pouvoir certain.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxviii{Tiens fermement à ce qui t'a été révélé car tu es sur le droit chemin.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxix{C'est certainement un rappel [le Coran] pour toi et ton peuple. Et vous en serez interrogés.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxx{Et demande à ceux de Nos messagers que Nous avons envoyés avant toi, si Nous avons institué, en dehors du Tout Miséricordieux, des divinités à adorer?\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxi{Nous avons effectivement envoyé Moïse avec Nos miracles, à Pharaon et à ses notables. Il dit: «Je suis le Messager du Seigneur de l'univers».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxii{Puis, lorsqu'il vint à eux avec Nos miracles, voilà qu'ils en rirent.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxiii{Chaque miracle que Nous leur montrions était plus probant que son précédent. Et Nous les saisîmes par le châtiment, peut-être reviendront-ils [vers Nous].\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxiv{Et ils dirent: «O magicien! Implore pour nous ton Seigneur au nom de l'engagement qu'Il a pris envers toi. Nous suivrons le droit chemin».\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxv{Puis quand Nous eûmes écarté d'eux le châtiment, voilà qu'ils violèrent leurs engagements.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxvi{Et Pharaon fit une proclamation à son peuple et dit: «O mon peuple! Le royaume de Misr [l'Egypte] ne m'appartient-il pas ainsi que ces canaux qui coulent à mes pieds? N'observez-vous donc pas?\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxvii{Ne suis-je pas meilleur que ce misérable qui sait à peine s'exprimer?\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxviii{Pourquoi ne lui a-t-on pas lancé des bracelets d'or? Pourquoi les Anges ne l'ont-ils pas accompagné?»\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxix{Ainsi chercha-t-il à étourdir son peuple et ainsi lui obéirent-ils car ils étaient des gens pervers.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxx{Puis lorsqu'ils Nous eurent irrité, Nous Nous vengeâmes d'eux et les noyâmes tous.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxi{Nous fîmes d'eux un antécédant et un exemple [une leçon] pour la postérité.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxii{Quand on cite l'exemple du fils de Marie, ton peuple s'en détourne,\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxiii{en disant: «Nos dieux sont-ils meilleurs, ou bien lui?» Ce n'est que par polémique qu'ils te le citent comme exemple. Ce sont plutôt des gens chicaniers.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxiv{Il (Jésus) n'était qu'un Serviteur que Nous avions comblé de bienfaits et que Nous avions désigné en exemple aux Enfants d'Israël.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxv{Si Nous voulions, Nous ferions de vous des Anges qui vous succéderaient sur la terre.\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxvi{Il sera un signe au sujet de l'Heure. N'en doutez point. Et suivez-moi: voilà un droit chemin.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxvii{Que le Diable ne vous détourne point! Car il est pour vous un ennemi déclaré.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxviii{Et quand Jésus apporta les preuves, il dit: «Je suis venu à vous avec la sagesse et pour vous expliquer certains de vos sujets de désaccord. Craignez Allah donc et obéissez-moi.\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmmccclxxxix{Allah est en vérité mon Seigneur et votre Seigneur. Adorez-Le donc. Voilà un droit chemin».\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxc{Mais les factions divergèrent entre elles. Malheur donc aux injustes du châtiment d'un jour douloureux!\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxci{Attendent-ils seulement que l'Heure leur vienne à l'improviste, sans qu'ils ne s'en rendent compte?\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxcii{Les amis, ce jour-là, seront ennemis les uns des autres; excepté les pieux.\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxciii{«O Mes serviteurs! Vous ne devez avoir aucune crainte aujourd'hui; vous ne serez point affligés,\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxciv{Ceux qui croient en Nos signes et sont musulmans,\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxcv{«Entrez au Paradis, vous et vos épouses, vous y serez fêtés».\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxcvi{On fera circuler parmi eux des plats d'or et des coupes; et il y aura là [pour eux] tout ce que les âmes désirent et ce qui réjouit les yeux;» - et vous y demeurerez éternellement.\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxcvii{Tel est le Paradis qu'on vous fait hériter pour ce que vous faisiez.\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxcviii{Il y aura là pour vous beaucoup de fruits dont vous mangerez».\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmmcccxcix{Quant aux criminels, ils demeureront éternellement dans le châtiment de l'Enfer,\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmmcd{qui ne sera jamais interrompu pour eux et où ils seront en désespoir.\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmmcdi{Nous ne leur avons fait aucun tort, mais c'étaient eux les injustes.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmmcdii{et ils crieront: «O Mâlik! Que ton Seigneur nous achève!» Il dira: «En vérité, vous êtes pour y demeurer [éternellement]»!\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmmcdiii{«Certes, Nous vous avions apporté la Vérité; mais la plupart d'entre vous détestaient la Vérité».\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmmcdiv{Ont-ils pris quelque décision [entre eux]? Car c'est Nous qui décidons!\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmmcdv{Ou bien escomptent-ils que Nous n'entendons pas leur secret ni leurs délibérations? Mais si! Nos Anges prennent note auprès d'eux.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmmcdvi{Dis: «Si le Tout Miséricordieux avait un enfant, alors je serais le premier à l'adorer».\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmmcdvii{Gloire au Seigneur des cieux et de la terre, Seigneur du Trône; Il transcende ce qu'ils décrivent.\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmmcdviii{Laisse-les donc s'enfoncer dans leur fausseté et s'amuser jusqu'à ce qu'ils rencontrent le jour qui leur est promis.\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmmcdix{C'est Lui qui est Dieu dans le ciel et Dieu sur terre; et c'est Lui le Sage, l'Omniscient!\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmmmcdx{Et béni soit Celui à qui appartient la souveraineté des cieux et de la terre et de ce qui est entre eux. Il détient la science de l'Heure. Et c'est vers Lui que vous serez ramenés.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxi{Et ceux qu'ils invoquent en dehors de Lui n'ont aucun pouvoir d'intercession, à l'exception de ceux qui auront témoigné de la vérité en pleine connaissance de cause.\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxii{Et si tu leur demandes qui les a créés, ils diront très certainement: «Allah». Comment se fait-il donc qu'ils se détournent?\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxiii{Et sa parole (la parole du Prophète à Allah): «Seigneur, ce sont là des gens qui ne croient pas».\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxiv{Et bien, éloigne-toi d'eux (pardonne-leur); et dis: «Salut!» Car ils sauront bientôt.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxv{\basmalahfr H'â, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxvi{Par le Livre (le Coran) explicite.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxvii{Nous l'avons fait descendre en une nuit bénie, Nous sommes en vérité Celui qui avertit,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxviii{durant laquelle est décidé tout ordre sage,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxix{c'est là un commandement venant de Nous. C'est Nous qui envoyons [les Messagers],\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxx{à titre de miséricorde de la part de ton Seigneur, car c'est Lui l'Audient, l'Omniscient,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxi{Seigneur des cieux et de la terre et de ce qui est entre eux, si seulement vous pouviez en avoir la conviction.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxii{Point de divinité à part Lui. Il donne la vie et donne la mort, et Il est votre Seigneur et le Seigneur de vos premiers ancêtres.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxiii{Mais ces gens-là, dans le doute, s'amusent.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxiv{Eh bien, attends le jour où le ciel apportera une fumée visible\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxv{qui couvrira les gens. Ce sera un châtiment douloureux.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxvi{«Seigneur, éloigne de nous le châtiment. Car, [à présent] nous croyons».\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxvii{D'où leur vient cette prise de conscience alors qu'un Messager explicite leur est déjà venu,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxviii{Puis ils s'en détournèrent en disant: «C'est un homme instruit [par d'autres], un possédé».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxix{Nous dissiperons le châtiment pour peu de temps; car vous récidiverez.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxx{Le jour où Nous userons de la plus grande violence et Nous Nous vengerons.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxi{Et avant eux Nous avons déjà éprouvé le peuple de Pharaon, quand un noble Messager leur était venu,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxii{[leur disant]: «Livrez-moi les serviteurs d'Allah! Je suis pour vous un Messager digne de confiance.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxiii{Ne vous montrez pas hautains vis-à-vis d'Allah, car je vous apporte une preuve évidente.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxiv{Et je cherche protection auprès de mon Seigneur et votre Seigneur, pour que vous ne me lapidiez pas.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxv{Si vous ne voulez pas croire en moi, éloignez-vous de moi».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxvi{Il invoqua alors son Seigneur: «Ce sont des gens criminels».\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxvii{«Voyage de nuit avec Mes serviteurs; vous serez poursuivis.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxviii{Laisse la mer calme; [telle que tu l'as franchie] ce sont, des armées [vouées] à la noyade».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxxxix{Que de jardins et de sources ils laissèrent [derrière eux]\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxl{que de champs et de superbes résidences,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxli{que de délices au sein desquels ils se réjouissaient.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxlii{Il en fut ainsi et Nous fîmes qu'un autre peuple en hérita.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxliii{Ni le ciel ni la terre ne les pleurèrent et ils n'eurent aucun délai.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxliv{Et certes, Nous sauvâmes les Enfants d'Israël du châtiment avilissant\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxlv{de Pharaon qui était hautain et outrancier.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxlvi{A bon escient Nous les choisîmes parmi tous les peuples de l'univers,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxlvii{et leur apportâmes des miracles de quoi les mettre manifestement à l'épreuve.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxlviii{Ceux-là (les Mecquois) disent:\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxlix{«Il n'y a pour nous qu'une mort, la première. Et nous ne serons pas ressuscités.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmcdl{Faites donc revenir nos ancêtres, si vous êtes véridiques».\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmcdli{Sont-ils les meilleurs ou le peuple de Tubba' et ceux qui les ont précédés? Nous les avons fait périr parce que vraiment ils étaient criminels.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlii{Ce n'est pas par divertissement que Nous avons créé les cieux et la terre et ce qui est entre eux.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmcdliii{Nous ne les avons créés qu'en toute vérité. Mais la plupart d'entre eux ne savent pas.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmcdliv{En vérité, le Jour de la Décision sera leur rendez-vous à tous,\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlv{le jour où un allié ne sera d'aucune utilité à un [autre] allié; et ils ne seront point secourus non plus,\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlvi{sauf celui à qui Allah fera miséricorde. Car c'est Lui, le Puissant, le Très Miséricordieux.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlvii{Certes l'arbre de Zakkûm\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlviii{sera la nourriture du grand pécheur.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlix{Comme du métal en fusion; il bouillonnera dans les ventres\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlx{comme le bouillonnement de l'eau surchauffée.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxi{Qu'on le saisisse et qu'on l'emporte en plein dans la fournaise;\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxii{qu'on verse ensuite sur sa tête de l'eau bouillante comme châtiment.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxiii{Goûte! Toi [qui prétendait être] le puissant, le noble.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxiv{Voilà ce dont vous doutiez.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxv{Les pieux seront dans une demeure sûre,\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxvi{parmi des jardins et des sources,\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxvii{Ils porteront des vêtements de satin et de brocart et seront placés face à face.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxviii{C'est ainsi! Et Nous leur donnerons pour épouses des houris aux grands yeux.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxix{Ils y demanderont en toute quiétude toutes sortes de fruits.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxx{Ils n'y goûteront pas à la mort sauf leur mort première. Et [Allah] les protègera du châtiment de la Fournaise,\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxi{c'est là une grâce de ton Seigneur. Et c'est là l'énorme succès.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxii{Nous ne l'avons facilité dans ta langue, qu'afin qu'ils se rappellent!\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxiii{Attends donc. Eux aussi attendent.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxiv{\basmalahfr H'â, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxv{La révélation du Livre émane d'Allah, le Puissant, le Sage.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxvi{Il y a certes dans les cieux et la terre des preuves pour les croyants.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxvii{Et dans votre propre création, et dans ce qu'Il dissémine comme animaux, il y a des signes pour des gens qui croient avec certitude.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxviii{De même dans l'alternance de la nuit et du jour, et dans ce qu'Allah fait descendre du ciel comme subsistance [pluie] par laquelle Il redonne la vie à la terre une fois morte, et dans la distribution des vents, il y a des signes pour des gens qui raisonnent.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxix{Voilà les versets d'Allah que Nous te récitons en toute vérité. Alors dans quelle parole croiront-ils après [la parole] d'Allah et après Ses signes?\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxx{Malheur à tout grand imposteur pécheur!\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxi{Il entend les versets d'Allah qu'on lui récite puis persiste dans son orgueil, comme s'il ne les avait jamais entendus. Annonce-lui donc un châtiment douloureux.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxii{S'il a connaissance de quelques-uns de Nos versets, il les tourne en dérision. Ceux-là auront un châtiment avilissant:\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxiii{l'Enfer est à leurs trousses. Ce qu'ils auront acquis ne leur servira à rien, ni ce qu'ils auront pris comme protecteurs, en dehors d'Allah. Ils auront un énorme châtiment.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxiv{Ceci [le Coran] est un guide. Et ceux qui récusent les versets de leur Seigneur auront le supplice d'un châtiment douloureux.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxv{Allah c'est Lui qui vous a assujetti la mer, afin que les vaisseaux y voguent, par Son ordre, et que vous alliez en quête de sa grâce afin que vous soyez reconnaissants.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxvi{Et Il vous a assujetti tout ce qui est dans les cieux et sur la terre, le tout venant de Lui. Il y a là des signes pour des gens qui réfléchissent.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxvii{Dis à ceux qui ont cru de pardonner à ceux qui n'espèrent pas les jours d'Allah afin qu'Il rétribue [chaque] peuple pour les acquis qu'ils faisaient.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxviii{Quiconque fait le bien, le fait pour lui-même; et quiconque agit mal, agit contre lui-même. Puis vous serez ramenés vers votre Seigneur,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmcdlxxxix{Nous avons effectivement apporté aux Enfants d'Israël le Livre, la sagesse, la prophétie, et leur avons attribué de bonnes choses, et les préférâmes aux autres humains [leurs contemporains];\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxc{Et Nous leur avons apporté des preuves évidentes de l'Ordre. Ils ne divergèrent qu'après que la science leur fut venue par agressivité entre eux. Ton Seigneur décidera parmi eux, au Jour de la Résurrection, sur ce en quoi ils divergeaient.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxci{Puis Nous t'avons mis sur la voie de l'Ordre [une religion claire et parfaite]. Suis-la donc et ne suis pas les passions de ceux qui ne savent pas.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxcii{Ils ne te seront d'aucune utilité vis-à-vis d'Allah. Les injustes sont vraiment alliés les uns des autres; tandis qu'Allah est le Protecteur des pieux.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxciii{Ceci [le Coran] constitue pour les hommes une source de clarté, un guide et une miséricorde pour des gens qui croient avec certitude.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxciv{Ceux qui commettent des mauvaises actions comptent-ils que Nous allons les traiter comme ceux qui croient et accomplissent les bonnes œuvres, dans leur vie et dans leur mort? Comme ils jugent mal!\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxcv{Et Allah a créé les cieux et la terre en toute vérité et afin que chaque âme soit rétribuée selon ce qu'elle a acquis. Ils ne seront cependant pas lésés.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxcvi{Vois-tu celui qui prend sa passion pour sa propre divinité? Et Allah l'égare sciemment et scelle son ouïe et son cœur et étend un voile sur sa vue. Qui donc peut le guider après Allah? Ne vous rappelez-vous donc pas?\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxcvii{Et ils dirent: «Il n'y a pour nous que la vie d'ici-bas: nous mourons et nous vivons et seul le temps nous fait périr». Ils n'ont de cela aucune connaissance: ils ne font qu'émettre des conjectures.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxcviii{Et quand on leur récite Nos versets bien clairs, leur seul argument est de dire: «Faites revenir nos ancêtres si vous êtes véridiques».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmcdxcix{Dis: «Allah vous donne la vie puis Il vous donne la mort. Ensuite Il vous réunira le Jour de la Résurrection, il n'y a pas de doute à ce sujet, mais la plupart des gens ne savent pas.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmd{A Allah appartient le royaume des cieux et de la terre. Et le jour où l'Heure arrivera, ce jour-là, les imposteurs seront perdus.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdi{Et tu verras chaque communauté agenouillée. Chaque communauté sera appelée vers son livre. On vous rétribuera aujourd'hui selon ce que vous œuvriez.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdii{Voilà Notre Livre. Il parle de vous en toute vérité car Nous enregistrions [tout] ce que vous faisiez».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdiii{Ceux qui ont cru et fait de bonnes œuvres, leur Seigneur les fera entrer dans Sa miséricorde. Voilà le succès évident.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmdiv{Et quant à ceux qui ont mécru [il sera dit]: «Mes versets ne vous étaient-ils pas récités? Mais vous vous enfliez d'orgueil et vous étiez des gens criminels».\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmdv{Et quand on disait: «La promesse d'Allah est vérité; et l'Heure n'est pas l'objet d'un doute», vous disiez: «Nous ne savons pas ce que c'est que l'Heure; et nous ne faisions à son sujet que de simples conjectures et nous ne sommes pas convaincus [qu'elle arrivera].\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmdvi{Et leur apparaîtra [la laideur] de leurs mauvaises actions. Et ce dont ils se moquaient les cernera.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmdvii{Et on leur dira: «Aujourd'hui Nous vous oublions comme vous avez oublié la rencontre de votre jour que voici. Votre refuge est le Feu; et vous n'aurez point de secoureurs.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmdviii{Cela parce que vous preniez en raillerie les versets d'Allah et que la vie d'ici-bas vous trompait». Ce jour-là on ne les en fera pas sortir et on ne les excusera pas non plus.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmdix{Louange à Allah, Seigneur des cieux et Seigneur de la terre: Seigneur de l'univers.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmdx{Et à Lui la grandeur dans les cieux et la terre. Et c'est Lui le Puissant, le Sage.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmdxi{\basmalahfr H'â, Mîm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdxii{La révélation du Livre émane d'Allah, le Puissant, le Sage.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdxiii{Nous n'avons créé les cieux et la terre et ce qui est entre eux qu'en toute vérité et [pour] un terme fixé. Ceux qui ont mécru se détournent de ce dont ils ont été avertis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdxiv{Dis: «Que pensez-vous de ceux que vous invoquez en dehors d'Allah? Montrez-moi donc ce qu'ils ont créé de la terre! Ou ont-ils dans les cieux une participation avec Dieu? Apportez-moi un Livre antérieur à celui-ci (le Coran) ou même un vestige d'une science, si vous êtes véridiques».\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdxv{Et qui est plus égaré que celui qui invoque en dehors d'Allah, et que la vie ne saura lui répondre jusqu'au Jour de la Résurrection? Et elles [leurs divinités] sont indifférentes à leur invocation.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdxvi{Et quand les gens seront rassemblés [pour le Jugement] elles seront leurs ennemies et nieront leur adoration [pour elles].\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdxvii{Et quand on leur récite Nos versets bien clairs, ceux qui ont mécru disent à propos de la vérité, une fois venue à eux: «C'est de la magie manifeste».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdxviii{Ou bien ils disent: «Il l'a inventé!» Dis: «Si je l'ai inventé alors vous ne pourrez rien pour moi contre [la punition] d'Allah. Il sait parfaitement ce que vous propagez (en calomnies contre le Coran): Allah est suffisant comme témoin entre moi et vous. Et c'est Lui le Pardonneur, le Très Miséricordieux».\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdxix{Dis: «Je ne suis pas une innovation parmi les messagers; et je ne sais pas ce que l'on fera de moi, ni de vous. Je ne fais que suivre ce qui m'est révélé; et je ne suis qu'un avertisseur clair».\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdxx{Dis: «Que direz-vous si [cette révélation s'avère] venir d'Allah et que vous n'y croyez pas qu'un témoin parmi les fils d'Israël en atteste la conformité [au Pentateuque] et y croit pendant que vous, vous le repoussez avec orgueil... En vérité Allah ne guide pas les gens injustes!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxi{Et ceux qui ont mécru dirent à ceux qui ont cru: «Si ceci était un bien, ils (les pauvres) ne nous y auraient pas devancés». Et comme ils ne se seront pas laissés guider par lui ils diront: «Ce n'est qu'un vieux mensonge!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxii{Et avant lui, il y avait le Livre de Moïse, comme guide et comme miséricorde. Et ceci est [un Livre] confirmateur, en langue arabe, pour avertir ceux qui font du tort et pour faire la bonne annonce aux bienfaisants\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxiii{Ceux qui disent: «Notre Seigneur est Allah» et qui ensuite se tiennent sur le droit chemin. Ils ne doivent avoir aucune crainte et ne seront point affligés.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxiv{Ceux-là sont les gens du Paradis où ils demeureront éternellement, en récompense de ce qu'ils faisaient.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxv{Et Nous avons enjoint à l'homme de la bonté envers ses père et mère: sa mère l'a péniblement porté et en a péniblement accouché; et sa gestation et sevrage durent trente mois; puis quand il atteint ses pleines forces et atteint quarante ans, il dit: «O Seigneur! Inspire-moi pour que je rende grâce au bienfait dont Tu m'as comblé ainsi qu'à mes père et mère, et pour que je fasse une bonne œuvre que Tu agrées. Et fais que ma postérité soit de moralité saine. Je me repens à Toi et je suis du nombre des Soumis».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxvi{Ce sont ceux-là dont Nous acceptons le meilleur de ce qu'ils œuvrent et passons sur leurs méfaits, (ils seront) parmi les gens du Paradis, selon la promesse véridique qui leur était faite.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxvii{Quant à celui qui dit à ses père et mère: «Fi de vous deux! Me promettez-vous qu'on me fera sortir de terre alors que des générations avant moi ont passé?» Et les deux, implorant le secours d'Allah, [lui dirent]: «Malheur à toi! Crois. Car la promesse d'Allah est véridique». Mais il (répond): «Ce ne sont que des contes d'Anciens».\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxviii{Ce sont ceux-là qui ont mérité la sentence [prescrite] en même temps que des communautés déjà passées avant eux parmi les djinns et les hommes. Ils étaient réellement perdants.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxix{Et il y a des rangs [de mérite] pour chacun, selon ce qu'ils ont fait afin qu'Allah leur attribue la pleine récompense de leurs œuvres; et ils ne seront point lésés.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxx{Et le jour où ceux qui ont mécru seront présentés au Feu (il leur sera dit): «Vous avez dissipé vos [biens] excellents et vous en avez joui pleinement durant votre vie sur terre: on vous rétribue donc aujourd'hui du châtiment avilissant, pour l'orgueil dont vous vous enfliez injustement sur terre, et pour votre perversité.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxi{Et rappelle-toi le frère des 'Aad (Hûd) quand il avertit son peuple à Al-Ahqâf - alors qu'avant et après lui, des avertisseurs sont passés - [en disant]: «N'adorez qu'Allah. Je crains pour vous le châtiment d'un jour terrible».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxii{Ils dirent: «Es-tu venu à nous pour nous détourner de nos divinités? Eh bien, apporte-nous ce que tu nous promets si tu es du nombre des véridiques».\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxiii{Il dit: «La science n'est qu'auprès d'Allah. Je vous transmets cependant le message avec lequel j'ai été envoyé. Mais je vois que vous êtes des gens ignorants».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxiv{Puis, voyant un nuage se dirigeant vers leurs vallées ils dirent; «Voici un nuage qui nous apporte de la pluie». Au contraire! c'est cela même que vous cherchiez à hâter: C'est un vent qui contient un châtiment douloureux,\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxv{détruisant tout, par le commandement de son Seigneur. Puis le lendemain on ne voyait plus que leurs demeures. Ainsi rétribuons-Nous les gens criminels.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxvi{En effet, Nous les avions consolidés dans des positions que Nous ne vous avons pas données. Et Nous leur avions assigné une ouïe, des yeux et des cœurs, mais ni leur ouïe, ni leurs yeux, ni leurs cœurs ne leur ont profité en quoi que ce soit, parce qu'ils niaient les signes d'Allah. Et ce dont ils se moquaient les cerna.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxvii{Nous avons assurément fait périr les cités autour de vous; et Nous avons diversifié les signes afin qu'ils reviennent (de leur mécréance).\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxviii{Pourquoi donc ne les secourent pas, ceux qu'ils avaient pris, en dehors d'Allah, comme divinités pour [soi-disant] les rapprocher de Lui? Ceux-ci, au contraire, les abandonnèrent; telle est leur imposture et voilà ce qu'ils inventaient comme mensonges.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdxxxix{(Rappelle-toi) lorsque Nous dirigeâmes vers toi une troupe de djinns pour qu'ils écoutent le Coran. Quand ils assistèrent [à sa lecture] ils dirent: «Ecoutez attentivement»... Puis, quand ce fut terminé, ils retournèrent à leur peuple en avertisseurs\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdxl{Ils dirent: «O notre peuple! Nous venons d'entendre un Livre qui a été descendu après Moïse, confirmant ce qui l'a précédé. Il guide vers la vérité et vers un chemin droit.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmdxli{O notre peuple! Répondez au prédicateur d'Allah et croyez en lui. Il [Allah] vous pardonnera une partie de vos péchés et vous protègera contre un châtiment douloureux.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmdxlii{Et quiconque ne répond pas au prédicateur d'Allah ne saura échapper au pouvoir [d'Allah] sur terre. Et il n'aura pas de protecteurs en dehors de Lui. Ceux-là sont dans un égarement évident.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmdxliii{Ne voient-ils pas qu'Allah qui a créé les cieux et la terre, et qui n'a pas été fatigué par leur création, est capable en vérité de redonner la vie aux morts? Mais si. Il est certes Omnipotent.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmdxliv{Et le jour où seront présentés au Feu ceux qui ont mécru (on leur dira): «Ceci n'est-il pas la vérité?» Ils diront: «Mais si, par notre Seigneur». Il dira: «Eh bien, goûtez le châtiment pour votre mécréance».\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmdxlv{Endure (Muhammad) donc, comme ont enduré les messagers doués de fermeté; et ne te montre pas trop pressé de les voir subir [leur châtiment]. Le jour où ils verront ce qui leur est promis, il leur semblera qu'ils n'étaient restés [sur terre] qu'une heure d'un jour. Voilà une communication. Qui sera donc anéanti sinon les gens pervers?\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmdxlvi{\basmalahfr Ceux qui ont mécru et obstrué le chemin d'Allah, Il a rendu leurs œuvres vaines.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdxlvii{Et ceux qui ont cru et accompli de bonnes œuvres et ont cru en ce qui a été descendu sur Muhammad - et c'est la vérité venant de leur Seigneur - Il leur efface leurs méfaits et améliore leur condition.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdxlviii{Il en est ainsi parce que ceux qui ont mécru ont suivi le Faux et que ceux qui ont cru ont suivi la Vérité émanant de leur Seigneur. C'est ainsi qu'Allah propose leurs exemples aux gens.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdxlix{Lorsque vous rencontrez (au combat) ceux qui ont mécru frappez-en les cous. Puis, quand vous les avez dominés, enchaînez-les solidement. Ensuite, c'est soit la libération gratuite, soit la rançon, jusqu'à ce que la guerre dépose ses fardeaux. Il en est ainsi, car si Allah voulait, Il se vengerait Lui-même contre eux, mais c'est pour vous éprouver les uns par les autres. Et ceux qui seront tués dans le chemin d'Allah, Il ne rendra jamais vaines leurs actions.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdl{Il les guidera et améliorera leur condition.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdli{et les fera entrer au Paradis qu'Il leur aura fait connaître.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdlii{O vous qui croyez! si vous faites triompher (la cause d') Allah, Il vous fera triompher et raffermira vos pas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdliii{Et quant à ceux qui ont mécru, il y aura un malheur pour eux, et Il rendra leurs œuvres vaines.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdliv{C'est parce qu'ils ont de la répulsion pour ce qu'Allah a fait descendre. Il a rendu donc vaines leurs œuvres.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdlv{N'ont-il pas parcouru la terre pour voir ce qu'il est advenu de leurs prédécesseurs? Allah les a détruits. Pareilles fins sont réservées aux mécréants.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdlvi{C'est qu'Allah est vraiment le Protecteur de ceux qui ont cru; tandis que les mécréants n'ont pas de protecteur.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdlvii{Ceux qui croient et accomplissent de bonnes œuvres Allah les fera entrer dans des Jardins sous lesquels coulent les ruisseaux. Et ceux qui mécroient jouissent et mangent comme mangent les bestiaux; et le Feu sera leur lieu de séjour.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdlviii{Et que de cités, bien plus fortes que ta cité qui t'a expulsé, avons-Nous fait périr, et ils n'eurent point de secoureur.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdlix{Est-ce que celui qui se base sur une preuve claire venant de son Seigneur est comparable à ceux dont on a embelli les mauvaises actions et qui ont suivi leurs propres passions.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdlx{Voici la description du Paradis qui a été promis aux pieux: il y aura là des ruisseaux d'une eau jamais malodorante, et des ruisseaux d'un lait au goût inaltérable, et des ruisseaux d'un vin délicieux à boire, ainsi que des ruisseaux d'un miel purifié. Et il y a là, pour eux, des fruits de toutes sortes, ainsi qu'un pardon de la part de leur Seigneur. [Ceux-là] seront-ils pareils à ceux qui s'éternisent dans le Feu et qui sont abreuvés d'une eau bouillante qui leur déchire les entrailles?\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxi{Et il en est parmi eux qui t'écoutent. Une fois sortis de chez toi ils disent à ceux qui ont reçu la science: «Qu'a-t-il dit tout à l'heure?» Ce sont ceux-là dont Allah a scellé les cœurs et qui suivent leurs propres passions.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxii{Quant à ceux qui se mirent sur la bonne voie, Il les guida encore plus et leur inspira leur piété.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxiii{Qu'est-ce qu'ils attendent sinon que l'Heure leur vienne à l'improviste? Or ses signes avant-coureurs sont certes déjà venus. Et comment pourront-ils se rappeler quand elle leur viendra (à l'improviste)?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxiv{Sache donc qu'en vérité il n'y a point de divinité à part Allah et implore le pardon pour ton péché, ainsi que pour les croyants et les croyantes. Allah connaît vos activités (sur terre) et votre lieu de repos (dans l'au-delà).\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxv{Ceux qui ont cru disent: «Ah! Si une Sourate descendait!» Puis, quand on fait descendre une Sourate explicite et qu'on y mentionne le combat, tu vois ceux qui ont une maladie au cœur te regarder du regard de celui qui s'évanouit devant la mort. Seraient bien préférables pour eux.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxvi{une obéissance et une parole convenable. Puis, quand l'affaire est décidée, il serait mieux pour eux certes, de se montrer sincères vis-à-vis d'Allah.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxvii{Si vous vous détournez, ne risquez-vous pas de semer la corruption sur terre et de rompre vos liens de parenté?\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxviii{Ce sont ceux-là qu'Allah a maudits, a rendus sourds et a rendu leurs yeux aveugles.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxix{Ne méditent-ils pas sur le Coran? Ou y a-t-il des cadenas sur leurs cœurs?\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxx{Ceux qui sont revenus sur leurs pas après que le droit chemin leur a été clairement exposé, le Diable les a séduits et trompés.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxi{C'est parce qu'ils ont dit à ceux qui ont de la répulsion pour la révélation d'Allah: «Nous allons vous obéir dans certaines choses». Allah cependant connaît ce qu'ils cachent.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxii{Qu'adviendra-t-il d'eux quand les Anges les achèveront, frappant leurs faces et leurs dos?\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxiii{Cela parce qu'ils ont suivi ce qui courrouce Allah, et qu'ils ont de la répulsion pour [ce qui attire] Son agrément. Il a donc rendu vaines leurs œuvres.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxiv{Ou bien est-ce que ceux qui ont une maladie au cœur escomptent qu'Allah ne saura jamais faire apparaître leur haine?\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxv{Or, si Nous voulions Nous te les montrerions. Tu les reconnaîtrais certes à leurs traits; et tu les reconnaîtrais très certainement au ton de leur parler. Et Allah connaît bien vos actions.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxvi{Nous vous éprouverons certes afin de distinguer ceux d'entre vous qui luttent [pour la cause d'Allah] et qui endurent, et afin d'éprouver [faire apparaître] vos nouvelles.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxvii{Ceux qui ont mécru et obstrué le chemin d'Allah et se sont mis dans le clan opposé au Messager après que le droit chemin leur fut clairement exposé, ne sauront nuire à Allah en quoi que ce soit. Il rendra vaines leurs œuvres.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxviii{O vous qui avez cru ! Obéissez à Allah, obéissez au Messager, et ne rendez pas vaines vos œuvres.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxix{Ceux qui ont mécru et obstrué le chemin d'Allah puis sont morts tout en étant mécréants, Allah ne leur pardonnera jamais.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxx{Ne faiblissez donc pas et n'appelez pas à la paix alors que vous êtes les plus hauts, qu'Allah est avec vous, et qu'Il ne vous frustrera jamais [du mérite] de vos œuvres.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxi{La vie présente n'est que jeu et amusement; alors que si vous croyez et craignez, [Allah], Il vous accordera vos récompenses et ne vous demandera pas vos biens.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxii{S'Il vous les demandait importunément, vous deviendriez avares et Il ferait apparaître vos haines.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxiii{Vous voilà appelés à faire des dépenses dans le chemin d'Allah. Certains parmi vous se montrent avares. Quiconque cependant est avare, l'est à son détriment. Allah est le Suffisant à Soi-même alors que vous êtes les besogneux. Et si vous vous détournez, Il vous remplacera par un peuple autre que vous, et ils ne seront pas comme vous.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxiv{\basmalahfr En vérité Nous t'avons accordé une victoire éclatante,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxv{afin qu'Allah te pardonne tes péchés, passés et futurs, qu'Il parachève sur toi Son bienfait et te guide sur une voie droite;\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxvi{et qu'Allah te donne un puissant secours.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxvii{C'est Lui qui a fait descendre la quiétude dans les cœurs des croyants afin qu'ils ajoutent une foi à leur foi. A Allah appartiennent les armées des cieux et de la terre; et Allah est Omniscient et Sage\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxviii{afin qu'Il fasse entrer les croyants et les croyantes dans des Jardins sous lesquels coulent les ruisseaux où ils demeureront éternellement et afin de leur effacer leurs méfaits. Cela est auprès d'Allah un énorme succès.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdlxxxix{Et afin qu'Il châtie les hypocrites, hommes et femmes, et les associateurs et les associatrices, qui pensent du mal d'Allah. Qu'un mauvais sort tombe sur eux. Allah est courroucé contre eux, les a maudits, et leur a préparé l'Enfer. Quelle mauvaise destination!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdxc{A Allah appartiennent les armées des cieux et de la terre; et Allah est Puissant et Sage.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdxci{Nous t'avons envoyé en tant que témoin, annonciateur de la bonne nouvelle et avertisseur,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdxcii{pour que vous croyiez en Allah et en Son messager, que vous l'honoriez, reconnaissiez Sa dignité, et Le glorifiez matin et soir.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdxciii{Ceux qui te prêtent serment d'allégeance ne font que prêter serment à Allah: la main d'Allah est au-dessus de leurs mains. Quiconque viole le serment ne le viole qu'à son propre détriment; et quiconque remplit son engagement envers Allah, Il lui apportera bientôt une énorme récompense.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdxciv{Ceux des Bédouins qui ont été laissés en arrière te diront: «Nos biens et nos familles nous ont retenus: implore donc pour nous le pardon». Ils disent avec leurs langues ce qui n'est pas dans leurs cœurs. Dis: «Qui donc peut quelque chose pour vous auprès d'Allah s'Il veut vous faire du mal ou s'Il veut vous faire du bien? Mais Allah est Parfaitement Connaisseur de ce que vous œuvrez.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdxcv{Vous pensiez plutôt que le Messager et les croyants ne retourneraient jamais plus à leur famille. Et cela vous a été embelli dans vos cœurs; et vous avez eu de mauvaises pensées. Et vous fûtes des gens perdus».\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdxcvi{Et quiconque ne croit pas en Allah et en Son messager... alors, pour les mécréants, Nous avons préparé une fournaise ardente.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdxcvii{A Allah appartient la souveraineté des cieux et de la terre. Il pardonne à qui Il veut et châtie qui Il veut. Allah demeure cependant, Pardonneur et Miséricordieux.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdxcviii{Ceux qui restèrent en arrière diront, quand vous vous dirigez vers le butin pour vous en emparer; «Laissez-nous vous suivre». Ils voudraient changer la parole d'Allah. Dis: «Jamais vous ne nous suivrez: ainsi Allah a déjà annoncé». Mais ils diront: «Vous êtes plutôt envieux à notre égard». Mais ils ne comprenaient en réalité que peu.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdxcix{Dis à ceux des Bédouins qui restèrent en arrière: «vous serez bientôt appelés contre des gens d'une force redoutable. Vous les combattrez à moins qu'ils n'embrassent l'Islam, si vous obéissez, Allah vous donnera une belle récompense, et si vous vous détournez comme vous vous êtes détournés auparavant, Il vous châtiera d'un châtiment douloureux».\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdc{Nul grief n'est à faire à l'aveugle, ni au boiteux ni au malade. Et quiconque obéit à Allah et à Son messager, Il le fera entrer dans des Jardins sous lesquels coulent les ruisseaux. Quiconque cependant se détourne, Il le châtiera d'un douloureux châtiment.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdci{Allah a très certainement agréé les croyants quand ils t'ont prêté le serment d'allégeance sous l'arbre. Il a su ce qu'il y avait dans leurs cœurs, et a fait descendre sur eux la quiétude, et Il les a récompensés par une victoire proche.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdcii{ainsi qu'un abondant butin qu'ils ramasseront. Allah est Puissant et Sage.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmdciii{Allah vous a promis un abondant butin que vous prendrez et Il a hâté pour vous Celle-ci et repoussé de vous les mains des gens, afin que tout cela soit un signe pour les croyants et qu'Il vous guide dans un droit chemin;\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmdciv{Il vous promet un autre butin que vous ne seriez jamais capables de remporter et qu'Allah a embrassé en Sa puissance, car Allah est Omnipotent.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmdcv{Et si ceux qui ont mécru vous combattent, ils se détourneront, certes; puis ils ne trouveront ni allié ni secoureur.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmdcvi{Telle est la règle d'Allah appliquée aux générations passées. Et tu ne trouveras jamais de changement à la règle d'Allah.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmdcvii{C'est Lui qui, dans la vallée de la Mecque, a écarté leurs mains de vous, de même qu'Il a écarté vos mains d'eux, après vous avoir fait triompher sur eux. Et Allah voit parfaitement ce que vous œuvrez.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmdcviii{Ce sont eux qui ont mécru et qui vous ont obstrué le chemin de la Mosquée Sacrée [et ont empêché] que les offrandes entravées parvinssent à leur lieu d'immolation. S'il n'y avait pas eu des hommes croyants et des femmes croyantes (parmi les Mecquois) que vous ne connaissiez pas et que vous auriez pu piétiner sans le savoir, vous rendant ainsi coupables d'une action répréhensible... [Tout cela s'est fait] pour qu'Allah fasse entrer qui Il veut dans Sa miséricorde. Et s'ils [les croyants] s'étaient signalés, Nous aurions certes châtié d'un châtiment douloureux ceux qui avaient mécru parmi [les Mecquois].\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmdcix{Quand ceux qui ont mécru eurent mis dans leurs cœurs la fureur, [la] fureur de l'ignorance... Puis Allah fit descendre Sa quiétude sur Son Messager ainsi que sur les croyants, et les obligea à une parole de piété, dont ils étaient les plus dignes et les plus proches. Allah est Omniscient.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmdcx{Allah a été véridique en la vision par laquelle Il annonça à Son messager en toute vérité: vous entrerez dans la Mosquée Sacrée si Allah veut, en toute sécurité, ayant rasé vos têtes ou coupé vos cheveux, sans aucune crainte. Il savait donc ce que vous ne saviez pas. Il a placé en deçà de cela (la trêve de Houdaybiya) une victoire proche.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxi{C'est Lui qui a envoyé Son messager avec la guidée et la religion de vérité [l'Islam] pour la faire triompher sur toute autre religion. Allah suffit comme témoin.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxii{Muhammad est le Messager d'Allah. Et ceux qui sont avec lui sont durs envers les mécréants, miséricordieux entre eux. Tu les vois inclinés, prosternés, recherchant d'Allah grâce et agrément. Leurs visages sont marqués par la trace laissée par la prosternation. Telle est leur image dans la Thora. Et l'image que l'on donne d'eux dans l'Evangile est celle d'une semence qui sort sa pousse, puis se raffermit, s'épaissit, et ensuite se dresse sur sa tige, à l'émerveillement des semeurs. [Allah] par eux [les croyants] remplit de dépit les mécréants. Allah promet à ceux d'entre eux qui croient et font de bonnes œuvres, un pardon et une énorme récompense.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxiii{\basmalahfr O vous qui avez cru! Ne devancez pas Allah et Son messager. Et craignez Allah. Allah est Audient et Omniscient.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxiv{O vous qui avez cru! N'élevez pas vos voix au-dessus de la voix du Prophète, et ne haussez pas le ton en lui parlant, comme vous le haussez les uns avec les autres, sinon vos œuvres deviendraient vaines sans que vous vous en rendiez compte.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxv{Ceux qui auprès du Messager d'Allah baissent leurs voix sont ceux dont Allah a éprouvé les cœurs pour la piété. Ils auront un pardon et une énorme récompense.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxvi{Ceux qui t'appellent à haute voix de derrière les appartements, la plupart d'entre eux ne raisonnent pas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxvii{Et s'ils patientaient jusqu'à ce que tu sortes à eux ce serait certes mieux pour eux. Allah cependant, est Pardonneur et Miséricordieux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxviii{O vous qui avez cru! Si un pervers vous apporte une nouvelle, voyez bien clair [de crainte] que par inadvertance vous ne portiez atteinte à des gens et que vous ne regrettiez par la suite ce que vous avez fait.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxix{Et sachez que le Messager d'Allah est parmi vous. S'il vous obéissait dans maintes affaires, vous seriez en difficultés. Mais Allah vous a fait aimer la foi et l'a embellie dans vos cœurs et vous a fait détester la mécréance, la perversité et la désobéissance. Ceux-là sont les bien dirigés,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxx{c'est là en effet une grâce d'Allah et un bienfait. Allah est Omniscient et Sage.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxi{Et si deux groupes de croyants se combattent, faites la conciliation entre eux. Si l'un d'eux se rebelle contre l'autre, combattez le groupe qui se rebelle, jusqu'à ce qu'il se conforme à l'ordre d'Allah. Puis, s'il s'y conforme, réconciliez-les avec justice et soyez équitables car Allah aime les équitables.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxii{Les croyants ne sont que des frères. Etablissez la concorde entre vos frères, et craignez Allah, afin qu'on vous fasse miséricorde.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxiii{O vous qui avez cru! Qu'un groupe ne se raille pas d'un autre groupe: ceux-ci sont peut-être meilleurs qu'eux. Et que des femmes ne se raillent pas d'autres femmes: celles-ci sont peut-être meilleures qu'elles. Ne vous dénigrez pas et ne vous lancez pas mutuellement des sobriquets (injurieux). Quel vilain mot que «perversion» lorsqu'on a déjà la foi. Et quiconque ne se repent pas... Ceux-là sont les injustes.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxiv{O vous qui avez cru! Evitez de trop conjecturer [sur autrui] car une partie des conjectures est péché. Et n'espionnez pas; et ne médisez pas les uns des autres. L'un de vous aimerait-il manger la chair de son frère mort? (Non!) vous en aurez horreur. Et craignez Allah. Car Allah est Grand Accueillant au repentir, Très Miséricordieux.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxv{O hommes! Nous vous avons créés d'un mâle et d'une femelle, et Nous avons fait de vous des nations et des tribus, pour que vous vous entre-connaissiez. Le plus noble d'entre vous, auprès d'Allah, est le plus pieux. Allah est certes Omniscient et Grand Connaisseur.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxvi{Les Bédouins ont dit: «Nous avons la foi». Dis: «Vous n'avez pas encore la foi. Dites plutôt: Nous nous sommes simplement soumis, car la foi n'a pas encore pénétré dans vos cœurs. Et si vous obéissez à Allah et à Son messager, Il ne vous fera rien perdre de vos œuvres». Allah est Pardonneur et Miséricordieux.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxvii{Les vrais croyants sont seulement ceux qui croient en Allah et en Son messager, qui par la suite ne doutent point et qui luttent avec leurs biens et leurs personnes dans le chemin d'Allah. Ceux-là sont les véridiques.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxviii{Dis: «Est-ce vous qui apprendrez à Allah votre religion, alors qu'Allah sait tout ce qui est dans les cieux et sur la terre?» Et Allah est Omniscient.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxix{Ils te rappellent leur conversion à l'Islam comme si c'était une faveur de leur part. Dis: «Ne me rappelez pas votre conversion à l'Islam comme une faveur. C'est tout au contraire une faveur dont Allah vous a comblés en vous dirigeant vers la foi, si toutefois vous êtes véridiques».\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxx{Allah connaît l'Inconnaissable des cieux et de la terre et Allah est Clairvoyant sur ce que vous faites.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxi{\basmalahfr Qâf. Par le Coran glorieux!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxii{Mais ils s'étonnent que l'un des leurs leur vint comme avertisseur; et les mécréants dirent: «Ceci est une chose étonnante.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxiii{Quoi! Quand nous serons morts et réduits en poussière...? Ce serait revenir de loin!»\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxiv{Certes, Nous savons ce que la terre rongera d'eux [de leurs corps]; et Nous avons un Livre où tout est conservé.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxv{Plutôt, ils traitent de mensonge la vérité qui leur est venue: les voilà donc dans une situation confuse.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxvi{N'ont-ils donc pas observé le ciel au-dessus d'eux, comment Nous l'avons bâti et embelli; et comment il est sans fissures?\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxvii{Et la terre, Nous l'avons étendue et Nous y avons enfoncé fermement des montagnes et y avons fait pousser toutes sortes de magnifiques couples de [végétaux],\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxviii{à titre d'appel à la clairvoyance et un rappel pour tout serviteur repentant.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxxxix{Et Nous avons fait descendre du ciel une eau bénie, avec laquelle Nous avons fait pousser des jardins et le grain qu'on moissonne,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxl{ainsi que les hauts palmiers aux régimes superposés,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxli{comme subsistance pour les serviteurs. Et par elle (l'eau) Nous avons redonné la vie à une contrée morte. Ainsi se fera la résurrection.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxlii{Avant eux, le peuple de Noé, les gens d'Ar-Rass et les Thamûd crièrent au mensonge,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxliii{de même que les 'Aad et Pharaon et les frères de Lot,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxliv{et les gens d'Al-Aykah et le peuple de Tubba'. Tous traitèrent les Messagers de menteurs. C'est ainsi que Ma menace se justifia.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxlv{Quoi? Avons-Nous été fatigué par la première création? Mais ils sont dans la confusion [au sujet] d'une création nouvelle.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxlvi{Nous avons effectivement créé l'homme et Nous savons ce que son âme lui suggère et Nous sommes plus près de lui que sa veine jugulaire\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxlvii{quand les deux recueillants, assis à droite et à gauche, recueillent.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxlviii{Il ne prononce pas une parole sans avoir auprès de lui un observateur prêt à l'inscrire.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxlix{L'agonie de la mort fait apparaître la vérité: «Voilà ce dont tu t'écartais».\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmdcl{Et l'on soufflera dans la Trompe: Voilà le jour de la Menace.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmdcli{Alors chaque âme viendra accompagnée d'un conducteur et d'un témoin.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmdclii{«Tu restais indifférent à cela. Et bien, Nous ôtons ton voile; ta vue est perçante aujourd'hui.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmdcliii{Et son compagnon dira: «Voilà ce qui est avec moi, tout prêt».\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmdcliv{«Vous deux, jetez dans l'Enfer tout mécréant endurci et rebelle,\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmdclv{acharné à empêcher le bien, transgresseur, douteur,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmdclvi{celui qui plaçait à côté d'Allah une autre divinité. Jetez-le donc dans le dur châtiment».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmdclvii{Son camarade (le Diable) dira: «Seigneur, ce n'est pas moi qui l'ai fait transgresser; mais il était déjà dans un profond égarement».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdclviii{Alors [Allah] dira:«Ne vous disputez pas devant moi! Alors que Je vous ai déjà fait part de la menace.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdclix{Chez Moi, la parole ne change pas; et Je n'opprime nullement les serviteurs».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdclx{Le jour où Nous dirons à l'Enfer; «Es-tu rempli?» Il dira: «Y en a-t-il encore?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxi{Le Paradis sera rapproché à proximité des pieux.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxii{«Voilà ce qui vous a été promis, [ainsi qu'] à tout homme plein de repentir et respectueux [des prescriptions divines]\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxiii{qui redoute le Tout Miséricordieux bien qu'il ne Le voit pas, et qui vient [vers Lui] avec un cœur porté à l'obéissance.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxiv{Entrez-y en toute sécurité,». Voilà le jour de l'éternité!\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxv{Il y aura là pour eux tout ce qu'ils voudront. Et auprès de Nous il y a davantage encore.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxvi{combien avons-Nous fait périr, avant eux, de générations bien plus fortes qu'eux. Ils avaient parcouru les contrées, cherchant [vainement] où fuir.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxvii{Il y a bien là un rappel pour quiconque a un cœur, prête l'oreille tout en étant témoin.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxviii{En effet Nous avons créé les cieux et la terre et ce qui existe entre eux en six jours, sans éprouver la moindre lassitude.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxix{Endure donc ce qu'ils disent; et célèbre la louange de ton Seigneur avant le lever du soleil et avant [son] coucher;\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxx{et célèbre Sa gloire, une partie de la nuit et à la suite des prosternations [prières].\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxi{Et sois à l'écoute, le jour où le Crieur criera d'un endroit proche,\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxii{le jour où ils entendront en toute vérité le Cri. Voilà le Jour de la Résurrection.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxiii{C'est Nous qui donnons la vie et donnons la mort, et vers Nous sera la destination,\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxiv{le jour où la terre se fendra, les [rejetant] précipitamment. Ce sera un rassemblement facile pour Nous.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxv{Nous savons mieux ce qu'ils disent. Tu n'as pas pour mission d'exercer sur eux une contrainte. Rappelle donc, par le Coran celui qui craint Ma menace.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxvi{\basmalahfr Par les vents qui éparpillent!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxvii{Par les porteurs de fardeaux!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxviii{Par les glisseurs agiles!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxix{Par les distributeurs selon un commandement!\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxx{Ce qui vous est promis est certainement vrai.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxi{Et la Rétribution arrivera inévitablement.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxii{Par le ciel aux voies parfaitement tracées!\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxiii{vous divergez sur ce que vous dites.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxiv{Est détourné de lui quiconque a été détourné de la foi.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxv{Maudits soient les menteurs,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxvi{qui sont plongés dans l'insouciance.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxvii{Ils demandent: «A quand le jour de la Rétribution?»\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxviii{Le jour où ils seront éprouvés au Feu:\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdclxxxix{«Goûtez à votre épreuve [punition]; voici ce que vous cherchiez à hâter».\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxc{Les pieux seront dans des Jardins et [parmi] des sources,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxci{recevant ce que leur Seigneur leur aura donné. Car ils ont été auparavant des bienfaisants:\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxcii{ils dormaient peu, la nuit,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxciii{et aux dernières heures de la nuit ils imploraient le pardon [d'Allah];\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxciv{et dans leurs biens, il y avait un droit au mendiant et au déshérité.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxcv{Il y a sur terre des preuves pour ceux qui croient avec certitude;\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxcvi{ainsi qu'en vous-mêmes. N'observez-vous donc pas?\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxcvii{Et il y a dans le ciel votre subsistance et ce qui vous a été promis.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxcviii{Par le Seigneur du ciel et de la terre! Ceci est tout aussi vrai que le fait que vous parliez.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmdcxcix{T'est-il parvenu le récit des visiteurs honorables d'Abraham?\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmdcc{Quand ils entrèrent chez lui et dirent: «Paix!», il [leur] dit: «Paix, visiteurs inconnus».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmdcci{Puis il alla discrètement à sa famille et apporta un veau gras.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmdccii{Ensuite il l'approcha d'eux... «Ne mangez-vous pas?» dit-il.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdcciii{Il ressentit alors de la peur vis-à-vis d'eux. Ils dirent: «N'aie pas peur». Et ils lui annoncèrent [la naissance] d'un garçon plein de savoir.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdcciv{Alors sa femme s'avança en criant, se frappa le visage et dit: «Une vieille femme stérile...»\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdccv{Ils dirent: «Ainsi a dit ton Seigneur. C'est Lui vraiment le Sage, l'Omniscient».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmdccvi{Alors [Abraham] dit: «Quelle est donc votre mission, ô envoyés?»\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmdccvii{Ils dirent: «Nous avons été envoyés vers des gens criminels,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmdccviii{pour lancer sur eux des pierres de glaise,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmdccix{marquées auprès de ton Seigneur à l'intention des outranciers».\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmdccx{Nous en fîmes sortir alors ce qu'il y avait comme croyants,\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxi{mais Nous n'y trouvâmes qu'une seule maison de gens soumis.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxii{Et Nous y laissâmes un signe pour ceux qui redoutent le douloureux châtiment;\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxiii{[Il y a même un signe] en Moïse quand Nous l'envoyâmes, avec une preuve évidente, vers Pharaon.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxiv{Mais [celui-ci] se détourna confiant en sa puissance, et dit: «C'est un magicien ou un possédé!»\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxv{Nous le saisîmes ainsi que ses troupes, puis les jetâmes dans les flots, pour son comportement blâmable.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxvi{De même pour les 'Aad, quand Nous envoyâmes contre eux le vent dévastateur\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxvii{n'épargnant rien sur son passage sans le réduire en poussière.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxviii{De même pour les Thamûd, quand il leur fut dit: «Jouissez jusqu'à un certain temps!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxix{Ils défièrent le commandement de leur Seigneur. La foudre les saisit alors qu'ils regardaient.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxx{Ils ne purent ni se mettre debout ni être secourus.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxi{De même, pour le peuple de Noé auparavant. Ils étaient des gens pervers.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxii{Le ciel, Nous l'avons construit par Notre puissance: et Nous l'étendons [constamment] dans l'immensité.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxiii{Et la terre, Nous l'avons étendue. Et de quelle excellente façon Nous l'avons nivelée!\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxiv{Et de toute chose Nous avons créé [deux éléments] de couple. Peut-être vous rappellerez-vous?\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxv{«Fuyez donc vers Allah. Moi, je suis pour vous de Sa part, un avertisseur explicite.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxvi{Ne placez pas avec Allah une autre divinité. Je suis pour vous de Sa part, un avertisseur explicite».\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxvii{Ainsi, aucun Messager n'est venu à leurs prédécesseurs sans qu'ils n'aient dit: «C'est un magicien ou un possédé!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxviii{Est-ce qu'ils se sont transmis cette injonction? Ils sont plutôt des gens transgresseurs.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxix{Détourne-toi d'eux, tu ne seras pas blâmé [à leur sujet].\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxx{Et rappelle; car le rappel profite aux croyants.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxi{Je n'ai créé les djinns et les hommes que pour qu'ils M'adorent.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxii{Je ne cherche pas d'eux une subsistance; et Je ne veux pas qu'ils me nourrissent.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxiii{En vérité, c'est Allah qui est le Grand Pourvoyeur, Le Détenteur de la force, l'Inébranlable.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxiv{Ceux qui ont été injustes auront une part [de tourments] pareille à celle de leurs compagnons. Qu'ils ne soient pas trop pressés.\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxv{Malheur donc à ceux qui ont mécru à cause du jour dont ils sont menacés!\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxvi{\basmalahfr Par At-Tûr!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxvii{Et par un Livre écrit\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxviii{sur un parchemin déployé!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxxxix{Et par la Maison peuplée!\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxl{Et par la Voûte élevée!\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxli{Et par la Mer portée à ébullition! (au Jour dernier)\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxlii{Le châtiment de ton Seigneur aura lieu inévitablement.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxliii{Nul ne pourra le repousser.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxliv{Le jour où le ciel sera agité d'un tourbillonnement,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxlv{et les montagnes se mettront en marche.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxlvi{Ce jour-là, malheur à ceux qui traitent (les signes d'Allah) de mensonges,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxlvii{ceux qui s'ébattent dans des discours frivoles\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxlviii{le jour où ils seront brutalement poussés au feu de l'Enfer:\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxlix{Voilà le feu que vous traitiez de mensonge.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdccl{Est-ce que cela est de la magie? Ou bien ne voyez-vous pas clair?\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdccli{Brûlez dedans! Supportez ou ne supportez pas, ce sera égal pour vous: vous n'êtes rétribués que selon ce que vous faisiez.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclii{Les pieux seront dans des Jardins et dans des délices,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdccliii{se réjouissant de ce que leur Seigneur leur aura donné, et leur Seigneur les aura protégés du châtiment de la Fournaise.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdccliv{«En récompense de ce que vous faisiez, mangez et buvez en toute sérénité,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclv{accoudés sur des lits bien rangés», et Nous leur ferons épouser des houris aux grands yeux noirs,\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclvi{Ceux qui auront cru et que leurs descendants auront suivis dans la foi, Nous ferons que leurs descendants les rejoignent. Et Nous ne diminuerons en rien le mérite de leurs œuvres, chacun étant tenu responsable de ce qu'il aura acquis.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclvii{Nous les pourvoirons abondamment des fruits et des viandes qu'ils désireront.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclviii{Là, ils se passeront les uns les autres une coupe qui ne provoquera ni vanité ni incrimination.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclix{Et parmi eux circuleront des garçons à leur service, pareils à des perles bien conservées.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclx{Et ils se tourneront les uns vers les autres s'interrogeant;\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxi{Ils diront: «Nous vivions au milieu des nôtres dans la crainte [d'Allah];\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxii{Puis Allah nous a favorisés et protégés du châtiment du Samûm.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxiii{Antérieurement, nous L'invoquions. C'est Lui certes, le Charitable, le Très Miséricordieux».\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxiv{Rappelle donc et par la grâce de ton Seigneur tu n'es ni un devin ni un possédé.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxv{Ou bien ils disent: «C'est un poète! Attendons pour lui le coup de la mort».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxvi{Dis: «Attendez! Je suis avec vous parmi ceux qui attendent».\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxvii{Est-ce leur raison qui leur commande cela? Ou sont-ils des gens outranciers?\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxviii{Ou bien ils disent: «Il l'a inventé lui-même?» Non... mais ils ne croient pas.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxix{Eh bien, qu'ils produisent un récit pareil à lui (le Coran), s'ils sont véridiques.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxx{Ont-ils été créé à partir de rien ou sont-ils eux les créateurs?\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxi{Ou ont-ils créé les cieux et la terre? Mais ils n'ont plutôt aucune conviction.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxii{Possèdent-ils les trésors de ton Seigneur? Ou sont-ils eux les maîtres souverains?\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxiii{Ont-ils une échelle d'où ils écoutent? Que celui des leurs qui reste à l'écoute apporte une preuve évidente!\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxiv{[Allah] aurait-Il les filles, tandis que vous, les fils?\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxv{Ou leur demandes-tu un salaire, de sorte qu'ils soient grevés d'une lourde dette?\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxvi{Ou bien détiennent-ils l'Inconnaissable pour le mentionner par écrit?\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxvii{Ou cherchent-ils un stratagème? Mais ce sont ceux qui ont mécru qui sont victimes de leur propre stratagème.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxviii{Ou ont-ils une autre divinité à part Allah? Qu'Allah soit glorifié et purifié de tout ce qu'ils associent!\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxix{Et s'ils voient tomber des fragments du ciel, ils disent: «Ce sont des nuages superposés».\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxx{Laisse-les donc, jusqu'à ce qu'ils rencontrent leur jour où ils seront foudroyés,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxi{le jour où leur ruse ne leur servira à rien, où ils ne seront pas secourus.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxii{Les injustes auront un châtiment préalable. Mais la plupart d'entre eux ne savent pas.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxiii{Et supporte patiemment la décision de ton Seigneur. Car en vérité, tu es sous Nos yeux. Et célèbre la gloire de ton Seigneur quand tu te lèves;\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxiv{Glorifie-Le une partie de la nuit et au déclin des étoiles.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxv{\basmalahfr Par l'étoile à son déclin!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxvi{Votre compagnon ne s'est pas égaré et n'a pas été induit en erreur\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxvii{et il ne prononce rien sous l'effet de la passion;\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxviii{ce n'est rien d'autre qu'une révélation inspirée.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdcclxxxix{Que lui a enseigné [l'Ange Gabriel] à la force prodigieuse,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxc{doué de sagacité; c'est alors qu'il se montra sous sa forme réelle [angélique],\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxci{alors qu'il se trouvait à l'horizon supérieur.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxcii{Puis il se rapprocha et descendit encore plus bas,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxciii{et fut à deux portées d'arc, ou plus près encore.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxciv{Il révéla à Son serviteur ce qu'Il révéla.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxcv{Le cœur n'a pas menti en ce qu'il a vu.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxcvi{Lui contestez-vous donc ce qu'il voit?\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxcvii{Il l'a pourtant vu, lors d'une autre descente,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxcviii{près de la Sidrat-ul-Muntahâ,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdccxcix{près d'elle se trouve le jardin de Ma'w?:\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdccc{au moment où le lotus était couvert de ce qui le couvrait.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdccci{la vue n'a nullement dévié ni outrepassé la mesure.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccii{Il a bien vu certaines des grandes merveilles de son Seigneur.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdccciii{Que vous en semble [des divinités], Lât et Uuzzâ\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmdccciv{ainsi que Manât, cette troisième autre?\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccv{Sera-ce à vous le garçon et à Lui la fille?\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccvi{Que voilà donc un partage injuste!\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccvii{Ce ne sont que des noms que vous avez inventés, vous et vos ancêtres. Allah n'a fait descendre aucune preuve à leur sujet. Ils ne suivent que la conjecture et les passions de [leurs] âmes, alors que la guidée leur est venue de leur Seigneur.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccviii{Ou bien l'homme aura-t-il tout ce qu'il désire?\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccix{A Allah appartiennent la vie future et la vie d'ici-bas.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccx{Et que d'Anges dans les cieux dont l'intercession ne sert à rien, sinon qu'après qu'Allah l'aura permis, en faveur de qui Il veut et qu'Il agrée.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxi{Ceux qui ne croient pas en l'au-delà donnent aux Anges des noms de femmes,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxii{alors qu'ils n'en ont aucune science: ils ne suivent que la conjecture, alors que la conjecture ne sert à rien contre la vérité.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxiii{Ecarte-toi donc, de celui qui tourne le dos à Notre rappel et qui ne désire que la vie présente.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxiv{Voilà toute la portée de leur savoir. Certes ton Seigneur connaît parfaitement celui qui s'égare de Son chemin et Il connaît parfaitement qui est bien guidé.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxv{A Allah appartient ce qui est dans les cieux et sur la terre afin qu'Il rétribue ceux qui font le mal selon ce qu'ils œuvrent, et récompense ceux qui font le bien par la meilleure [récompense],\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxvi{ceux qui évitent les plus grands péchés ainsi que les turpitudes et [qui ne commettent] que des fautes légères. Certes, le pardon de Ton Seigneur est immense. C'est Lui qui vous connaît le mieux quand Il vous a produits de terre, et aussi quand vous étiez des embryons dans les ventres de vos mères. Ne vantez pas vous-mêmes votre pureté; c'est Lui qui connaît mieux ceux qui [Le] craignent.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxvii{Vois-tu celui qui s'est détourné,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxviii{donné peu et a [finalement] cessé de donner?\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxix{Détient-il la science de l'Inconnaissable en sorte qu'il voit?\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxx{Ne lui a-t-on pas annoncé ce qu'il y avait dans les feuilles de Moïse\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxi{et celles d'Abraham qui a tenu parfaitement [sa promesse de transmettre]\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxii{qu'aucune [âme] ne portera le fardeau (le péché) d'autrui,\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxiii{et qu'en vérité, l'homme n'obtient que [le fruit] de ses efforts;\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxiv{et que son effort, en vérité, lui sera présenté (le jour du Jugement).\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxv{Ensuite il en sera récompensé pleinement,\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxvi{et que tout aboutit, en vérité, vers ton Seigneur,\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxvii{et que c'est Lui qui a fait rire et qui a fait pleurer,\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxviii{et que c'est Lui qui a fait mourir et qui a ramené à la vie,\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxix{et que c'est Lui qui a crée les deux éléments de couple, le mâle et la femelle,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxx{d'une goutte de sperme quand elle est éjaculée\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxi{et que la seconde création Lui incombe,\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxii{et c'est Lui qui a enrichi et qui a fait acquérir.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxiii{Et c'est Lui qui est le Seigneur de Sirius,\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxiv{et c'est Lui qui a fait périr les anciens 'Aad,\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxv{ainsi que les Thamûd, et Il fit que rien n'en subsistât,\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxvi{ainsi que le peuple de Noé antérieurement, car ils étaient encore plus injustes et plus violents,\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxvii{de même qu'Il anéantit les villes renversées.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxviii{Et les recouvrit de ce dont Il les recouvrit.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxxxix{Lequel donc des bienfaits de ton Seigneur mets-tu en doute?\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxl{Voici un avertisseur analogue aux avertisseurs anciens:\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxli{l'Imminente (L'heure du Jugement) s'approche.\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxlii{Rien d'autre en dehors d'Allah ne peut la dévoiler.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxliii{Quoi! vous étonnez-vous de ce discours (le Coran)?\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxliv{Et vous [en] riez et n'[en] pleurez point?\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxlv{absorbés [que vous êtes] par votre distraction.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxlvi{Prosternez-vous donc à Allah et adorez-Le.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxlvii{\basmalahfr L'Heure approche et la Lune s'est fendue.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxlviii{Et s'ils voient un prodige, ils s'en détournent et disent: «Une magie persistante».\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxlix{Et ils [le] traitent de mensonge et suivent leurs propres impulsions, or chaque chose arrivera à son terme [et son but].\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccl{Ils ont pourtant reçu comme nouvelles de quoi les empêcher (du mal);\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccli{[Cela est] une sagesse parfaite. Mais les avertissements ne [leur] servent à rien.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclii{Détourne-toi d'eux. Le jour où l'appeleur appellera vers une chose affreuse,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccliii{les regards baissés, ils sortiront des tombes comme des sauterelles éparpillées,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccliv{courant, le cou tendu, vers l'appeleur. Les mécréants diront: «Voilà un jour difficile».\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclv{Avant eux, le peuple de Noé avait crié au mensonge. Ils traitèrent Notre serviteur de menteur et dirent: «C'est un possédé!» et il fut repoussé.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclvi{Il invoqua donc son Seigneur: «Moi, je suis vaincu. Fais triompher (Ta cause)».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclvii{Nous ouvrîmes alors les portes du ciel à une eau torrentielle,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclviii{et fîmes jaillir la terre en sources. Les eaux se rencontrèrent d'après un ordre qui était déjà décrété dans une chose [faite].\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclix{Et Nous le portâmes sur un objet [fait] de planches et de clous [l'arche],\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclx{voguant sous Nos yeux: récompense pour celui qu'on avait renié [Noé].\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxi{Et Nous la laissâmes, comme un signe [d'avertissement]. Y a-t-il quelqu'un pour réfléchir?\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxii{Comment furent Mon châtiment et Mes avertissements?\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxiii{En effet, Nous avons rendu le Coran facile pour la méditation. Y a-t-il quelqu'un pour réfléchir?\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxiv{Les 'Aad ont traité de menteur (leur Messager). Comment furent Mon châtiment et Mes avertissements?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxv{Nous avons envoyé contre eux un vent violent et glacial, en un jour néfaste et interminable;\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxvi{il arrachait les gens comme des souches de palmiers déracinés.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxvii{Comment furent Mon châtiment et Mes avertissements?\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxviii{En effet, Nous avons rendu le Coran facile pour la méditation. Y a-t-il quelqu'un pour réfléchir?\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxix{Les Thamûd ont traité de mensonges les avertissements.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxx{Ils dirent: «Allons-nous suivre un seul homme (Sâlih) d'entre nous-mêmes? Nous serions alors dans l'égarement et la folie.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxi{Est-ce que le message a été envoyé à Lui à l'exception de nous tous? C'est plutôt un grand menteur, plein de prétention et d'orgueil».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxii{Demain, ils sauront qui est le grand menteur plein de prétention et d'orgueil.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxiii{Nous leur enverrons la chamelle, comme épreuve. Surveille-les donc et sois patient.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxiv{Et informe-les que l'eau sera en partage entre eux [et la chamelle]; chacun boira à son tour.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxv{Puis ils appelèrent leur camarade qui prit [son épée] et [la] tua.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxvi{Comment furent donc Mon châtiment et Mes avertissements?\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxvii{Nous lachâmes sur eux un seul Cri, et voilà qu'ils furent réduits à l'état de paille d'étable.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxviii{Et vraiment, Nous avons rendu le Coran facile pour la méditation. Y a-t-il quelqu'un pour réfléchir?\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxix{Le peuple de Lot traita de mensonges les avertissements.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxx{Nous lachâmes sur eux un ouragan, excepté la famille de Lot que Nous sauvâmes avant l'aube,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxi{à titre de bienfait de Notre part: ainsi récompensons-Nous celui qui est reconnaissant.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxii{Il les avait pourtant avertis de Nos représailles. Mais ils mirent les avertissements en doute.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxiii{En effet, ils voulaient séduire ses hôtes. Nous aveuglâmes leurs yeux «Goûtez donc Mon châtiment et Mes avertissements».\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxiv{En effet, au petit matin, un châtiment persistant les surprit.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxv{Goûtez donc Mon châtiment et Mes avertissements.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxvi{Et vraiment, Nous avons rendu le Coran facile pour la méditation. Y a-t-il quelqu'un pour réfléchir?\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxvii{Les avertissements vinrent certes, aux gens de Pharaon.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxviii{Ils traitèrent de mensonges tous Nos prodiges. Nous les saisîmes donc, de la saisie d'un Puissant Omnipotent.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmdccclxxxix{Vos mécréants sont-ils meilleurs que ceux-là? Ou bien y a-t-il dans les Ecritures une immunité pour vous?\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxc{Ou bien ils disent: «Nous formons un groupe [fort] et nous vaincrons».\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxci{Leur rassemblement sera bientôt mis en déroute, et ils fuiront.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxcii{L'Heure, plutôt, sera leur rendez-vous, et l'Heure sera plus terrible et plus amère.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxciii{Les criminels sont certes, dans l'égarement et la folie.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxciv{Le jour où on les traînera dans le Feu sur leurs visages, (on leur dira): «Goûtez au contact de Saqar [la chaleur brûlante de l'Enfer]».\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxcv{Nous avons créé toute chose avec mesure,\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxcvi{et Notre ordre est une seule [parole]; [il est prompt] comme un clin d'œil.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxcvii{En effet, nous avons fait périr des peuples semblables à vous. Y a-t-il quelqu'un pour s'en souvenir?\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxcviii{Et tout ce qu'ils ont fait est mentionné dans les registres,\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmdcccxcix{et tout fait, petit et grand, est consigné.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmcm{Les pieux seront dans des Jardins et parmi des ruisseaux,\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmcmi{dans un séjour de vérité, auprès d'un Souverain Omnipotent.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmcmii{\basmalahfr Le Tout Miséricordieux.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmcmiii{Il a enseigné le Coran.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmcmiv{Il a créé l'homme.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmcmv{Il lui a appris à s'exprimer clairement.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmcmvi{Le soleil et la lune [évoluent] selon un calcul [minutieux].\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmcmvii{Et l'herbe et les arbres se prosternent.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmcmviii{Et quant au ciel, Il l'a élevé bien haut. Et Il a établi la balance,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmcmix{afin que vous ne transgressiez pas dans la pesée:\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmcmx{Donnez [toujours] le poids exact et ne faussez pas la pesée.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxi{Quant à la terre, Il l'a étendue pour les êtres vivants:\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxii{il s'y trouve des fruits, et aussi les palmiers aux fruits recouverts d'enveloppes,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxiii{tout comme les grains dans leurs balles, et les plantes aromatiques.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxiv{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxv{Il a crée l'homme d'argile sonnante comme la poterie;\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxvi{et Il a créé les djinns de la flamme d'un feu sans fumée.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxvii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxviii{Seigneur des deux Levants et Seigneur des deux Couchants!\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxix{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxx{Il a donné libre cours aux deux mers pour se rencontrer;\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxi{il y a entre elles une barrière qu'elles ne dépassent pas.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxiii{De ces deux [mers] sortent la perle et le corail.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxiv{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxv{A Lui appartiennent les vaisseaux élevés sur la mer comme des montagnes.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxvi{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxvii{Tout ce qui est sur elle [la terre] doit disparaître,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxviii{[Seule] subsistera La Face [Wajh] de ton Seigneur, plein de majesté et de noblesse.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxix{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxx{Ceux qui sont dans les cieux et la terre L'implorent. Chaque jour, Il accomplit une œuvre nouvelle.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxi{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxii{Nous allons bientôt entreprendre votre jugement, ô vous les deux charges [hommes et djinns].\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxiii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxiv{O peuple de djinns et d'hommes! Si vous pouvez sortir du domaine des cieux et de la terre, alors faites-le. Mais vous ne pourrez en sortir qu'à l'aide d'un pouvoir [illimité].\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxv{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxvi{Il sera lancé contre vous un jet de feu et de fumée [ou de cuivre fondu], et vous ne serez pas secourus.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxvii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxviii{Puis quand le ciel se fendra et deviendra alors écarlate comme le cuir rouge.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxxxix{Lequel des bienfaits de votre Seigneur nierez-vous?\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxl{Alors, ni aux hommes ni aux djinns, on ne posera des questions à propos de leurs péchés.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxli{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxlii{On reconnaîtra les criminels à leurs traits. Ils seront donc saisis par les toupets et les pieds.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxliii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxliv{Voilà l'Enfer que les criminels traitaient de mensonge.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxlv{Ils feront le va-et-vient entre lui (l'Enfer) et une eau bouillante extrêmement chaude.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxlvi{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxlvii{Et pour celui qui aura craint de comparaître devant son Seigneur, il y aura deux jardins;\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxlviii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxlix{Aux branches touffues.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmcml{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmcmli{Ils y trouveront deux sources courantes.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmcmliii{Ils contiennent deux espèces de chaque fruit.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmcmliv{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlv{Ils seront accoudés sur des tapis doublés de brocart, et les fruits des deux jardins seront à leur portée (pour être cueillis).\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlvi{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlvii{Ils y trouveront [les houris] aux regards chastes, qu'avant eux aucun homme ou djinn n'aura déflorées.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlviii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlix{Elles seront [aussi belles] que le rubis et le corail.\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlx{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxi{Y a-t-il d'autre récompense pour le bien, que le bien?\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxiii{En deçà de ces deux jardins il y aura deux autres jardins.\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxiv{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxv{Ils sont d'un vert sombre.\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxvi{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxvii{Dans lesquelles il y aura deux sources jaillissantes.\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxviii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxix{Ils contiennent des fruits, des palmiers, et des grenadiers.\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxx{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxi{Là, il y aura des vertueuses et des belles.\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxiii{Des houris cloîtrées dans les tentes,\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxiv{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxv{qu'avant eux aucun homme ou djinn n'a déflorées.\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxvi{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxvii{Ils seront accoudés sur des coussins verts et des tapis épais et jolis.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxviii{Lequel donc des bienfaits de votre Seigneur nierez-vous?\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxix{Béni soit le Nom de ton Seigneur, Plein de Majesté et de Munificence!\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxx{\basmalahfr Quand l'événement (le Jugement) arrivera,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxi{nul ne traitera sa venue de mensonge.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxii{Il abaissera (les uns), il élèvera (les autres).\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxiii{Quand la terre sera secouée violemment,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxiv{et les montagnes seront réduites en miettes,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxv{et qu'elles deviendront poussière éparpillée\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxvi{alors vous serez trois catégories:\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxvii{les gens de la droite - que sont les gens de la droite?\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxviii{Et les gens de la gauche - que sont les gens de la gauche?\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmcmlxxxix{Les premiers (à suivre les ordres d'Allah sur la terre) ce sont eux qui seront les premiers (dans l'au-delà)\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxc{Ce sont ceux-là les plus rapprochés d'Allah\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxci{dans les Jardins des délices,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxcii{une multitude d'élus parmi les premières [générations],\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxciii{et un petit nombre parmi les dernières [générations],\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxciv{sur des lits ornés [d'or et de pierreries],\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxcv{s'y accoudant et se faisant face.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxcvi{Parmi eux circuleront des garçons éternellement jeunes,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxcvii{avec des coupes, des aiguières et un verre [rempli] d'une liqueur de source\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxcviii{qui ne leur provoquera ni maux de tête ni étourdissement;\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmcmxcix{et des fruits de leur choix,\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmm{et toute chair d'oiseau qu'ils désireront.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmi{Et ils auront des houris aux yeux, grands et beaux,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmii{pareilles à des perles en coquille\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmiii{en récompense pour ce qu'ils faisaient.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmiv{Ils n'y entendront ni futilité ni blasphème;\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmv{mais seulement les propos: «Salâm! Salâm!»... [Paix! Paix!]\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmvi{Et les gens de la droite; que sont les gens de la droite?\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmvii{[Ils seront parmi] des jujubiers sans épines,\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmviii{et parmi des bananiers aux régimes bien fournis,\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmix{dans une ombre étendue\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmx{[près] d'une eau coulant continuellement,\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmxi{et des fruits abondants\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmxii{ni interrompus ni défendus,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmxiii{sur des lits surélevés,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmxiv{C'est Nous qui les avons créées à la perfection,\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmxv{et Nous les avons faites vierges,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmxvi{gracieuses, toutes de même âge,\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmxvii{pour les gens de la droite,\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmxviii{une multitude d'élus parmi les premières [générations],\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmxix{et une multitude d'élus parmi les dernières [générations].\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmxx{Et les gens de la gauche; que sont les gens de la gauche?\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxi{ils seront au milieu d'un souffle brûlant et d'une eau bouillante,\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxii{à l'ombre d'une fumée noire\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxiii{ni fraîche, ni douce.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxiv{Ils vivaient auparavant dans le luxe.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxv{Ils persistaient dans le grand péché [le polythéisme]\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxvi{et disaient: «Quand nous mourrons et serons poussière et ossements, serons-nous ressuscités?\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxvii{ainsi que nos anciens ancêtres?..»\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxviii{Dis: «En vérité les premiers et les derniers\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxix{seront réunis pour le rendez-vous d'un jour connu».\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxx{Et puis, vous, les égarés, qui traitiez (la Résurrection) de mensonge,\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxi{vous mangerez certainement d'un arbre de Zaqqûm.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxii{vous vous en remplirez le ventre,\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxiii{puis vous boirez par-dessus cela de l'eau bouillante,\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxiv{vous en boirez comme boivent les chameaux assoiffés.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxv{Voilà le repas d'accueil qui leur sera servi, au jour de la Rétribution.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxvi{C'est Nous qui vous avons créés. Pourquoi ne croiriez-vous donc pas [à la résurrection]?\qt@no{(57)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxvii{Voyez-vous donc ce que vous éjaculez:\qt@no{(58)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxviii{est-ce vous qui le créez ou [en] sommes Nous le Créateur?\qt@no{(59)}}
+\qt@newcmd\qurantrans@fr@mmmmmxxxix{Nous avons prédéterminé la mort parmi vous. Nous ne serons point empêchés\qt@no{(60)}}
+\qt@newcmd\qurantrans@fr@mmmmmxl{de vous remplacer par vos semblables, et vous faire renaître dans [un état] que vous ne savez pas.\qt@no{(61)}}
+\qt@newcmd\qurantrans@fr@mmmmmxli{Vous avez connu la première création. Ne vous rappelez-vous donc pas?\qt@no{(62)}}
+\qt@newcmd\qurantrans@fr@mmmmmxlii{Voyez-vous donc ce que vous labourez?\qt@no{(63)}}
+\qt@newcmd\qurantrans@fr@mmmmmxliii{Est-ce vous qui le cultivez? ou [en] sommes Nous le cultivateur?\qt@no{(64)}}
+\qt@newcmd\qurantrans@fr@mmmmmxliv{Si Nous voulions, Nous le réduirions en débris. Et vous ne cesseriez pas de vous étonner et [de crier]:\qt@no{(65)}}
+\qt@newcmd\qurantrans@fr@mmmmmxlv{«Nous voilà endettés!\qt@no{(66)}}
+\qt@newcmd\qurantrans@fr@mmmmmxlvi{ou plutôt, exposés aux privations».\qt@no{(67)}}
+\qt@newcmd\qurantrans@fr@mmmmmxlvii{Voyez-vous donc l'eau que vous buvez?\qt@no{(68)}}
+\qt@newcmd\qurantrans@fr@mmmmmxlviii{Est-ce vous qui l'avez fait descendre du nuage? ou [en] sommes Nous le descendeur?\qt@no{(69)}}
+\qt@newcmd\qurantrans@fr@mmmmmxlix{Si Nous voulions, Nous la rendrions salée. Pourquoi n'êtes-vous donc pas reconnaissants?\qt@no{(70)}}
+\qt@newcmd\qurantrans@fr@mmmmml{Voyez-vous donc le feu que vous obtenez par frottement?\qt@no{(71)}}
+\qt@newcmd\qurantrans@fr@mmmmmli{Est-ce vous qui avez créé son arbre ou [en] sommes Nous le Créateur?\qt@no{(72)}}
+\qt@newcmd\qurantrans@fr@mmmmmlii{Nous en avons fait un rappel (de l'Enfer), et un élément utile pour ceux qui en ont besoin.\qt@no{(73)}}
+\qt@newcmd\qurantrans@fr@mmmmmliii{Glorifie donc le nom de ton Seigneur, le Très Grand!\qt@no{(74)}}
+\qt@newcmd\qurantrans@fr@mmmmmliv{Non!.. Je jure par les positions des étoiles (dans le firmament).\qt@no{(75)}}
+\qt@newcmd\qurantrans@fr@mmmmmlv{Et c'est vraiment un serment solennel, si vous saviez.\qt@no{(76)}}
+\qt@newcmd\qurantrans@fr@mmmmmlvi{Et c'est certainement un Coran noble,\qt@no{(77)}}
+\qt@newcmd\qurantrans@fr@mmmmmlvii{dans un Livre bien gardé\qt@no{(78)}}
+\qt@newcmd\qurantrans@fr@mmmmmlviii{que seuls les purifiés touchent;\qt@no{(79)}}
+\qt@newcmd\qurantrans@fr@mmmmmlix{C'est une révélation de la part du Seigneur de l'Univers.\qt@no{(80)}}
+\qt@newcmd\qurantrans@fr@mmmmmlx{Est-ce ce discours-là que vous traitez de mensonge?\qt@no{(81)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxi{Et est-ce pour vous [une façon d'être reconnaissant] à votre subsistance que de traiter (le Coran) de mensonge?\qt@no{(82)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxii{Lorsque le souffle de la vie remonte à la gorge (d'un moribond),\qt@no{(83)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxiii{et qu'à ce moment là vous regardez,\qt@no{(84)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxiv{et que Nous sommes plus proche de lui que vous [qui l'entourez] mais vous ne [le] voyez point.\qt@no{(85)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxv{Pourquoi donc, si vous croyez que vous n'avez pas de compte à rendre,\qt@no{(86)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxvi{ne la faites-vous pas revenir [cette âme], si vous êtes véridiques?\qt@no{(87)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxvii{Si celui-ci est du nombre des rapprochés (d'Allah),\qt@no{(88)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxviii{alors (il aura) du repos, de la grâce et un Jardin de délices.\qt@no{(89)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxix{Et s'il est du nombre des gens de la droite,\qt@no{(90)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxx{il sera [accueilli par ces mots]: «Paix à toi» de la part des gens de la droite.\qt@no{(91)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxi{Et s'il est de ceux qui avaient traité de mensonge (la résurrection) et s'étaient égarés,\qt@no{(92)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxii{alors, il sera installé dans une eau bouillante,\qt@no{(93)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxiii{et il brûlera dans la Fournaise.\qt@no{(94)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxiv{C'est cela la pleine certitude.\qt@no{(95)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxv{Glorifie donc le nom de ton Seigneur, le Très Grand!\qt@no{(96)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxvi{\basmalahfr Tout ce qui est dans les cieux et la terre glorifie Allah. Et c'est Lui le Puissant, le Sage.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxvii{A Lui appartient la souveraineté des cieux et de la terre. Il fait vivre et il fait mourir, et Il est Omnipotent.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxviii{C'est Lui le Premier et le Dernier, l'Apparent et le Caché et Il est Omniscient.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxix{C'est Lui qui a créé les cieux et la terre en six jours puis Il S'est établi sur le Trône; Il sait ce qui pénètre dans la terre et ce qui en sort, et ce qui descend du ciel et ce qui y monte, et Il est avec vous où que vous soyez. Et Allah observe parfaitement ce que vous faites.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxx{A Lui appartient la souveraineté des cieux et de la terre. Et à Allah tout est ramené.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxi{Il fait pénétrer la nuit dans le jour et fait pénétrer le jour dans la nuit, et Il sait parfaitement le contenu des poitrines.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxii{Croyez en Allah et en Son Messager, et dépensez de ce dont Il vous a donné la lieutenance. Ceux d'entre vous qui croient et dépensent [pour la cause d'Allah] auront une grande récompense.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxiii{Et qu'avez-vous à ne pas croire en Allah, alors que le Messager vous appelle à croire en votre Seigneur? Et [Allah] a déjà pris [acte] de votre engagement si vous êtes [sincères] dans votre foi.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxiv{C'est Lui qui fait descendre sur Son serviteur des versets clairs, afin qu'il vous fasse sortir des ténèbres à la lumière; et assurément Allah est Compatissant envers vous, et Très Miséricordieux.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxv{Et qu'avez-vous à ne pas dépenser dans le chemin d'Allah, alors que c'est à Allah que revient l'héritage des cieux et de la terre? On ne peut comparer cependant celui d'entre vous qui a donné ses biens et combattu avant la conquête... ces derniers sont plus hauts en hiérarchie que ceux qui ont dépensé et ont combattu après. Or, à chacun, Allah a promis la plus belle récompense, et Allah est Grand Connaisseur de ce que vous faites.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxvi{Quiconque fait à Allah un prêt sincère, Allah le lui multiplie, et il aura une généreuse récompense.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxvii{Le jour où tu verras les croyants et les croyantes, leur lumière courant devant eux et à leur droite; (on leur dira): «Voici une bonne nouvelle pour vous, aujourd'hui: des Jardins sous lesquels coulent les ruisseaux pour y demeurer éternellement». Tel est l'énorme succès.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxviii{Le jour où les hypocrites, hommes et femmes, diront à ceux qui croient: «Attendez que nous empruntions [un peu] de votre lumière». Il sera dit: «Revenez en arrière, et cherchez de la lumière». C'est alors qu'on éleva entre eux une muraille ayant une porte dont l'intérieur contient la miséricorde, et dont la face apparente a devant elle le châtiment [l'Enfer].\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmlxxxix{«N'étions-nous pas avec vous?» leur crieront-ils. «Oui, répondront [les autres] mais vous vous êtes laissés tenter, vous avez comploté (contre les croyants) et vous avez douté et de vains espoirs vous ont trompés, jusqu'à ce que vînt l'ordre d'Allah. Et le séducteur [le diable] vous a trompés au sujet d'Allah.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmxc{Aujourd'hui donc, on n'acceptera de rançon ni de vous ni de ceux qui ont mécru. Votre asile est le Feu: c'est lui qui est votre compagnon inséparable. Et quelle mauvaise destination!\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmxci{Le moment n'est-il pas venu pour ceux qui ont cru, que leurs cœurs s'humilient à l'évocation d'Allah et devant ce qui est descendu de la vérité [le Coran]? Et de ne point être pareils à ceux qui ont reçu le Livre avant eux. Ceux-ci trouvèrent le temps assez long et leurs cœurs s'endurcirent, et beaucoup d'entre eux sont pervers.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmxcii{Sachez qu'Allah redonne la vie à la terre une fois morte. Certes, Nous vous avons exposé les preuves clairement afin que vous raisonniez.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmxciii{Ceux et celles qui font la charité et qui ont fait à Allah un prêt sincère, cela leur sera multiplié et ils auront une généreuse récompense.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmxciv{Ceux qui ont cru en Allah et en Ses messagers ceux-là sont les grands véridiques et les témoins auprès d'Allah. Ils auront leur récompense et leur lumière, tandis que ceux qui ont mécru et traité de mensonges Nos signes, ceux-là seront les gens de la Fournaise.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmxcv{Sachez que la vie présente n'est que jeu, amusement, vaine parure, une course à l'orgueil entre vous et une rivalité dans l'acquisition des richesses et des enfants. Elle est en cela pareille à une pluie: la végétation qui en vient émerveille les cultivateurs, puis elle se fane et tu la vois donc jaunie; ensuite elle devient des débris. Et dans l'au-delà, il y a un dur châtiment, et aussi pardon et agrément d'Allah. Et la vie présente n'est que jouissance trompeuse.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmxcvi{Hâtez-vous vers un pardon de votre Seigneur ainsi qu'un Paradis aussi large que le ciel et la terre, préparé pour ceux qui ont cru en Allah et en Ses Messagers. Telle est la grâce d'Allah qu'Il donne à qui Il veut. Et Allah est le Détenteur de l'énorme grâce.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmxcvii{Nul malheur n'atteint la terre ni vos personnes, qui ne soit enregistré dans un Livre avant que Nous ne l'ayons créé; et cela est certes facile à Allah,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmxcviii{afin que vous ne vous tourmentiez pas au sujet de ce qui vous a échappé, ni n'exultiez pour ce qu'Il vous a donné. Et Allah n'aime point tout présomptueux plein de gloriole.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmxcix{Ceux qui sont avares et ordonnent aux gens l'avarice. Et quiconque se détourne... Allah Se suffit alors à Lui-même et Il est Digne de louange.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmc{Nous avons effectivement envoyé Nos Messagers avec des preuves évidentes, et fait descendre avec eux le Livre et la balance, afin que les gens établissent la justice. Et Nous avons fait descendre le fer, dans lequel il y a une force redoutable, aussi bien que des utilités pour les gens, et pour qu'Allah reconnaisse qui, dans l'Invisible, défendra Sa cause et celle de Ses Messagers. Certes, Allah est Fort et Puissant.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmci{Nous avons effectivement envoyé Noé et Abraham et accordé à leur descendance la prophétie et le Livre. Certains d'entre eux furent bien-guidés, tandis que beaucoup d'entre eux furent pervers.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmcii{Ensuite, sur leurs traces, Nous avons fait suivre Nos [autres] messagers, et Nous les avons fait suivre de Jésus fils de Marie et lui avons apporté l'Evangile, et mis dans les cœurs de ceux qui le suivirent douceur et mansuétude. Le monachisme qu'ils inventèrent, Nous ne le leur avons nullement prescrit. [Ils devaient] seulement rechercher l'agrément d'Allah. Mais ils ne l'observèrent pas (ce monachisme) comme il se devait. Nous avons donné leur récompense à ceux d'entre eux qui crurent. Mais beaucoup d'entre eux furent des pervers.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmciii{O Vous qui avez cru! Craignez Allah et croyez en Son messager pour qu'Il vous accorde deux parts de Sa miséricorde, et qu'Il vous assigne une lumière à l'aide de laquelle vous marcherez, et qu'Il vous pardonne, car Allah est Pardonneur et Très Miséricordieux.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmciv{Cela afin que les gens du Livre sachent qu'ils ne peuvent en rien disposer de la grâce d'Allah et que la grâce est dans la main d'Allah. Il la donne à qui Il veut, et Allah est le Détenteur de la grâce immense.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmcv{\basmalahfr Allah a bien entendu la parole de celle qui discutait avec toi à propos de son époux et se plaignait à Allah. Et Allah entendait votre conversation, car Allah est Audient et Clairvoyant.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcvi{Ceux d'entre vous qui répudient leurs femmes, en déclarant qu'elles sont pour eux comme le dos de leurs mères. alors qu'elles ne sont nullement leurs mères, car ils n'ont pour mères que celles qui les ont enfantés. Ils prononcent certes une parole blâmable et mensongère. Allah cependant est Indulgent et Pardonneur.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcvii{Ceux qui comparent leurs femmes au dos de leurs mères puis reviennent sur ce qu'ils ont dit, doivent affranchir un esclave avant d'avoir aucun contact [conjugal] avec leur femme. C'est ce dont on vous exhorte. Et Allah est Parfaitement Connaisseur de ce que vous faites\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcviii{Mais celui qui n'en trouve pas les moyens doit jeûner alors deux mois consécutifs avant d'avoir aucun contact [conjugal] avec sa femme. Mais s'il ne peut le faire non plus, alors qu'il nourrisse soixante pauvres. Cela, pour que vous croyiez en Allah et en Son messager. Voilà les limites imposées par Allah. Et les mécréants auront un châtiment douloureux.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcix{Ceux qui s'opposent à Allah et à Son messager seront culbutés comme furent culbutés leurs devanciers. Nous avons déjà fait descendre des preuves explicites, et les mécréants auront un châtiment avilissant,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcx{le jour où Allah les ressuscitera tous, puis les informera de ce qu'ils ont fait Allah l'a dénombré et ils l'auront oublié. Allah est témoin de toute chose.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxi{Ne vois-tu pas qu'Allah sait ce qui est dans les cieux et sur la terre? Pas de conversation secrète entre trois sans qu'Il ne soit leur quatrième, ni entre cinq sans qu'Il n'y ne soit leur sixième, ni moins ni plus que cela sans qu'Il ne soit avec eux, là où ils se trouvent. Ensuite, Il les informera au Jour de la Résurrection, de ce qu'ils faisaient, car Allah est Omniscient.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxii{Ne vois-tu pas ceux à qui les conversations secrètes ont été interdites? Puis, ils retournent à ce qui leur a été interdit, et se concertent pour pécher, transgresser et désobéir au Messager. Et quand ils viennent à toi, ils te saluent d'une façon dont Allah ne t'a pas salué, et disent en eux-mêmes: «Pourquoi Allah ne nous châtie pas pour ce que nous disons?» L'Enfer leur suffira, où ils brûleront. Et quelle mauvaise destination!\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxiii{O vous qui avez cru! Quand vous tenez des conversations secrètes, ne vous concertez pas pour pécher, transgresser et désobéir au Messager, mais concertez-vous dans la bonté et la piété. Et craignez Allah vers qui vous serez rassemblés.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxiv{La conversation secrète n'est que [l'œuvre] du Diable pour attrister ceux qui ont cru. Mais il ne peut leur nuire en rien sans la permission d'Allah. Et c'est en Allah que les croyants doivent placer leur confiance.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxv{O vous qui avez cru! Quand on vous dit: «Faites place [aux autres] dans les assemblées», alors faites place. Allah vous ménagera une place (au Paradis). Et quand on vous dit de vous lever, levez-vous. Allah élèvera en degrés ceux d'entre vous qui auront cru et ceux qui auront reçu le savoir. Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxvi{O vous qui avez cru! Quand vous avez un entretien confidentiel avec le Messager, faites précéder d'une aumône votre entretien: cela est meilleur pour vous et plus pur. Mais si vous n'en trouvez pas les moyens alors Allah est Pardonneur et très Miséricordieux!\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxvii{Appréhendez-vous de faire précéder d'aumônes votre entretien? Mais, si vous ne l'avez pas fait et qu'Allah a accueilli votre repentir, alors accomplissez la Salât, acquittez la Zakât, et obéissez à Allah et à Son messager. Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxviii{N'as-tu pas vu ceux qui ont pris pour alliés des gens contre qui Allah S'est courroucé? Ils ne sont ni des vôtres, ni des leurs; et ils jurent mensongèrement, alors qu'ils savent.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxix{Allah leur a préparé un dur châtiment. Ce qu'ils faisaient alors était très mauvais.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxx{Prenant leurs serments comme boucliers, ils obstruent le chemin d'Allah. Ils auront donc un châtiment avilissant.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxi{Ni leurs biens, ni leurs enfants ne leur seront d'aucune utilité contre la [punition] d'Allah. Ce sont les gens du Feu où ils demeureront éternellement.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxii{Le jour où Allah les ressuscitera tous, ils Lui jureront alors comme ils vous jurent à vous-mêmes, pensant s'appuyer sur quelque chose de solide. Mais ce sont eux les menteurs.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxiii{Le Diable les a dominés et leur a fait oublier le rappel d'Allah. Ceux-là sont le parti du Diable et c'est le parti du Diable qui sont assurément les perdants.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxiv{Ceux qui s'opposent à Allah et à Son messager seront parmi les plus humiliés.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxv{Allah a prescrit: «Assurément, Je triompherai, Moi ainsi que Mes Messagers». En vérité Allah est Fort et Puissant.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxvi{Tu n'en trouveras pas, parmi les gens qui croient en Allah et au Jour dernier, qui prennent pour amis ceux qui s'opposent à Allah et à Son Messager, fussent-ils leurs pères, leurs fils, leurs frères ou les gens de leur tribu. Il a prescrit la foi dans leurs cœurs et Il les a aidés de Son secours. Il les fera entrer dans des Jardins sous lesquels coulent les ruisseaux, où ils demeureront éternellement. Allah les agrée et ils L'agréent. Ceux-là sont le parti d'Allah. Le parti d'Allah est celui de ceux qui réussissent.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxvii{\basmalahfr Ce qui est dans les cieux et ce qui est sur la terre glorifient Allah, et Il est le Puissant, le Sage.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxviii{C'est Lui qui a expulsé de leurs maisons, ceux parmi les gens du Livre qui ne croyaient pas, lors du premier exode. Vous ne pensiez pas qu'ils partiraient, et ils pensaient qu'en vérité leurs forteresses les défendraient contre Allah. Mais Allah est venu à eux par où ils ne s'attendaient point, et a lancé la terreur dans leurs cœurs. Ils démolissaient leurs maisons de leurs propres mains, autant que des mains des croyants. Tirez-en une leçon, ô vous qui êtes doués de clairvoyance.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxix{Et si Allah n'avait pas prescrit contre eux l'expatriation, Il les aurait certainement châtiés ici-bas; et dans l'au-delà ils auront le châtiment du feu.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxx{Il en est ainsi parce qu'ils se sont dressés contre Allah et Son messager. Et quiconque se dresse contre Allah... alors, vraiment Allah est dur en punition.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxi{Tout palmier que vous avez coupé ou que vous avez laissé debout sur ses racines, c'est avec la permission d'Allah et afin qu'Il couvre ainsi d'ignominie les pervers.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxii{Le butin provenant de leurs biens et qu'Allah a accordé sans combat à Son Messager, vous n'y aviez engagé ni chevaux, ni chameaux; mais Allah, donne à Ses messagers la domination sur qui Il veut et Allah est Omnipotent.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxiii{Le butin provenant [des biens] des habitants des cités, qu'Allah a accordé sans combat à Son Messager, appartient à Allah, au Messager, aux proches parents, aux orphelins, aux pauvres et au voyageur en détresse, afin que cela ne circule pas parmi les seuls riches d'entre vous. Prenez ce que le Messager vous donne; et ce qu'il vous interdit, abstenez-vous en; et craignez Allah car Allah est dur en punition.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxiv{[Il appartient aussi] aux émigrés besogneux qui ont été expulsés de leurs demeures et de leurs biens, tandis qu'ils recherchaient une grâce et un agrément d'Allah, et qu'ils portaient secours à (la cause d') Allah et à Son Messager. Ceux-là sont les véridiques.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxv{Il [appartient également] à ceux qui, avant eux, se sont installés dans le pays et dans la foi, qui aiment ceux qui émigrent vers eux, et ne ressentent dans leurs cœurs aucune envie pour ce que [ces immigrés] ont reçu, et qui [les] préfèrent à eux-mêmes, même s'il y a pénurie chez eux. Quiconque se prémunit contre sa propre avarice, ceux-là sont ceux qui réussissent.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxvi{Et [il appartient également] à ceux qui sont venus après eux en disant: «Seigneur, pardonne-nous, ainsi qu'à nos frères qui nous ont précédés dans la foi; et ne mets dans nos cœurs aucune rancœur pour ceux qui ont cru. Seigneur, Tu es Compatissant et Très Miséricordieux».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxvii{N'as-tu pas vu les hypocrites disant à leurs confrères qui ont mécru parmi les gens du Livre: «Si vous êtes chassés, nous partirons certes avec vous et nous n'obéirons jamais à personne contre vous; et si vous êtes attaqués, nous vous secourrons certes». Et Allah atteste qu'en vérité ils sont des menteurs.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxviii{S'ils sont chassés, ils ne partiront pas avec eux; et s'ils sont attaqués, ils ne les secourront pas; et même s'ils allaient à leur secours, ils tourneraient sûrement le dos; puis ils ne seront point secourus.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxxxix{Vous jetez dans leurs cœurs plus de terreur qu'Allah. C'est qu'ils sont des gens qui ne comprennent pas.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxl{Tous ne vous combattront que retranchés dans des cités fortifiées ou de derrière des murailles. Leurs dissensions internes sont extrêmes. Tu les croirait unis, alors que leurs cœurs sont divisés. C'est qu'ils sont des gens qui ne raisonnent pas.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxli{Ils sont semblables à ceux qui, peu de temps avant eux, ont goûté la conséquence de leur comportement et ils auront un châtiment douloureux;\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxlii{ils sont semblables au Diable quand il dit à l'homme: «Sois incrédule». Puis quand il a mécru, il dit: «Je te désavoue car je redoute Allah, le Seigneur de l'Univers».\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxliii{Ils eurent pour destinée d'être tous deux dans le Feu pour y demeurer éternellement. Telle est la rétribution des injustes.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxliv{O vous qui avez cru! Craignez Allah. Que chaque âme voit bien ce qu'elle a avancé pour demain. Et craignez Allah, car Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxlv{Et ne soyez pas comme ceux qui ont oublié Allah; [Allah] leur a fait alors oublier leurs propres personnes; ceux-là sont les pervers.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxlvi{Ne seront pas égaux les gens du Feu et les gens du Paradis. Les gens du Paradis sont eux les gagnants.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxlvii{Si Nous avions fait descendre ce Coran sur une montagne, tu l'aurais vu s'humilier et se fendre par crainte d'Allah. Et ces paraboles Nous les citons aux gens afin qu'ils réfléchissent.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxlviii{C'est Lui Allah. Nulle divinité autre que Lui, le Connaisseur de l'Invisible tout comme du visible. C'est Lui, le Tout Miséricordieux, le Très Miséricordieux.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxlix{C'est Lui, Allah. Nulle divinité autre que Lui; Le Souverain, Le Pur, L'Apaisant, Le Rassurant, Le Prédominant, Le Tout Puissant, Le Contraignant, L'Orgueilleux. Gloire à Allah! Il transcende ce qu'ils Lui associent.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmcl{C'est Lui Allah, le Créateur, Celui qui donne un commencement à toute chose, le Formateur. A Lui les plus beaux noms. Tout ce qui est dans les cieux et la terre Le glorifie. Et c'est Lui le Puissant, le Sage.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmcli{\basmalahfr O vous qui avez cru! Ne prenez pas pour alliés Mon ennemi et le vôtre, leur offrant l'amitié, alors qu'ils ont nié ce qui vous est parvenu de la vérité. Ils expulsent le Messager et vous-mêmes parce que vous croyez en Allah, votre Seigneur. Si vous êtes sortis pour lutter dans Mon chemin et pour rechercher Mon agrément, leur témoignerez-vous secrètement de l'amitié, alors que Je connais parfaitement ce que vous cachez et ce que vous divulguez? Et quiconque d'entre vous le fait s'égare de la droiture du sentier.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmclii{S'ils vous dominent, ils seront des ennemis pour vous et étendront en mal leurs mains et leurs langues vers vous; et ils aimeraient que vous deveniez mécréants.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcliii{Ni vos proches parents ni vos enfants ne vous seront d'aucune utilité le Jour de la Résurrection, Il [Allah] décidera entre vous, et Allah est Clairvoyant sur ce que vous faites.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcliv{Certes, vous avez eu un bel exemple [à suivre] en Abraham et en ceux qui étaient avec lui, quand ils dirent à leur peuple: «Nous vous désavouons, vous et ce que vous adorez en dehors d'Allah. Nous vous renions. Entre vous et nous, l'inimitié et la haine sont à jamais déclarées jusqu'à ce que vous croyiez en Allah, seul». Exception faite de la parole d'Abraham [adressée] à son père: «J'implorerai certes, le pardon [d'Allah] en ta faveur bien que je ne puisse rien pour toi auprès d'Allah». «Seigneur, c'est en Toi que nous mettons notre confiance et à Toi nous revenons [repentants]. Et vers Toi est le Devenir.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmclv{Seigneur, ne fais pas de nous [un sujet] de tentation pour ceux qui ont mécru; et pardonne-nous, Seigneur, car c'est Toi le Puissant, le Sage».\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmclvi{Vous avez certes eu en eux un bel exemple [à suivre], pour celui qui espère en Allah et en le Jour dernier; mais quiconque se détourne... alors Allah Se suffit à Lui-même et est Digne de louange.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmclvii{Il se peut qu'Allah établisse de l'amitié entre vous et ceux d'entre eux dont vous avez été les ennemis. Et Allah est Omnipotent et Allah est Pardonneur et Très Miséricordieux.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmclviii{Allah ne vous défend pas d'être bienfaisants et équitables envers ceux qui ne vous ont pas combattus pour la religion et ne vous ont pas chassés de vos demeures. Car Allah aime les équitables.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmclix{Allah vous défend seulement de prendre pour alliés ceux qui vous ont combattus pour la religion, chassés de vos demeures et ont aidé à votre expulsion. Et ceux qui les prennent pour alliés sont les injustes.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmclx{O vous qui avez cru! Quand les croyantes viennent à vous en émigrées, éprouvez-les; Allah connaît mieux leur foi; si vous constatez qu'elles sont croyantes, ne les renvoyez pas aux mécréants. Elles ne sont pas licites [en tant qu'épouses] pour eux, et eux non plus ne sont pas licites [en tant qu'époux] pour elles. Et rendez-leur ce qu'ils ont dépensé (comme mahr). Il ne vous sera fait aucun grief en vous mariant avec elles quand vous leur aurez donné leur mahr. Et ne gardez pas de liens conjugaux avec les mécréantes. Réclamez ce que vous avez dépensé et que (les mécréants) aussi réclament ce qu'ils ont dépensé. Tel est le jugement d'Allah par lequel Il juge entre vous, et Allah est Omniscient et Sage.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxi{Et si quelqu'une de vos épouses s'échappe vers les mécréants, et que vous fassiez des représailles, restituez à ceux dont les épouses sont parties autant que ce qu'ils avaient dépensé. Craignez Allah en qui vous croyez.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxii{O Prophète! Quand les croyantes viennent te prêter serment d'allégeance, [et en jurent] qu'elles n'associeront rien à Allah, qu'elles ne voleront pas, qu'elles ne se livreront pas à l'adultère, qu'elles ne tueront pas leurs propres enfants, qu'elles ne commettront aucune infamie ni avec leurs mains ni avec leurs pieds et qu'elles ne désobéiront pas en ce qui est convenable, alors reçois leur serment d'allégeance, et implore d'Allah le pardon pour elles. Allah est certes, Pardonneur et Très Miséricordieux.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxiii{O vous qui avez cru! Ne prenez pas pour alliés des gens contre lesquels Allah est courroucé et qui désespèrent de l'au-delà, tout comme les mécréants désespèrent des gens des tombeaux.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxiv{\basmalahfr Ce qui est dans les cieux et ce qui est sur la terre glorifient Allah, et Il est le Puissant, le Sage.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxv{O vous qui avez cru! Pourquoi dites-vous ce que vous ne faites pas?\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxvi{C'est une grande abomination auprès d'Allah que de dire ce que vous ne faites pas.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxvii{Allah aime ceux qui combattent dans Son chemin en rang serré pareils à un édifice renforcé.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxviii{Et quand Moïse dit à son peuple: «O mon peuple! Pourquoi me maltraitez-vous alors que vous savez que je suis vraiment le Messager d'Allah [envoyé] à vous?» Puis quand ils dévièrent, Allah fit dévier leurs cœurs, car Allah ne guide pas les gens pervers.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxix{Et quand Jésus fils de Marie dit: «O Enfants d'Israël, je suis vraiment le Messager d'Allah [envoyé] à vous, confirmateur de ce qui, dans la Thora, est antérieur à moi, et annonciateur d'un Messager à venir après moi, dont le nom sera «Ahmad». Puis quand celui-ci vint à eux avec des preuves évidentes, ils dirent: «C'est là une magie manifeste».\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxx{Et qui est plus injuste que celui qui invente un mensonge contre Allah, alors qu'il est appelé à l'Islam? Et Allah ne guide pas les gens injustes.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxi{Ils veulent éteindre de leurs bouches la lumière d'Allah, alors qu'Allah parachèvera Sa lumière en dépit de l'aversion des mécréants.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxii{C'est Lui qui a envoyé Son messager avec la guidée et la Religion de Vérité, pour la placer au-dessus de toute autre religion, en dépit de l'aversion des associateurs.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxiii{O vous qui avez cru! vous indiquerai-je un commerce qui vous sauvera d'un châtiment douloureux?\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxiv{Vous croyez en Allah et en Son messager et vous combattez avec vos biens et vos personnes dans le chemin d'Allah, et cela vous est bien meilleur, si vous saviez!\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxv{Il vous pardonnera vos péchés et vous fera entrer dans des Jardins sous lesquels coulent les ruisseaux, et dans des demeures agréables dans les jardins d'Eden. Voilà l'énorme succès\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxvi{et Il vous accordera d'autres choses encore que vous aimez bien: un secours [venant] d'Allah et une victoire prochaine. Et annonce la bonne nouvelle aux croyants.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxvii{O vous qui avez cru! Soyez les alliés d'Allah, à l'instar de ce que Jésus fils de Marie a dit aux apôtres: «Qui sont mes alliés (pour la cause) d'Allah?» - Les apôtres dirent: «Nous sommes les alliés d'Allah». Un groupe des Enfants d'Israël crut, tandis qu'un groupe nia. Nous aidâmes donc ceux qui crurent contre leur ennemi, et ils triomphèrent.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxviii{\basmalahfr Ce qui est dans les cieux et ce qui est sur la terre glorifient Allah, le Souverain, le Pur, le Puissant, le Sage.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxix{C'est Lui qui a envoyé à des gens sans Livre (les Arabes) un Messager des leurs qui leur récite Ses versets, les purifie et leur enseigne le Livre et la Sagesse, bien qu'ils étaient auparavant dans un égarement évident,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxx{ainsi qu'à d'autres parmi ceux qui ne les ont pas encore rejoints. C'est Lui le Puissant, le Sage.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxi{Telle est la grâce d'Allah qu'Il donne à qui Il veut. Et Allah est le Détenteur de l'énorme grâce.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxii{Ceux qui ont été chargés de la Thora mais qui ne l'ont pas appliquée sont pareils à l'âne qui porte des livres. Quel mauvais exemple que celui de ceux qui traitent de mensonges les versets d'Allah et Allah ne guide pas les gens injustes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxiii{Dis: «O vous qui pratiquez le judaïsme! Si vous prétendez être les bien-aimés d'Allah à l'exclusion des autres, souhaitez, donc la mort, si vous êtes véridiques».\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxiv{Or, ils ne la souhaiteront jamais, à cause de ce que leurs mains ont préparé. Allah cependant connaît bien les injustes.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxv{Dis: «La mort que vous fuyez va certes vous rencontrer. Ensuite vous serez ramenés à Celui qui connaît parfaitement le monde Invisible et le monde visible et qui vous informera alors de ce que vous faisiez».\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxvi{O vous qui avez cru! Quand on appelle à la Salât du jour du Vendredi, accourez à l'invocation d'Allah et laissez tout négoce. Cela est bien meilleur pour vous, si vous saviez!\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxvii{Puis quand la Salât est achevée, dispersez-vous sur terre et recherchez [quelque effet] de la grâce d'Allah, et invoquez beaucoup Allah afin que vous réussissiez.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxviii{Quand ils entrevoient quelque commerce ou quelque divertissement, ils s'y dispersent et te laissent debout. Dis: «Ce qui est auprès d'Allah est bien meilleur que le divertissement et le commerce, et Allah est le Meilleur des pourvoyeurs».\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmclxxxix{\basmalahfr Quand les hypocrites viennent à toi, ils disent: «Nous attestons que tu es certes le Messager d'Allah» Allah sait que tu es vraiment Son messager; et Allah atteste que les hypocrites sont assurément des menteurs.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxc{Ils prennent leurs serments pour bouclier et obstruent le chemin d'Allah. Quelles mauvaises choses que ce qu'ils faisaient!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxci{C'est parce qu'en vérité ils ont cru, puis rejeté la foi. Leurs cœurs donc, ont été scellés, de sorte qu'ils ne comprennent rien.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxcii{Et quand tu les vois, leurs corps t'émerveillent; et s'ils parlent tu écoutes leur parole. Ils sont comme des bûches appuyées (contre des murs) et ils pensent que chaque cri est dirigé contre eux. L'ennemi c'est eux. Prends y garde. Qu'Allah les extermine! Comme les voilà détournés (du droit chemin).\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxciii{Et quand on leur dit: «Venez que le Messager d'Allah implore le pardon pour vous», ils détournent leurs têtes, et tu les vois se détourner tandis qu'ils s'enflent d'orgueil.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxciv{C'est égal, pour eux, que tu implores le pardon pour eux ou que tu ne le fasses pas: Allah ne leur pardonnera jamais, car Allah ne guide pas les gens pervers.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxcv{Ce sont eux qui disent: «Ne dépensez point pour ceux qui sont auprès du Messager d'Allah, afin qu'ils se dispersent». Et c'est à Allah qu'appartiennent les trésors des cieux et de la terre, mais les hypocrites ne comprennent pas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxcvi{Ils disent: «Si nous retournons à Médine, le plus puissant en fera assurément sortir le plus humble». Or c'est à Allah qu'est la puissance ainsi qu'à Son messager et aux croyants. Mais les hypocrites ne le savent pas.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxcvii{O vous qui avez cru! Que ni vos biens ni vos enfants ne vous distraient du rappel d'Allah. Et quiconque fait cela... alors ceux-là seront les perdants.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxcviii{Et dépensez de ce que Nous vous avons octroyé avant que la mort ne vienne à l'un de vous et qu'il dise alors: «Seigneur! si seulement Tu m'accordais un court délai: je ferais l'aumône et serais parmi les gens de bien».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcxcix{Allah cependant n'accorde jamais de délai à une âme dont le terme est arrivé. Et Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcc{\basmalahfr Ce qui est dans les cieux et ce qui est sur la terre glorifient Allah. A Lui la royauté et à Lui les louanges. Et Il est Omnipotent.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcci{C'est Lui qui vous a créés. Parmi vous [il y a] mécréant et croyant. Allah observe parfaitement ce que vous faites.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmccii{Il a créé les cieux et la terre en toute vérité et vous a donné votre forme et quelle belle forme Il vous a donnée! Et vers Lui est le devenir.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcciii{Il sait ce qui est dans les cieux et la terre, et Il sait ce que vous cachez ainsi que ce que vous divulguez. Et Allah connaît bien le contenu des poitrines.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcciv{Ne vous est-elle pas parvenue, la nouvelle de ceux qui auparavant ont mécru et qui ont goûté la conséquence néfaste de leur acte; ils auront en outre un châtiment douloureux.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmccv{Il en est ainsi parce que leurs messagers leur venaient avec des preuves évidentes, et qu'ils ont dit: «Sont-ce des hommes qui nous guideront?» Ils mécrurent alors et se détournèrent et Allah Se passa [d'eux] et Allah Se suffit à Lui-même et Il est Digne de louange.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmccvi{Ceux qui ont mécru prétendent qu'ils ne seront point ressuscités. Dis: «Mais si! Par mon Seigneur! Vous serez très certainement ressuscités; puis vous serez certes informés de ce que vous faisiez. Et cela est facile pour Allah».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmccvii{Croyez en Allah donc et en Son messager, ainsi qu'en la Lumière [le Coran] que Nous avons fait descendre. Et Allah est Parfaitement Connaisseur de ce que vous faites.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmccviii{Le jour où Il vous réunira pour le jour du Rassemblement, ce sera le jour de la grande perte. Et celui qui croit en Allah et accomplit les bonnes œuvres, Il lui effacera ses mauvaises actions et le fera entrer dans des Jardins sous lesquels coulent les ruisseaux où ils demeureront éternellement. Voilà l'énorme succès!\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmccix{Et ceux qui ont mécru et traité de mensonges Nos versets, ceux-là sont les gens du Feu où ils demeureront éternellement. Et quelle mauvaise destination!\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmccx{Nul malheur n'atteint [l'homme] que par la permission d'Allah. Et quiconque croit en Allah, [Allah] guide son cœur. Allah est Omniscient.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxi{Obéissez à Allah et obéissez au Messager et si vous vous détournez... il n'incombe à Notre messager que de transmettre en clair (son message).\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxii{Allah nulle autre divinité que Lui! Et c'est à Allah que les croyants [doivent] s'en remettre.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxiii{O vous qui avez cru, vous avez de vos épouses et de vos enfants un ennemi [une tentation]. Prenez-y garde donc. Mais si vous [les] excusez, passez sur [leurs] fautes et [leur] pardonnez, sachez qu'Allah est Pardonneur, Très Miséricordieux.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxiv{Vos biens et vos enfants ne sont qu'une tentation, alors qu'auprès d'Allah est une énorme récompense.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxv{Craignez Allah, donc autant que vous pouvez, écoutez, obéissez et faites largesses. Ce sera un bien pour vous. Et quiconque a été protégé contre sa propre avidité... ceux-là sont ceux qui réussissent.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxvi{Si vous faites à Allah un prêt sincère, Il le multipliera pour vous et vous pardonnera. Allah cependant est très Reconnaissant et Indulgent.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxvii{Il est le Connaisseur du monde Invisible et visible, et Il est le Puissant, le Sage.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxviii{\basmalahfr O Prophète! Quand vous répudiez les femmes, répudiez-les conformément à leur période d'attente prescrite; et comptez la période; et craignez Allah votre Seigneur. Ne les faites pas sortir de leurs maisons, et qu'elles n'en sortent pas, à moins qu'elles n'aient commis une turpitude prouvée. Telles sont les lois d'Allah. Quiconque cependant transgresse les lois d'Allah, se fait du tort à lui-même. Tu ne sais pas si d'ici là Allah ne suscitera pas quelque chose de nouveau!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxix{Puis quand elles atteignent le terme prescrit, retenez-les de façon convenable, ou séparez-vous d'elles de façon convenable; et prenez deux hommes intègres parmi vous comme témoins. Et acquittez-vous du témoignage envers Allah. Voilà ce à quoi est exhorté celui qui croit en Allah et au Jour dernier. Et quiconque craint Allah, Il Lui donnera une issue favorable,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxx{et lui accordera Ses dons par [des moyens] sur lesquels il ne comptait pas. Et quiconque place sa confiance en Allah, Il [Allah] lui suffit. Allah atteint ce qu'Il Se propose, et Allah a assigné une mesure à chaque chose.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxi{Si vous avez des doutes à propos (de la période d'attente) de vos femmes qui n'espèrent plus avoir de règles, leur délai est de trois mois. De même pour celles qui n'ont pas encore de règles. Et quant à celles qui sont enceintes, leur période d'attente se terminera à leur accouchement. Quiconque craint Allah cependant, Il lui facilite les choses.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxii{Tel est le commandement d'Allah qu'Il a fait descendre vers vous. Quiconque craint Allah cependant, Il lui efface ses fautes et lui accorde une grosse récompense.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxiii{Et faites que ces femmes habitent où vous habitez, et suivant vos moyens. Et ne cherchez pas à leur nuire en les contraignant à vivre à l'étroit. Et si elles sont enceintes, pourvoyez à leurs besoins jusqu'à ce qu'elles aient accouché. Puis, si elles allaitent [l'enfant né] de vous, donnez-leur leurs salaires. Et concertez vous [à ce sujet] de façon convenable. Et si vous rencontrez des difficultés réciproques, alors, une autre allaitera pour lui.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxiv{Que celui qui est aisé dépense de sa fortune; et que celui dont les biens sont restreints dépense selon ce qu'Allah lui a accordé. Allah n'impose à personne que selon ce qu'Il lui a donné, et Allah fera succéder l'aisance à la gêne.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxv{Que de cités ont refusé avec insolence le commandement de leur Seigneur et de Ses messagers! Nous leur en demandâmes compte avec sévérité, et les châtiâmes d'un châtiment inouï.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxvi{Elles goûtèrent donc la conséquence de leur comportement. Et le résultat final de leurs actions fut [leur] perdition.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxvii{Allah a préparé pour eux un dur châtiment. Craignez Allah donc, ô vous qui êtes doués d'intelligence, vous qui avez la foi. Certes, Allah a fait descendre vers vous un rappel,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxviii{un Messager qui vous récite les versets d'Allah comme preuves claires, afin de faire sortir ceux qui croient et accomplissent les bonnes œuvres des ténèbres à la lumière. Et quiconque croit en Allah et fait le bien, Il le fait entrer aux Jardins sous lesquels coulent les ruisseaux, pour y demeurer éternellement. Allah lui a fait une belle attribution.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxix{Allah qui a créé sept cieux et autant de terres. Entre eux [Son] commandement descend, afin que vous sachiez qu'Allah est en vérité Omnipotent et qu'Allah a embrassé toute chose de [Son] savoir.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxx{\basmalahfr O Prophète! Pourquoi, en recherchant l'agrément de tes femmes, t'interdis-tu ce qu'Allah t'a rendu licite? Et Allah est Pardonneur, Très Miséricordieux.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxi{Allah vous a prescrit certes, de vous libérer de vos serments. Allah est votre Maître; et c'est Lui l'Omniscient, le Sage.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxii{Lorsque le Prophète confia un secret à l'une de ses épouses et qu'elle l'eut divulgué et qu'Allah l'en eut informé, celui-ci en fit connaître une partie et passa sur une partie. Puis, quand il l'en eut informée elle dit: «Qui t'en a donné nouvelle?» Il dit: «C'est l'Omniscient, le Parfaitement Connaisseur qui m'en a avisé».\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxiii{Si vous vous repentez à Allah c'est que vos cœurs ont fléchi. Mais si vous vous soutenez l'une l'autre contre le Prophète, alors ses alliés seront Allah, Gabriel et les vertueux d'entre les croyants, et les Anges sont par surcroît [son] soutien.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxiv{S'Il vous répudie, il se peut que son Seigneur lui donne en échange des épouses meilleures que vous, musulmanes, croyantes, obéissantes, repentantes, adoratrices, jeûneuses, déjà mariées ou vierges.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxv{O vous qui avez cru! Préservez vos personnes et vos familles, d'un Feu dont le combustible sera les gens et les pierres, surveillé par des Anges rudes, durs, ne désobéissant jamais à Allah en ce qu'Il leur commande, et faisant strictement ce qu'on leur ordonne.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxvi{O vous qui avez mécru! Ne vous excusez pas aujourd'hui. Vous ne serez rétribués que selon ce que vous œuvriez.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxvii{O vous qui avez cru! Repentez-vous à Allah d'un repentir sincère. Il se peut que votre Seigneur vous efface vos fautes et qu'Il vous fasse entrer dans des Jardins sous lesquels coulent les ruisseaux, le jour où Allah épargnera l'ignominie au Prophète et à ceux qui croient avec lui. Leur lumière courra devant eux et à leur droite; ils diront: «Seigneur, parfais-nous notre lumière et pardonne-nous. Car Tu es Omnipotent».\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxviii{O Prophète! Mène la lutte contre les mécréants et les hypocrites et sois rude à leur égard. Leur refuge sera l'Enfer, et quelle mauvaise destination!\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxxxix{Allah a cité en parabole pour ceux qui ont mécru la femme de Noé et la femme de Lot. Elles étaient sous l'autorité de deux vertueux de Nos serviteurs. Toutes deux les trahirent et ils ne furent d'aucune aide pour [ces deux femmes] vis-à-vis d'Allah. Et il [leur] fut dit: «Entrez au Feu toutes les deux, avec ceux qui y entrent»,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxl{et Allah a cité en parabole pour ceux qui croient, la femme de Pharaon, quand elle dit «Seigneur, construis-moi auprès de Toi une maison dans le Paradis, et sauve-moi de Pharaon et de son œuvre; et sauve-moi des gens injustes».\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxli{De même, Marie, la fille d''Imran qui avait préservé sa virginité; Nous y insufflâmes alors de Notre Esprit. Elle avait déclaré véridiques les paroles de son Seigneur ainsi que Ses Livres: elle fut parmi les dévoués.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxlii{\basmalahfr Béni soit celui dans la main de qui est la royauté, et Il est Omnipotent.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxliii{Celui qui a créé la mort et la vie afin de vous éprouver (et de savoir) qui de vous est le meilleur en œuvre, et c'est Lui le Puissant, le Pardonneur.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxliv{Celui qui a créé sept cieux superposés sans que tu voies de disproportion en la création du Tout Miséricordieux. Ramène [sur elle] le regard. Y vois-tu une brèche quelconque?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxlv{Puis, retourne ton regard à deux fois: le regard te reviendra humilié et frustré.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxlvi{Nous avons effectivement embelli le ciel le plus proche avec des lampes [des étoiles] dont Nous avons fait des projectiles pour lapider les diables et Nous leur avons préparé le châtiment de la Fournaise.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxlvii{Ceux qui ont mécru à leur Seigneur auront le châtiment de l'Enfer. Et quelle mauvaise destination!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxlviii{Quand ils y seront jetés, ils lui entendront un gémissement, tandis qu'il bouillonne.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxlix{Peu s'en faut que, de rage, il n'éclate. Toutes les fois qu'un groupe y est jeté, ses gardiens leur demandent: «Quoi! ne vous est-il pas venu d'avertisseur?»\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmccl{Ils dirent: «Mais si! un avertisseur nous était venu certes, mais nous avons crié au mensonge et avons dit: Allah n'a rien fait descendre: vous n'êtes que dans un grand égarement».\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmccli{Et ils dirent: «Si nous avions écouté ou raisonné, nous ne serions pas parmi les gens de la Fournaise».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclii{Ils ont reconnu leur péché. Que les gens de la Fournaise soient anéantis à jamais.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmccliii{Ceux qui redoutent leur Seigneur bien qu'ils ne L'aient jamais vu auront un pardon et une grande récompense.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmccliv{Que vous cachiez votre parole ou la divulguiez Il connaît bien le contenu des poitrines.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclv{Ne connaît-Il pas ce qu'Il a créé alors que c'est Lui le Compatissant, le Parfaitement Connaisseur.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclvi{C'est Lui qui vous a soumis la terre: parcourez donc ses grandes étendues. Mangez de ce qu'Il vous fournit. Vers Lui est la Résurrection.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclvii{Etes-vous à l'abri que Celui qui est au ciel vous enfouisse en la terre? Et voici qu'elle tremble!\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclviii{Ou êtes-vous à l'abri que Celui qui est au ciel envoie contre vous un ouragan de pierres? Vous saurez ainsi quel fut Mon avertissement.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclix{En effet, ceux d'avant eux avaient crié au mensonge. Quelle fut alors Ma réprobation!\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclx{N'ont-ils pas vu les oiseaux au-dessus d'eux, déployant et repliant leurs ailes tour à tour? Seul le Tout Miséricordieux les soutient. Car Il est sur toute chose, Clairvoyant.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxi{Quel est celui qui constituerait pour vous une armée [capable] de vous secourir, en dehors du Tout Miséricordieux? En vérité les mécréants sont dans l'illusion complète.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxii{Ou quel est celui qui vous donnera votre subsistance s'Il s'arrête de fournir Son attribution? Mais ils persistent dans leur insolence et dans leur répulsion.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxiii{Qui est donc mieux guidé? Celui qui marche face contre terre ou celui qui marche redressé sur un chemin droit.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxiv{Dis: «C'est Lui qui vous a créés et vous a donné l'ouïe, les yeux et les cœurs». Mais vous êtes rarement reconnaissants!\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxv{Dis: «C'est Lui qui vous a répandus sur la terre, et c'est vers Lui que vous serez rassemblés».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxvi{Et ils disent: «A quand cette promesse si vous êtes véridiques?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxvii{Dis: «Allah seul [en] a la connaissance. Et moi je ne suis qu'un avertisseur clair».\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxviii{Puis, quand ils verront (le châtiment) de près, les visages de ceux qui ont mécru seront affligés. Et il leur sera dit: «Voilà ce que vous réclamiez».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxix{Dis: «Que vous en semble? Qu'Allah me fasse périr ainsi que ceux qui sont avec moi ou qu'Il nous fasse miséricorde, qui protégera alors les mécréants d'un châtiment douloureux?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxx{Dis: «C'est Lui, le Tout Miséricordieux. Nous croyons en Lui et c'est en Lui que nous plaçons notre confiance. Vous saurez bientôt qui est dans un égarement évident».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxi{Dis: «Que vous en semble? Si votre eau était absorbée au plus profond de la terre, qui donc vous apporterait de l'eau de source?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxii{\basmalahfr Nûn. Par la plume et ce qu'ils écrivent!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxiii{Tu (Muhammad) n'es pas, par la grâce de ton Seigneur, un possédé.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxiv{Et il y aura pour toi certes, une récompense jamais interrompue.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxv{Et tu es certes, d'une moralité éminente.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxvi{Tu verras et ils verront\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxvii{qui d'entre vous a perdu la raison.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxviii{C'est ton Seigneur qui connaît mieux ceux qui s'égarent de Son chemin, et Il connaît mieux ceux qui suivent la bonne voie.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxix{N'obéis pas à ceux qui crient au mensonge,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxx{Ils aimeraient bien que tu transiges avec eux afin qu'ils transigent avec toi.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxi{Et n'obéis à aucun grand jureur, méprisable,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxii{grand diffamateur, grand colporteur de médisance,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxiii{grand empêcheur du bien, transgresseur, grand pécheur,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxiv{au cœur dur, et en plus de cela bâtard.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxv{Même s'il est doté de richesses et (de nombreux) enfants.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxvi{Quand Nos versets lui sont récités, il dit: «Des contes d'anciens».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxvii{Nous le marquerons sur le museau [nez].\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxviii{Nous les avons éprouvés comme Nous avons éprouvé les propriétaires du verger qui avaient juré d'en faire la récolte au matin,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcclxxxix{sans dire: «Si Allah le veut».\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxc{Une calamité de la part de ton Seigneur tomba dessus pendant qu'ils dormaient,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxci{et le matin, ce fut comme si tout avait été rasé.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxcii{Le [lendemain] matin, ils s'appelèrent les uns les autres:\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxciii{«Partez tôt à votre champ si vous voulez le récolter».\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxciv{Ils allèrent donc, tout en parlant entre eux à voix basse:\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxcv{«Ne laissez aucun pauvre y entrer aujourd'hui».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxcvi{Ils partirent de bonne heure décidés à user d'avarice [envers les pauvres], convaincus que cela était en leur pouvoir.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxcvii{Puis, quand ils le virent [le jardin], ils dirent: «vraiment, nous avons perdu notre chemin.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxcviii{Ou plutôt nous sommes frustrés».\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmccxcix{Le plus juste d'entre eux dit: «Ne vous avais-je pas dit: Si seulement vous avez rendu gloire à Allah!»\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmccc{Ils dirent: «Gloire à notre Seigneur! Oui, nous avons été des injustes».\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmccci{Puis ils s'adressèrent les uns aux autres, se faisant des reproches.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccii{Ils dirent: «Malheur à nous! Nous avons été des rebelles.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmccciii{Nous souhaitons que notre Seigneur nous le remplace par quelque chose de meilleur. Nous désirons nous rapprocher de notre Seigneur».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmccciv{Tel fut le châtiment; et le châtiment de l'au-delà est plus grand encore, si seulement ils savaient!\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccv{Les pieux auront auprès de leur Seigneur les Jardins du délice.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccvi{Traiterons-Nous les soumis [à Allah] à la manière des criminels?\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccvii{Qu'avez-vous? Comment jugez-vous?\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccviii{Ou bien avez-vous un Livre dans lequel vous apprenez\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccix{qu'en vérité vous obtiendrez tout ce que vous désirez?\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccx{Ou bien est-ce que vous avez obtenu de Nous des serments valables jusqu'au Jour de la Résurrection, Nous engageant à vous donner ce que vous décidez?\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxi{Demande-leur qui d'entre eux en est garant?\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxii{Ou encore, est-ce qu'ils ont des associés? Eh bien, qu'ils fassent venir leurs associés s'ils sont véridiques!\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxiii{Le jour où ils affronteront les horreurs [du Jugement] et où ils seront appelés à la Prosternation mais ils ne le pourront pas.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxiv{Leurs regards seront abaissés, et l'avilissement les couvrira. Or, ils étaient appelés à la Prosternation au temps où ils étaient sains et saufs!...\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxv{Laisse-Moi donc avec quiconque traite de mensonge ce discours; Nous allons les mener graduellement par où ils ne savent pas!\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxvi{Et Je leur accorde un délai, car Mon stratagème est sûr!\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxvii{Ou bien est-ce que tu leur demandes un salaire, les accablant ainsi d'une lourde dette?\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxviii{Ou savent-ils l'Inconnaissable et c'est de là qu'ils écrivent [leurs mensonges]?\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxix{Endure avec patience la sentence de ton Seigneur, et ne sois pas comme l'homme au Poisson [Jonas] qui appela (Allah) dans sa grande angoisse.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxx{Si un bienfait de son Seigneur ne l'avait pas atteint, il aurait été rejeté honni sur une terre déserte,\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxi{Puis son Seigneur l'élut et le désigna au nombre des gens de bien.\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxii{Peu s'en faut que ceux qui mécroient ne te transpercent par leurs regards, quand ils entendent le Coran, ils disent: «Il est certes fou!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxiii{Et ce n'est qu'un Rappel, adressé aux mondes!\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxiv{\basmalahfr L'inévitable [l'Heure qui montre la vérité]\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxv{Qu'est-ce que l'inévitable?\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxvi{Et qui te dira ce que c'est que l'inévitable?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxvii{Les Thamûd et les 'Aad avaient traité de mensonge le cataclysme.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxviii{Quant aux Thamûd, ils furent détruits par le [bruit] excessivement fort.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxix{Et quant aux 'Aad, ils furent détruits par un vent mugissant et furieux\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxx{qu'[Allah] déchaîna contre eux pendant sept nuits et huit jours consécutifs; tu voyais alors les gens renversés par terre comme des souches de palmiers évidées.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxi{En vois-tu le moindre vestige?\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxii{Pharaon et ceux qui vécurent avant lui ainsi que les Villes renversées, commirent des fautes.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxiii{Ils désobéirent au Messager de leur Seigneur. Celui-ci donc, les saisit d'une façon irrésistible.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxiv{C'est Nous qui, quand l'eau déborda, vous avons chargés sur l'Arche\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxv{afin d'en faire pour vous un rappel que toute oreille fidèle conserve.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxvi{Puis, quand d'un seul souffle, on soufflera dans la Trompe,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxvii{et que la terre et les montagnes seront soulevées puis tassées d'un seul coup;\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxviii{ce jour-là alors, l'Evénement se produira,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxxxix{et le ciel se fendra et sera fragile, ce jour-là.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxl{Et sur ses côtés [se tiendront] les Anges, tandis que huit, ce jour-là, porteront au-dessus d'eux le Trône de ton Seigneur.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxli{Ce jour-là vous serez exposés; et rien de vous ne sera caché.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxlii{Quant à celui à qui on aura remis le Livre en sa main droite, il dira: «Tenez! lisez mon livre.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxliii{J'étais sûr d'y trouver mon compte».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxliv{Il jouira d'une vie agréable:\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxlv{dans un Jardin haut placé\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxlvi{dont les fruits sont à portée de la main.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxlvii{«Mangez et buvez agréablement pour ce que vous avez avancé dans les jours passés».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxlviii{Quant à celui à qui on aura remis le Livre en sa main gauche, il dira: «Hélas pour moi! J'aurai souhaité qu'on ne m'ait pas remis mon livre,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxlix{et ne pas avoir connu mon compte...\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccl{Hélas, comme j'aurai souhaité que [ma première mort] fût la définitive.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccli{Ma fortune ne m'a servi à rien.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclii{Mon autorité est anéantie et m'a quitté!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccliii{«Saisissez-le! Puis, mettez-lui un carcan;\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccliv{ensuite, brûlez-le dans la Fournaise;\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclv{puis, liez-le avec une chaîne de soixante-dix coudées,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclvi{car il ne croyait pas en Allah, le Très Grand.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclvii{et n'incitait pas à nourrir le pauvre.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclviii{Il n'a pour lui ici, aujourd'hui, point d'ami chaleureux [pour le protéger],\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclix{ni d'autre nourriture que du pus,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclx{que seuls les fautifs mangeront».\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxi{Mais non... Je jure par ce que vous voyez,\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxii{ainsi que par ce que vous ne voyez pas,\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxiii{que ceci [le Coran] est la parole d'un noble Messager,\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxiv{et que ce n'est pas la parole d'un poète; mais vous ne croyez que très peu,\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxv{ni la parole d'un devin, mais vous vous rappelez bien peu.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxvi{C'est une révélation du Seigneur de l'Univers.\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxvii{Et s'il avait forgé quelques paroles qu'ils Nous avait attribuées,\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxviii{Nous l'aurions saisi de la main droite,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxix{ensuite, Nous lui aurions tranché l'aorte.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxx{Et nul d'entre vous n'aurait pu lui servir de rempart.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxi{C'est en vérité un rappel pour les pieux.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxii{Et Nous savons qu'il y a parmi vous qui le traitent de menteur;\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxiii{mais en vérité, ce sera un sujet de regret pour les mécréants,\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxiv{c'est là la véritable certitude.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxv{Glorifie donc le nom de ton Seigneur, le Très Grand!\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxvi{\basmalahfr Un demandeur a réclamé un châtiment inéluctable,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxvii{pour les mécréants, que nul ne pourrait repousser,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxviii{et qui vient d'Allah, le Maître des voies d'ascension.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxix{Les Anges ainsi que l'Esprit montent vers Lui en un jour dont la durée est de cinquante mille ans.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxx{Supporte donc, d'une belle patience.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxi{Ils le (le châtiment) voient bien loin,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxii{alors que Nous le voyons bien proche,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxiii{le jour où le ciel sera comme du métal en fusion\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxiv{et les montagnes comme de la laine,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxv{où nul ami dévoué ne s'enquerra d'un ami,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxvi{bien qu'ils se voient l'un l'autre. Le criminel aimerait pouvoir se racheter du châtiment de ce jour, en livrant ses enfants,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxvii{sa compagne, son frère,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxviii{même son clan qui lui donnait asile,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmccclxxxix{et tout ce qui est sur la terre, tout, qui pourrait le sauver.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxc{Mais rien [ne le sauvera]. [L'Enfer] est un brasier\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxci{arrachant brutalement la peau du crâne.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxcii{Il appellera celui qui tournait le dos et s'en allait,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxciii{amassait et thésaurisait.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxciv{Oui, l'homme a été créé instable [très inquiet];\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxcv{quand le malheur le touche, il est abattu;\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxcvi{et quand le bonheur le touche, il est grand refuseur.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxcvii{Sauf ceux qui pratiquent la Salât\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxcviii{qui sont assidus à leurs Salâts,\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmcccxcix{et sur les biens desquels il y a un droit bien déterminé [la Zakât]\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmcd{pour le mendiant et le déshérité;\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdi{et qui déclarent véridique le Jour de la Rétribution,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdii{et ceux qui craignent le châtiment de leur Seigneur\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdiii{car vraiment, il n'y a nulle assurance contre le châtiment de leur Seigneur;\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdiv{et qui se maintiennent dans la chasteté\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdv{et n'ont de rapports qu'avec leurs épouses ou les esclaves qu'ils possèdent car dans ce cas, ils ne sont pas blâmables,\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdvi{mais ceux qui cherchent [leur plaisir] en dehors de cela, sont des transgresseurs;\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdvii{et qui gardent les dépôts confiés à eux, et respectent leurs engagements scrupuleusement;\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdviii{et qui témoignent de la stricte vérité,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdix{et qui sont réguliers dans leur Salât.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdx{Ceux-là seront honorés dans des Jardins.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxi{Qu'ont donc, ceux qui ont mécru, à courir vers toi, le cou tendu,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxii{de droite et de gauche, [venant] par bandes?\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxiii{Chacun d'eux convoite-t-il qu'on le laisse entrer au Jardin des délices?\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxiv{Mais non! Nous les avons créés de ce qu'ils savent.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxv{Eh Non!... Je jure par le Seigneur des Levants et des Couchants que Nous sommes Capable\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxvi{de les remplacer par de meilleurs qu'eux, et nul ne peut nous en empêcher.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxvii{Laisse-les donc s'enfoncer (dans leur mécréance) et se divertir jusqu'à ce qu'ils rencontrent leur jour dont on les menaçait,\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxviii{le jour où ils sortiront des tombes, rapides comme s'ils couraient vers des pierres dressées;\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxix{leurs yeux seront abaissés, l'avilissement les couvrira. C'est cela le jour dont on les menaçait!\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxx{\basmalahfr Nous avons envoyé Noé vers son peuple: «Avertis ton peuple, avant que leur vienne un châtiment douloureux».\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxi{Il [leur] dit: «O mon peuple, je suis vraiment pour vous, un avertisseur clair,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxii{Adorez Allah, craignez-Le et obéissez-moi,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxiii{pour qu'Il vous pardonne vos péchés et qu'Il vous donne un délai jusqu'à un terme fixé. Mais quand vient le terme fixé par Allah, il ne saurait être différé si vous saviez!»\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxiv{Il dit: «Seigneur! J'ai appelé mon peuple, nuit et jour.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxv{Mais mon appel n'a fait qu'accroître leur fuite.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxvi{Et chaque fois que je les ai appelés pour que Tu leur pardonnes, ils ont mis leurs doigts dans leurs oreilles. se sont enveloppés de leurs vêtements, se sont entêtés et se sont montrés extrêmement orgueilleux.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxvii{Ensuite, je les ai appelés ouvertement.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxviii{Puis, je leur ai fait des proclamations publiques, et des confidences en secret.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxix{J'ai donc dit: «Implorez le pardon de votre Seigneur, car Il est grand Pardonneur,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxx{pour qu'Il vous envoie du ciel, des pluies abondantes,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxi{et qu'Il vous accorde beaucoup de biens et d'enfants, et vous donne des jardins et vous donne des rivières.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxii{Qu'avez-vous à ne pas vénérer Allah comme il se doit,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxiii{alors qu'Il vous a créés par phases successives?\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxiv{N'avez-vous pas vu comment Allah a créé sept cieux superposés\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxv{et y a fait de la lune une lumière et du soleil une lampe?\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxvi{Et c'est Allah qui, de la terre, vous a fait croître comme des plantes,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxvii{puis Il vous y fera retourner et vous en fera sortir véritablement.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxviii{Et c'est Allah qui vous a fait de la terre un tapis,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxxxix{pour que vous vous acheminiez par ses voies spacieuses».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxl{Noé dit: «Seigneur, ils m'ont désobéi et ils ont suivi celui dont les biens et les enfants n'ont fait qu'accroître la perte.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxli{Ils ont ourdi un immense stratagème,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxlii{et ils ont dit: «N'abandonnez jamais vos divinités et n'abandonnez jamais Wadd, Suwâ, Yaghhû, Ya'ûq et Nasr'.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxliii{Elles [les idoles] ont déjà égaré plusieurs. Ne fais (Seigneur) croître les injustes qu'en égarement.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxliv{A cause de leurs fautes, ils ont été noyés, puis on les a fait entrer au Feu, et ils n'ont pas trouvé en dehors d'Allah, de secoureurs».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxlv{Et Noé dit: «Seigneur, ne laisse sur la terre aucun infidèle.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxlvi{Si Tu les laisses [en vie], ils égareront Tes serviteurs et n'engendreront que des pécheurs infidèles.\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxlvii{Seigneur! Pardonne-moi, et à mes père et mère et à celui qui entre dans ma demeure croyant, ainsi qu'aux croyants et croyantes; et ne fais croître les injustes qu'en perdition».\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxlviii{\basmalahfr Dis: «Il m'a été révélé qu'un groupe de djinns prêtèrent l'oreille, puis dirent: «Nous avons certes entendu une Lecture [le Coran] merveilleuse,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxlix{qui guide vers la droiture. Nous y avons cru, et nous n'associerons jamais personne à notre Seigneur.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdl{En vérité notre Seigneur - que Sa grandeur soit exaltée - ne S'est donné ni compagne, ni enfant!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdli{Notre insensé [Iblis] disait des extravagances contre Allah.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlii{Et nous pensions que ni les humains ni les djinns ne sauraient jamais proférer de mensonge contre Allah.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdliii{Or, il y avait parmi les humains, des mâles qui cherchaient protection auprès des mâles parmi les djinns mais cela ne fit qu'accroître leur détresse.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdliv{Et ils avaient pensé comme vous avez pensé qu'Allah ne ressusciterait jamais personne.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlv{Nous avions frôlé le ciel et nous l'avions trouvé plein d'une forte garde et de bolides.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlvi{Nous y prenions place pour écouter. Mais quiconque prête l'oreille maintenant, trouve contre lui un bolide aux aguets.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlvii{Nous ne savons pas si on veut du mal aux habitants de la terre ou si leur Seigneur veut les mettre sur le droit chemin.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlviii{Il y a parmi nous des vertueux et [d'autres] qui le sont moins: nous étions divisés en différentes sectes.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlix{Nous pensions bien que nous ne saurions jamais réduire Allah à l'impuissance sur la terre et que nous ne saurions jamais le réduire à l'impuissance en nous enfuyant.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlx{Et lorsque nous avons entendu le guide [le Coran], nous y avons cru, et quiconque croit en son Seigneur ne craint alors ni diminution de récompense ni oppression.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxi{Il y a parmi nous les Musulmans, et il y en a les injustes [qui ont dévié]. Et ceux qui se sont convertis à l'Islam sont ceux qui ont cherché la droiture.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxii{Et quant aux injustes, ils formeront le combustible de l'Enfer.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxiii{Et s'ils se maintenaient dans la bonne direction, Nous les aurions abreuvés, certes d'une eau abondante,\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxiv{afin de les y éprouver. Et quiconque se détourne du rappel de son Seigneur, Il l'achemine vers un châtiment sans cesse croissant.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxv{Les mosquées sont consacrées à Allah: n'invoquez donc personne avec Allah.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxvi{Et quand le serviteur d'Allah s'est mis debout pour L'invoquer, ils faillirent se ruer en masse sur lui.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxvii{Dis: «Je n'invoque que mon Seigneur et ne Lui associe personne».\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxviii{Dis: «Je ne possède aucun moyen pour vous faire du mal, ni pour vous mettre sur le chemin droit».\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxix{Dis: «Vraiment, personne ne saura me protéger contre Allah; et jamais je ne trouverai de refuge en dehors de Lui.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxx{[Je ne puis que transmettre] une communication et des messages [émanant] d'Allah. Et quiconque désobéit à Allah et à Son Messager aura le feu de l'Enfer pour y demeurer éternellement.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxi{Puis, quand ils verront ce dont on les menaçait, ils sauront lesquels ont les secours les plus faibles et [lesquels] sont les moins nombreux.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxii{Dis: «Je ne sais pas si ce dont vous êtes menacés est proche, ou bien, si mon Seigneur va lui assigner un délai.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxiii{[C'est Lui] qui connaît le mystère. Il ne dévoile Son mystère à personne,\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxiv{sauf à celui qu'Il agrée comme Messager et qu'Il fait précéder et suivre de gardiens vigilants,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxv{afin qu'Il sache s'ils ont bien transmis les messages de leur Seigneur. Il cerne (de Son savoir) ce qui est avec eux, et dénombre exactement toute chose.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxvi{\basmalahfr O toi, l'enveloppé [dans tes vêtements]!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxvii{Lève-toi [pour prier], toute la nuit, excepté une petite partie;\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxviii{Sa moitié, ou un peu moins;\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxix{ou un peu plus. Et récite le Coran, lentement et clairement.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxx{Nous allons te révéler des paroles lourdes (très importantes).\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxi{La prière pendant la nuit est plus efficace et plus propice pour la récitation.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxii{Tu as, dans la journée, à vaquer à de longues occupations.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxiii{Et rappelle-toi le nom de ton Seigneur et consacre-toi totalement à Lui,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxiv{le Seigneur du Levant et du Couchant. Il n'y a point de divinité à part Lui. Prends-Le donc comme Protecteur.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxv{Et endure ce qu'ils disent; et écarte-toi d'eux d'une façon convenable.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxvi{Et laisse-moi avec ceux qui crient au mensonge et qui vivent dans l'aisance; et accorde-leur un court répit:\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxvii{Nous avons [pour eux] lourdes chaînes et Enfer,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxviii{et nourriture à faire suffoquer, et châtiment douloureux.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdlxxxix{Le jour où la terre et les montagnes trembleront, tandis que les montagnes deviendront comme une dune de sable dispersée.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxc{Nous vous avons envoyé un Messager pour être témoin contre vous, de même que Nous avions envoyé un Messager à Pharaon.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxci{Pharaon désobéit alors au Messager. Nous le saisîmes donc rudement.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxcii{Comment vous préserverez-vous, si vous mécroyez, d'un jour qui rendra les enfants comme des vieillards aux cheveux blancs?\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxciii{[et] durant lequel le ciel se fendra. Sa promesse s'accomplira sans doute.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxciv{Ceci est un rappel. Que celui qui veut prenne une voie [menant] à son Seigneur.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxcv{Ton Seigneur sait, certes, que tu (Muhammad) te tiens debout moins de deux tiers de la nuit, ou sa moitié, ou son tiers. De même qu'une partie de ceux qui sont avec toi. Allah détermine la nuit et le jour. Il sait que vous ne saurez jamais passer toute la nuit en prière. Il a usé envers vous avec indulgence. Récitez donc ce qui [vous] est possible du Coran. Il sait qu'il y aura parmi vous des malades, et d'autres qui voyageront sur la terre, en quête de la grâce d'Allah, et d'autres encore qui combattront dans le chemin d'Allah. Récite-en donc ce qui [vous] sera possible. Accomplissez la Salât, acquittez la Zakât, et faites à Allah un prêt sincère. Tout bien que vous vous préparez, vous le retrouverez auprès d'Allah, meilleur et plus grand en fait de récompense. Et implorez le pardon d'Allah. Car Allah est Pardonneur et Très Miséricordieux.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxcvi{\basmalahfr O, toi (Muhammad)! Le revêtu d'un manteau!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxcvii{Lève-toi et avertis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxcviii{Et de ton Seigneur, célèbre la grandeur.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcdxcix{Et tes vêtements, purifie-les.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmd{Et de tout péché, écarte-toi.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdi{Et ne donne pas dans le but de recevoir davantage.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdii{Et pour ton Seigneur, endure.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdiii{Quand on sonnera du Clairon,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdiv{alors, ce jour-là sera un jour difficile,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdv{pas facile pour les mécréants.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdvi{Laisse-Moi avec celui que J'ai créé seul,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdvii{et à qui J'ai donné des biens étendus,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdviii{et des enfants qui lui tiennent toujours compagnie,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdix{pour qui aussi J'ai aplani toutes difficultés\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdx{Cependant, il convoite [de Moi] que Je lui donne davantage.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxi{Pas du tout! Car il reniait nos versets (le Coran) avec entêtement.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxii{Je vais le contraindre à gravir une pente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxiii{Il a réfléchi. Et il a décidé.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxiv{Qu'il périsse! Comme il a décidé!\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxv{Encore une fois, qu'il périsse; comme il a décidé!\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxvi{Ensuite, il a regardé.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxvii{Et il s'est renfrogné et a durci son visage.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxviii{Ensuite il a tourné le dos et s'est enflé d'orgueil\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxix{Puis il a dit: «Ceci (le Coran) n'est que magie apprise\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxx{ce n'est là que la parole d'un humain».\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxi{Je vais le brûler dans le Feu intense (Saqar).\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxii{Et qui te dira ce qu'est Saqar?\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxiii{Il ne laisse rien et n'épargne rien;\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxiv{Il brûle la peau et la noircit.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxv{Ils sont dix neuf à y veiller.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxvi{Nous n'avons assigné comme gardiens du Feu que des Anges. Cependant, Nous n'en avons fixé le nombre que pour éprouver les mécréants, et aussi afin que ceux à qui le Livre a été apporté soient convaincus, et que croisse la foi de ceux qui croient, et que ceux à qui le Livre a été apporté et les croyants n'aient point de doute; et pour que ceux qui ont au cœur quelque maladie ainsi que les mécréants disent: «Qu'a donc voulu Allah par cette parabole?» C'est ainsi qu'Allah égare qui Il veut et guide qui Il veut. Nul ne connaît les armées de ton Seigneur, à part Lui. Et ce n'est là qu'un rappel pour les humains.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxvii{Non!... Par la lune!\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxviii{Et par la nuit quand elle se retire!\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxix{Et par l'aurore quand elle se découvre!\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxx{[Saqar] est l'un des plus grands [malheurs]\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxi{un avertissement, pour les humains.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxii{Pour qui d'entre vous, veut avancer ou reculer.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxiii{Toute âme est l'otage de ce qu'elle a acquis.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxiv{Sauf les gens de la droite (les élus):\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxv{dans des Jardins, ils s'interrogeront\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxvi{au sujet des criminels:\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxvii{«Qu'est-ce qui vous a acheminés à Saqar?»\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxviii{Ils diront: «Nous n'étions pas de ceux qui faisaient la Salât,\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxxxix{et nous ne nourrissions pas le pauvre,\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxl{et nous nous associions à ceux qui tenaient des conversations futiles,\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxli{et nous traitions de mensonge le jour de la Rétribution,\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxlii{jusqu'à ce que nous vînt la vérité évidente [la mort]».\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxliii{Ne leur profitera point donc, l'intercession des intercesseurs.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxliv{Qu'ont-ils à se détourner du Rappel?\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxlv{Ils sont comme des onagres épouvantés,\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxlvi{s'enfuyant devant un lion.\qt@no{(51)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxlvii{Chacun d'eux voudrait plutôt qu'on lui apporte des feuilles tout étalées.\qt@no{(52)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxlviii{Ah! Non! C'est plutôt qu'ils ne craignent pas l'au-delà.\qt@no{(53)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxlix{Ah! Non! Ceci est vraiment un Rappel.\qt@no{(54)}}
+\qt@newcmd\qurantrans@fr@mmmmmdl{Quiconque veut, qu'il se le rappelle.\qt@no{(55)}}
+\qt@newcmd\qurantrans@fr@mmmmmdli{Mais ils ne se rappelleront que si Allah veut. C'est Lui qui est Le plus digne d'être craint; et c'est Lui qui détient le pardon.\qt@no{(56)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlii{\basmalahfr Non!... Je jure par le Jour de la Résurrection!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdliii{Mais non!, Je jure par l'âme qui ne cesse de se blâmer.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdliv{L'homme, pense-t-il que Nous ne réunirons jamais ses os?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlv{Mais si! Nous sommes Capable de remettre à leur place les extrémités de ses doigts.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlvi{L'homme voudrait plutôt continuer à vivre en libertin.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlvii{Il interroge: «A quand, le Jour de la Résurrection?»\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlviii{Lorsque la vue sera éblouie,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlix{et que la lune s'éclipsera,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlx{et que le soleil et la lune seront réunis,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxi{l'homme, ce jour-là, dira: «Où fuir?»\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxii{Non! Point de refuge!\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxiii{Vers ton Seigneur sera, ce jour-là, le retour.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxiv{L'homme sera informé ce jour-là de ce qu'il aura avancé et de ce qu'il aura remis à plus tard.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxv{Mais l'homme sera un témoin perspicace contre lui-même,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxvi{quand même il présenterait ses excuses.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxvii{Ne remue pas ta langue pour hâter sa récitation:\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxviii{Son rassemblement (dans ton cœur et sa fixation dans ta mémoire) Nous incombent, ainsi que la façon de le réciter.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxix{Quand donc Nous le récitons, suis sa récitation.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxx{A Nous, ensuite incombera son explication.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxi{Mais vous aimez plutôt [la vie] éphémère,\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxii{et vous délaissez l'au-delà.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxiii{Ce jour-là, il y aura des visages resplendissants\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxiv{qui regarderont leur Seigneur;\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxv{et il y aura ce jour-là, des visages assombris,\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxvi{qui s'attendent à subir une catastrophe.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxvii{Mais non! Quand [l'âme] en arrive aux clavicules\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxviii{et qu'on dit: «Qui est exorciseur?»\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxix{et qu'il [l'agonisant] est convaincu que c'est la séparation (la mort),\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxx{et que la jambe s'enlace à la jambe,\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxi{c'est vers ton Seigneur, ce jour-là que tu seras conduit.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxii{Mais il n'a ni cru, ni fait la Salât;\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxiii{par contre, il a démenti et tourné le dos,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxiv{puis il s'en est allé vers sa famille, marchant avec orgueil.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxv{«Malheur à toi, malheur!»\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxvi{Et encore malheur à toi, malheur!\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxvii{L'homme pense-t-il qu'on le laissera sans obligation à observer?\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxviii{N'était-il pas une goutte de sperme éjaculé?\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmdlxxxix{Et ensuite une adhérence Puis [Allah] l'a créée et formée harmonieusement;\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxc{puis en a fait alors les deux éléments de couple: le mâle et la femelle?\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxci{Celui-là [Allah] n'est-Il pas capable de faire revivre les morts?\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxcii{\basmalahfr S'est-il écoulé pour l'homme un laps de temps durant lequel il n'était même pas une chose mentionnable?\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxciii{En effet, Nous avons créé l'homme d'une goutte de sperme mélangé [aux composantes diverses] pour le mettre à l'épreuve. [C'est pourquoi] Nous l'avons fait entendant et voyant.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxciv{Nous l'avons guidé dans le chemin, - qu'il soit reconnaissant ou ingrat -\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxcv{Nous avons préparé pour les infidèles des chaînes, des carcans et une fournaise ardente.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxcvi{Les vertueux boiront d'une coupe dont le mélange sera de camphre,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxcvii{d'une source de laquelle boiront les serviteurs d'Allah et ils la feront jaillir en abondance.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxcviii{Ils accomplissent leurs vœux et ils redoutent un jour dont le mal s'étendra partout.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdxcix{et offrent la nourriture, malgré son amour, au pauvre, à l'orphelin et au prisonnier,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdc{(disant): «C'est pour le visage d'Allah que nous vous nourrissons: nous ne voulons de vous ni récompense ni gratitude.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdci{Nous redoutons, de notre Seigneur, un jour terrible et catastrophique».\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcii{Allah les protègera donc du mal de ce jour-là, et leur fera rencontrer la splendeur et la joie,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdciii{et les rétribuera pour ce qu'ils auront enduré, en leur donnant le Paradis et des [vêtements] de soie,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdciv{ils y seront accoudés sur des divans, n'y voyant ni soleil ni froid glacial.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcv{Ses ombrages les couvriront de près, et ses fruits inclinés bien bas [à portée de leurs mains].\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcvi{Et l'on fera circuler parmi eux des récipients d'argent et des coupes cristallines,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcvii{en cristal d'argent, dont le contenu a été savamment dosé.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcviii{Et là, ils seront abreuvés d'une coupe dont le mélange sera de gingembre,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcix{puisé là-dedans à une source qui s'appelle Salsabîl.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcx{Et parmi eux, circuleront des garçons éternellement jeunes. Quand tu les verras, tu les prendras pour des perles éparpillées.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxi{Et quand tu regarderas là-bas, tu verras un délice et un vaste royaume.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxii{Ils porteront des vêtements verts de satin et de brocart. Et ils seront parés de bracelets d'argent. Et leur Seigneur les abreuvera d'une boisson très pure.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxiii{Cela sera pour vous une récompense, et votre effort sera reconnu.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxiv{En vérité c'est Nous qui avons fait descendre sur toi le Coran graduellement.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxv{Endure donc ce que ton Seigneur a décrété, et n'obéis ni au pécheur, parmi eux, ni au grand mécréant.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxvi{Et invoque le nom de ton Seigneur, matin et après-midi;\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxvii{et prosterne-toi devant Lui une partie de la nuit; et glorifie-Le de longues [heures] pendant la nuit.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxviii{Ces gens-là aiment [la vie] éphémère (la vie sur terre) et laissent derrière eux un jour bien lourd [le Jour du Jugement].\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxix{C'est Nous qui les avons créés et avons fortifié leur constitution. Quand Nous voulons, cependant, Nous les remplaçons [facilement] par leurs semblables.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxx{Ceci est un rappel. Que celui qui veut prenne donc le chemin vers son Seigneur!\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxi{Cependant, vous ne saurez vouloir, à moins qu'Allah veuille. Et Allah est Omniscient et Sage.\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxii{Il fait entrer qui Il veut dans Sa miséricorde. Et quant aux injustes, Il leur a préparé un châtiment douloureux.\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxiii{\basmalahfr Par ceux qu'on envoie en rafales,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxiv{et qui soufflent en tempête!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxv{Et qui dispersent largement [dans toutes les directions].\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxvi{Par ceux qui séparent nettement (le bien et le mal),\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxvii{et lancent un rappel\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxviii{en guise d'excuse ou d'avertissement!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxix{Ce qui vous est promis est inéluctable.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxx{Quand donc les étoiles seront effacées,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxi{et que le ciel sera fendu,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxii{et que les montagnes seront pulvérisées,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxiii{et que le moment (pour la réunion) des Messagers a été fixé!...\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxiv{A quel jour tout cela a-t-il été renvoyé?\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxv{Au Jour de la Décision. [le Jugement]!\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxvi{Et qui te dira ce qu'est le Jour de la Décision?\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxvii{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxviii{N'avons-nous pas fait périr les premières [générations]?\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxxxix{Puis ne les avons-Nous pas fait suivre par les derniers?\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxl{C'est ainsi que Nous agissons avec les criminels.\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxli{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxlii{Ne vous avons-Nous pas créés d'une eau vile\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxliii{que Nous avons placée dans un reposoir sûr,\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxliv{pour une durée connue?\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxlv{Nous l'avons décrété ainsi et Nous décrétons [tout] de façon parfaite.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxlvi{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxlvii{N'avons-Nous pas fait de la terre un endroit les contenant tous,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxlviii{les vivants ainsi que les morts?\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxlix{Et n'y avons-Nous pas placé fermement de hautes montagnes? Et ne vous avons-Nous pas abreuvés d'eau douce?\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcl{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcli{Allez vers ce que vous traitiez alors de mensonge!\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclii{Allez vers une ombre [fumée de l'Enfer] à trois branches;\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcliii{qui n'est ni ombreuse ni capable de protéger contre la flamme;\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcliv{car [le feu] jette des étincelles volumineuses comme des châteaux,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclv{et qu'on prendrait pour des chameaux jaunes.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclvi{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclvii{Ce sera le jour où ils ne [peuvent] pas parler,\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclviii{et point ne leur sera donné permission de s'excuser.\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclix{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclx{C'est le Jour de la Décision [Jugement], où nous vous réunirons ainsi que les anciens.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxi{Si vous disposez d'une ruse, rusez donc contre Moi.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxii{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxiii{Les pieux seront parmi des ombrages et des sources\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxiv{De même que des fruits selon leurs désirs.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxv{«Mangez et buvez agréablement, pour ce que vous faisiez».\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxvi{C'est ainsi que Nous récompensons les bienfaisants.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxvii{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxviii{«Mangez et jouissez un peu (ici-bas); vous êtes certes des criminels».\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxix{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(47)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxx{Et quand on leur dit: «Inclinez-vous, ils ne s'inclinent pas.\qt@no{(48)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxi{Malheur, ce jour-là, à ceux qui criaient au mensonge.\qt@no{(49)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxii{Après cela, en quelle parole croiront-ils donc?\qt@no{(50)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxiii{\basmalahfr Sur quoi s'interrogent-ils mutuellement?\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxiv{Sur la grande nouvelle,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxv{à propos de laquelle ils divergent.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxvi{Eh bien non! Ils sauront bientôt.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxvii{Encore une fois, non! Ils sauront bientôt.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxviii{N'avons-Nous pas fait de la terre une couche?\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxix{et (placé) les montagnes comme des piquets?\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxx{Nous vous avons créés en couples,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxi{et désigné votre sommeil pour votre repos,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxii{et fait de la nuit un vêtement,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxiii{et assigné le jour pour les affaires de la vie,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxiv{et construit au-dessus de vous sept (cieux) renforcés,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxv{et [y] avons placé une lampe (le soleil) très ardente,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxvi{et fait descendre des nuées une eau abondante\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxvii{pour faire pousser par elle grains et plantes\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxviii{et jardins luxuriants.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdclxxxix{Le Jour de la Décision [du Jugement] a son terme fixé.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxc{Le jour où l'on soufflera dans la Trompe, vous viendrez par troupes,\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxci{et le ciel sera ouvert et [présentera] des portes,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxcii{et les montagnes seront mises en marche et deviendront un mirage.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxciii{L'Enfer demeure aux aguets,\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxciv{refuge pour les transgresseurs.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxcv{Ils y demeureront pendant des siècles successifs.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxcvi{Ils n'y goûteront ni fraîcheur ni breuvage,\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxcvii{Hormis une eau bouillante et un pus\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxcviii{comme rétribution équitable.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcxcix{Car ils ne s'attendaient pas à rendre compte,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcc{et traitaient de mensonges, continuellement, Nos versets,\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcci{alors que Nous avons dénombré toutes choses en écrit.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccii{Goûtez-donc. Nous n'augmenterons pour vous que le châtiment!\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcciii{Pour les pieux ce sera une réussite:\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcciv{jardins et vignes,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccv{et des (belles) aux seins arrondis, d'une égale jeunesse,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccvi{et coupes débordantes.\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccvii{Ils n'y entendront ni futilités ni mensonges.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccviii{A titre de récompense de ton Seigneur et à titre de don abondant\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccix{du Seigneur des cieux et de la terre et de ce qui existe entre eux, le Tout Miséricordieux; ils n'osent nullement Lui adresser la parole.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccx{Le jour où l'Esprit et les Anges se dresseront en rangs, nul ne saura parler, sauf celui à qui le Tout Miséricordieux aura accordé la permission, et qui dira la vérité.\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxi{Ce jour-là est inéluctable. Que celui qui veut prenne donc refuge auprès de son Seigneur.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxii{Nous vous avons avertis d'un châtiment bien proche, le jour où l'homme verra ce que ses deux mains ont préparé; et l'infidèle dira: «Hélas pour moi! Comme j'aurais aimé n'être que poussière».\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxiii{\basmalahfr Par ceux qui arrachent violemment!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxiv{Et par ceux qui recueillent avec douceur!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxv{Et par ceux qui voguent librement,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxvi{puis s'élancent à toute vitesse,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxvii{et règlent les affaires!\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxviii{Le jour où [la terre] tremblera [au premier son du clairon]\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxix{immédiatement suivi du deuxième.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxx{Ce jour-là, il y aura des cœurs qui seront agités d'effroi,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxi{et leurs regards se baisseront.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxii{Ils disent: «Quoi! Serons-nous ramenés à notre vie première,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxiii{quand nous serons ossements pourris?»\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxiv{Ils disent: «ce sera alors un retour ruineux!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxv{Il n'y aura qu'une sommation,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxvi{et voilà qu'ils seront sur la terre (ressuscités).\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxvii{Le récit de Moïse t'est-il parvenu?\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxviii{Quand son Seigneur l'appela, dans Towâ, la vallée sanctifiée:\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxix{«Va vers Pharaon. Vraiment, il s'est rebellé!»\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxx{Puis dis-lui: «Voudrais-tu te purifier?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxi{et que je te guide vers ton Seigneur afin que tu Le craignes?»\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxii{Il lui fit voir le très grand miracle.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxiii{Mais il le qualifia de mensonge et désobéit;\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxiv{Ensuite, il tourna le dos, s'en alla précipitamment,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxv{rassembla [les gens] et leur fit une proclamation,\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxvi{et dit: «C'est moi votre Seigneur, le très haut».\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxvii{Alors Allah le saisit de la punition exemplaire de l'au-delà et de celle d'ici-bas.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxviii{Il y a certes là un sujet de réflexion pour celui qui craint.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxxxix{Etes-vous plus durs à créer? ou le ciel, qu'Il a pourtant construit?\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxl{Il a élevé bien haut sa voûte, puis l'a parfaitement ordonné;\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxli{Il a assombri sa nuit et fait luire son jour.\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxlii{Et quant à la terre, après cela, Il l'a étendue:\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxliii{Il a fait sortir d'elle son eau et son pâturage,\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxliv{et quant aux montagnes, Il les a ancrées,\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxlv{pour votre jouissance, vous et vos bestiaux.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxlvi{Puis quand viendra le grand cataclysme,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxlvii{le jour où l'homme se rappellera à quoi il s'est efforcé,\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxlviii{l'Enfer sera pleinement visible à celui qui regardera...\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxlix{Quant à celui qui aura dépassé les limites\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccl{et aura préféré la vie présente,\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccli{alors, l'Enfer sera son refuge...\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclii{Et pour celui qui aura redouté de comparaître devant son Seigneur, et préservé son âme de la passion,\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccliii{le Paradis sera alors son refuge.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccliv{Ils t'interrogent au sujet de l'Heure: «Quand va-t-elle jeter l'ancre?»\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclv{Quelle [science] en as-tu pour le leur dire?\qt@no{(43)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclvi{Son terme n'est connu que de ton Seigneur.\qt@no{(44)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclvii{Tu n'es que l'avertisseur de celui qui la redoute.\qt@no{(45)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclviii{Le jour où ils la verront, il leur semblera n'avoir demeuré qu'un soir ou un matin.\qt@no{(46)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclix{\basmalahfr Il s'est renfrogné et il s'est détourné\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclx{parce que l'aveugle est venu à lui.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxi{Qui te dit: peut-être [cherche]-t-il à se purifier?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxii{ou à se rappeler en sorte que le rappel lui profite?\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxiii{Quant à celui qui se complaît dans sa suffisance (pour sa richesse)\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxiv{tu vas avec empressement à sa rencontre.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxv{Or, que t'importe qu'il ne se purifie pas».\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxvi{Et quant à celui qui vient à toi avec empressement\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxvii{tout en ayant la crainte,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxviii{tu ne t'en soucies pas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxix{N'agis plus ainsi! Vraiment ceci est un rappel -\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxx{quiconque veut, donc, s'en rappelle -\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxi{consigné dans des feuilles honorées,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxii{élevées, purifiées,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxiii{entre les mains d'ambassadeurs\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxiv{nobles, obéissants.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxv{Que périsse l'homme! Qu'il est ingrat!\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxvi{De quoi [Allah] l'a-t-Il créé?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxvii{D'une goutte de sperme, Il le crée et détermine (son destin):\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxviii{puis Il lui facilite le chemin;\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxix{puis Il lui donne la mort et le met au tombeau;\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxx{puis Il le ressuscitera quand Il voudra.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxi{Eh bien non! [L'homme] n'accomplit pas ce qu'Il lui commande.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxii{Que l'homme considère donc sa nourriture:\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxiii{C'est Nous qui versons l'eau abondante,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxiv{puis Nous fendons la terre par fissures\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxv{et y faisons pousser grains,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxvi{vignobles et légumes,\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxvii{oliviers et palmiers,\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxviii{jardins touffus,\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcclxxxix{fruits et herbages,\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxc{pour votre jouissance vous et vos bestiaux.\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxci{Puis quand viendra le Fracas,\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxcii{le jour où l'homme s'enfuira de son frère,\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxciii{de sa mère, de son père,\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxciv{de sa compagne et de ses enfants,\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxcv{car chacun d'eux, ce jour-là, aura son propre cas pour l'occuper.\qt@no{(37)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxcvi{Ce jour-là, il y aura des visages rayonnants,\qt@no{(38)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxcvii{riants et réjouis.\qt@no{(39)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxcviii{De même qu'il y aura, ce jour-là, des visages couverts de poussière,\qt@no{(40)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccxcix{recouverts de ténèbres.\qt@no{(41)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccc{Voilà les infidèles, les libertins.\qt@no{(42)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccci{\basmalahfr Quand le soleil sera obscurci,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccii{et que les étoiles deviendront ternes,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccciii{et les montagnes mises en marche,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccciv{et les chamelles à terme, négligées,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccv{et les bêtes farouches, rassemblées,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccvi{et les mers allumées,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccvii{et les âmes accouplées\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccviii{et qu'on demandera à la fillette enterrée vivante\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccix{pour quel péché elle a été tuée.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccx{Et quand les feuilles seront déployées,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxi{et le ciel écorché\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxii{et la fournaise attisée,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxiii{et le Paradis rapproché,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxiv{chaque âme saura ce qu'elle a présenté.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxv{Non!... Je jure par les planètes qui gravitent\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxvi{qui courent et disparaissent\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxvii{par la nuit quand elle survient!\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxviii{et par l'aube quand elle exhale son souffle!\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxix{Ceci [le Coran] est la parole d'un noble Messager,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxx{doué d'une grande force, et ayant un rang élevé auprès du Maître du Trône,\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxi{obéi, là-haut, et digne de confiance.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxii{Votre compagnon (Muhammad) n'est nullement fou;\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxiii{il l'a effectivement vu (Gabriel), au clair horizon\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxiv{et il ne garde pas avarement pour lui-même ce qui lui a été révélé.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxv{Et ceci [le Coran] n'est point la parole d'un diable banni.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxvi{Où allez-vous donc?\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxvii{Ceci n'est qu'un rappel pour l'univers,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxviii{pour celui d'entre vous qui veut suivre le chemin droit.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxix{Mais vous ne pouvez vouloir, que si Allah veut, [Lui], le Seigneur de l'Univers ;\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxx{\basmalahfr Quand le ciel se rompra,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxi{et que les étoiles se disperseront,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxii{et que les mers confondront leurs eaux,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxiii{et que les tombeaux seront bouleversés,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxiv{toute âme saura alors ce qu'elle a accompli et ce qu'elle a remis de faire à plus tard.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxv{O homme! Qu'est-ce qui t'a trompé au sujet de ton Seigneur, le Noble,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxvi{qui t'a créé, puis modelé et constitué harmonieusement?\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxvii{Il t'a façonné dans la forme qu'Il a voulue.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxviii{Non...! [malgré tout] vous traitez la Rétribution de mensonge;\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxxxix{alors que veillent sur vous des gardiens,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxl{de nobles scribes,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxli{qui savent ce que vous faites.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxlii{Les bons seront, certes, dans un [jardin] de délice,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxliii{et les libertins seront, certes, dans une fournaise\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxliv{où ils brûleront, le jour de la Rétribution\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxlv{incapables de s'en échapper.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxlvi{Et qui te dira ce qu'est le jour de la Rétribution?\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxlvii{Encore une fois, qui te dira ce qu'est le jour de la Rétribution?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxlviii{Le jour où aucune âme ne pourra rien en faveur d'une autre âme. Et ce jour-là, le commandement sera à Allah.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxlix{\basmalahfr Malheur aux fraudeurs\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccl{qui, lorsqu'ils font mesurer pour eux-mêmes exigent la pleine mesure,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccli{et qui lorsqu'eux-mêmes mesurent ou pèsent pour les autres, [leur] causent perte.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclii{Ceux-là ne pensent-ils pas qu'ils seront ressuscités,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccliii{en un jour terrible,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccliv{le jour où les gens se tiendront debout devant le Seigneur de l'Univers?\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclv{Non...! Mais en vérité le livre des libertins sera dans le Sijjîn -\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclvi{et qui te dira ce qu'est le Sijjîn? -\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclvii{Un livre déjà cacheté (achevé).\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclviii{Malheur, ce jour-là, aux négateurs,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclix{qui démentent le jour de la Rétribution.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclx{Or, ne le dément que tout transgresseur, pécheur:\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxi{qui, lorsque Nos versets lui sont récités, dit: «[Ce sont] des contes d'anciens!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxii{Pas du tout, mais ce qu'ils ont accompli couvre leurs cœurs.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxiii{Qu'ils prennent garde! En vérité ce jour-là un voile les empêchera de voir leur Seigneur,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxiv{ensuite, ils brûleront certes, dans la Fournaise;\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxv{on [leur] dira alors: «Voilà ce que vous traitiez de mensonge!»\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxvi{Qu'ils prennent garde! Le livre des bons sera dans l'Illiyûn -\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxvii{et qui te dira ce qu'est l'Illiyûn? -\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxviii{un livre cacheté!\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxix{Les rapprochés [d'Allah: les Anges] en témoignent.\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxx{Les bons seront dans [un Jardin] de délice,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxi{sur les divans, ils regardent.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxii{Tu reconnaîtras sur leurs visages, l'éclat de la félicité.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxiii{On leur sert à boire un nectar pur, cacheté,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxiv{laissant un arrière-goût de musc. Que ceux qui la convoitent entrent en compétition [pour l'acquérir]\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxv{Il est mélangé à la boisson de Tasnîm,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxvi{source dont les rapprochés boivent.\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxvii{Les criminels riaient de ceux qui croyaient,\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxviii{et, passant près d'eux, ils se faisaient des œillades,\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxix{et, retournant dans leurs familles, ils retournaient en plaisantant,\qt@no{(31)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxx{et les voyant, ils disaient: «Ce sont vraiment ceux-là les égarés».\qt@no{(32)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxi{Or, ils n'ont pas été envoyés pour être leurs gardiens.\qt@no{(33)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxii{Aujourd'hui, donc, ce sont ceux qui ont cru qui rient des infidèles\qt@no{(34)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxiii{sur les divans, ils regardent.\qt@no{(35)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxiv{Est-ce que les infidèles ont eu la récompense de ce qu'ils faisaient?\qt@no{(36)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxv{\basmalahfr Quand le ciel se déchirera\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxvi{et obéira à son Seigneur - et fera ce qu'il doit faire -\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxvii{et que la terre sera nivelée,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxviii{et qu'elle rejettera ce qui est en son sein (les morts) et se videra,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmdccclxxxix{et qu'elle obéira à son Seigneur - et fera ce qu'elle doit faire -\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxc{O homme! Toi qui t'efforces vers ton Seigneur sans relâche, tu Le rencontreras alors.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxci{Celui qui recevra son livre en sa main droite,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxcii{sera soumis à un jugement facile,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxciii{et retournera réjoui auprès de sa famille\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxciv{Quant à celui qui recevra son livre derrière son dos,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxcv{il invoquera la destruction sur lui-même,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxcvi{et il brûlera dans un feu ardent.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxcvii{Car il était tout joyeux parmi les siens,\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxcviii{et il pensait que jamais il ne ressusciterait\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmdcccxcix{Mais si! Certes, son Seigneur l'observait parfaitement.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcm{Non!... Je jure par le crépuscule,\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmi{et par la nuit et ce qu'elle enveloppe,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmii{et par la lune quand elle devient pleine lune!\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmiii{Vous passerez, certes, par des états successifs!\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmiv{Qu'ont-ils à ne pas croire?\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmv{et à ne pas se prosterner quand le Coran leur est lu?\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmvi{Mais ceux qui ne croient pas, le traitent plutôt de mensonge.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmvii{Or, Allah sait bien ce qu'ils dissimulent.\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmviii{Annonce-leur donc un châtiment douloureux.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmix{Sauf ceux qui croient et accomplissent les bonnes œuvres: à eux une récompense jamais interrompue.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmx{\basmalahfr Par le ciel aux constellations!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxi{et par le jour promis!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxii{et par le témoin et ce dont on témoigne!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxiii{Périssent les gens de l'Uhdûd,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxiv{par le feu plein de combustible,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxv{cependant qu'ils étaient assis tout autour,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxvi{ils étaient ainsi témoins de ce qu'ils faisaient des croyants,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxvii{à qui ils ne leur reprochaient que d'avoir cru en Allah, le Puissant, le Digne de louange,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxviii{Auquel appartient la royauté des cieux et de la terre. Allah est témoin de toute chose.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxix{Ceux qui font subir des épreuves aux croyants et aux croyantes, puis ne se repentent pas, auront le châtiment de l'Enfer et le supplice du feu.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxx{Ceux qui croient et accomplissent les bonnes œuvres auront des Jardins sous lesquels coulent les ruisseaux. Cela est le grand succès.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxi{La riposte de ton Seigneur est redoutable.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxii{C'est Lui, certes, qui commence (la création) et la refait.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxiii{Et c'est Lui le Pardonneur, le Tout-Affectueux,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxiv{Le Maître du Trône, le Tout-Glorieux,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxv{Il réalise parfaitement tout ce qu'Il veut.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxvi{T'est-il parvenu le récit des armées,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxvii{de Pharaon, et de Thamûd?\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxviii{Mais ceux qui ne croient pas persistent à démentir,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxix{alors qu'Allah, derrière eux, les cerne de toutes parts.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxx{Mais c'est plutôt un Coran glorifié\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxi{préservé sur une Tablette (auprès d'Allah).\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxii{\basmalahfr Par le ciel et par l'astre nocturne\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxiii{Et qui te dira ce qu'est l'astre nocturne?\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxiv{C'est l'étoile vivement brillante.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxv{Il n'est pas d'âme qui n'ait sur elle un gardien.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxvi{Que l'homme considère donc de quoi il a été créé.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxvii{Il a été créé d'une giclée d'eau\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxviii{sortie d'entre les lombes et les côtes.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxxxix{Allah est certes capable de le ressusciter.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxl{Le jour où les cœurs dévoileront leurs secrets,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxli{Il n'aura alors ni force ni secoureur.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxlii{Par le ciel qui fait revenir la pluie!\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxliii{et par la terre qui se fend!\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxliv{Ceci [le Coran] est certes, une parole décisive [qui tranche entre le vrai et le faux],\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxlv{et non point une plaisanterie frivole!\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxlvi{Ils se servent d'une ruse,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxlvii{et Moi aussi Je me sers de Mon plan.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxlviii{Accorde (ô Prophète) donc un délai aux infidèles: accorde-leur un court délai.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxlix{\basmalahfr Glorifie le nom de ton Seigneur, le Très Haut,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcml{Celui Qui a créé et agencé harmonieusement,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmli{qui a décrété et guidé,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlii{et qui a fait pousser le pâturage,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmliii{et en a fait ensuite un foin sombre.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmliv{Nous te ferons réciter (le Coran), de sorte que tu n'oublieras\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlv{que ce qu'Allah veut. Car, Il connaît ce qui paraît au grand jour ainsi que ce qui est caché.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlvi{Nous te mettrons sur la voie la plus facile.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlvii{Rappelle, donc, où le Rappel doit être utile.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlviii{Quiconque craint (Allah) s'[en] rappellera,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlix{et s'en écartera le grand malheureux,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlx{qui brûlera dans le plus grand Feu,\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxi{où il ne mourra ni ne vivra.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxii{Réussit, certes, celui qui se purifie,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxiii{et se rappelle le nom de son Seigneur, puis célèbre la Salât.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxiv{Mais, vous préférez plutôt la vie présente,\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxv{alors que l'au-delà est meilleur et plus durable.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxvi{Ceci se trouve, certes, dans les Feuilles anciennes,\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxvii{les Feuilles d'Abraham et de Moïse.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxviii{\basmalahfr T'est-il parvenu le récit de l'enveloppante?\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxix{Ce jour-là, il y aura des visages humiliés,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxx{préoccupés, harassés.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxi{Ils brûleront dans un Feu ardent,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxii{et seront abreuvés d'une source bouillante.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxiii{Il n'y aura pour eux d'autre nourriture que des plantes épineuses [darî'],\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxiv{qui n'engraisse, ni n'apaise la faim.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxv{Ce jour-là, il y aura des visages épanouis,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxvi{contents de leurs efforts,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxvii{dans un haut Jardin,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxviii{où ils n'entendent aucune futilité.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxix{Là, il y aura une source coulante.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxx{Là, des divans élevés\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxi{et des coupes posées\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxii{et des coussins rangés\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxiii{et des tapis étalés.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxiv{Ne considèrent-ils donc pas les chameaux, comment ils ont été créés,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxv{et le ciel comment il est élevé,\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxvi{et les montagnes comment elles sont dressées\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxvii{et la terre comment elle est nivelée?\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxviii{Eh bien, rappelle! Tu n'es qu'un rappeleur,\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmlxxxix{et tu n'es pas un dominateur sur eux.\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxc{Sauf celui qui tourne le dos et ne croit pas,\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxci{alors Allah le châtiera du plus grand châtiment.\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxcii{Vers Nous est leur retour.\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxciii{Ensuite, c'est à Nous de leur demander compte.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxciv{\basmalahfr Par l'Aube!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxcv{Et par les dix nuits!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxcvi{Par le pair et l'impair!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxcvii{Et par la nuit quand elle s'écoule!\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxcviii{N'est-ce pas là un serment, pour un doué d'intelligence?\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmcmxcix{N'as-tu pas vu comment ton Seigneur a agi avec les 'Aad\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmm{[avec] Iram, [la cité] à la colonne remarquable,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmi{dont jamais pareille ne fut construite parmi les villes?\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmii{et avec les Thamûd qui taillaient le rocher dans la vallée?\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmiii{ainsi qu'avec Pharaon, l'homme aux épieux?\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmmiv{Tous, étaient des gens qui transgressaient dans [leurs] pays,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmmv{et y avaient commis beaucoup de désordre.\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmmvi{Donc, ton Seigneur déversa sur eux un fouet du châtiment.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmmvii{Car ton Seigneur demeure aux aguets.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmmviii{Quant à l'homme, lorsque son Seigneur l'éprouve en l'honorant et en le comblant de bienfaits, il dit: «Mon Seigneur m'a honoré».\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmmix{Mais par contre, quand Il l'éprouve en lui restreignant sa subsistance, il dit: «Mon Seigneur m'a avili».\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmmx{Mais non! C'est vous plutôt, qui n'êtes pas généreux envers les orphelins;\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxi{qui ne vous incitez pas mutuellement à nourrir le pauvre,\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxii{qui dévorez l'héritage avec une avidité vorace,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxiii{et aimez les richesses d'un amour sans bornes.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxiv{Prenez garde! Quand la terre sera complètement pulvérisée,\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxv{et que ton Seigneur viendra ainsi que les Anges, rang par rang,\qt@no{(22)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxvi{et que ce jour-là, on amènera l'Enfer; ce jour-là, l'homme se rappellera. Mais à quoi lui servira de se souvenir?\qt@no{(23)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxvii{Il dira: «Hélas! Que n'ai-je fait du bien pour ma vie future!\qt@no{(24)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxviii{Ce jour-là donc, nul ne saura châtier comme Lui châtie,\qt@no{(25)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxix{et nul ne saura garrotter comme Lui garrotte.\qt@no{(26)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxx{«O toi, âme apaisée,\qt@no{(27)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxi{retourne vers ton Seigneur, satisfaite et agréée;\qt@no{(28)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxii{entre donc parmi Mes serviteurs,\qt@no{(29)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxiii{et entre dans Mon Paradis».\qt@no{(30)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxiv{\basmalahfr Non!... Je jure par cette Cité!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxv{et toi, tu es un résident dans cette cité -\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxvi{Et par le père et ce qu'il engendre!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxvii{Nous avons, certes, créé l'homme pour une vie de lutte.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxviii{Pense-t-il que personne ne pourra rien contre lui?\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxix{Il dit: «J'ai gaspillé beaucoup de biens».\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxx{Pense-t-il que nul ne l'a vu?\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxi{Ne lui avons Nous pas assigné deux yeux,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxii{et une langue et deux lèvres?\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxiii{Ne l'avons-Nous pas guidé aux deux voies.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxiv{Or, il ne s'engage pas dans la voie difficile!\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxv{Et qui te dira ce qu'est la voie difficile?\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxvi{C'est délier un joug [affranchir un esclave],\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxvii{ou nourrir, en un jour de famine,\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxviii{un orphelin proche parent\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxxxix{ou un pauvre dans le dénuement.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxl{Et c'est être, en outre, de ceux qui croient et s'enjoignent mutuellement l'endurance, et s'enjoignent mutuellement la miséricorde.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxli{Ceux-là sont les gens de la droite;\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxlii{alors que ceux qui ne croient pas en Nos versets sont les gens de la gauche.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxliii{Le Feu se refermera sur eux.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxliv{\basmalahfr Par le soleil et par sa clarté!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxlv{Et par la lune quand elle le suit!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxlvi{Et par le jour quand il l'éclaire!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxlvii{Et par la nuit quand elle l'enveloppe!\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxlviii{Et par le ciel et Celui qui l'a construit!\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxlix{Et par la terre et Celui qui l'a étendue!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmml{Et par l'âme et Celui qui l'a harmonieusement façonnée;\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmli{et lui a alors inspiré son immoralité, de même que sa piété!\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlii{A réussi, certes, celui qui la purifie.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmliii{Et est perdu, certes, celui qui la corrompt.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmmliv{Les Thamûd, par leur transgression, ont crié au mensonge,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlv{lorsque le plus misérable d'entre eux se leva (pour tuer la chamelle)\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlvi{Le Messager d'Allah leur avait dit: «La chamelle d'Allah! Laissez-la boire.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlvii{Mais, ils le traitèrent de menteur, et la tuèrent. Leur Seigneur les détruisit donc, pour leur péché et étendit Son châtiment sur tous.\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlviii{Et Allah n'a aucune crainte des conséquences.\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlix{\basmalahfr Par la nuit quand elle enveloppe tout!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlx{Par le jour quand il éclaire!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxi{Et par ce qu'Il a créé, mâle et femelle!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxii{Vos efforts sont divergents.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxiii{Celui qui donne et craint (Allah)\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxiv{et déclare véridique la plus belle récompense\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxv{Nous lui faciliterons la voie au plus grand bonheur.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxvi{Et quant à celui qui est avare, se dispense (de l'adoration d'Allah),\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxvii{et traite de mensonge la plus belle récompense,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxviii{Nous lui faciliterons la voie à la plus grande difficulté,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxix{et à rien ne lui serviront ses richesses quand il sera jeté (au Feu).\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxx{C'est à Nous, certes, de guider;\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxi{à Nous appartient, certes, la vie dernière et la vie présente.\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxii{Je vous ai donc avertis d'un Feu qui flambe\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxiii{où ne brûlera que le damné,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxiv{qui dément et tourne le dos;\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxv{alors qu'en sera écarté le pieux,\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxvi{qui donne ses biens pour se purifier\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxvii{et auprès de qui personne ne profite d'un bienfait intéressé,\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxviii{mais seulement pour la recherche de La Face de son Seigneur le Très Haut.\qt@no{(20)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxix{Et certes, il sera bientôt satisfait!\qt@no{(21)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxx{\basmalahfr Par le Jour Montant!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxi{Et par la nuit quand elle couvre tout!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxii{Ton Seigneur ne t'a ni abandonné, ni détesté.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxiii{La vie dernière t'est, certes, meilleure que la vie présente.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxiv{Ton Seigneur t'accordera certes [Ses faveurs], et alors tu seras satisfait.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxv{Ne t'a-t-Il pas trouvé orphelin? Alors Il t'a accueilli!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxvi{Ne t'a-t-Il pas trouvé égaré? Alors Il t'a guidé.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxvii{Ne t'a-t-Il pas trouvé pauvre? Alors Il t'a enrichi.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxviii{Quant à l'orphelin, donc, ne le maltraite pas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmlxxxix{Quant au demandeur, ne le repousse pas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxc{Et quant au bienfait de ton Seigneur, proclame-le.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxci{\basmalahfr N'avons-Nous pas ouvert pour toi ta poitrine?\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxcii{Et ne t'avons-Nous pas déchargé du fardeau\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxciii{qui accablait ton dos?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxciv{Et exalté pour toi ta renommée?\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxcv{A côté de la difficulté est, certes, une facilité!\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxcvi{A côté de la difficulté est, certes, une facilité!\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxcvii{Quand tu te libères, donc, lève-toi,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxcviii{et à ton Seigneur aspire.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmxcix{\basmalahfr Par le figuier et l'olivier!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmc{Et par le Mont Sînîn!\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmci{Et par cette Cité sûre!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcii{Nous avons certes créé l'homme dans la forme la plus parfaite.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmciii{Ensuite, Nous l'avons ramené au niveau le plus bas,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmciv{sauf ceux qui croient et accomplissent les bonnes œuvres: ceux-là auront une récompense jamais interrompue.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcv{Après cela, qu'est-ce qui te fait traiter la rétribution de mensonge?\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcvi{Allah n'est-Il pas le plus sage des Juges?\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcvii{\basmalahfr Lis, au nom de ton Seigneur qui a créé,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcviii{qui a créé l'homme d'une adhérence.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcix{Lis! Ton Seigneur est le Très Noble,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcx{qui a enseigné par la plume [le calame],\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxi{a enseigné à l'homme ce qu'il ne savait pas.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxii{Prenez-garde! Vraiment l'homme devient rebelle,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxiii{dès qu'il estime qu'il peut se suffire à lui-même (à cause de sa richesse).\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxiv{Mais, c'est vers ton Seigneur qu'est le retour.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxv{As-tu vu celui qui interdit\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxvi{à un serviteur d'Allah [Muhammad] de célébrer la Salât?\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxvii{Vois-tu s'il est sur la bonne voie,\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxviii{ou s'il ordonne la piété?\qt@no{(12)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxix{Vois-tu s'il dément et tourne le dos?\qt@no{(13)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxx{Ne sait-il pas que vraiment Allah voit?\qt@no{(14)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxi{Mais non! S'il ne cesse pas, Nous le saisirons certes, par le toupet,\qt@no{(15)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxii{le toupet d'un menteur, d'un pécheur.\qt@no{(16)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxiii{Qu'il appelle donc son assemblée.\qt@no{(17)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxiv{Nous appellerons les gardiens [de l'Enfer].\qt@no{(18)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxv{Non! Ne lui obéis pas; mais prosterne-toi et rapproche-toi.\qt@no{(19)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxvi{\basmalahfr Nous l'avons certes, fait descendre (le Coran) pendant la nuit d'Al-Qadr.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxvii{Et qui te dira ce qu'est la nuit d'Al-Qadr?\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxviii{La nuit d'Al-Qadr est meilleure que mille mois.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxix{Durant celle-ci descendent les Anges ainsi que l'Esprit, par permission de leur Seigneur pour tout ordre.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxx{Elle est paix et salut jusqu'à l'apparition de l'aube.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxi{\basmalahfr Les infidèles parmi les gens du Livre, ainsi que les Associateurs, ne cesseront pas de mécroire jusqu'à ce que leur vienne la Preuve évidente:\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxii{un Messager, de la part d'Allah, qui leur récite des feuilles purifiées,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxiii{dans lesquelles se trouvent des prescriptions d'une rectitude parfaite.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxiv{Et ceux à qui le Livre a été donné ne se sont divisés qu'après que la preuve leur fut venue.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxv{Il ne leur a été commandé, cependant, que d'adorer Allah, Lui vouant un culte exclusif, d'accomplir la Salât et d'acquitter la Zakât. Et voilà la religion de droiture.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxvi{Les infidèles parmi les gens du Livre, ainsi que les Associateurs iront au feu de l'Enfer, pour y demeurer éternellement. De toute la création, ce sont eux les pires.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxvii{Quant à ceux qui croient et accomplissent les bonnes œuvres, ce sont les meilleurs de toute la création.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxviii{Leur récompense auprès d'Allah sera les Jardins de séjour, sous lesquels coulent les ruisseaux, pour y demeurer éternellement. Allah les agrée et ils L'agréent. Telle sera [la récompense] de celui qui craint son Seigneur.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxxxix{\basmalahfr Quand la terre tremblera d'un violent tremblement,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxl{et que la terre fera sortir ses fardeaux,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxli{et que l'homme dira: «Qu'a-t-elle?»\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxlii{ce jour-là, elle contera son histoire,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxliii{selon ce que ton Seigneur lui aura révélé [ordonné].\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxliv{Ce jour-là, les gens sortiront séparément pour que leur soient montrées leurs œuvres.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxlv{Quiconque fait un bien fût-ce du poids d'un atome, le verra,\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxlvi{et quiconque fait un mal fût-ce du poids d'un atome, le verra.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxlvii{\basmalahfr Par les coursiers qui halètent,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxlviii{qui font jaillir des étincelles,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxlix{qui attaquent au matin,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcl{et font ainsi voler la poussière,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcli{et pénètrent au centre de la troupe ennemie.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclii{L'homme est, certes, ingrat envers son Seigneur;\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcliii{et pourtant, il est certes, témoin de cela;\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcliv{et pour l'amour des richesses il est certes ardent.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclv{Ne sait-il donc pas que lorsque ce qui est dans les tombes sera bouleversé,\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclvi{et que sera dévoilé ce qui est dans les poitrines,\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclvii{ce jour-là, certes, leur Seigneur sera Parfaitement Connaisseur d'eux?\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclviii{\basmalahfr Le fracas!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclix{Qu'est-ce que le fracas?\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclx{Et qui te dira ce qu'est le fracas?\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxi{C'est le jour où les gens seront comme des papillons éparpillés,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxii{et les montagnes comme de la laine cardée;\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxiii{quant à celui dont la balance sera lourde\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxiv{il sera dans une vie agréable;\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxv{et quant à celui dont la balance sera légère,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxvi{sa mère [destination] est un abîme très profond.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxvii{Et qui te dira ce que c'est?\qt@no{(10)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxviii{C'est un Feu ardent.\qt@no{(11)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxix{\basmalahfr La course aux richesses vous distrait,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxx{jusqu'à ce que vous visitiez les tombes.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxi{Mais non! Vous saurez bientôt!\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxii{(Encore une fois)! Vous saurez bientôt!\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxiii{Sûrement! Si vous saviez de science certaine.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxiv{Vous verrez, certes, la Fournaise.\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxv{Puis, vous la verrez certes, avec l'œil de la certitude.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxvi{Puis, assurément, vous serez interrogés, ce jour-là, sur les délices.\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxvii{\basmalahfr Par le Temps!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxviii{L'homme est certes, en perdition,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxix{sauf ceux qui croient et accomplissent les bonnes œuvres, s'enjoignent mutuellement la vérité et s'enjoignent mutuellement l'endurance.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxx{\basmalahfr Malheur à tout calomniateur diffamateur,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxi{qui amasse une fortune et la compte,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxii{pensant que sa fortune l'immortalisera.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxiii{Mais non! Il sera certes, jeté dans la Hutamah.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxiv{Et qui te dira ce qu'est la Hutamah?\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxv{Le Feu attisé d'Allah\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxvi{qui monte jusqu'aux cœurs.\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxvii{Il se refermera sur eux,\qt@no{(8)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxviii{en colonnes (de flammes) étendues.\qt@no{(9)}}
+\qt@newcmd\qurantrans@fr@mmmmmmclxxxix{\basmalahfr N'as-tu pas vu comment ton Seigneur a agi envers les gens de l'Eléphant?\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxc{N'a-t-Il pas rendu leur ruse complètement vaine?\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxci{et envoyé sur eux des oiseaux par volées\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxcii{qui leur lançaient des pierres d'argile?\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxciii{Et Il les a rendus semblables à une paille mâchée.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxciv{\basmalahfr A cause du pacte des Coraïch,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxcv{De leur pacte [concernant] les voyages d'hiver et d'été.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxcvi{Qu'ils adorent donc le Seigneur de cette Maison [la Ka'ba],\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxcvii{qui les a nourris contre la faim et rassurés de la crainte!\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxcviii{\basmalahfr Vois-tu celui qui traite de mensonge la Rétribution?\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcxcix{C'est bien lui qui repousse l'orphelin,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcc{et qui n'encourage point à nourrir le pauvre.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcci{Malheur donc, à ceux qui prient\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccii{tout en négligeant (et retardant) leur Salât,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcciii{qui sont pleins d'ostentation,\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmcciv{et refusent l'ustensile (à celui qui en a besoin).\qt@no{(7)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccv{\basmalahfr Nous t'avons certes, accordé l'Abondance.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccvi{Accomplis la Salât pour ton Seigneur et sacrifie.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccvii{Celui qui te hait sera certes, sans postérité.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccviii{\basmalahfr Dis: «O vous les infidèles!\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccix{Je n'adore pas ce que vous adorez.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccx{Et vous n'êtes pas adorateurs de ce que j'adore.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxi{Je ne suis pas adorateur de ce que vous adorez.\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxii{Et vous n'êtes pas adorateurs de ce que j'adore.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxiii{A vous votre religion, et à moi ma religion».\qt@no{(6)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxiv{\basmalahfr Lorsque vient le secours d'Allah ainsi que la victoire,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxv{et que tu vois les gens entrer en foule dans la religion d'Allah,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxvi{alors, par la louange, célèbre la gloire de ton Seigneur et implore Son pardon. Car c'est Lui le grand Accueillant au repentir.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxvii{\basmalahfr Que périssent les deux mains d'Abû-Lahab et que lui-même périsse.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxviii{Sa fortune ne lui sert à rien, ni ce qu'il a acquis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxix{Il sera brûlé dans un Feu plein de flammes,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxx{de même sa femme, la porteuse de bois,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxi{à son cou, une corde de fibres.\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxii{\basmalahfr Dis: «Il est Allah, Unique.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxiii{Allah, Le Seul à être imploré pour ce que nous désirons.\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxiv{Il n'a jamais engendré, n'a pas été engendré non plus.\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxv{Et nul n'est égal à Lui».\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxvi{\basmalahfr Dis: «Je cherche protection auprès du Seigneur de l'aube naissante,\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxvii{contre le mal des êtres qu'Il a créés,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxviii{contre le mal de l'obscurité quand elle s'approfondit,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxix{contre le mal de celles qui soufflent [les sorcières] sur les nœuds,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxx{et contre le mal de l'envieux quand il envie».\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxxi{\basmalahfr Dis: «Je cherche protection auprès du Seigneur des hommes.\qt@no{(1)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxxii{Le Souverain des hommes,\qt@no{(2)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxxiii{Dieu des hommes,\qt@no{(3)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxxiv{contre le mal du mauvais conseiller, furtif,\qt@no{(4)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxxv{qui souffle le mal dans les poitrines des hommes,\qt@no{(5)}}
+\qt@newcmd\qurantrans@fr@mmmmmmccxxxvi{qu'il (le conseiller) soit un djinn, ou un être humain».\qt@no{(6)}}
diff --git a/support/spix/CHANGELOG.md b/support/spix/CHANGELOG.md
new file mode 100644
index 0000000000..f0d854a11b
--- /dev/null
+++ b/support/spix/CHANGELOG.md
@@ -0,0 +1,5 @@
+* spix 1.0.0-beta (2020-06-11)
+
+ * First published version.
+
+ -- Louis Paternault <spalax+python@gresille.org>
diff --git a/support/spix/LICENSE.txt b/support/spix/LICENSE.txt
new file mode 100644
index 0000000000..94a9ed024d
--- /dev/null
+++ b/support/spix/LICENSE.txt
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/support/spix/README.md b/support/spix/README.md
new file mode 100644
index 0000000000..b58d858e7d
--- /dev/null
+++ b/support/spix/README.md
@@ -0,0 +1,66 @@
+# SpiX 🦜 Yet another TeX compilation tool: simple, human readable, no option, no magic
+
+SpiX is [yet another compilation tool](https://www.ctan.org/topic/compilation) for ``.tex`` files. It aims at being simple and human readable. Every piece of configuration is written in the ``.tex`` file itself, in a clear format (a list of console commands).
+
+## Why SpiX?
+
+With SpiX, the compilation process of a ``.tex`` file (Is it compiled using latex? pdflatex? xelatex? lualatex? Should I process its bibliography? with bibtex or biber? Is there an index?) is written in the ``.tex`` file itself, in a human-readable format (a shell script). That way:
+
+- when you want to compile two years later, you don't have to guess the compilation process;
+- you can send the ``.tex`` file to someone, and that's it: no need to send detailed instructions or a Makefile along with it (everything is in the ``.tex`` file);
+- the compilation process is human readable: it can be understood by anyone who is able to read a very basic shell script. In particular, one can read it even if she does not know SpiX.
+
+### The ``.tex`` file
+
+Write the compilation process of your ``.tex`` file as a shell script, before the preamble, as lines starting with ``%$``:
+
+ % Compile this file twice with lualatex.
+ %$ lualatex foo.tex
+ %$ lualatex foo.tex
+
+ \documentclass{article}
+ \begin{document}
+ Hello, world!
+ \end{document}
+
+You can also replace the file name with ``$1``. That way, you don't have to worry about the file name when writing your commands.
+
+ % Compile this file twice with lualatex.
+ %$ lualatex $1
+ %$ lualatex $1
+
+### Compilation
+
+To compile the ``.tex`` file, run SpiX:
+
+ spix foo.tex
+
+Spix will parse the ``.tex`` file, looking for shell snippets (lines before the preamble starting with ``%$``), and run them.
+
+That's all!
+
+## Documentation
+
+The complete documentation is available on [readthedocs](http://spix.readthedocs.io).
+
+To compile it from source, download and run:
+
+ cd doc && make html
+
+## What's new?
+
+See [changelog](https://framagit.org/spalax/spix/blob/master/CHANGELOG.md).
+
+## Download and install
+
+SpiX can be installed using pip:
+
+ pip install spix
+
+Other installation methods can be found in the [documentation](https://spix.readthedocs.io/en/stable/install.html).
+
+## License
+
+*Copyright 2020 Louis Paternault*
+
+SpiX is licensed under the [Gnu GPL 3 license](https://www.gnu.org/licenses/gpl-3.0.html), or any later version.
diff --git a/support/spix/spix.pdf b/support/spix/spix.pdf
new file mode 100644
index 0000000000..a008ed2c4d
--- /dev/null
+++ b/support/spix/spix.pdf
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 370b317ec0..f0d9fdc8ce 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,7 +26,7 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2020
-depend revision/55520
+depend revision/55530
name 00texlive.image
category TLCore
@@ -68183,15 +68183,15 @@ catalogue-version 3.8
name commutative-diagrams
category Package
-revision 55438
+revision 55526
shortdesc CoDi: Commutative Diagrams for TeX
relocated 1
longdesc This package provides a TikZ library for making commutative
longdesc diagrams easy to design, parse and tweak.
-containersize 12676
-containerchecksum 71d0e08b220b718d84e3d268d02ce6f01f7e1a09898ef7ad2db999e0db47cce21d16d49e157d58ab002aa9ffeed865918f2a33661a3cffa612c9431a8983b6db
-doccontainersize 550024
-doccontainerchecksum 0e0ffebb70f2a32a2a780831c162b892cdbd25f9f096f534b00737b6727d72df195325e7c7576c404f8447da5291ef0551d1925af1e7b204160fc6581847d041
+containersize 12684
+containerchecksum ff7cd8401eb54f14bd013db9a62e2540a8015e51ad573cb76683b19c2cf2fed0a2081be87c5c81238664ab441f6d17eedc896e41fa0700dcd70b088d08e6ec8a
+doccontainersize 549992
+doccontainerchecksum 3709730425aafd1fd9aed5b4cbb1b80bf70ed474c792f0ad6f35d4ae6ad64624db64bda7a02656b226c13ea93159d2811356eb75f8b2756328f0ecea2289f738
docfiles size=146
RELOC/doc/generic/commutative-diagrams/README details="Readme"
RELOC/doc/generic/commutative-diagrams/commutative-diagrams-doc.pdf details="Package documentation"
@@ -68217,7 +68217,7 @@ catalogue-contact-repository https://github.com/paolobrasolin/commutative-diagra
catalogue-ctan /graphics/pgf/contrib/commutative-diagrams
catalogue-license mit
catalogue-topics diagram-comm diagram-maths diagram maths pgf-tikz graphics
-catalogue-version 1.0.0
+catalogue-version 1.0.1
name compactbib
category Package
@@ -129120,7 +129120,7 @@ catalogue-version 1.0
name haranoaji
category Package
-revision 55283
+revision 55524
shortdesc Harano Aji Fonts
longdesc Harano Aji Fonts (Harano Aji Mincho and Harano Aji Gothic) are
longdesc fonts obtained by replacing Adobe-Identity-0 (AI0) CIDs of
@@ -129128,10 +129128,10 @@ longdesc Source Han fonts (Source Han Serif and Source Han Sans) with
longdesc Adobe-Japan1 (AJ1) CIDs. There are 14 fonts, 7 weights each for
longdesc Mincho and Gothic.
postaction script file=tlpkg/tlpostcode/haranoaji-tlpost.pl
-containersize 26174240
-containerchecksum 982b1507c4444789d958cc26d8df2f2924529a4ee116afd1b656c520836bacd8997bf1b90ba92e9594bbc5c9be49fbbb792007edd8afdcb59f0e2b5da7e04d97
+containersize 26177396
+containerchecksum e087822aef3817c396125b995c00bd8e027f2f4339a881ba15c12c03c7ba13da0e2176d98a8ff1a57625125e1513871a827df634f983e98220bba1b4b2456dad
doccontainersize 3048
-doccontainerchecksum 318a2d837162d8e58ac91d8efb318fb03b612a655bceeb710b4e8e6976b8bd250057c4a4dbff69dc6456f09703ff5c35ee8b9ebec7a3ec388829927bb1f3a065
+doccontainerchecksum 2f0136473cf9ee72ff46f5e550c208272634006e7cd33f77db18b4307507a06e261bf3b9c06038b062d67a8f64d21fe86fb0809dd09a7cff7cfa0d8486a2dd01
docfiles size=3
texmf-dist/doc/fonts/haranoaji/LICENSE
texmf-dist/doc/fonts/haranoaji/README details="Readme"
@@ -129151,11 +129151,11 @@ catalogue-contact-home https://github.com/trueroad/HaranoAjiFonts
catalogue-ctan /fonts/haranoaji
catalogue-license ofl
catalogue-topics font-cjk japanese
-catalogue-version 20200524
+catalogue-version 20200612
name haranoaji-extra
category Package
-revision 55265
+revision 55525
shortdesc Harano Aji Fonts
relocated 1
longdesc Harano Aji Fonts (Harano Aji Mincho and Harano Aji Gothic) are
@@ -129163,10 +129163,10 @@ longdesc fonts obtained by replacing Adobe-Identity-0 (AI0) CIDs of
longdesc Source Han fonts (Source Han Serif and Source Han Sans) with
longdesc Adobe-Japan1 (AJ1) CIDs. There are 14 fonts, 7 weights each for
longdesc Mincho and Gothic.
-containersize 25912136
-containerchecksum 3d3451e65a92d8959a794ec145aa0d6ac06f581d66e7ac10df8853ddf221b05571b75ce1d0c27dc3b0c8424b62e4e2b32d18f9cbbb15152d0e6df1ef2ee888cd
+containersize 25909728
+containerchecksum 4a7fd3b795ede856a2adedc9971308cc497e8d8b0eb5555038520e5396d88fe2209ce682f4dacdeb5116e29563491ac015c564be0f52bd7aae445c04d76ee9ce
doccontainersize 3060
-doccontainerchecksum 8e7507fc51fbb29eeff726f8d7bafb9a53a5808713f9aadaf29f13067aa5b3ce255d1496054767d28b41060e69a36d2aefdfa85993a76301c3926dc35d95c392
+doccontainerchecksum 0f30953cc4c5730a234c4597b30f8804c653284a01319503a1068d3288ddec2bde09ca0b1a487f36fa9338807f49ff3492ef57413e3a5134bbb9e77df1004c8c
docfiles size=3
RELOC/doc/fonts/haranoaji-extra/LICENSE
RELOC/doc/fonts/haranoaji-extra/README details="Readme"
@@ -129183,7 +129183,7 @@ catalogue-contact-home https://github.com/trueroad/HaranoAjiFonts
catalogue-ctan /fonts/haranoaji-extra
catalogue-license ofl
catalogue-topics font-cjk japanese
-catalogue-version 20200524
+catalogue-version 20200612
name hardwrap
category Package
@@ -235145,7 +235145,7 @@ catalogue-version 1.0
name poemscol
category Package
-revision 55389
+revision 55528
shortdesc Typesetting Critical Editions of Poetry
relocated 1
longdesc The package offers LaTeX macros for typesetting critical
@@ -235156,27 +235156,27 @@ longdesc marking for cases in which page breaks occur during stanza
longdesc breaks, running headers of the form 'Notes to pp. xx-yy' for
longdesc the notes sections, index of titles and first lines, and
longdesc automatic generation of a table of contents.
-containersize 19420
-containerchecksum 04958e48ee1318db0054d439e04d1a1d79b801dc841debe18a412675202b4669eed859c1fcbe5eb924798ba28586bb34611eddba922b762fc14ee2bea7fc8553
-doccontainersize 762828
-doccontainerchecksum 19804301c4655e878c84830094d394db10252b926e204d1ef7f5be40df45812324ce369fd64129af04517a3c74b60948bab32b8eb1d5af0468a5edeb4c6d6ab9
-docfiles size=195
+containersize 19700
+containerchecksum 32ed592f4e087957663eec2826cb454a94f164cf704c5a38c3ede380e84527ce6464f315782413fc47442a85e9f63c11a30a41ee95b5414f29fb5fe82d334275
+doccontainersize 769620
+doccontainerchecksum af88bfd402f67b001e8abe91a3763298b4f06417c9e89503f7da7628140c68d32df360ef73b1c56dafe1219d81f4db8a27193e40fa6732666825eb3fddfff613
+docfiles size=197
RELOC/doc/latex/poemscol/README details="Readme"
RELOC/doc/latex/poemscol/poemscol.pdf details="Documented source"
RELOC/doc/latex/poemscol/poemscolcheatsheet.pdf details="Cheat Sheet"
RELOC/doc/latex/poemscol/poemscolcheatsheet.tex
-srccontainersize 89876
-srccontainerchecksum 53c860f4ca338d33f6674c1770af1045e0d0370dffb48fe8a29fa1a31b4826bf7ed4e66d971f81915cd1db03138a05157a7671f9f1233dd43bb299c23b327f79
-srcfiles size=118
+srccontainersize 91208
+srccontainerchecksum de4ad9de947bd572c133c0fd4289f50fd3a09cc06813f8e8fe54ba72d7220ee95f038e13b0f937a92cd8da06328fd197f9d0638aa4035e487855cfed24ea28f3
+srcfiles size=120
RELOC/source/latex/poemscol/poemscol.dtx
RELOC/source/latex/poemscol/poemscol.ins
-runfiles size=40
+runfiles size=41
RELOC/tex/latex/poemscol/poemscol.sty
catalogue-also edmac ledmac ednotes verse
catalogue-ctan /macros/latex/contrib/poemscol
catalogue-license lppl1.3c
catalogue-topics crit-ed
-catalogue-version 3.14159
+catalogue-version 3.141592
name poetry
category Package
@@ -247649,7 +247649,7 @@ catalogue-version 1.0
name quran
category Package
-revision 54333
+revision 55530
shortdesc An easy way to typeset any part of The Holy Quran
relocated 1
longdesc This package offers the user an easy way to typeset The Holy
@@ -247659,11 +247659,11 @@ longdesc part of Quran based on its popular division, including surah,
longdesc ayah, juz, hizb, quarter, and page. Besides the Arabic
longdesc original, translations to English, German, and Persian are
longdesc provided, as well as an English transliteration.
-containersize 1192000
-containerchecksum 3376168899e0f622f60f4886f181c75311b8041850ad0007ff69a2c82e33ba7f71e8b64862c82ad5814f8a659bb95915a4fcbf4d6f4da96ca1de4f19c8c2e6cf
-doccontainersize 495960
-doccontainerchecksum fece84c5d8a79477d0cbdd8c2d503ba40485c1cb8102be8372c21e0393734de34c47f1ba418d3ef9eb518bdb7c78179f42492c2c7a0e3aac73b65c2759e3bd8a
-docfiles size=138
+containersize 1447112
+containerchecksum 2537ed4fc565e4f6f1504901f5e470e928b0e0693712df79baf310886a133cba69990046d82e50f7af824e4e9b0c2c8abee8d8db41aaf0d36c3cf89b0b76ead9
+doccontainersize 501764
+doccontainerchecksum 0f64e7c7f3390f5b8e5dfc4d3babd93f88d26cb7371b73dc7e4849892039eff5946616c779d56bb56c873872306d424068f2cca26eef1e8584da6e3c99aa2683
+docfiles size=141
RELOC/doc/xelatex/quran/README details="Readme"
RELOC/doc/xelatex/quran/quran-doc.pdf details="Package documentation"
RELOC/doc/xelatex/quran/quran-doc.tex
@@ -247674,16 +247674,18 @@ docfiles size=138
RELOC/doc/xelatex/quran/quran-test2.pdf
RELOC/doc/xelatex/quran/quran-test2.tex
RELOC/doc/xelatex/quran/quran.png
-runfiles size=1989
+runfiles size=2288
RELOC/tex/xelatex/quran/quran-transde.def
RELOC/tex/xelatex/quran/quran-transen.def
RELOC/tex/xelatex/quran/quran-transfa.def
+ RELOC/tex/xelatex/quran/quran-transfr.def
RELOC/tex/xelatex/quran/quran-translt.def
RELOC/tex/xelatex/quran/quran.sty
RELOC/tex/xelatex/quran/qurantext-de.translation.def
RELOC/tex/xelatex/quran/qurantext-en.translation.def
RELOC/tex/xelatex/quran/qurantext-en.transliteration.def
RELOC/tex/xelatex/quran/qurantext-fa.translation.def
+ RELOC/tex/xelatex/quran/qurantext-fr.translation.def
RELOC/tex/xelatex/quran/qurantext-simple.def
RELOC/tex/xelatex/quran/qurantext-uthmani.def
catalogue-also quran-de quran-ur lipsum ptext
@@ -247692,7 +247694,7 @@ catalogue-contact-repository https://github.com/javadr/quran
catalogue-ctan /macros/xetex/latex/quran
catalogue-license lppl1.3c
catalogue-topics arabic macro-supp xetex dummy-gen
-catalogue-version 1.63
+catalogue-version 1.7a
name quran-de
category Package
@@ -271459,7 +271461,7 @@ catalogue-topics shortcut physics
name svg
category Package
-revision 55070
+revision 55527
shortdesc Include and extract SVG pictures in LaTeX documents
relocated 1
longdesc This bundle contains the two packages svg and svg-extract. The
@@ -271474,10 +271476,10 @@ longdesc of the graphicx package. In addition, the package svg-extract
longdesc allows the extraction of these graphics into independent files
longdesc in different graphic formats, exactly as it is rendered within
longdesc the LaTeX document, using either ImageMagick or Ghostscript.
-containersize 13884
-containerchecksum 6fb10885ba009ae6f25b6117e93fcbc02cbb7168efe54f4deffc6050eb43afcda9d8f4b83fe216b98aabb4aff03e16831e0cade131cf907f163f701a2989e559
-doccontainersize 1077456
-doccontainerchecksum 357e8714d6805cd2d587a5def98cb3ab430b11a33e83aa4726a39af7a799a83dbf65ea68f6b01830d632935852bbc61e46326a975dfa1c19b8d2c570a2727730
+containersize 14056
+containerchecksum 7682cb7316509b05d2bdeeaded73be9d847224af7c4c07a43cb04d830ffbe9b308a002a6330fa392134063a829803fb0c5d30cfd2bc3c14367ce3fc1f7465883
+doccontainersize 1079448
+doccontainerchecksum 3a665b9fc9962a55f3c3e5d175615fb8f9e5cd97bcf85a57bf13a2b01e2328a96dc92b05a76c89ea420594d39f14a2984f3fe56f615f99cb7deca4ecc5cb862e
docfiles size=441
RELOC/doc/latex/svg/LICENSE.md
RELOC/doc/latex/svg/README.md details="Readme"
@@ -271486,9 +271488,9 @@ docfiles size=441
RELOC/doc/latex/svg/svg-example.svg
RELOC/doc/latex/svg/svg-preamble.tex
RELOC/doc/latex/svg/svg.pdf details="Package documentation"
-srccontainersize 44084
-srccontainerchecksum c60b781dade4160ec4cdcd1e211b4e6bcfcac82ffa6571678deb3c138f0feb7423ddef6dc64bf2ed5e6792a4db8606f3b1a055da4809ea3cea900829a3db8ccc
-srcfiles size=56
+srccontainersize 44588
+srccontainerchecksum 05b0949a43ad44dc7fe2a1bac3725695892f1704f2c408fa64702a213bb39706f7be1e69bfd51adaad54328a30c90641c4ac98cdb1708ddc39c595d85f40461c
+srcfiles size=57
RELOC/source/latex/svg/svg.dtx
runfiles size=21
RELOC/tex/latex/svg/svg-extract.sty
@@ -271499,7 +271501,7 @@ catalogue-contact-repository https://github.com/mrpiggi/svg
catalogue-ctan /graphics/svg
catalogue-license lppl1.3c
catalogue-topics graphics graphics-incl graphics-import
-catalogue-version 2.02f
+catalogue-version 2.02g
name svg-inkscape
category Package
@@ -290248,18 +290250,18 @@ catalogue-version 0.1
name thuthesis
category Package
-revision 55485
+revision 55523
shortdesc Thesis template for Tsinghua University
relocated 1
longdesc This package establishes a simple and easy-to-use LaTeX
longdesc template for Tsinghua dissertations, including general
longdesc undergraduate research papers, masters theses, doctoral
longdesc dissertations, and postdoctoral reports.
-containersize 22004
-containerchecksum 01842cd1a9cae4b116cd8843901462b8139a2daf28c0b44dffe771e4823f9c751fa385a77afb3ccac48ad2efd2f1f36a8cc943ea15812d08478457df66e7d3fc
-doccontainersize 2284684
-doccontainerchecksum 89221b2d4031d7fe21ba46a0d8fb02d8bc42317001bb9ae1c414bcfabaa1cbfe84465865b4e367c101af8808116970260a3523cbc484ef4e2f67e34bf27c52a5
-docfiles size=625
+containersize 22404
+containerchecksum b3cea4fcd80366a67e5c7b92acb0774b88de10ddc120b836a0e4425d905bd86cae4b35082e816c353dd63dd23698b5c24534d3c15d84f046d504a0edda96e308
+doccontainersize 2303668
+doccontainerchecksum a8352cd04af98ea56c6052a94426fe5fdc7f16ad4e466c817ce6df569e90709b787749769e5f9bdc4fe6adbf625ac769e5c20805faa55f50ad9ed70cff5c13d7
+docfiles size=631
RELOC/doc/latex/thuthesis/README.md details="Readme (Chinese & English)"
RELOC/doc/latex/thuthesis/data/abstract.tex
RELOC/doc/latex/thuthesis/data/acknowledgements.tex
@@ -290279,19 +290281,19 @@ docfiles size=625
RELOC/doc/latex/thuthesis/figures/thu-text-logo.pdf
RELOC/doc/latex/thuthesis/figures/thu-whole-logo.pdf
RELOC/doc/latex/thuthesis/latexmkrc
- RELOC/doc/latex/thuthesis/main.pdf details="Example of use (Chinese)" language="zh"
- RELOC/doc/latex/thuthesis/main.tex
RELOC/doc/latex/thuthesis/math_commands.tex
RELOC/doc/latex/thuthesis/ref/appendix.bib
RELOC/doc/latex/thuthesis/ref/refs.bib
RELOC/doc/latex/thuthesis/spine.pdf
RELOC/doc/latex/thuthesis/spine.tex
RELOC/doc/latex/thuthesis/thusetup.tex
+ RELOC/doc/latex/thuthesis/thuthesis-example.pdf details="Example of use (Chinese)" language="zh"
+ RELOC/doc/latex/thuthesis/thuthesis-example.tex
RELOC/doc/latex/thuthesis/thuthesis.pdf details="Package documentation (Chinese)" language="zh"
- RELOC/doc/latex/thuthesis/tsinghua.pdf
-srccontainersize 37760
-srccontainerchecksum 391710e1462ac24fcb22f1aa5c815b780bf820628297bb9e2fe9a1d2738c3ab15e8bd8f68ad2dff2c4e3bbb7c149f8e1d2ad571076f4b836b9af58e93ffd7db7
-srcfiles size=38
+ RELOC/doc/latex/thuthesis/tsinghua-name-bachelor.pdf
+srccontainersize 39320
+srccontainerchecksum f7546596cad59bd2d348a2852cc5f150937ec7d4b0e3e1ee3c7cd95548be88394adaf592d85a266626ebfadec3769cc7e14e3b12bb584a0b21a32491ee446e6a
+srcfiles size=40
RELOC/source/latex/thuthesis/Makefile
RELOC/source/latex/thuthesis/thuthesis.dtx
RELOC/source/latex/thuthesis/thuthesis.ins
@@ -290309,7 +290311,7 @@ catalogue-contact-support https://github.com/tuna/thuthesis/issues
catalogue-ctan /macros/latex/contrib/thuthesis
catalogue-license lppl1.3
catalogue-topics dissertation class chinese
-catalogue-version 6.1.0
+catalogue-version 6.1.1
name ticket
category Package
@@ -300131,7 +300133,7 @@ catalogue-version 1.0
name tuda-ci
category Package
-revision 54878
+revision 55529
shortdesc LaTeX templates of Technische Universitat Darmstadt
relocated 1
longdesc The TUDa-CI-Bundle provides a possibility to use the Corporate
@@ -300139,11 +300141,11 @@ longdesc Design of TU Darmstadt in LaTeX. It contains documentclasses as
longdesc well as some helper packages and config files together with
longdesc some templates for user documentation, which currently are only
longdesc available in German.
-containersize 36216
-containerchecksum ab129317c8315f630ca4ec13118c4c91651161f3b88c9bbadbce32053d0636d487ad274005f831e5dc1d778bc4859e480388ea99094cf039cf565ff21f3beebd
-doccontainersize 1510292
-doccontainerchecksum 6ae76a7ae7774456b548f54719a46c7b19e129b316b89915dc54496651b3cce7b9243f9a985d2252a6c2021f04c5c73b4c299eaf685a0e651d36734778516300
-docfiles size=1781
+containersize 36228
+containerchecksum a9c03c46e3696d5cf30e9b3fa7ac3e4dce683f5d16a645d856b58016725007c6876b6ffed87c8e6449bbd15344e14061feb1b628eb2e86cdfff2b35ef44af3f9
+doccontainersize 1534812
+doccontainerchecksum 5ac61b004cc68805cff9d6e0ab7e47a7237341b888f70cfe92af0783ba90a493c70af757fa706288ae70c08432f6a0c5ded329d12f988573f4d58136a48456e4
+docfiles size=1987
RELOC/doc/latex/tuda-ci/DEMO-TUDaAnnouncement.pdf
RELOC/doc/latex/tuda-ci/DEMO-TUDaAnnouncement.tex
RELOC/doc/latex/tuda-ci/DEMO-TUDaBeamer.pdf details="Example presentation" language="de"
@@ -300168,6 +300170,8 @@ docfiles size=1781
RELOC/doc/latex/tuda-ci/DEMO-TUDaSciPoster.tex
RELOC/doc/latex/tuda-ci/DEMO-TUDaThesis.pdf details="Example bachelor's thesis" language="de"
RELOC/doc/latex/tuda-ci/DEMO-TUDaThesis.tex
+ RELOC/doc/latex/tuda-ci/DEMO-TUDaThesis_maschbau.pdf
+ RELOC/doc/latex/tuda-ci/DEMO-TUDaThesis_maschbau.tex
RELOC/doc/latex/tuda-ci/README.md details="Readme"
runfiles size=68
RELOC/tex/latex/tuda-ci/beamercolorthemeTUDa.sty
@@ -300203,7 +300207,7 @@ catalogue-contact-repository https://github.com/tudace/tuda_latex_templates
catalogue-ctan /macros/latex/contrib/tuda-ci
catalogue-license lppl1.3c
catalogue-topics class letter dissertation presentation poster
-catalogue-version 2.10
+catalogue-version 2.11
name tudscr
category Package
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 4a23a410ea..9c4719f1e7 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-1f60077fe1065beba6107690f149f9bb texlive.tlpdb
+08b7f1c0e09664a9ba8dfd4926c2ef7d texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 148571af07..b474f30934 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-707484a6f9d8904e2b361853507cfb59fd8032a3ae36fde9a38aae7e31a8ba5d3120d97b72ecc51cc1e1c2dde9ed70cec4ae9359e521a50651915c024e4510ed texlive.tlpdb
+1e71f834c1c7b7fddca5c78a9cec7808f1555dd169a24662fbe1870e1f8f38e6e7951a748323450d6741510349cf6073f8a92765957a8a12f0eaa1304b0a1860 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 1b78208da9..29896f9065 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJe4sSmAAoJEEzhh34ZQ4xweLIIAJYAqxAGHKZuL1i/Fwz/oQ52
-CdCrn3A8GqAdXgPec34kqylchCxginR1Ry031YXrStkH+Kj00dAYgwGwZ12h2+2C
-AaxQTIM9JK5PNxgFFEgmHwYBPoUkiZYnG9a32K2BzTR5NfuHYtxJr5S8wWNUgug1
-QPRWA+NdWg2f5d9JV+KE3DnJvFYLI3LyvZn6m07PY6I+MVwHxVK1E7G90NwPkJYD
-k8h2S2K5WeyKz7wqJzE/KsZszpNUWm2ReGRhnNRVTEdwxZBiF3CzIVC54MvJmdYQ
-+TMbO0XJuamCUZsz9vh4B3AgeNPdxYbZ2lq2uV3Bs0ByOjHaG46jWp3MqBBb0zY=
-=s2U2
+iQEcBAEBCgAGBQJe5BZmAAoJEEzhh34ZQ4xw6JYIALKf+WyYMtlrz0YBqyJPG+dZ
+RbU4A2Q+ineFkS+mRQJZGtFm4GFK5rfbZDoTmwgoUjRN6JYFVXFl2+i49XxFiWi9
+Hgho5+QKT12zuGRCvifY95ECsMSHRJgBBpix4XBrgy6PeqdqTvlLSv4OtbKPH/ai
+sf624eX0HkA/rjyGdT8DCbzuwdFmTdp88RaGQSIKYT1dIPEw82R6kJOVKGLaGmun
+fSDZTIxAZLI78Wi9WA5qkRhVOZUJMafoVkb5RdVRu9Eo/JhhAKaw9nioB4PCqugQ
+aHZBsf4YSHYmapU4AvhGIvtAz6fPTqKyG0mhLmQBI2ibRijf5OaLJMlVtM5dWoo=
+=tpyA
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 2a842ea11a..6695a380eb 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index d47c532c74..59e94827c7 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1591906639
+date=1591992982
lastupd=babel caption dps hvarabic latexindent pstricks shtthesis abnt baskervillef beamerappendixnote beamerswitch ccool cellprops commutative-diagrams courierten crop ctex ellipsis erw-l3 fira
-lstdigest=b3a852881b3c88a1d9101eadf5e8b5ea
+lstdigest=943759caa899f6c03a2dd7d96199aca6
numpkg=3928
relstate=stable
-version=7467
+version=7468
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: StbvLxf4YDT44PgvJZdcUXKQjmgmypNU/YMZfkuNVx/zpKiD7WBDPaAQ3mF7VSVpefUkN+IDAnPgtVhkU2UtEkycYb0ee3FRCPaj+UqRG/UwwE+RWy5ZB6DRg3Vc6HuCGZhAU2qbsS5LZQhAueB4gEqeeYcPT19jDd6BXwMZTIOqejH4hC+vtvkhDZKkDubSVpPueQNS86e0XPhGCQcgRCDVuRzyL9ch5a052E5gLeFFKt2FFvs+ln37DGUiPm2N9MlJEP31sOPMASKobCLB+2ppYNXZ/93OztkUEFjFEa4S5TOVP3hSZKBNSjlKhrCyg2MUftQXoqbHEXfFH43Xow==
+;;;; signature/miktex: SV2ufhDVvjcE2IQLFIAhYhHLJ7SvhZ6p1ePiWaS4VyCh8ZyG2+0qPFG55/jFUtl6sGmoUgF5oYAuGrDB/OAR+JZjKl30Df+OuBRROeL5MPrxoYnVNh+YrmPfn9BuvEEwxp1UFciuiTUvWqnoIott05Hh4H3Ze/qTf4U7dKxZDfA5TIzykERXhGetgJlKQ67voe0MCbJAr/GO4in+8GtfDxYpb5IrP+2p1HYwKw1Ybpz3uV5EJEB8zrA8zOIbr1H6uU3krtdBs6mKce/qoU4+BgC2g4RfZ3UYCumrJQ0uiJGQ0Rbq5JUF3ISwC++eT4LK2u7eunPIETSmA6larGS02g==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/w32tex/ChangeLog b/systems/win32/w32tex/ChangeLog
index 8f35f30f11..53716b49c1 100644
--- a/systems/win32/w32tex/ChangeLog
+++ b/systems/win32/w32tex/ChangeLog
@@ -1,5 +1,21 @@
W32TeX (x86 & x64) ChangeLog
+[2020/06/12]
+(01) context.tar.xz
+ ConTeXt version: 2020.06.11 21:26.
+(02) ltxpkgs.tar.xz
+ Update moderntimeline and ocgx2.
+(03) luatex-dev-w32.tar.xz
+ Update xindex.
+(04) luatex-exp-w32.tar.xz
+ Update xindex.
+(05) luatex-w32.tar.xz
+ Update xindex.
+(06) pstricks.tar.xz
+ Update pstricks-base.
+(07) win64/context-w64.tar.xz
+ Update mtxrun.lua.
+
[2020/06/11]
(01) aleph-w32.tar.xz
Update format files.
diff --git a/timestamp b/timestamp
index 15df59909b..ff5fd56c58 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2020-06-12-02-02
+2020-06-13-02-02