I have:
InputField[Dynamic[d]]
Dynamic[d]
If I enter e.g.
a b x^5 h m
the entry automatically gets sorted, as per screen grab:

What is the best way to keep symbols entered into InputField in the same order that you entered them so that they always display in that order?
What I am actually wanting to do is enter some text that contains things like subscripts and superscripts, integrals ... InputField[expr, String] is not the answer. On the other hand if I use
InputField[Dynamic[d], Hold[Expression]]
and then
d /. {Times -> List, Power -> Superscript} // ReleaseHold
I get a list that I can do things with:

For example I could wrap Row with a default spacer or TextCell and so on around it. But this seems quite an indirect way of doing things.
Edit
Adding HoldForm to the second argument to Dynamic doesn't appear to offer any advantage and as Andrew points out you can end up with nested HoldForm. So I think this is not a good solution -- maybe a backwards step actually.

For Andrew's solution, using Boxes in InputField doesn't, in itself, prevent ordering when you eventually release Hold (e.g. after using MakeExpression). i.e. I don't see how to avoid apply a hold of some type and removing Times to stop the ordering.

So using Boxes may in general provide more flexibility but I'm struggling to see how it adds anything for this specific problem.

HoldForm[]instead ofHold[]... – J. M.♦ Feb 18 '12 at 1:35HoldFormorHoldForm[Expression]– Mike Honeychurch Feb 18 '12 at 2:01