默认情况下,使用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
中的数字格式化?
答案 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] &;