笔记本StyleSheet可以改变代码行为吗?

Nas*_*ser 16 wolfram-mathematica mathematica-8

我想问一下之前是否有人遇到这样的问题.我有版本8.01,在Windows 7,64位.SP1.

我一直试图找到为什么当我向我编写的一些代码添加Tooltip []命令时,我得到Mathematica内核崩溃.

该笔记本具有Wolfram演示样式表(示例样式表,用于进行演示).它是一个Manipulate,都在一个单元格中.

当我将代码复制到具有默认样式表的新笔记本时,崩溃就消失了!我无法重现新笔记本中的崩溃.

根本没有代码更改.只需复制整个单元格并将其粘贴到新笔记本中.唯一的区别是具有演示样式表,一个是默认样式表.当我将新笔记本的stype表更改为Demostration时,我注意到Tooltip不像以前那样工作.当我以这种风格使用Example笔记本时,我开始使用工具提示移动鼠标时,内核崩溃了.

为了确保,我做了几次.结果相同.一旦我添加了Tooltip [],内核就会在样式表演示时立即崩溃.

我的问题:有没有人见过这样的行为?如果可以,我可以将两个笔记本电脑用.

我得到的崩溃是:

Problem signature:
  Problem Event Name:   BEX64
  Application Name: Mathematica.exe
  Application Version:  8.0.31.32201
  Application Timestamp:    4d65e0e8
  Fault Module Name:    StackHash_2766
  Fault Module Version: 0.0.0.0
  Fault Module Timestamp:   00000000
  Exception Offset: 0000000000000001
  Exception Code:   c0000005
  Exception Data:   0000000000000008
  OS Version:   6.1.7601.2.1.0.768.3
  Locale ID:    1033
  Additional Information 1: 2766
  Additional Information 2: 2766660d255034f6e73a8cd527b6f51e
  Additional Information 3: 8ab7
  Additional Information 4: 8ab74987ae95fade363a8e7256e3890f
Run Code Online (Sandbox Code Playgroud)

我确实向WRI发送了一份错误报告.

我的问题是:有没有人有这样的问题,样式表更改可以使代码行为不同?为什么样式表更改会导致这样的问题?

更新1:

我能够做出显示部分问题的小例子.我正在制作另一个显示崩溃本身的小例子.但下面的示例显示了问题,即样式表演示时,工具提示不起作用.首先,这里是一个屏幕截图,并排,相同的代码,左边是默认样式表,右边是演示样式

(在图片下方,我粘贴源代码,步骤如何重现问题)

在此输入图像描述

Manipulate[

EventHandler[Dynamic[Graphics[
{
Circle[{0,0},1],
Dynamic@Tooltip[Text[Style["O",Red,16] ,pt],Style[pt]]
},
ImageSize->250, PlotRange->{{-1,1},{-1,1}}
],ContinuousAction->True],

"MouseDragged":>
( pt=MousePosition["Graphics"] )
],

{{pt,{0,0}},ControlType->None},

TrackedSymbols:> {None},
ContinuousAction->True
]
Run Code Online (Sandbox Code Playgroud)

脚步:

  1. 将上述代码粘贴到新样式表中,默认为样式.拖动该点,您应该看到坐标一直显示,当您用鼠标拖动点时.
  2. 文件 - >新建 - >演示,并在Manipulate单​​元格中粘贴相同的代码,在那里替换小模板.
  3. 现在做同样的事,拖点.您将看到拖动鼠标时不显示工具提示.它仅在将鼠标稳定在该点上时显示.

在动态中有不同的行为似乎导致了这种风格或其他类似的风格.

我尝试了不同的样式表,工具提示在那里工作正常.只有使用演示样式表我才能通过工具提示获得此问题.

如果某人有解决方案,那就太好了.因为我想在演示中使用工具提示.

我会尝试做一个导致崩溃的例子.

更新:

我已经从WRI技术支持中获得了回报.这是样式表问题.同时,作为解决这个问题的建议来自技术支持:

I was able to reproduce the kernel crash. It looks like a demonstration
stylesheet issue related to imagesize fit. 
At the top of the demonstration notebook there is tab called 'Tools',
clicking on it gives you an option called 'Resize Notebook to Fit'. On
resizing the notebook and saving it the kernel crash does not happen.
Run Code Online (Sandbox Code Playgroud)

感谢WRI技术支持.

2011年12月2日更新 根据John Fultz的回答,我现在正在结束这个问题.谢谢约翰.

Gar*_*han 2

(这个答案实际上是由约翰·富尔茨提出的——请参阅原始问题下的评论。我将其转换为答案,以便这个问题不再出现在未回答的问题列表中。显然,实际上是约翰值得任何声誉点为此;约翰,如果你在这里发布答案,那么我会投票赞成并删除我的答案。)

工具提示未出现在演示版本中的原因是样式Demonstration表对工具提示设置了非零延迟,以便它们仅在将鼠标悬停在工具提示上一定时间后才会出现。特别是,这意味着它们在拖动时不会出现。

Manipulate您可以通过将;上的延迟设置为零来扭转这种情况。通过将以下选项添加到调用中来执行此操作Manipulate

BaseStyle -> {TooltipBoxOptions -> {TooltipDelay->0}}
Run Code Online (Sandbox Code Playgroud)