To everyone who says "why do we need this when we have LaTeX?" I ask the question "why do we need Markdown when we have HTML?"
The nice thing about Markdown is that it's quite legible in its source form, which makes it less distracting to edit. Same deal with AsciiMath and LaTeX: AsciiMath is more legible in its source form which means that it has lower overhead during editing.
In my experience, most people who learn LaTeX don't do so until sometime around the middle or end of their undergrad career (certainly in Physics--maybe mathematicians learn it sooner). Earlier than that, people struggle with junk like the Microsoft equation editor. No big deal?
I would say that markdown for informal writing is fine and I like Markdown for many thing BUT if I need formatting LaTeX is a better tool. I have always waited for a new system but its hard to replace what works (With some cursing and banging on the desktop). Writing Math equations there is almost always a need for formatting within the document.
To me a math equation is just another plot. I love making quick plots but when it is my name on the document I want to be able to control every line and space.
I really like Scribble a Racket made document language is certainly the way to go but it will take a while to get broader usage. https://docs.racket-lang.org/scribble/
What Scribble does really well is you write your document and it is a one line change to change the output. It can output to MathJax or LaTeX or Markdown or PDF etc....
Not a fan of markdown myself at least for comment boxes. Everything that uses markdown as input (which seems to be hacker news comments too) ignores a single newline as a single newline, giving you different output than what you see in the box you type it in, which is very bad for intuitive web comment boxes.
Lots of people make that mistake, making a nice listing with newlines in between but them it becomes an ugly single line.
BBcode from forums in the past worked better for comments.
Somebody argued to me that it is to support editing like source code where you want a line length limit like 80 characters.
That is a very specific thing for source code editors. But bad for comment boxes. So I don't understand the popularity of markdown for comment boxes.
IMHO markdown should have done the opposite, make listening to all your newlines the default, and if you want to make it ignore a newline, end the line with a backslash or something like that.
That output is from the ancient equation editor (MathType Lite, effectively). It used a user-defined font (usuallly Times New Roman), so had no idea about what and where to kern. Output from Word 2007 onwards is significantly better as since then math typesetting is native to Word instead of an OLE object from another application. Also they have their own font (which I find okay for math but ugly for body text), which uses an OpenType table to define math-relevant spacing and kerning factors.
The syntax is something between ASCIImath and LaTeX and IMHO quite readable and way more writable than the latter. The syntax is also described in a Unicode Technical Note (http://unicode.org/notes/tn28/), so there's no reason it couldn't be used elsewhere, either.
What has been typed in Word (mostly; as it included cursor movement to get out of inner expressions again; thus can't be pasted right now):
\iiint_G [u\nabla^2 v+(\nabla u,\nabla v)]\dd^3 V =\oiint_S (u \partial v/\partial n +v \partial u/\partial n)\dd^2 A
This results in this monstrosity when converted back to linear format (which can be pasted):
Although the following still works just as well (spacing can eliminate the explicit \begin and \end brackets):
∭_G[u∇^2 v+(∇u,∇v)] ⅆ^3 V =∯_S(u ∂v/∂n+v ∂u/∂n) ⅆ^2 A
It just seems to me that many people still decrying the old equation editor haven't used or seen Word in a decade. There was a time when publishers still enforced MathType since that's what their Word publishing toolchains were built around for math for over a decade, but I think that has passed by now as well.
I used to think it was about as good as could be expected for a graphical editor (which meant it was rubbish). And then I found LyX which was infinitely better. That was years ago and MS might have caught up by now.
And yet, despite how much I like LyX, I keep using real LaTeX instead -- especially when there is complex maths. That's because the ability to create macros in maths eventually outweighs everything else readability-wise.
And I'm afraid the same logic applies to AsciiMath. Is there some equivalent to
\newcommand[1]{vr}{\mathbf{r_#1}}
Or am I just going to have to use somethng `bb"r"_1` for every instance? That's a lot less readable than `\vr1`.
I find TeXmac's equation editor to be an even faster WYSIWIG UI than LyX's.
For example, a λ is just 'l'+tab.
Simarly, you can cycle through other symbols. For b:
b->β->
Sadly, TeXmacs hasn't gotten as much love as it deserves: I find it way better than jupyter at producing notebooks/papers that involve math, interactive code, and prose.
LyX actually has support for math macros, or is that support just not ergonomic for you? Not certain what the best way would be to support macros in a graphical math editor.
My father opted to write his maths textbook with MS equation editor. There's always a strong need for tools that aren't just for the technically minded (or HN-reading) audience.
I wonder if it's gotten better since 2002-2004, which is when I used it a lot.
I'd be curious to hear what you think about the equation editor in Desmos[1] (full disclosure, my employer).
We use an open source WYSIWYG typesetting library called MathQuill[2]. The keystrokes you use are very similar to AsciiMath, but the result is direct editing of the typeset math. E.g. you type '_' to move into a subscript, '^' to move into a superscript, '/' to create a fraction, 'sqrt' to create a radical, etc.
I believe that I can edit much faster with this interface than with Microsoft Equation Editor, and that it's approximately similar difficulty to learn. But I'm biased.
> I wonder if it's gotten better since 2002-2004, which is when I used it a lot.
MS equation editor? It's got so much better! The version released when office 2007 came out allows a latex like syntax when writing equations. - still don't use it myself because that would require using ms office which was still broken in other ways when i last used it (2010).
Desmos is decent IME (am an u/g, so I've used it occasionally); I don't think I ever had serious issues with typesetting (backspacing between sub and superscripts is occasionally awkward, iirc), but navigating the site and using advanced features was always troublesome. I had to fallback to Googling for a specific Desmos calculator a lot.
Actually it's funny you say that your employer is Desmos. My friends and I use Desmos for all of our graphing assignments and let's say that it has saved us a lot of trouble!
I tried using MS equation editor when we were supposed to type our proofs in undergrad. Without fail it would crash or start to lag horribly half way through. It seemed to be tied to the number of equations in a document. That's what finally pushed me into learning LaTeX.
i am studying CS an we had to use it (not learn it ;) ) in the 3rd semester to hand in reports in their special format. I first thought this is stupid, but later when i needed it (my math proseminar, CS proseminar then now (or next semester) my bachelor-thesis), i could already do simple things. So in hindsight it was a good move from my university.
But i was always a bit disappointed, because i had to try hard to keep my source readable. LATEX really clutters your enumerations, equations etc with way to much syntax. I always thought about writing a simple Markdown-with special math mode (similar to AsciiMath)-to-LATEX compiler.
If you were to remove your \left and \right commands, which are unnecessary in the example, there would be very little difference in legibility between the two examples.
I don't know about other math departments, but most of the students and professors I knew during my math degree knew LaTeX.
From my cursory glance over the page, this isn't much simpler than LaTeX and it mostly just reduces a number of backslashes. It doesn't save me much time when typesetting equations. Nowadays, I mostly type LaTeX for MathJax or Jupyter notebook. Adding asciimath to Jupyter seems to be on the backlog[0], and it's dependent on CommonMark coming up with an extension system.
What's more, you can use a package like \usepackage{physics} which includes several convenience macros like \qty( [...] ) as a shorthand to \left( [...] \right). To go yet another step further, define something like \newcommand{\p}{\qty} to shorten the notation to simply dropping a \p before your delimiters to autosize them.
None of those things are difficult. And don't say 'no slashes or brackets'. Swapping `\sum_{..}` for `sum_(..)` isn't reducing the number of brackets, and in fact I find the top harder to read as it has more of just one type of bracket.
But to produce high-quality renderings of mathematical formulas, you need this fine-grained level of control. Not all fractions should use "\frac", sometimes "\tfrac" (which produces a vertically smaller fraction) or even an in-line "/" are more appropriate.
Similarly, "\left(" and "\right)" sometimes result in parentheses whose size don't reflect stress and emphasis. In those cases, it's good to have "\bigl(" and friends available.
LaTeX has several flaws. But it's also astonishingly good, making it extremely hard for a competitor to catch on. We're kind of locked in to LaTeX.
Also, AMS LaTeX, by its nature, allows you to write custom macros to shorten the particular notation(s) you happen to use most. A lot of these comparisons fail to note that important fact about the use of the tool.
Which is, in a nutshell, why it's important for a formal language to be easy to read and write, and why eliminating overly verbose notation matters. It's not just for computers...
In this respect I think AsciiMath doesn't go far enough, precisely because of the Ascii part. Especially for super- and subscripts, why not use the corresponding Unicode characters?
At least on my keyboard, "x^2" is one keystroke more than "x²", and the latter is much more redable.
AsciiMath optimises for ease of use in both reading and writing. Fewer people know how to write x² than x^2, yet virtually everyone will read them equivalently. That's not true for n/2 versus \frac{n}{2}.
On my Linux Mint 18 KDE system, ² can be typeset by typing AltGr-2 (I can get ½ by pressing AltGr-5). I am using an Italian keyboard, but I bet this works with US keyboards as well.
Recently I used Windows 10 quite a bit, and the number of AltGr combinations available on Linux has been the thing I missed the most!
I wouldn't want to make that bet, considering a US keyboard has no AltGr key.
It might work with a US keyboard as long as your computer was configured for an Italian keyboard, though. https://en.wikipedia.org/wiki/AltGr_key suggests that from the keyboard's perspective, AltGr and right Alt are the same thing. Really, no keyboard allows any character -- they just send key codes (and modifier codes), and it's on your software to interpret those. But typing ² is not part of the normal, expected functioning of a US keyboard.
Edit: it occurs to me that perhaps I should gloss "it's on your software to interpret those" as "it is the responsibility of your software to interpret those".
You're right, US keyboards do not support AltGr! I have always used european keyboards and every one of them supports AltGr, so I assumed that US keyboards did the same.
Just for testing, I installed a few new keyboards on my KDE desktop, and I can confirm that French, German, Spanish, and Greek keyboards have support for AltGr combinations to get superscripts/fractions/other characters.
I've never required that a keyboard could allow any character. However, this is indeed possible today, as Shift+Ctrl+u+HexNumber allows to quickly insert any Unicode character. (This works under Xfce and KDE, and probably other DEs.)
Nevertheless, I think that a 100-and-more-keys keyboard should support a subset of the most useful ones. I am a physicist and an Italian, so having quick keyboard combinations for exponents, fractions, and the euro sign € is extremely handy for my everyday activities.
The AltGr key is one of the three things I hate about EU keyboards, because it removes the right Alt key, along with the ability to use you right hand to type shortcuts such as alt-ctrl-arrows or alt-ctrl-<some letter on the right side of the keyboard>.
The other abominations on those keyboards are the shorter left Shift key and the vertical Enter, both of which put two of the most used keys one position further away from home row.
Every german keyboard can do this. And a quick (non-exhaustive) google image search shows that many other keyboard layouts support it, e.g. french, turkish and portuguese (brazil but not portugal)
If you want email to have autocomplete, then it does. 'Email' isn't a client. The client you choose to use is. Write your emails in vim -> now you have autocomplete.
No. The way to write your emails in vim is to use an email client that lets you open the text in an editor of your choice. E.g. mutt, or a webclient combined with an add on that let's your open textarea in an external editor (vimperator or its all text).
P.s. emacs sounds like a great OS - are there any add ons that allow one to open its textareas in a decent editor? :p
This is about a decade old before MathJax and back when its predecessor, jsMath, was still pretty new. It was targeting students the most, not those who use latex professionally. I used it to create TidlyWiki notebooks for my students and it was something they actually did!
The goal was also about being translated into MathML. LaTeX is not necessarily concerned with mathematical sense while MathML (sometimes) is. I think this was also a motivation.
And, quite frankly, replacing \frac{a}{b} with a/b is a huge win for ease of writing basic math.
The original native AsciiMath script was limited in support, but AsciiMath via MathJax has wide browser support. We maintain the original script still, but most people use AsciiMath through MathJax.
I'm curious who the audience is for this. If it's people who actually care about maths, then this doesn't have any real value, because they already know LaTeX and will most likely appreciate the higher precision that offers (I personally fall in that category). If it's people who normally don't really need to write mathematics, then for the few times they need to, LaTeX might still make more sense due to convenient quickly-googled online LaTeX creators like https://www.codecogs.com/latex/eqneditor.php
If there's a demographic between those two groups, then I might simply have a blind spot, but... whose problem does this solve, and what is that problem? Because just saying "LaTeX is too much effort", the immediate counter-question is "for whom, exactly?" because it won't be people who already use LaTeX, or need reliable maths typesetting on a daily basis, and it probably isn't for people who need to use maths maybe a handful of times a year. So who's left, and what problem do they have where asciimath makes life easier?
As someone who would "need" this only once or twice every few years at best. I vastly prefer the idea of using this. I will likely never care about nitty gritty typesetting details. Getting things to "remotely legible" is more than enough for me.
One audience: undergrad students. They are familiar with calculator notation but not Tex. Particularly for simple algebraic expressions, AsciiMath is very similar to infix.
Despite knowing LaTeX, this is much more intuitive for me when communicating in plaintext. It just matches how I'd write it anyway. In an email I'd always use 1/2 or (f(x+h)-f(x))/h over their LaTeX alternatives.
If, however, the goal is to more easily edit LaTeX -- especially for folks who are less confident with LaTeX -- I suspect WYSIWYG is frequently a better option. MathQuill (mathquill.com), for example, is a fantastic open-source WISYWIG editor for LaTeX.
Disclosure: we use MathQuill heavily at desmos.com, where I work, and have contributed to its development.
It's probably worth somebody investigating a more short-hand notation for this kind of task. However, I feel compelled to say that I've never found the syntax which is commonly used to typeset equations with LaTeX to be all that complicated. When I was first learning it, I remember repeatedly thinking to myself, "This is it? This really isn't so bad!" Furthermore, the thing I like about LaTeX is that the syntax is very extensible. You can easily add more directives or macros and there are really only a few syntactic constructs that you can use to represent them. If I'm not mistaken, AsciiMath's approach requires that more specialized syntax would be needed when adding more features.
This is pretty nice and intuitive! What is odd is how you don't need spaces between string identifiers
intintint does the same as int int int, 3 integrals
del becomes a del symbol, delt becomes a del symbol plus a t, delta becomes a delta symbol
rhoint: will it become rh + oint (circular integral), or rho + int? It happens to become rho + int here, but does it specify that in its specification?
deltau: will it become del + tau, or delta + u? it happens to become delta + u here. Opposite of the rhoint case about where it chose to make both things a rendered symbol
So it's inconsistent parsing rules, simply requiring spaces between textual identifiers would make it more logical :)
Also, what is now => and lArr could make more sense as ==> and <==. Also sad that <- or <-- doesn't work for left arrow.
What about this is so much different than LaTeX? It seems to have the same basic syntax but the commands don't start with a backslash. Also the symbol list seems severely limited.
After using MathJax to render LaTex on my website I switched to KaTeX and saw a dramatic decrease in load times. I hope that asciiMath doesn't also suffer from the same speed issues from MathJax.
That's nice, but we are in 2017. It may be better to support unicode. I mean I prefer to write things like:
∀α,β ∈ ℝ², √ϕ=αβ, ...
∃ a⃗ + b⃗ ≥ ...
What I think is needed are generic 2d composition diacritics for unicode, to have text above/below/to the upper left/UR/LL/LR angle -- I mean, some more generic version to write things like Ψ̂⁹⁻¹=Ψ⁸, ρ₁₂ with composition characters instead of the dedicated numbers, or letters.
I don't like LaTeX because I want WYSIWYG, which is what unicode is for. Even in the body of an email. Even in a reply on YN.
The COMBINING RIGHT ARROW ABOVE combination on that second line rendered both the letter and the arrow as two separate squares, on macOS, in fully-updated Chrome.
It maybe 2017, but this doesn't quite work yet. Not to mention how it falls apart as soon as I want some _clever_ typesetting. Don't get me wrong: I think we can do better than TeX, and in a lot of cases common characters like e.g. Greek characters might be fine, but, uh, we aren't there yet.
Yeah, TeX name autocomplete or better yet free unicode description search triggered by \ is the obvious direction.
(think github emoji search, like how :ship also offers :anchor: and :package:)
Yeah, the original design philosophy of AsciiMath was to make that input symbol something in ASCII that looks kind of like the desired symbol. The idea of supporting Unicode as an alternative is reasonable idea and probably one we should look at (feel free to make a pull request).
I see unicode as both an alternative rendering for text based devices, and an alternative input (because on my keyboard, the right Alt key followed by a gives me α, which is faster than typing alpha)
One of my earlier programming experience was writing a more expressive alternative to ascii math [1]. I learned later that this was also the first compiler that I ever write. It fixes some of the shortcomings of asciiMath, like you should never have to resort to latex like syntax, you can enter Unicode characters directly, and it has a nice mapping to MathML.
This looks nice, with a much more legible syntax than LaTeX. I'd love to use this, e.g., on my blog. The reasons why I won't:
- No server-side rendering. I don't want to burden my reader's browser with Javascript. (With MathJax, you can do it server-side, I explained how here: https://a3nm.net/blog/selfhost_mathjax.html)
The project isn't exactly dead (I'm one of the maintainers). The direct-to-MathML version is somewhat dead, but the AsciiMath syntax rendered via MathJax is still widely used. The syntax is pretty mature at over 10 years old, hence the lack of commit activity.
Thanks for explaining this! I wasn't implying at all that the project was not being used. I understand that the syntax may be mature, but the lack of commit activity does not explain why there are still so many pending issues in the repository. :)
Not that this and Latex aren't great, but I wonder if there is a more outside the box solution. APL can represent mathematics very well using Iverson Notation as the design and it is executable to boot. I haven't spent a ton of time with it, so I'm not sure if I could read complex equations as easily with it or not once suitably trained. Other benfits of APL's notation is no order of operations and all you need is the character set which is really easy to deal with I would guess. If it hasn't become popular after 1/2 century, perhaps there really is something to the critical mass of our current notation.
I've enjoyed the part of this interview with Linda Cherry, one of its creators, talking about it in comparison with Tex (incorrectly transcribed as "tech").
Thank you! I've been wanting to do this for a while for myself after becoming fed up with the verbosity of LaTex. My strategy has been a little different in that I've been working on plugging into equations using a Pandoc filter.
Instead of rolling my own or hacking into SymPy, I'll use asciimath.
Same here! It's been on my to-do list but I haven't gotten around to solving it in a robust manner (tried regexes just for kicks and they failed like I expected)...
It has been tried several times with different approaches.
I mentioned some of them in my bachelor's thesis "Multimodal mathematical formula editing for web services":
http://matracas.org/tacto/index.html.en
As part of that work I implemented part of the DRACULAE formula layout analysis algorithm and improved on it to allow certain disambiguations when parsing the formula: the result encoding is not presentational like LaTeX but semantical like the ones used in Computer Algebra Systems. That makes thing much more complicated and I only implemented simple notations like super/subscripts and fractions.
Still, it might give you an idea of how it can be done.You can play with it here:
http://matracas.org/tacto/test.html
Speech synthesis using the HTML5 audio API (reads aloud the formula you write) worked in several browsers including Chrome at the time, but nowadays it seems to work only in Firefox.
You might combine the handwritten symbol recognition of detexify, mentioned in a sibling comment, with this layout analysis to have full handwritten recognition of formulas but it's not straightforward.
Some time ago there was a story in HN about someone else's PhD thesis that went much further ahead:
"SESHAT: Handwritten math expression parser"
https://news.ycombinator.com/item?id=12388407
This one is closer to what you want.
That only works for individual glyphs. I guess they meant something like the Math Input Panel where you can draw an entire expression and paste it into other applications.
I actually wrote a little compiler that converts AsciiMath to LaTeX for a course in school.
Hooked up the executable to an Automator service so I could highlight some AsciiMath text and replace it with LaTeX from the right-click menu. Much faster for writing math notes in LaTeX!
It's a little bit easier to read in raw notation such as in Github readme.md documents, since GH hasn't yet figured out how to incorporate Mathjax. (If I'm wrong about this, please correct me!)
This is fabulous. It seems crazy to me, that some in this thread are like "meh, no big deal, LaTeX is fine".
Except, I guess it would be better if that could be compiled to LaTeX instead of rendering it directly. LaTeX is still de-facto standard, and surely there are situations when it would be more powerful. So this mid-layer still would be useful, I guess. But otherwise, I would gladly write everything I need in Markdown+AsciiMath instead of pure LaTeX.
Everything is about how we get used it to quickly though! Takes a little time to get used to latex, but this is definitely something worth trying. Especially the word syntax seems much more effective here! Thanks!
The website named http://www.mathifyit.com/ helps in getting latex syntax through plain english. Seems like something I'll use!
Great. Would love to have some support for diagrams drawing.
This seem to tackle the issue that Latex equations are not very readable, which is great. A related problem is that tikz code for drawing commutative diagrams in latex is basically completely incomprehensible. Looks like this project is in a good position to start tackling that problem.
This is really neat. Your table doesn't mention that => can make a double arrow, even though it does. Also it would be nice for the dx in integrals to be \mathrm{d}x.
To all the commenters pointing out the people that talk about LaTeX, you are getting a part of the criticism wrong. It's not: "Why this when we already have LaTeX?", but a "Why this when LaTeX does it better?".
I wouldn't mind for an easier way to introduce mathematics, but just from the example given, I can see right away that the typography in AsciiMath is not good.
Just look at the space (or lack of it) around the inner parenthesis for instance.
The nice thing about Markdown is that it's quite legible in its source form, which makes it less distracting to edit. Same deal with AsciiMath and LaTeX: AsciiMath is more legible in its source form which means that it has lower overhead during editing.
One of these is more legible than the other:
In my experience, most people who learn LaTeX don't do so until sometime around the middle or end of their undergrad career (certainly in Physics--maybe mathematicians learn it sooner). Earlier than that, people struggle with junk like the Microsoft equation editor. No big deal?