|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
/*
* This file:
* http://anggtwu.net/lisptree/vbtbox.mac.html
* http://anggtwu.net/lisptree/vbtbox.mac
* (find-angg "lisptree/vbtbox.mac")
* Author: Eduardo Ochs <eduardoochs@gmail.com>
* Date: 2025sep21
*
* This file implements the part in Maxima of the "support for
* vbtboxes" in Lisptree. By default Lisptree returns multiline
* strings, and its output is like this:
*
* (%i2) lisptree(f(a,b));
* (%o2)
* f__.
* | |
* a b
* (%i3)
*
* When Lisptree is configured to use "vbtbox"es lisptree(f(a,b))
* returns an object like this instead,
*
* vbtbox("f__.",
* "| |",
* "a b")
*
* and vbtboxes are displayed as matrices by `display2d' and as
* verbatim boxes on a beige background by `tex1'.
*
* This file: (find-lisptree "vbtbox.mac")
* See: (find-lisptree "vbtbox.lisp")
* (find-lisptree "vbtbox.lua")
* (find-lisptree "call-lua.c")
*
* «.display2d» (to "display2d")
* «.display2d-tests» (to "display2d-tests")
* «.lisptree» (to "lisptree")
* «.lisptree-tests» (to "lisptree-tests")
* «.tex» (to "tex")
* «.tex-tests» (to "tex-tests")
*/
load("~/lisptree/vbtbox.lisp");
load("~/MAXIMA/displa-delegate.lisp");
/* «display2d» (to ".display2d")
* See: (find-angg "MAXIMA/displa-delegate.lisp")
* (find-lisptree "vbtbox.lisp" "maxima")
*/
displa_delegate('vbtbox, 'vbtbox_translate);
vbtbox_translate(o) := block([strs],
strs : args(o),
transpose(matrix(strs)));
vbtbox_split(bigstr) := apply('vbtbox, splitlines(bigstr));
/* «display2d-tests» (to ".display2d-tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("lisptree.mac");
load("vbtbox.mac");
o : vbtbox("ab", "cd");
lisptree_(o);
o : vbtbox_split("ab
cd");
lisptree_(o);
*/
/* «lisptree» (to ".lisptree")
* Override some top-level functions from Lisptree. The originals are:
* (find-lisptree "lisptree.mac" "lisptree")
*/
lisptree_ (o) := tolisptree2d_(lisptree0(o));
lisptree (o) := tolisptree2d (lisptree0(o));
lisptreeq (o) ::= block([simp:false], tolisptree2d (lisptree0(o)));
/* We will override them with: */
lisptree_ (o) := tolisptree2d (lisptree0(o));
lisptree (o) := vbtbox_split(tolisptree2d_(lisptree0(o)));
lisptreeq_(o) ::= block([simp:false], lisptree_(o));
lisptreeq (o) ::= block([simp:false], lisptree (o));
/* This one is new: */
lisptree2 (o) := (o = lisptree(o));
/* This one in new AND broken: */
lisptreeq2(o) ::= block([simp:false], o) = lisptreeq(o);
/* «lisptree-tests» (to ".lisptree-tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("lisptree.mac");
load("vbtbox.mac");
o : f(a,b);
lisptree (o);
lisptree_(o);
lisptreeq_(2+3);
lisptreeq (2+3);
lisptree2 (a+b);
lisptreeq2(2+3);
tex1(lisptree2 (a+b));
*/
/* «tex» (to ".tex")
* See: (find-lisptree "vbtbox.lisp")
*/
texput('vbtbox, 'vbtbox_tex);
vbtbox_tex(o) := verbatimbgbox0(apply('join_as_lines, args(o)));
/* «tex-tests» (to ".tex-tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("vbtbox.mac");
o : vbtbox("a_b", "c d");
tex1(o);
*/