Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How to programmatically convert an operator such as Equilibrium into its displayed form as a string? The conversion should work like this:

FullForm[convert /@ {Equilibrium, LongRightArrow, LeftVector, Equal}]

Mathematica graphics

I've tried various methods with no avail:

  • converting to strings and wrapping in "\[...]"
  • using different form wrappers (DisplayForm, TraditionalForm, etc.)
  • using low level boxes, but since that is really not my alley, I was a bit clueless
  • since operators with built-in meaning are used too, argument usage does not seem viable (e.g. ToString[Equal["", ""]] which returns True)
share|improve this question
Don't be confused by Mma interpretation of Unicode chars. Try ToCharacterCode@ToString@Equilibrium["a", "a"] and them FromCharacterCode@% // FullForm – Dr. belisarius Mar 28 '12 at 13:27
up vote 12 down vote accepted

This seems to work

convert[str_] := Module[{stream, output},
  stream = StringToStream["\"\\[" <> ToString[str] <> "]\""];
  output = Read[stream];

convert /@ {Equilibrium, LongRightArrow, LeftVector, Equal} // InputForm

Mathematica graphics


You could also do something like this:

convert[str_] := ToExpression["\"\\[" <> ToString[str] <> "]\""]

convert /@ {Equilibrium, LongRightArrow, LeftVector, Equal} // InputForm
share|improve this answer

How about (updated based on TomD's comment):

convert = StringTrim@ToString[HoldForm@#["", " "]]&


In[]:= convert/@{Equilibrium,LongRightArrow,LeftVector,Equilibrium}
Out[]= {\[Equilibrium],\[LongRightArrow],\[LeftVector],\[Equilibrium]}

Note, that the output here is a string:

In[]:= Head/@%
Out[]= {String,String,String,String}

Mathematica graphics

Edit Note, this also works on operators like Plus or Minus.

share|improve this answer
Nice solution, and almost perfect: the Equal sign (it is now correctly present in my original post) that is returned is the two-character format (==) instead of the one-character version (see my updated Q). This difference can be a probelem if you simplify the solution to this: StringTake[ToString[HoldForm@str["", ""]], {2}], as it clips the == sign to =. – István Zachar Mar 28 '12 at 13:42
That's a good point. Let me see what I can figure out. – Eli Lansey Mar 28 '12 at 14:28
Nice solution. A slight modification with StringTrim. For example StringTrim@ToString@HoldForm@#["", ""] & /@ {Equilibrium, LongRightArrow, Equal, SameQ, Plus}. – user 106 Mar 28 '12 at 16:26
@TomD Good point. Forgot about that function. Still stuck on that double-equals, though. Seems like Heike's second solution might work better. – Eli Lansey Mar 28 '12 at 16:29

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.