消息中的数字格式很好

时间:2011-03-08 11:52:08

标签: wolfram-mathematica

默认情况下,使用StyleBox打印字符串时,我们会在字符串中获得格式良好的数字:

StyleBox["some text 1000000"] // DisplayForm

我的意思是数字看起来好像会有额外的小空格:“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]

有没有办法让Message中的数字格式化?

2 个答案:

答案 0 :(得分:6)

我使用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]]

或者您可以将它与$ MessagePrePrint一起使用,将其应用于所有消息:

$MessagePrePrint = Style[#, AutoNumberFormatting -> True] &;

Message[f::NoMoreMemory, 1000000, 98000000]

答案 1 :(得分:5)

我想你想要$MessagePrePrint

$MessagePrePrint = 
   NumberForm[#, DigitBlock -> 3, NumberSeparator -> " "] &;

或者,结合Sjoerd的建议:

With[
  {opts =
    AbsoluteOptions[EvaluationNotebook[],
     {DigitBlock, NumberSeparator}]},
  $MessagePrePrint = NumberForm[#, Sequence @@ opts] &];

采用Brett Champion的方法,我相信这允许复制&按要求粘贴:

$MessagePrePrint = StyleForm[#, AutoNumberFormatting -> True] &;