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

时间:2011-07-23 01:31:44

标签: 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

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

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

更新1:

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

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

enter image description here

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
]

步骤:

  1. 将上述代码粘贴到新样式表中,默认为样式。拖动该点,您应该看到坐标一直显示,当您使用鼠标拖动点时。
  2. File-> New->演示,并在Manipulate单​​元格中粘贴相同的代码,在那里替换已经存在的小模板。
  3. 现在也这样做,拖点。您将看到拖动鼠标时不显示工具提示。只有当鼠标稳定在点上时才会显示。
  4. 在动态中存在不同的行为,似乎会导致这种情况或其他类似的行为。

    我尝试了不同的样式表,工具提示在那里工作正常。只有使用演示样式表我才能通过工具提示解决这个问题。

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

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

    更新

    我已经从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.
    

    感谢WRI技术支持。

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

1 个答案:

答案 0 :(得分:2)

(这个答案实际上是由于John Fultz - 看到原始问题下的评论。我把它变成了一个答案,这个问题不再出现在未答复的问题清单上。很明显,这实际上是John应得的。任何声誉点都是这样的;约翰,如果你在这里发表答案,那么我会把它投票并删除我的。)

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

您可以通过在Manipulate上将延迟设置为零来反转此操作。通过在Manipulate调用中添加以下选项来执行此操作。

BaseStyle -> {TooltipBoxOptions -> {TooltipDelay->0}}