Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
####### # # E-scripts on Maxima by Example - mostly on setting it to use it with eev. # # Note 1: use the eev command (defined in eev.el) and the # ee alias (in my .zshrc) to execute parts of this file. # Executing this file as a whole makes no sense. # An introduction to eev can be found here: # # (find-eev-quick-intro) # http://anggtwu.net/eev-intros/find-eev-quick-intro.html # # Note 2: be VERY careful and make sure you understand what # you're doing. # # Note 3: If you use a shell other than zsh things like |& # and the for loops may not work. # # Note 4: I always run as root. # # Note 5: some parts are too old and don't work anymore. Some # never worked. # # Note 6: the definitions for the find-xxxfile commands are on my # .emacs. # # Note 7: if you see a strange command check my .zshrc -- it may # be defined there as a function or an alias. # # Note 8: the sections without dates are always older than the # sections with dates. # # This file is at <http://anggtwu.net/e/mbe.e> # or at <http://anggtwu.net/e/mbe.e.html>. # See also <http://anggtwu.net/emacs.html>, # <http://anggtwu.net/.emacs[.html]>, # <http://anggtwu.net/.zshrc[.html]>, # <http://anggtwu.net/escripts.html>, # and <http://anggtwu.net/>. # ####### # «.download» (to "download") # «.glue-chapters» (to "glue-chapters") # «.code-pdf-pages» (to "code-pdf-pages") # «.grim» (to "grim") # «.eepitch-prefix» (to "eepitch-prefix") # «.find-mbe-links» (to "find-mbe-links") ##### # # Download a copy of the book with wget --recursive # 2023jul18 # ##### # «download» (to ".download") # See: (find-psne-intro) The book is here: https://home.csulb.edu/~woollett/mbe.html It is divided into chapters. The PDFs of the individual chapters have URLs like these: https://home.csulb.edu/~woollett/mbe1intro.pdf https://home.csulb.edu/~woollett/mbe2plotfit.pdf https://home.csulb.edu/~woollett/mbe3ode1.pdf https://home.csulb.edu/~woollett/mbe4solve.pdf https://home.csulb.edu/~woollett/mbe5matrix.pdf https://home.csulb.edu/~woollett/mbe6calc1.pdf https://home.csulb.edu/~woollett/mbe7sint.pdf https://home.csulb.edu/~woollett/mbe8nint.pdf https://home.csulb.edu/~woollett/mbe9bfloat.pdf https://home.csulb.edu/~woollett/mbe10fltrans.pdf https://home.csulb.edu/~woollett/mbe11fft.pdf https://home.csulb.edu/~woollett/mbe12dirac3.pdf https://home.csulb.edu/~woollett/mbe13qdraw.pdf https://home.csulb.edu/~woollett/mbe14fit.pdf You need to download a local copy of this directory: https://home.csulb.edu/~woollett/ into: $S/https/home.csulb.edu/~woollett/ To do that, follow the instructions in this script: (find-wgetrecursive-links "https://home.csulb.edu/~woollett/") Then try: (find-sh-at-dir "/tmp/wget-recursive/" "find * | sort") (find-sh-at-dir "/tmp/wget-recursive/" "find * | sort | grep pdf") (find-sh-at-dir "$S/https/home.csulb.edu/~woollett/" "find * | sort") (find-sh-at-dir "$S/https/home.csulb.edu/~woollett/" "find * | sort | grep pdf") ##### # # Glue all chapters into a big PDF called mbe-all.pdf # 2023jul18 # ##### # «glue-chapters» (to ".glue-chapters") # Note that this: 1) needs qpdf, 2) is optional, and # 3) the big pdf will have lots of "page 1"s - one for # each chapter. # # See: https://github.com/qpdf/qpdf/issues/11#issuecomment-18768487 # qpdf --empty --pages $(for i in a*.pdf; do echo $i 1-z; done) -- b.pdf # (find-es "ps" "qpdf-merge") # (find-angg "LUA/QPDFMerge.lua") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # (find-fline "/tmp/mbe/") rm -Rv /tmp/mbe/ mkdir /tmp/mbe/ cd /tmp/mbe/ cp -v $S/https/home.csulb.edu/~woollett/mbe*.pdf . A=( mbe1intro mbe2plotfit mbe3ode1 mbe4solve mbe5matrix mbe6calc1 mbe7sint mbe8nint mbe9bfloat mbe10fltrans mbe11fft mbe12dirac3 mbe13qdraw mbe14fit ) qpdf --empty --pages $(for i in $A; do echo ${i}.pdf 1-z; done) -- mbe-all.pdf cp -v mbe-all.pdf $S/https/home.csulb.edu/~woollett/ ##### # # Define short hyperlinks to the chapters # 2023jul18 # ##### # «code-pdf-pages» (to ".code-pdf-pages") # See: (find-pdf-like-intro) Now either copy this block to your ~/.emacs or run it with eval-region: ;; From: (find-es "mbe" "code-pdf-pages") ;; This defines short hyperlinks to the chapters of Maxima by Example. (code-c-d "mbe" "$S/https/home.csulb.edu/~woollett/") (code-pdf-page "mbe" "$S/https/home.csulb.edu/~woollett/mbe-all.pdf") (code-pdf-text "mbe" "$S/https/home.csulb.edu/~woollett/mbe-all.pdf") (code-pdf-page "mbe01" "$S/https/home.csulb.edu/~woollett/mbe1intro.pdf") (code-pdf-text "mbe01" "$S/https/home.csulb.edu/~woollett/mbe1intro.pdf") (code-pdf-page "mbe02" "$S/https/home.csulb.edu/~woollett/mbe2plotfit.pdf") (code-pdf-text "mbe02" "$S/https/home.csulb.edu/~woollett/mbe2plotfit.pdf") (code-pdf-page "mbe03" "$S/https/home.csulb.edu/~woollett/mbe3ode1.pdf") (code-pdf-text "mbe03" "$S/https/home.csulb.edu/~woollett/mbe3ode1.pdf") (code-pdf-page "mbe04" "$S/https/home.csulb.edu/~woollett/mbe4solve.pdf") (code-pdf-text "mbe04" "$S/https/home.csulb.edu/~woollett/mbe4solve.pdf") (code-pdf-page "mbe05" "$S/https/home.csulb.edu/~woollett/mbe5matrix.pdf") (code-pdf-text "mbe05" "$S/https/home.csulb.edu/~woollett/mbe5matrix.pdf") (code-pdf-page "mbe06" "$S/https/home.csulb.edu/~woollett/mbe6calc1.pdf") (code-pdf-text "mbe06" "$S/https/home.csulb.edu/~woollett/mbe6calc1.pdf") (code-pdf-page "mbe07" "$S/https/home.csulb.edu/~woollett/mbe7sint.pdf") (code-pdf-text "mbe07" "$S/https/home.csulb.edu/~woollett/mbe7sint.pdf") (code-pdf-page "mbe08" "$S/https/home.csulb.edu/~woollett/mbe8nint.pdf") (code-pdf-text "mbe08" "$S/https/home.csulb.edu/~woollett/mbe8nint.pdf") (code-pdf-page "mbe09" "$S/https/home.csulb.edu/~woollett/mbe9bfloat.pdf") (code-pdf-text "mbe09" "$S/https/home.csulb.edu/~woollett/mbe9bfloat.pdf") (code-pdf-page "mbe10" "$S/https/home.csulb.edu/~woollett/mbe10fltrans.pdf") (code-pdf-text "mbe10" "$S/https/home.csulb.edu/~woollett/mbe10fltrans.pdf") (code-pdf-page "mbe11" "$S/https/home.csulb.edu/~woollett/mbe11fft.pdf") (code-pdf-text "mbe11" "$S/https/home.csulb.edu/~woollett/mbe11fft.pdf") (code-pdf-page "mbe12" "$S/https/home.csulb.edu/~woollett/mbe12dirac3.pdf") (code-pdf-text "mbe12" "$S/https/home.csulb.edu/~woollett/mbe12dirac3.pdf") (code-pdf-page "mbe13" "$S/https/home.csulb.edu/~woollett/mbe13qdraw.pdf") (code-pdf-text "mbe13" "$S/https/home.csulb.edu/~woollett/mbe13qdraw.pdf") (code-pdf-page "mbe14" "$S/https/home.csulb.edu/~woollett/mbe14fit.pdf") (code-pdf-text "mbe14" "$S/https/home.csulb.edu/~woollett/mbe14fit.pdf") ;; ;; Tests: ;; (find-mbefile "") ;; (find-mbepage) ;; (find-mbetext) ;; (find-mbe01page) ;; (find-mbe01text) ;; (find-mbe02page) ;; (find-mbe02text) ;; (find-mbe03page) ;; (find-mbe03text) ;; (find-mbe04page) ;; (find-mbe04text) ;; (find-mbe05page) ;; (find-mbe05text) ;; (find-mbe06page) ;; (find-mbe06text) ;; (find-mbe07page) ;; (find-mbe07text) ;; (find-mbe08page) ;; (find-mbe08text) ;; (find-mbe09page) ;; (find-mbe09text) ;; (find-mbe10page) ;; (find-mbe10text) ;; (find-mbe11page) ;; (find-mbe11text) ;; (find-mbe12page) ;; (find-mbe12text) ;; (find-mbe13page) ;; (find-mbe13text) ;; (find-mbe14page) ;; (find-mbe14text) ##### # # <GR>ep the <I>nput lines in <M>axima code # 2023jul18 # ##### # «grim» (to ".grim") # See: (find-efunction 'ee-grim) # (find-kla-intro "4. Aliases") Maxima by Example, and all the other Maxima docs, are full of blocks like this: (%i1) diff(x^n,x); n - 1 (%o1) n x (%i2) diff(x^n,x,3); n - 3 (%o2) (n - 2) (n - 1) n x Try this: mark the 6-line block above, and run `M-x ee-grim'. This will create a temporary buffer with just these lines: (%i1) diff(x^n,x); (%i2) diff(x^n,x,3); To make `ee-grim' callable without the `ee-', run this: (defalias 'grim 'ee-grim) To make that alias permanent, put this in your ~/.emacs: ;; From: (find-es "mbe" "grim") (defalias 'grim 'ee-grim) # (find-mbe06page 4 "6.1.1 All About diff") # (find-mbe06text 4 "6.1.1 All About diff") ##### # # Configure eepitch to skip the (%i<nn>)s # 2023jul18 # ##### # «eepitch-prefix» (to ".eepitch-prefix") This section of eev docs explains a hack that lets eepitch ignore certain prefixes: (find-eepitch-intro "3.3. `eepitch-preprocess-line'") To make that hack work you need to put this in your ~/.emacs: ;; See: (find-eepitch-intro "3.3. `eepitch-preprocess-line'") (setq eepitch-preprocess-regexp "^") (defun eepitch-preprocess-line (line) (replace-regexp-in-string eepitch-preprocess-regexp "" line)) If you define `eepitch-preprocess-line' in that way then eepitch will treat `eepitch-preprocess-regexp' as a variable that controls which prefixes to ignore. If you then define `eepitch-preprocess-regexp' in this way, (setq eepitch-preprocess-regexp "^[ |]*(%i[0-9]+) ?") then eepitch will ignore the "input prefixes" in lines like these ones: (%i1) diff(x^n,x); (%i2) diff(x^n,x,3); Try the eepitch block below: * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) * (setq eepitch-preprocess-regexp "^[ |]*(%i[0-9]+) ?") (%i1) diff(x^n,x); (%i2) diff(x^n,x,3); * (setq eepitch-preprocess-regexp "^") (%i1) diff(x^n,x); (%i2) diff(x^n,x,3); Note that: a) the second `setq' above resets `eepitch-preprocess-regexp' to a value that means "don't delete any prefixes", and b) without the `(defun eepitch-preprocess-line ...)' above the value of `eepitch-preprocess-regexp' is ignored. See: (find-eepitch-intro "3.3. `eepitch-preprocess-line'" "no-op") ##### # # find-mbe-links # 2023jul18 # ##### # «find-mbe-links» (to ".find-mbe-links") # (find-efunction 'find-mbe-links) # (find-angg ".emacs.papers" "maxima-by-example") Try this: (find-mbe-links 1 1) (find-mbefile "mbe1code.txt") (find-mbefile "mbe1toc.txt") (find-mbefile "mbe1util.mac") (find-mbefile "mbe2code.txt") (find-mbefile "mbe2toc.txt") (find-mbefile "mbe3code.txt") (find-mbefile "mbe3toc.txt") (find-mbefile "mbe4solve.txt") (find-mbefile "mbe5.mac") (find-mbefile "mbe7code.txt") (find-mbefile "mbe8code.txt") (find-mbefile "mbe9code.txt") (find-mbefile "mbe10code.txt") (find-mbefile "mbe11code.txt") (find-mbefile "mbe11toc.txt") # (find-mbesh "ls mbe*.{txt,mac}") # (find-mbefile "" "mbe1") ;; See: (find-eepitch-intro "3.3. `eepitch-preprocess-line'") (setq eepitch-preprocess-regexp "^") (defun eepitch-preprocess-line (line) (replace-regexp-in-string eepitch-preprocess-regexp "" line)) # Local Variables: # coding: utf-8-unix # End: