Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
/* This file:
 *   http://anggtwu.net/MAXIMA/pn1.mac.html
 *   http://anggtwu.net/MAXIMA/pn1.mac
 *          (find-angg "MAXIMA/pn1.mac")
 * Author: Eduardo Ochs <eduardoochs@gmail.com>
 *
 * Some support for "physicist's notation".
 * See: (find-es "maxima" "total-derivative")
 *      (find-es "maxima" "implicit-diff")
 *      http://anggtwu.net/eev-maxima.html#physicists-notation
 *
 * (defun e () (interactive) (find-angg "MAXIMA/pn1.mac"))
 *
 * «.basic-tests»		(to "basic-tests")
 * «.folium-depvars»		(to "folium-depvars")
 * «.folium-depvars-and-ds»	(to "folium-depvars-and-ds")
 * «.partial-and-total»		(to "partial-and-total")
*/

pnshorten_del(delx) := buildq([delx, dx:concat('d,args(delx)[1])], delx=dx)$
pnexpand_del (delx) := buildq([delx, dx:concat('d,args(delx)[1])], dx=delx)$

pnshorten_f  (zxyz) := buildq([
    z  : op  (lhs(zxyz)),
    xy : args(lhs(zxyz))],
  z(splice(xy)) = z)$
pnexpand_f  (zxyz) := buildq([
    z  : op  (lhs(zxyz)),
    xy : args(lhs(zxyz))],
  z = z(splice(xy)))$

pnshorten_1 (pexpr) := if is(op(pexpr)='del)
                       then pnshorten_del(pexpr)
                       else pnshorten_f(pexpr)$
pnexpand_1  (pexpr) := if is(op(pexpr)='del)
                       then pnexpand_del(pexpr)
                       else pnexpand_f(pexpr)$

pnshorten_ify(pexprs) := map('pnshorten_1,pexprs);
pnexpand_ify (pexprs) := map('pnexpand_1, pexprs);

pnshorten (pexprs,o) := subst(pnshorten_ify(pexprs), o);
pnexpand  (pexprs,o) := subst(pnexpand_ify (pexprs), o);

pnshortenr(pexprs,o) := subst(reverse(pnshorten_ify(pexprs)), o);
pnexpandr (pexprs,o) := subst(reverse(pnexpand_ify (pexprs)), o);

pnas :  [y(x),y_x(x),del(x),del(y)];  /* Default abbreviations! Change this! */

pnex(o) := pnexpand  (pnas, o);       /* Expand  using the current pnas */
pnsh(o) := pnshortenr(pnas, o);       /* Shorten using the current pnas */

/*
 * «basic-tests»  (to ".basic-tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("~/MAXIMA/pn1.mac");
pnas : [y(x),del(x)];
pnashorten_ify(pnas);
pnexpand_ify (pnas);
pnshorten    (pnas, (y(x1)-y(x))/del(x)); 
pnexpand     (pnas,        y *dx);
pnexpand     (pnas, (y(x1)-y)*dx);        "doesn't work"$

*/



/*
 * «folium-depvars»  (to ".folium-depvars")
 * The Folium of Descartes is:
 *   x^3 + y^3 = 6*x*y;
 * In this test we differentiate the Folium implicitly
 * using only dependent variables.

* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("~/MAXIMA/pn1.mac");
gradef(y(x), y_x(x));    "these tests don't use gradef(y,x,y_x)"$
e1 : x^3 + y^3 = 6*x*y;  "Folium of Descartes"$
               pnex(e1);
          diff(pnex(e1), x);
e2 : pnsh(diff(pnex(e1), x));
e3 : solve(e2, y_x)[1];

*/
/*
 * «folium-depvars-and-ds»  (to ".folium-depvars-and-ds")
 * In this variant we differentiate the Folium
 * using dependent variables and differentials.

* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("pn1.mac");
gradef(y(x), y_x(x));    "these tests don't use gradef(y,x,y_x)"$
e1 : x^3 + y^3 = 6*x*y;  "Folium of Descartes"$
          diff(e1);
e2 : pnsh(diff(e1));
            solve(e2, dy)[1];
     factor(solve(e2, dy)[1]);
e3 : factor(solve(e2, dy)[1]) / dx;

*/


/*
 * «partial-and-total»  (to ".partial-and-total")
 * If z=z(x,y) and y=y(x) then we have this:
 *   ∂/∂x z = d/dx z(x,y)    = z_x
 *   d/dx z = d/dx z(x,y(x)) = z_x + z_y y_x
 * i.e., the "partial derivative" ∂/∂x z
 *   and the "total derivative"   d/dx z
 *   are different...

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

  "Use z=z(x,y) and y=y(x)"$
map('kill, [z,y]);
gradef(z(x,y), z_x(x,y), z_y(x,y));
gradef(y(x),   y_x(x));
gradefs;
pnas : [z(x,y),z_x(x,y),z_y(x,y), y(x),y_x(x)];

          pnex(z);
     diff(pnex(z),x);
pnsh(diff(pnex(z),x));     "=> z_x + z_y y_x"$

  "Use only z=z(x,y)"$
map('kill, [z,y]);
gradef(z(x,y), z_x(x,y), z_y(x,y));
gradefs;
pnas : [z(x,y),z_x(x,y),z_y(x,y)];

          pnex(z);
     diff(pnex(z),x);
pnsh(diff(pnex(z),x));     "=> z_x"$

*/