Hey HN, I created CalcuLaTeX because I was frustrated with my workflow for chemistry and physics homework. Generally, I'd use the Python REPL as a calculator and type each problem into LaTeX to turn it in. CalcuLaTeX merges these two steps and makes it easier to reason about calculations by real time visual feedback.
The only alternative I know of is PTC MathCAD, which is quite powerful and definitely worth looking into. However, it's quite expensive and Windows only.
FYI you might find the GNU units(1) tool useful, which has a huge catalog of units and understands about the same set of math operations as a scientific calculators. From the demo I actually thought this was using GNU units in the background.
Is there a way to get the LaTeX source with the completed calculation (so that you can copy/paste the whole thing in your local LaTeX installation and, well, hand in your homework)? (sort of a "middle" tab)
The main export of the Rust/WASM library is just a function which outputs LaTeX; it should be pretty doable to add a button to the website which does what you're asking. I think I'll just add a checkbox to set whether it actually renders or not.
That's wonderful! When I used to do my math and physics homework, I used Mathematica as a calculator. It has built-in LaTeX formatting available (right click, Copy As > LaTeX). But likewise Mathematica is expensive and proprietary software so it doesn't appeal to everyone.
I use MiktTeX integrated with Spyder to work on homework and export the equations to LaTeX format. Works well, although some preliminary searching has led me to see that other people have had many issues with it. I guess I just got lucky.
It supports every SI unit and many derived units. It doesn't yet support fractional units, e.g. km^3/2 though. AFAIK there aren't any fractional units that have physical meaning but they might appear in intermediate steps sometimes.
Imagine you are G.I.Taylor and its the start of The Cold War. Life magazine has just published an amazing high speed photographic sequence of the detonation of an atom bomb. The nation is enthralled by these images, but you see a bit further into the imagery.
The pictures give you the radius of the blast as a function of time.
All that could be important In determining the radius R as a function of time are the initial energy released, E, and the density of the undisturbed medium, Rho.
Thanks to your natural curiosity, you know the value of dimensional analysis and reason that the radius, with dimensions of length, must depend only on E, rho, and t, for which the correct expression can only be:
R(t) = (E/Rho t^2)^(1/5)
Since E/Rho has dimensions of (length)^5/time^2
A log-log plot of r vs t (imagine measuring the radius of the blast and carefully noting time stamps given in the picture captions) gives a slope of 2/5, checking the theory, and E/Rho could be obtained from extrapolation to the value of log R when log t= 0. Rho is known For air and thus E was determined to within a factor of order 1.
For the practitioner of dimensional analysis, the nations deepest secret had been published in Life magazine.
(Goldstein States of Matter, chapter 6)
Ah, but how best to convey the findings? Surely the best way is to use a mathcad like, But open source tool which prints straight to latex!
Ah ...if only it could express fractional units...
GI Taylor prepares a letter to John wheeler, requesting a closed time like networked computing device so that the feature request can be made.
In all seriousness though, This project is awesome! Just kick in fractional unit support and it will surely be unstoppable.
The unit of volatility is conceptually [time^{-1/2}], most commonly 1/sqrt(year), but that is rarely written. (People speak of a stock with 30% annual vol, not with a sigma = 0.3 a^-0.5 :-)
> I was pretty mindblown when I realized that radians are basically meters/meters
This is true in a dimensional analysis way, where e.g. arclength around a circle is equal to the subtended angle times the radius and, since the arclength and the radius have the same dimension, the angle must be dimensionless.
But units are more than that. You can't do anything in chemistry without running into quantities like molarity or ppm that appear to be dimensionless but make no sense if you think about them as coefficients rather than as combinations of semantically-distinct units that happen to have the same name.
Imagine some subtance that is 5% salt by mass and 8% salt by volume. ppm by mass is just kg / kg, right? And ppm by volume is m^3 / m^3. Those are the same unit -- in fact, no unit at all. Except that the implication of that non-fact is that ppm by volume and ppm by mass are the same thing, which they aren't.
Similarly, radians are best conceived of as percentages of a rotation, not as dimensionless coefficients. Then we calculate an arclength around a circle by saying that the ratio between the arclength and the full perimeter is equal to the ratio between the subtended angle and the full rotation. Characterized so, we have both units present twice, canceling each other out on each side of the equation, and we don't need to clean up by saying that the angle has no unit at all. We divided part of a perimeter by all of a perimeter -- producing a dimensionless quantity -- and we divided part of a rotation by all of a rotation -- also producing a dimensionless quantity -- and then we correctly compared two dimensionless quantities to each other.
(On this analysis, the equation s = rθ is actually incorrect; it should be written s = rθ/1 . You can extend this -- we all know the area under sin(x) from 0 to pi is 2. 2 whats? Well, the x axis is radians and the y axis is sine values. Sine values are computed by dividing the length of a line segment by the length of another line segment; they are legitimately dimensionless. So the area under sin(x) must be 2 radians.)
Seriously, radians aren't dimensionless. If you calculate arclengths using angles measured in degrees, the whole problem disappears: a 60° arc around a circle of radius 3cm has length equal to (2·pi·3cm·60°)/(360°) = (2·pi·3cm)/6 = pi centimeters. Looking at it that way makes it very plain that the angles have units attached, and those units don't appear in the result of "pi centimeters" because they canceled out during the computation.
This is overt when calculating in degrees because they are an inconvenient size. The size of a radian is chosen so that the constant terms (2·pi) in the numerator and (2·pi radians) in the denominator appear to cancel out, giving a (1 radian) in the denominator which is omitted from the formula because dividing by 1 is numerically pointless. But dividing by 1 radian is not dimensionally pointless; omitting the 1 from the formula leads to the illusion that θ has no unit attached.
My main suggestion is better error handling: make it so that when a calculation is invalid, it shows the error where the result would be (e.g. red text with the error message) instead of failing to compile the whole script.
I definitely agree that error handling should be improved. I'm trying to keep the LaTeX output as portable/minimal as possible though so I'm not sure if highlights are doable. My current plan is to output more diagnostic info and let the JS interface figure it out.
It seems like it wouldn't be too hard (maybe?) to get a proper algebra engine to assign variables. Currently you can do `x = 10` but you can't do `x / 2 = 5`. I feel like this would be very helpful since you're using this for scientific calculations.
It could then be possible to extend that further and leave the variable undefined if it doesn't (yet) have enough information to solve it. Then it could theoretically be used to solve simultaneous equations.
I was originally planning to use MathJax and HTML or Markdown but honestly it wasn't a completely conscious decision.
About proper algebraic stuff, it is a long term goal to have at least a basic polynomial solver, but I've no experience in the area and I'm not sure how far it can go.
This is very cool. It looks much easier to use than the collection of Makefiles and build scripts I cobbled together in college.
One thing that’d make this even more awesome is the ability to drop in a data table and have it show up as a graph. The scripts I built in college allowed me to drop a CSV file into a directory and have it automatically turned into an EPS graph that I could use in LaTeX. It made for pretty easy, but very good looking reports.
I like Calca, and this looks like a cool project. Could be cool to combine the 2 in an editor similar to Typora.
Typora is my favorite Mac Markdown editor: It looks like a plain word processor file, hiding the markdown annotations, but they're still there and can be edited. I think it's ideal.
Hey, definitely check out Blockpad (https://blockpad.net). It does calculations with units, integrated with documents, spreadsheets, and drawing. Speaking from the Blockpad team here, would love to hear your experience.
We have Windows app and beta web app. Also Mac app coming soon. It's free for students and otherwise still inexpensive.
I've posted on r/rust as well (https://www.reddit.com/r/rust/comments/lqn5aa/calculatex_a_p...), and there seems to be interest in using it for scientific papers and such.
The only alternative I know of is PTC MathCAD, which is quite powerful and definitely worth looking into. However, it's quite expensive and Windows only.
The main repo (a Rust library and basic CLI) can be found here: https://github.com/mkhan45/CalcuLaTeX
The website repo using WASM and very hacky JS can be found here: https://github.com/mkhan45/CalcuLaTeX-Web