[Date Index]
[Thread Index]
[Author Index]
Re: NumberSigns and Number Formatting
*To*: mathgroup at smc.vnet.net
*Subject*: [mg92802] Re: NumberSigns and Number Formatting
*From*: Albert Retey <awnl at gmx-topmail.de>
*Date*: Mon, 13 Oct 2008 07:06:05 -0400 (EDT)
*References*: <gckmtj$ni8$1@smc.vnet.net> <gcn4bv$76e$1@smc.vnet.net> <gcq040$bu0$1@smc.vnet.net>
Hi,
> I believe that NumberForm was originally designed for monospace fonts. This
> was generally good enough. The Help for NumberForm says that it controls how
> the number 'prints' and not that it's purpose is to convert the number to a
> string.
Sorry, I didn't even look up the help for NumberForm, which obviously
was a mistake: Of course saying it is for converting to string strictly
speaking was nonsense, since it actually doesn't even do that. What I
probably should have said is that I think its purpose is to create a
sequence of characters to be shown.
> In any case, now that we have much easier dynamics, and constructs
> like Panel with its proportional font (which I like), there will be much
> more formatting of numbers within lines of text. NumberForm no longer works
> properly for this purpose.
correct
> We can end up getting a lot of 'jitter'. If
> somehow we could pad with blank characters that had the same widths as "-"
> and "0" in the font then that would be the simplest solution.
Hm, I'm not an expert for proportional fonts, but naive as I am I would
believe this probably isn't possible in general, are there any
(technical) rules that for a proportial font all digits have to be the
same size (and height)? Is a blank character with the correct size
something that WRI can provide for any font that you can install and use
within a mathematica document? I don't know. If not, even without
padding a jitter wouldn't be to avoid...
> If that solution could be implemented within NumberForm (and maybe it is impossible)
> the average user would find it relatively easy to use. The solution you give
> is slightly heavy lifting for most users. Just because a solution is
> possible doesn't mean that it will be readily available to most users. They
> are going to spend a lot of time looking at NumberPadding and NumberSigns
> because that is the obvious indicated path.
That's correct, it could be made easier and be explained better in the
documentation. If there would be a NumberFormPane as the one you suggest
and that would be mentioned in the "See Also" section that would be
probably the best solution. I think for WRI it pobably would even be
possible to automatically determine the correct Pane-Size with more
internal knowledge about the font-properties, so that the Pane-Size
would only need to change when the font would be changed, but not when
only the content changes. But I'm not sure and unfortunatly I can't
provide that :-). Actually it would be interesting to know if and how
other systems / programming languages / GUI toolkits handle this.
Finally I have another workaround, more along the lines you originally
suggested that should work for most cases. It just makes strings from
NumberForm, and then replaces the string with a row where invisible
padding characters are written using Style[_,Opacity[0]]:
Module[{x = 0., numformat}, numformat[x_] := Row[
List @@
StringReplace[
ToString[
NumberForm[N[x], {6, 3}, NumberPadding -> {"@", "0"},
NumberSigns -> {"-", "$"}, SignPadding -> False]], {
"@" -> Style["0", Opacity[0]], "$" -> Style["-", Opacity[0]]
}
]];
Panel[Column[{Row[{-15 <= "x" <= 15, Spacer[5],
Slider[Dynamic[x], {-15, 15, .001}], Spacer[5],
InputField[Dynamic[x], FieldSize -> {5, 1.2}]}],
Row[{"x:", Spacer[5], Dynamic@numformat[x], Spacer[5],
"in value."}]}], Style["Number Formatting Problem", 16],
BaseStyle -> {FontSize -> 16}]]
cheers,
albert
Prev by Date:
**Re: Getting rid of those deprecated Do[] loops?**
Next by Date:
**Re: Exclude O[] from Series[] for Solve[] in Mathematica**
Previous by thread:
**Re: NumberSigns and Number Formatting**
Next by thread:
**Math Formulas**
| |