Ale*_*kov 5 wolfram-mathematica
StyleBox默认情况下打印字符串时,我们在字符串中获得格式良好的数字:
StyleBox["some text 1000000"] // DisplayForm
Run Code Online (Sandbox Code Playgroud)
我的意思是数字看起来好像会有额外的小空格:"1 000 000".
但是在Message所有数字中都显示没有格式化:
f::NoMoreMemory =
"There are less than `1` bytes of free physical memory (`2` bytes \
is free). $Failed is returned.";
Message[f::NoMoreMemory, 1000000, 98000000]
Run Code Online (Sandbox Code Playgroud)
有没有办法让Messages 里面的数字格式化?
我使用Style来应用AutoNumberFormatting选项:
您可以使用它来定位特定消息:
f::NoMoreMemory =
"There are less than `1` bytes of free physical memory (`2` bytes is free). $Failed is returned.";
Message[f::NoMoreMemory,
Style[1000000, AutoNumberFormatting -> True],
Style[98000000, AutoNumberFormatting -> True]]
Run Code Online (Sandbox Code Playgroud)
或者您可以将它与$ MessagePrePrint一起使用以将其应用于所有消息:
$MessagePrePrint = Style[#, AutoNumberFormatting -> True] &;
Message[f::NoMoreMemory, 1000000, 98000000]
Run Code Online (Sandbox Code Playgroud)
我想你想要的 $MessagePrePrint
$MessagePrePrint =
NumberForm[#, DigitBlock -> 3, NumberSeparator -> " "] &;
Run Code Online (Sandbox Code Playgroud)
或者,结合Sjoerd的建议:
With[
{opts =
AbsoluteOptions[EvaluationNotebook[],
{DigitBlock, NumberSeparator}]},
$MessagePrePrint = NumberForm[#, Sequence @@ opts] &];
Run Code Online (Sandbox Code Playgroud)
适应Brett Champion的方法,我相信这可以按照您的要求进行复制和粘贴:
$MessagePrePrint = StyleForm[#, AutoNumberFormatting -> True] &;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |