Wolfram mathematica 格式化消息参数

Wolfram mathematica 格式化消息参数,wolfram-mathematica,mathematica-frontend,Wolfram Mathematica,Mathematica Frontend,有人能解释为什么第一个表达式能像预期的那样工作,而第二个表达式不能?“第一号”和DisplayForm@“第一号”之间有什么区别 错误消息是一个线索: 未知的框名称(次)已作为表达式的框形式发送。检查表达式的格式规则 我假设$MessagePrePrint是低级的,就像$PreRead,它的输出需要是一个有效的框结构。错误消息是一个线索: 未知的框名称(次)已作为表达式的框形式发送。检查表达式的格式规则 我假设$MessagePrePrint是低级的,就像$PreRead,它的输出需要是一个有效

有人能解释为什么第一个表达式能像预期的那样工作,而第二个表达式不能?
“第一号”
DisplayForm@“第一号”
之间有什么区别


错误消息是一个线索:

未知的框名称(次)已作为表达式的框形式发送。检查表达式的格式规则


我假设
$MessagePrePrint
是低级的,就像
$PreRead
,它的输出需要是一个有效的框结构。

错误消息是一个线索:

未知的框名称(次)已作为表达式的框形式发送。检查表达式的格式规则

我假设
$MessagePrePrint
是低级的,就像
$PreRead
,它的输出需要是一个有效的框结构。

在我的机器上工作(v8.0.1,W7-64):

在我的机器上工作(v8.0.1,W7-64):


因此我们可以使用
tobox
而不是
DisplayForm
?@Mr。向导不会在我的机器上发生。看看我的答案。@Alexey,是的。再一次,我很难理解你在做什么,所以如果我把一个困难的问题琐碎化,请原谅我。您可以使用
Block[{$MessagePrePrint=Automatic}如果您只是想暂时禁用自定义的
$MessagePrePrint
。实际上,我不喜欢更改全局Mathematica设置,只在我自己的函数中使用修改过的函数,这样我就可以控制它们的行为。在这种特殊情况下,我根本不需要在我的函数中使用
$MessagePrePrint
禁用它。我现在写的不是
“第一”
“第一”
。它可以工作。:)所以我们可以使用
ToBoxes
而不是
DisplayForm
?@Mr.Wizard不会发生在我的机器上。请看我的答案。@Alexey,是的。同样,我很难理解你在做什么,所以如果我把一个困难的问题简单化了,请原谅。你可以使用
Block[{$MessagePrePrint=Automatic}如果您只是想暂时禁用自定义的
$MessagePrePrint
。实际上,我不喜欢更改全局Mathematica设置,只在我自己的函数中使用修改过的函数,这样我就可以控制它们的行为。在这种特殊情况下,我根本不需要在我的函数中使用
$MessagePrePrint
禁用它。我现在写的不是
“第一”
“第一”
。有效:)我喜欢你选择的短信。我使用的是Mathematica 7.0.1。所以我们在第8节看到了另一项创新。@Mr.Wizard我怎么知道你会认出它?;-)我喜欢你选择的短信。我使用的是Mathematica 7.0.1。所以我们在第8节看到了另一项创新。@Mr.Wizard我怎么知道你会认出它?;-)
Block[{$MessagePrePrint}, Message[f::event, DisplayForm@"number one"]]

Block[{$MessagePrePrint}, Message[f::event, "number one"]]