Go to the first, previous, next, last section, table of contents.


Changes from Version 2.3.0 to Version 2.4

*
(This one is actually a change for 2.3.0). You can no longer choose your own prefix for SM graphics calls.(2)
*
You can specify a pattern to restrict the output of the LIST DEVICE command.
*
You can say IMAGE CURSOR WORD WORD WORD to get intensities into a vector.
*
An argument of 4 to BOX stops that axis from being drawn.
*
VERSION is now implemented as a macro, printing $version.
*
The algorithm for choosing axis labels now checks that there is enough room for the labels that is has chosen and acts accordingly.
*
Searches are now by default case in-sensitive. You can still use $case-fold-search to change this behaviour.
*
You can specify :tc=...: or :TC=...: as part of a DEVICE command.
*
You can set the maximum size of string-valued vector elements in `options.h'.
*
Removed restrictions on number of vectors in READ and PRINT commands.
*
Added atof to convert string-valued vectors to arithmetic.
*
LIST DEFINE | will list internal variables (such as $fx1).
*
You can use READ ! to continue reading past lines that don't match what SM expects (either the wrong number or types of columns, or a mismatch with the format)
*
There is a new format %n that returns the number of fields correctly matched in the line being READ.
*
You can now specify the minimum and maximum number of arguments that a macro expects (but see the change notes (see section Inconsistent Changes from Version 2.3.0 to Version 2.4) for a slight inconsistency). Note that you cannot declare macros that expect zero -- n arguments with a macro name nargs {...} command.
*
Most of the behaviour that is influenced by values in your `.sm' file will now look at a variable of the same name rather than the `.sm' file directly (they are defined from `.sm' when SM is started).
*
There is now support for a wider range of fonts; the changes were introduced to support Japanese. Details in the fonts appendix (see section `Fonts' in The SM Manual).
*
Shading with a solid colour on hardware that supports area fills is now done using the hardware support; this currently means X11 and postscript.
*
The -f command line option can now be used to name the `.sm' file instead of specifying a full path.
*
Startup files can be called `.sm' or `sm.rc'; the latter is looked for first on non-unix machines.
*
You can now specify the slant and condensation of fonts with \slant and \condense.
*
Support for reading tables, in particular FITS binary tables.
*
The WINDOW command can handle ranges of windows (e.g. WINDOW 1 4 1 2:3) (n.b. for a while this was written as WINDOW 1 4 1 2.3).
*
You can now create vectors and variables with local (actually nested) scope with the commands DEFINE var LOCAL and SET vec LOCAL.
*
PRINT now supports the integer formats 'd', 'o', and 'x'.
*
Added colour to the raster devices
*
Added new devices to generate pbm, ppm, and gif files.
*
Added a compile-time option to use doubles rather than floats for vectors.
*
Understand hex integers (of the form 0x...).
*
The X11 driver now puts up the current cursor position when in cursor mode; this can be disabled with the -nocurswindow flag to the DEVICE x11 command.
*
SM now supports the syntax FOREACH var name { ... } to iterate over each element of a vector name.
*
You can access the help string associated with a vector name as the string-valued expression HELP(name); useful in labels as $(HELP(name)).
*
(This isn't really new, but it's little known). The devices tpic and gpic can be used to generate figures that TeX can pass to dvips and xdvi.
*
You can now use %o and %x formats in READ 'format' ... commands.
*
You can now declare a macro abort_handler to trap USER ABORTs.
*
Added command DITHER to do Floyd-Steinberg dithering of images.
*
Added expressions DO(s_expr, s_expr) and DO(s_expr, s_expr, s_expr) to allow implicit DO loops within expressions.
*
You can now extract values from images by index as well as by coordinate; furthermore you can specify entire rows or columns (e.g. set r=image[*,0] to read the entire first row of an image).
*
You can refer to an entire image as image[*,*] (e.g. set image[*,*] = 2*image[*,*]).
*
Commands like "list device" now work even if device is overloaded.


Go to the first, previous, next, last section, table of contents.