Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
/*
 * This file:
 *   http://anggtwu.net/myqdraw/topdf1.mac.html
 *   http://anggtwu.net/myqdraw/topdf1.mac
 *               (find-myqdraw "topdf1.mac")
 * See:
 *   http://anggtwu.net/eev-qdraw.html
 * Author: Eduardo Ochs <eduardoochs@gmail.com>
 * Version: 2024nov05
 * Public domain.
 *
 * This file creates a variant of `qdraw' called `myqdraw',
 * that is simply "a qdraw that wraps its arguments", and
 * a variant of `myqdraw' called `myqdrawp', that can be
 * configured to work in three modes:
 *
 *   myqdrawp_to_screen()      makes myqdrawp draw to the screen,
 *   myqdrawp_to_single_pdf()  makes myqdrawp always draw into the same PDF,
 *   myqdrawp_to_new_pdf()     makes each myqdrawp draw into a new PDF.
 *
 * See: http://anggtwu.net/eev-maxima.html
 *      (find-windows-beginner-intro "12. Install qdraw")
 *      (find-angg ".maxima/maxima-init.mac" "load_qdraw")
 *      (find-myqdraw "mkanim1.sh")
 *      (find-myqdraw "myqdraw-tex.lisp" "includegraphics")
 *
 * «.topdf-modes»		(to "topdf-modes")
 * «.topdf-modes-test»		(to "topdf-modes-test")
 * «.myqdrawp-modes»		(to "myqdrawp-modes")
 * «.myqdrawp-modes-test»	(to "myqdrawp-modes-test")
 * «.quick-demo»		(to "quick-demo")
*/

topdf_a : "~/LATEX/";
topdf_b : "2024-1-C3/";
topdf_c : "test";
topdf_n : 0;
topdf_n_incr() := (topdf_n : topdf_n + 1);
topdf_c_cn  () := format("~a_~3,'0d", topdf_c, topdf_n);
topdf_c     () := topdf_c;       /* or: */
topdf_c     () := topdf_c_cn();
topdf_abc   () := format("~a~a~a", topdf_a, topdf_b, topdf_c());
topdf_bcpdf () := format("~a~a.pdf",        topdf_b, topdf_c());

topdf_opts : "height=5cm";
topdf_terminalpdf    () := more(terminal=pdf, file_name=topdf_abc());
/* topdf_includegraphics() := format("\\includegraphics[~a]{~a}",
    topdf_opts, topdf_bcpdf());
*/
topdf_includegraphics() := includegraphics(topdf_opts, topdf_bcpdf());


/* «topdf-modes»  (to ".topdf-modes")
 * topdf() can run one of these three functions:
 *   topdf_to_screen()      -- draw to screen,
 *   topdf_to_single_pdf()  -- save to foo.pdf,
 *   topdf_to_new_pdf()     -- save to foo_<nnn>.pdf,
*/
topdf_to_screen    () := [];
topdf_to_single_pdf() := [(topdf_c() := topdf_c,
                           topdf_terminalpdf())];
topdf_to_new_pdf   () := [(topdf_c() := topdf_c_cn(),
                           topdf_n_incr(),
                           topdf_terminalpdf())];

topdf              () := topdf_to_screen();   /* default */

/* «topdf-modes-test»  (to ".topdf-modes-test")
*
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("topdf1.mac");
topdf_abc();
topdf_bcpdf();

topdf() := topdf_to_screen();
topdf();

topdf_c : "test-single";
topdf() := topdf_to_single_pdf();
topdf();

topdf_c : "test";
topdf() := topdf_to_new_pdf();
topdf();
topdf();
topdf_includegraphics();
topdf_n : 0;
topdf();

*/



/* «myqdrawp-modes»  (to ".myqdrawp-modes")
 * `myqdraw'  is like   `qdraw', but it flattens its list of arguments.
 * `myqdrawp' is like `myqdraw', but it can be in any of three modes.
 *
 * Here's how to select the modes:
 *   myqdrawp_to_screen()      -- makes myqdrawp draw to the screen,
 *   myqdrawp_to_single_pdf()  -- makes myqdrawp always draw into the same PDF,
 *   myqdrawp_to_new_pdf()     -- makes each myqdrawp draw into a new PDF.
*/

myqdraw    ([qargs]) := apply('qdraw, flatten([qargs]));

myqdrawp_1 ([qargs]) :=  myqdraw(qargs);
myqdrawp_2 ([qargs]) :=  myqdraw(topdf(), qargs);
myqdrawp_3 ([qargs]) := (myqdraw(topdf(), qargs), topdf_includegraphics());

myqdrawp_to_screen()     := (topdf() := topdf_to_screen(),
                             myqdrawp([qargs]) := myqdrawp_2(qargs),
                             "Will draw to the screen.");
myqdrawp_to_single_pdf() := (topdf() := topdf_to_single_pdf(),
                             myqdrawp([qargs]) := myqdrawp_3(qargs),
                             "Will always draw to the same PDF.");
myqdrawp_to_new_pdf()    := (topdf() := topdf_to_new_pdf(),
                             myqdrawp([qargs]) := myqdrawp_3(qargs),
                             "Will always draw to a new PDF.");

myqdrawp_to_screen();   /* default */


/* «myqdrawp-modes-test»  (to ".myqdrawp-modes-test")
*
* (find-sh0 "ls -lAF /tmp/frame*")
* (find-sh0 "rm   -v /tmp/frame*")
*
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
** (find-myqdraw "topdf1.mac")
load       ("~/myqdraw/topdf1.mac");
load_qdraw();

myxyrange()  := [xr(-2,5),yr(-2,3),more(proportional_axes=xy)];
drawing1(Dx) := para(cos(t)+Dx,sin(t), t,0,2*%pi);
drawing (Dx) := [myxyrange(), drawing1(Dx)];

myqdrawp_to_screen();
myqdrawp(drawing(0));

[topdf_a,topdf_b,topdf_c] : ["/tmp/", "", "frame"];
myqdrawp_to_single_pdf();
myqdrawp(drawing(0.0));
myqdrawp(drawing(0.5));

myqdrawp_to_new_pdf();
myqdrawp(drawing(1.0));
myqdrawp(drawing(1.5));
**
** Inspect:
** (find-fline "/tmp/" "frame_")

*/





/*   ___        _      _          _                      
 *  / _ \ _   _(_) ___| | __   __| | ___ _ __ ___   ___  
 * | | | | | | | |/ __| |/ /  / _` |/ _ \ '_ ` _ \ / _ \ 
 * | |_| | |_| | | (__|   <  | (_| |  __/ | | | | | (_) |
 *  \__\_\\__,_|_|\___|_|\_\  \__,_|\___|_| |_| |_|\___/ 
 *                                                       
** «quick-demo»  (to ".quick-demo")
* (find-sh0 "ls -lAF /tmp/frame*")
* (find-sh0 "rm   -v /tmp/frame*")
*
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load_myqdraw();
[topdf_a,topdf_b,topdf_c,topdf_n] : ["/tmp/", "", "frame", 0];
myqdrawp_to_screen ();
myqdrawp_to_new_pdf();    "Skip this line to draw to the screen"$

[xmin,xmax, ymin,ymax] : [-2,5, -2,3];
drawing1(Dx) := para(cos(t)+Dx,sin(t), t,0,2*%pi);
drawing (Dx) := [xyrange(), drawing1(Dx)];

** Create the frames 001..004 as .pdfs -
** if we're not in debugging/screen mode!
myqdrawp(drawing(0));
myqdrawp(drawing(0.5));
myqdrawp(drawing(1.0));
myqdrawp(drawing(1.5));
**
** Inspect the frames with:
**   (find-fline "/tmp/" "frame_")
** Now make the flipbook and the animated gif, with:
**   (find-myqdraw "mkanim1.sh")
**
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
./mkanim1.sh ECHO=and_run makeboth /tmp/frames.gif /tmp/frames.pdf /tmp/frame_*
**
** Inspect frames.pdf and frames.git with:
** (find-fline "/tmp/" "frames.pdf")
** (find-pdf-page "/tmp/frames.pdf")
**          file:///tmp/frames.gif
**           (brg "/tmp/frames.gif")

*/