I am trying to use the Notation package to define custom notation for chemical reactions. The natural thing to do is to use a
\[LongRightArrow]
for the operator. In particular, I would like to have the reactants grouped before the arrow, the products grouped after the arrow, and a rate constant over the arrow using Ctrl-7. But when I try to implement this with the Notations Package, I run into several problems. First, trying it as a binary operator without the rate constant over the arrow, the precedence of the arrow is too high, so it shifts products around to the reactants side. I have tried copying in example code from the Complex Patters and Advanced Features source (specifically the Changing Precedences and the TagBox Option SyntaxForm section -- copying the code directly and attempting to modify with the LongArrow fails), setting the SyntaxForm option within a TagBox to something with a very low precedence, like "," or "==", but this doesn't change the output at all.
Example code:
Notation[ParsedBoxWrapper[RowBox[{"a_", "\[LongRightArrow]", "b_"}]]
\[DoubleLongLeftRightArrow]
ParsedBoxWrapper[RowBox[{"Reaction", "[", RowBox[{"a_", ",", "b_"}], "]"}]]]
When used with the following example reaction:
2 C60s\[LongRightArrow]C60s + C60
Produces:
C60 + 2 C60s\[LongRightArrow]C60s
Changing the notation with a TagBox like so:
Notation[ParsedBoxWrapper[RowBox[{"a_",
TagBox["\[LongRightArrow]", Identity, SyntaxForm -> ","], "b_"}]]
\[DoubleLongLeftRightArrow]ParsedBoxWrapper[RowBox[{"LongRightArrow", "[",
RowBox[{"a_", ",", "b_"}], "]"}]]]
Has no effect on my output from the example above. I have also tried using the Full Notation Palette with the Wrapper Boxes to no avail following advice in a StackExchange thread.
And this doesn't begin to address the issue of trying to get a third operand over the arrow.
Any help appreciated!
Edited to add: To get this to work seamlessly, we need the Notation line to include an extra " " between the "a_" and the TagBox.