Right now I am working on a command that calculates the molar mass of molecules. Mostly it is working like a charm but in some cases the interpretation of the input goes wrong.
The command converts the input to a string, e.g.:
f:=convert(Ca3(PO4)2, string) = "Ca(PO)"
f := StringTools:-Remove("_*^+-", f) = "Ca3(PO4)2"
However, sometimes information such as parentheses is lost (which is understandable considering the fact that maple does not know chemical syntax):
f := convert(NH*PO, string) = "NH*PO"
f := StringTools:-Remove("_*^+-", f) = "NH33PO4"
In special cases it goes completely nuts (I am aware this is not a real molecule):
f := convert(Al(OH)2(NH3)2, string) = "Al(`#msub(mfenced(mi("OH")),mn("2"))`)(NH)"
The problem could of course simply be solved by typing the input as a string with no subscripts but is looks much nicer with the correct chemical syntax as input.
Do any of you know a way to translate the input charactor by charactor into a (understandable) string?
Thanks in anvance,