Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
/*
 * This file:
 *   http://anggtwu.net/MAXIMA/showexpression1.mac.pyg.html
 *   http://anggtwu.net/MAXIMA/showexpression1.mac.html
 *   http://anggtwu.net/MAXIMA/showexpression1.mac
 *          (find-angg "MAXIMA/showexpression1.mac")
 * Author: Eduardo Ochs <eduardoochs@gmail.com>
 *
 * Shows a Maxima expression in explicit form.
 * Code by Stavros Macrakis, from:
 *   https://sourceforge.net/p/maxima/mailman/message/58795759/
 *   (find-maximamsg "58795759 202407 15" "Stavros: show_expression")
 *
 * See: (find-es "maxima" "mtree")
 *      (find-es "maxima" "annotations")
 *      (find-es "maxima" "nouns-and-verbs")
 *
 * (defun e () (interactive) (find-angg "MAXIMA/showexpression1.mac"))
*/

/* 
* (find-maximanode "part")
* (find-maximanode "nounify")
* (find-maximanode "verbify")
* (find-maximanode "push")
*/

show_expression(ex):=
   if atom(ex) then ex
   elseif subvarp(ex) then funmake('subsc,cons(op(ex),[maplist(show_expression,args(ex))]))
   elseif ratnump(ex) then funmake('rat,[first(ex),second(ex)])
   elseif mapatom(ex) then ex
   elseif member(part(ex,0), show_special)
     then funmake(show_expression_name[part(ex,0)], maplist(show_expression,args(ex)))
   elseif not(atom(part(ex,0)))
     then funmake('apply,[show_expression(part(ex,0)),maplist(show_expression,args(ex))])
   else block([pex:part(ex,0)],
       funmake(concat(if nounify(pex)=pex then 'N else 'V,pex), maplist(show_expression,args(ex))))$

show_special: []$
for i in
  '[["+",add],     ["-",minus], ["*",mul], ["^",power], ["/",div],
    [".",ncmul],   ["^^", ncpower],
    ["[",list],    ["{",set],
    [":",assign],  ["::",varassign],
    [":=",define], ["::=",definemac]
    ["'",quote],     ["(",prog],
    ["=",equal],     ["#",notequal], [">",greaterp],[">=", greatereq], ["<", lessp], ["<=",lesseq],
    ["!",factorial], ["@",field]    
    ]
  do (show_expression_name[first(i)]: second(i), push(first(i),show_special));



/*
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("showexpression1.mac");
linel : 100;
show_special;
show_expression_name["+"];
show_expression_name["foo"];

show_expression( a[b] );
show_expression( a(b) );
show_expression( a(b)(c) );
show_expression( -2/3*(a-b)/(b*sqrt(5)) );
show_expression( -2/3*(a-b)/(b*sqrt(5)) ),inflag:true;
grind(%), linel=30;
show_expression('[integrate(x,x), 'integrate(x,x)]);
show_expression('(if a then b else c));
show_expression('(for i thru 4 do print(i)));
show_expression('(for i:2 thru 4 while i^2 < 10 do print(i)));
show_expression('(for i:2 step 1/2 thru 4  while i^2 < 10 do print(i)));
show_expression('(for i:2 thru 4 next i+1/3 while i^2 < 10 do print(i)));
show_expression('(for i in [a,b,c] do print(i)));


* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("showexpression1.mac");

a : factor(1000);                 "shows a as 2^3 * 5^3"$
show_expression(a), inflag:true;  "shows a as 2^3 * 5^3"$
show_expression(a);               "shows a as   8 * 125"$

b1 : 4 + 40*x + 400*x^2;
b2 : trunc(b1);                   "has a ..."$
b3 : taylor(b1, x, 0, 2);   "has a ... and a /T/"$
show_expression(b1);
show_expression(b1), inflag:true;
show_expression(b2);
show_expression(b2), inflag:true;
show_expression(b3);
show_expression(b3), inflag:true;

inflag : false;
inflag : true;
show_expression(a);               "shows a as 2^3 * 5^3"$
show_expression(b);
show_expression(c);               "same as above - same order, no /T/ or ..."$

*/





/*
 * Local Variables:
 * coding:  utf-8-unix
 * End:
*/