Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I'm putting together a Demonstration which utilizes a function which operates on a (manipulated) String, and I'd like the InputField to be of the form InputField[col,String,FieldSize->3]. Using the default format gives something like this:

Manipulate[col, {{col, "AB"}}]

Mathematica graphics

which requires use of quotation marks.

I'm able to hack the function to take expressions and convert them to strings

f[column_String] := column
f[column_] := ToString@HoldForm@column

but then the InputField looks strange for I or E:

Mathematica graphics

I found another possible workaround on MathGroup:

col="AB"
Manipulate[Grid[{{InputField[Dynamic[col], String, FieldSize -> 3], f@col}}]]

Mathematica graphics

However, this requires pre-initializing col and messes up multiple Manipulate instances.

Is there a way to have Manipulate assume that what's entered in an InputField is a String?

share|improve this question

1 Answer 1

up vote 15 down vote accepted

I thought this was undocumented, but actually it just seems to be obscure. The documentation for ControlType mentions, under the "More Information" section,

Arbitrary controls can be set up in Manipulate by giving control specifications of the form {u, func}.

So,

Manipulate[InputForm[col], {col, "AB", InputField[#, String] &}]

gives (with a different string entered for demonstrative purposes):

picture of a Manipulate with a string-type InputField

share|improve this answer
    
I completely missed that in the "More Information" section. Sorry for the RTFM question. –  Eli Lansey Apr 9 '12 at 21:07

Your Answer

 
discard

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.