Is there a calculator with LaTeX-syntax?

2019-01-21 09:00发布

When I write math in LaTeX I often need to perform simple arithmetic on numbers in my LaTeX source, like 515.1544 + 454 = ???.

I usually copy-paste the LaTeX code into Google to get the result, but I still have to manually change the syntax, e.g.

\frac{154,7}{25} - (289 - \frac{1337}{42})

must be changed to

154,7/25 - (289 - 1337/42)

It seems trivial to write a program to do this for the most commonly used operations. Is there a calculator which understand this syntax?

EDIT: I know that doing this perfectly is impossible (because of the halting problem). Doing it for the simple cases I need is trivial. \frac, \cdot, \sqrt and a few other tags would do the trick. The program could just return an error for cases it does not understand.

17条回答
Bombasti
2楼-- · 2019-01-21 09:43

This is not exactly what you are asking for but it is a nice package that you can include in a LaTeX document to do all kind of operations including arithmetic, calculus and even vectors and matrices:

The package name is "calculator"

http://mirror.unl.edu/ctan/macros/latex/contrib/calculator/calculator.pdf

查看更多
We Are One
3楼-- · 2019-01-21 09:45
趁早两清
4楼-- · 2019-01-21 09:45

Considering that LaTeX itself is a Turing-complete markup language I strongly doubt you can build something like this that isn't built directly into LaTeX. Furthermore, LaTeX math matkup itself has next to no semantic meaning, it merely describes the visual appearance.

That being said, you can probably hack together something which recognizes a non-programmable subset of LaTeX math markup and spits out the result in the same way. If all you're interested in is simple arithmetics with fractions and integers (careful with decimal fractions, though, as they may appear as 3{,}141... in German texts :)) this shouldn't be too hard. But once you start with integrals, matrices, etc. I fear that LaTeX lacks expressiveness to accurately describe your intentions. It is a document preparation system, after all and thus not very suitable as input for computer algebra systems.

Side note: You can switch to Word which has—in its current version—a math markup language which is sufficiently LaTeX-like and yet still Google-friendly for simpler terms:

Illustration of math markup in Microsoft Word http://hypftier.de/dump/word_math_1.png

With the free Microsoft Math add-in you can even let Word calculate expressions in-place:

Illustration of the Microsoft Math add-in for Microsoft Word, calculating an expression http://hypftier.de/dump/word_math_2.png

查看更多
时光不老,我们不散
5楼-- · 2019-01-21 09:49

There is a way to do what you want just not quite how you describe.

You can use the fp package (\usepackage[options]{fp}) the floating point package will do anything you want; solving equations, adding dividing and many more. Unfortunately it will not read the LaTeX math you instead have to do something a little different, the documentation is very poor so I'll give an example here.

for instance if you want to do (2x3)/5 you would type:

\FPmul\p{2}{3}           % \p is the assignment of the operation 2x3
\FPupn\p{\p{} 7 round}   % upn evaluates the assignment \p and rounds to 7dp
\FPdiv\q{\p}{5}          % divides the assigned value p by 5 names result q
\FPupn\q{\q{} 4 round}   % rounds the result to 4 decimal places and evaluates
$\frac{2\times3}{5}=\FPprint\q$  % This will print the result of the calculations in the math.

the FP commands are always ibvisible, only FPprint prints the result associated with it so your documents will not be messy, FP commands can be placed wherever you wish (not verb) as long as they are before the associated FPprint.

查看更多
乱世女痞
6楼-- · 2019-01-21 09:52

For calculations with LaTeX you can use a CalcTeX package. This package understand elements of LaTeX language and makes an calculations, for example your problem is avialble on http://sg.bzip.pl/CalcTeX/examples/frac.tgz or just please write

\noindent For calculation please use following enviromentals $515.1544 + 454$ or \[ \frac{154.7}{25}-(289-\frac{1337}{42.}) \] or \begin{equation} 154.7/25-(289-1337/42.) \end{equation}

For more info please visite project web site or contact author of this project.

查看更多
We Are One
7楼-- · 2019-01-21 09:54

You can run an R function called Sweave on a (mostly TeX with some R) file that can replace R expressions with their results in Tex.

A tutorial can be found here: http://www.scribd.com/doc/6451985/Learning-to-Sweave-in-APA-Style

查看更多
登录 后发表回答