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

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

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

笔记本上有Wolfram Demonstration Style表格(用于演示的示例样式表)。 这是一个操作,全部在一个单元格中。

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

没有代码改变。 只是复制整个单元格并将其粘贴到新的笔记本中。 唯一不同的是有演示样式表,一个是默认样式表。 当我将新笔记本的信息表更改为Demostration时,我注意到Tooltip不能像以前那样工作。 当我以这种风格使用Example笔记本时,我开始用toolstip移动鼠标,Kernel崩溃。

为了确定,我做了几次。 同样的结果。 一旦我添加了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:

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

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

在这里输入图像描述

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
]

脚步:

  • 将上面的代码粘贴到新样式表中,样式默认。 拖动点时,您应该看到坐标始终显示,用鼠标拖动点。
  • File-> New-> Demonstration,并将相同的代码粘贴到Manipulate单​​元中,替换已有的小模板。
  • 现在做同样的事情,拖动点。 你会看到,当鼠标被拖动时,工具提示不会显示。 只有当鼠标稳定在点上时才会显示。
  • 动态中存在不同的行为,似乎导致了这种情况,或者这种风格中的其他东西。

    我尝试了不同的样式表,并且工具提示在那里工作正常。 只有使用演示样式表,我会在工具提示中看到这个问题。

    如果有人能够解决这个问题,那会很好。 因为我想在演示中使用工具提示。

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

    更新:

    我从WRI技术支持部门获得了respsonce。 这是一个样式表问题。 同时,作为解决这个问题的建议来自技术支持:

    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的回答,我现在正在回答这个问题。 谢谢约翰。


    (这个答案实际上是由于约翰富尔兹 - 见原始问题下的评论,我把它变成一个答案,以便这个问题停止显示在未答复的问题列表上。显然,它实际上是约翰值得任何声望点为此;约翰,如果你在这里发布答案,我会投票并删除我的。)

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

    您可以通过在Manipulate上将延迟设置为零来Manipulate ; 通过向Manipulate调用添加以下选项来执行此Manipulate

    BaseStyle -> {TooltipBoxOptions -> {TooltipDelay->0}}
    
    链接地址: http://www.djcxy.com/p/35601.html

    上一篇: Could the notebook StyleSheet change the code behaviour?

    下一篇: Formatting usage messages