[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: Using calc's translations programaticaly

**From**: |
Jay Belanger |

**Subject**: |
Re: Using calc's translations programaticaly |

**Date**: |
Mon, 22 Oct 2007 13:39:00 -0500 |

**User-agent**: |
Gnus/5.11 (Gnus v5.11) Emacs/23.0.50 (gnu/linux) |

>* Calc has this great feature that automatically (and pretty*
>* accurately) translates formulas written in one language to an other*
>* language. For example if I have a LaTeX formula that I want to pass*
>* to maxima (say) I can simply do "C-x * e d W C-x * e" and voila: the*
>* formula is transformed to a form that maxima understands.*
Well, that's supposed to transform it to Maple, but perhaps that's
close enough.
>* My question is how can I access this feature from elisp?*
Calc really isn't set up to do that, but perhaps something like
(defun calc-change-lang (expr old-lang new-lang)
(require 'calc-lang)
(let (math-expr-opers
math-expr-function-mapping
math-expr-special-function-mapping
math-expr-variable-mapping
calc-language-input-filter
calc-language-output-filter
calc-vector-brackets
calc-complex-format
calc-radix-formatter
calc-function-open
calc-function-close
calc-language
calc-language-option)
(calc-set-language old-lang)
(let ((expr (math-read-expr expr)))
(calc-set-language new-lang)
(math-format-value expr))))
would work (the first `let' is to prevent the current language from
being disturbed). The interesting (for this) values of old-lang and
new-lang might be:
nil (normal Calc language)
'c
'pascal
'fortran
'tex
'latex
'eqn
'math (Mathematica)
'maple
Jay