mostly dimension.mac



1.  A new version of dimension.mac and new html documentation may found at

http://www.unk.edu/acad/math/people/willisb/dimension-1.mac
http://www.unk.edu/acad/math/people/willisb/dimension.html

The new version adds support for subscripted variables and it
should now work correctly when compiled.  (The makelist  function
doesn't translate or  compile correctly; this is a known bug.)
I thank CY for testing the new version  under Maxima 5.9.

2.  Utilities for mactex may be found at

http://www.unk.edu/acad/math/people/willisb/mactex-utilities.lisp

The utility code allows for LaTeX style fractions and matrices and
directional limits. Additionally, it has an improved version of
my texput function:

;; texput is a maxima-level interface to putprop that allows a user
;; to modify the behavior of maxima's tex function. Here are a few examples:

;;        (C1) texput(me,"\\mu_e");
;;        (D1)                          \mu_e
;;        (C2) tex(me);
;;                $$\mu_e$$

;;        (C4) texput("<<",[" \\langle ", " \\rangle "],matchfix);
;;        (D4)                    \langle ( \rangle)
;;        (C5) matchfix("<<",">>");
;;        (D5)                          "<<"
;;        (C6) tex(<<a>>);
;;              $$ \langle a \rangle $$
;;        (D6)                          FALSE
;;        (C7) tex(<<a,b>>);
;;              $$ \langle a , b \rangle $$

;;  To change the argument separator from a comma to a character ch,
;;  make the third element of the second argument of texput that character.  For
;;  example, to make Dirac brackets, use

;;        (C12) texput("<<",[" \\langle ", " \\rangle "," \\, | \\,"],matchfix);
;;        (D12)                   \langle ( \rangle ,  \, | \,)
;;        (C13) tex(<<a>>);
;;                    $$ \langle a \rangle $$
;;        (D13)                         FALSE
;;        (C14) tex(<<a,b>>);
;;                      $$ \langle a \, | \,b \rangle $$

;;        (C15) texput(grad," \\nabla ",prefix);
;;        (D15)                          70
;;        (C16) prefix("grad");
;;        (D16)                        "GRAD"
;;        (C17) tex(grad f);
;;                    $$ \nabla f$$

;;        (C19) texput("~"," \\times ",infix);
;;        (D19)                          180
;;        (C20) tex(a~b);
;;                    $$a \times b$$

;;        (C22) postfix(@);
;;        (D22)                          "@"
;;        (C23) texput("@","!!",postfix);
;;        (D23)                          160
;;        (C24) tex(x @);
;;              $$x!!$$


3.  Until now, I never had a reason to redefine matrix element addition.
Now, I do:

/* Find minimal path lengths. */
nary("@+");
"@+"([a]) := apply(min,a);
matrix_element_add : "@+";
infix("&");
"&"(a,b) := if (a = inf or b = inf) then inf else a + b;
MATRIX_ELEMENT_MULT : "&";
m : matrix([0,4,1,inf],[inf,0,inf,1],[2,1,0,6],[inf,5,2,0]);
m.m;
m.m.m;
m.m.m.m;
/*------------------*/



Regards,

Barton