


% -*- texinfo -*-
% @deftypefn {Function File} {} demo ('@var{name}',@var{n})
%
% Runs any examples associated with the function '@var{name}'.
% Examples are stored in the script file, or in a file with the same
% name but no extension somewhere on your path. To keep them separate
% from the usual script code, all lines are prefixed by @code{%!}. Each
% example is introduced by the keyword 'demo' flush left to the prefix,
% with no intervening spaces. The remainder of the example can contain
% arbitrary Octave code. For example:
%
% @example
% @group
% %!demo
% %! t=0:0.01:2*pi; x = sin(t);
% %! plot(t,x)
% %! %-------------------------------------------------
% %! % the figure window shows one cycle of a sine wave
% @end group
% @end example
%
% Note that the code is displayed before it is executed, so a simple
% comment at the end suffices. It is generally not necessary to use
% disp or printf within the demo.
%
% Demos are run in a function environment with no access to external
% variables. This means that all demos in your function must use
% separate initialization code. Alternatively, you can combine your
% demos into one huge demo, with the code:
%
% @example
% %! input('Press <enter> to continue: ','s');
% @end example
%
% between the sections, but this is discouraged. Other techniques
% include using multiple plots by saying figure between each, or
% using subplot to put multiple plots in the same window.
%
% Also, since demo evaluates inside a function context, you cannot
% define new functions inside a demo. Instead you will have to
% use @code{eval(example('function',n))} to see them. Because eval only
% evaluates one line, or one statement if the statement crosses
% multiple lines, you must wrap your demo in 'if 1 <demo stuff> end'
% with the 'if' on the same line as 'demo'. For example,
%
% @example
% @group
% %!demo if 1
% %! function y=f(x)
% %! y=x;
% %!
% %! f(3)
% %! end
% @end group
% @end example
% @seealso{test, example}
% @end deftypefn