Quick
index
main
eev
eepitch
maths
angg
blogme
dednat6
littlelangs
PURO
(C2,C3,C4,
 λ,ES,
 GA,MD,
 Caepro,
 textos,
 Chapa 1)

emacs
lua
(la)tex
maxima
git
agda
forth
squeak
icon
tcl
tikz
fvwm
debian
irc
contact

(find-maximanode ...): elisp hyperlinks to the Maxima manual

My main pages about Maxima are this html page, that is in a human-friendly format, and maxima.e, that is made to be used from Emacs, typically like this.

Some of the e-script blocks in maxima.e contain elisp hyperlinks like these ones,

# (find-maximanode "derivabbrev")
# (find-maximanode "depends")
# (find-maximanode "express")
# (find-maximanode "gradef")
# (find-maximanode "gradefs")

that were trivial to implement in Emacs, but were very tricky to htmlize correctly. For the Emacs side I just had to do this:

(code-c-d "maxima" "/usr/share/maxima/5.44.0/" "maxima")
;; Now this:             (find-maximanode "gradef")
;; is a shorthand for: (find-node "(maxima)gradef")
;;                          (info "(maxima)gradef")

The problem is that the Maxima manual uses "@anchor{...}"s - look at Differentiation.texi, for example - and so the string after the `find-maximanode' can be the name of an anchor instead of the name of a node, and we need a way to translate each name of an anchor, like "gradef", to its target...

When we compile Maxima like this (the original is here),

rm -Rf ~/bigsrc/maxima-git-5.47.0/
mkdir  ~/bigsrc/maxima-git-5.47.0/
cd     ~/bigsrc/maxima-git-5.47.0/
git clone ~/bigsrc/maxima .

git checkout 5.47.0
git clean -dfx
git reset --hard

./bootstrap         |& tee ob
./configure         |& tee oc
make                |& tee om

cp -v doc/info/maxima-index-html.lisp ~/blogme3/

it generates a file called maxima-index-html.lisp, that is a translation table in Lisp. The definition of `find-maximanode' in my htmlizer is here; it loads maxima-index-html.lua if it hasn't been loaded yet, and this parses the translation table in Lua with Lisp4.lua and converts it to a Lua table. Then `find-maximanode' uses that table to convert the tag to the a URL, and that's it.