问题标签 [mathematica-frontend]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wolfram-mathematica - Times 和 NonCommutativeMultiply,自动处理差额
我有一些应该是不可交换的符号,但我不想在构造方程时记住哪些表达式具有这种行为。
我曾想过使用 MakeExpression 作用于原始框,并在适当的时候自动将乘法提升为非交换乘法(例如,当某些符号是非交换对象时)。
我想知道是否有人对这种配置有任何经验。
这是我到目前为止所得到的:
这似乎可以正确识别作为乘法语句的表达式:
因此,看起来我可能能够有条件地重写底层表达式的框,这并不是没有问题的;但如何可靠地做到这一点?
以表达式为例RowBox[{"e","f","*",RowBox[{"g","**","h"}],"*","i","j"}]
,这将需要重写,因为RowBox[{"e","**","f","**",RowBox[{"g","**","h"}],"**","i","**","j"}]
这似乎是与模式匹配器和规则集有关的非平凡操作。
我将不胜感激那些对我更有经验的人的任何建议。
我试图找到一种在不改变默认行为和乘法顺序的情况下做到这一点的方法。
谢谢!:)
乔
user-interface - 在 Mathematica 中评估当前单元格而不离开或丢失其中的位置
我正在使用笔记本界面在 Mathematica(8 或更高版本)中尝试徽标设计,我想更改生成公式很多。问题是我只知道 SHIFT + ENTER 这让我跳出我当前的单元格并失去了我的位置。
有没有办法评估当前单元格而不离开它并失去你在其中的位置?所以:评估一个单元格并在我按下 SHIFT + ENTER 的确切位置回到同一个单元格内。
我曾经使用过的东西是这样的:
但我希望只有另一个组合键或某事。我不知道。
编辑:
正如 Chris Dengen 部分建议的那样,对我的解决方案是一个很好的小改进。
编辑2:
这解决了:
- 这些仅适用于产生一个或已知数量的输出单元的单元
EvaluationCell 的文档很少,所以很难找到,事实上我只是偶然发现了它。使用 EvaluationCell 搜索从上方开始(消除 Do 两次构造),因为我们不是来自屏幕下方的输出单元格。
尚待解决的问题:
- 需要手动记录单元格(单元格级别的簿记)以降落在感兴趣的地方
- 使用基于注释的着陆标记会使输入单元格混乱
注意 这个问题是关于在 Mathematica 笔记本单元格内按下 SHIFT + ENTER 时不会丢失当前位置。这与内容或操纵无关。很抱歉一开始没有说清楚。
临时说明
现在尝试以下方法:
- 使用事件处理程序来定义替代评估键组合
- 触发时,找到一种方法将确切的键盘位置存储在当前输入单元格中
- 评估当前输入单元格
- 恢复当前输入单元格中的位置
我在内部希望某些功能可能只是偶然乐观地处理存储/恢复。不过现实一点,我首先希望我什至能找到一种方法来获得当前的键盘位置。如果我的尝试有任何实现,将在这里跟进。
wolfram-mathematica - 如何从命令行评估笔记本?
我们如何从命令行评估 Mathematica 笔记本(即在命令行模式下运行内核时)?
假设我们在远程机器上工作。我知道可以将笔记本转换为 m 文件并对其进行评估,但我很好奇是否可以直接使用笔记本进行此操作。
这是我到目前为止所拥有的:
首先,我们需要在远程 Linux 机器上启动一个无头 X 服务器,这样前端就可以在那里运行(并打开笔记本)。如果您在本地计算机上工作,请跳过此步骤。
在此之后,我启动了一个 Mathematica 内核 ( math
) 并执行了以下操作。
必须使用UsingFrontEnd
,因为打开笔记本需要前端。test.nb 有一个包含a=1
.
在尝试评估笔记本后,显然我得到了一个对话框,我需要使用Return[]
返回。我不确定为什么输入行再次从 1 开始计数(前端启动了一个新内核?)请注意,它a
没有获得值。
从对话框返回后,a
仍然没有值。
wolfram-mathematica - 检测前端令牌是否可用于执行
如何检测前端令牌是否可以执行?或者,如何检测前端令牌是否无法执行?
示例:如果未选择任何内容,则编辑 -> 复制命令不可用。 FrontEndTokenExecute["Copy"]
在这种情况下只会发出哔哔声,但它没有(程序化)指示它失败了。
wolfram-mathematica - 了解内核与前端的通信——为什么我的前端会死机?
编辑:只是确认您是否可以复制它会很有用。只需一台计算机即可尝试此操作(无需远程连接)。
更新似乎其他人无法在 Mac 或 Win7 上重现此问题,因此它要么是 WinXP 特定的,要么是我的机器特定的。在这一点上,我放弃了。
最好有一个关于前端和内核如何通信的教程,这样我们就可以调试远程内核问题。任何此类一般性答案(或其他地方的教程链接)都非常受欢迎。我已经知道 Sascha Kratky 的Remote Kernel Strategies。
现在实际问题是: 当我以任何方式(例如使用远程内核策略)连接到远程机器时,前端迟早会死机。我怎样才能防止这种情况?
以下是如何在单台机器上重现问题(无需远程连接):
创建一个新的内核配置(Evaluation menu -> Kernel Configuration Options...)
选择高级选项。
MLOpen 的参数:
(替换为您计算机的 IP 地址。在 Windows 上,您可以通过在命令窗口中
YOUR-IP-HERE
键入来获取此地址。)ipconfig
启动内核的 Shell 命令:留空(我们将手动执行)
打开一个新笔记本,将笔记本的内核设置为您刚刚设置的内核,然后评估某些内容 (
1+1
)。现在我们需要在连接超时之前手动启动内核。因此,在命令行模式下启动一个新内核 (
math
),并评估以下内容:现在连接已建立,一切似乎都正常工作(除了前端粉红色消息窗口中的一条消息)
评估
Manipulate[n, {n, 0, 100, 1}]
。首先,这似乎也有效。现在玩滑块。前端迟早会冻结,需要被杀死。对我来说,上下拖动滑块约 10 秒而不释放它总是足够的。
为什么前端冻结? 如何在前端和内核之间创建 TCPIP 模式连接,以确保一切正常?
一些注意事项:
- 我在 Windows XP 上。
- 如果我使用
LinkProtocol -> "SharedMemory"
. - 使用评估中止计算 -> 中止评估确实可以正常工作。
- 我已经使用它进行了验证
Links[]
,MathLink`$PreemptiveLink
并在它们MathLink`$ServiceLink
上创建并LinkConnectedQ[]
返回True
。
Manipualate
同样,请注意,只有在连续拖动滑块几秒钟而不释放它后,前端才会冻结。
dynamic - 为变量创建强大的实时监视器
我们可以为这样的变量创建一个实时监视器:
(如果x
恰好是类似的东西,这会更有趣和有用$Assumptions
。设置一个值然后忘记它非常容易。)
不幸的是,如果重新启动内核(Quit[]
,然后评估某些东西),这将停止工作。调色板将不再显示值的变化x
。
有没有办法做到这一点,这样它甚至可以在内核会话中继续工作?我发现自己经常重启内核。(如果生成的调色板导致内核在这之后自动启动Quit
。)
更新: 正如评论中提到的,事实证明,只有当我们通过评估退出时,调色板才会停止工作Quit[]
。使用时Evaluation -> Quit Kernel -> Local
,它将继续工作。
user-interface - 如何创建选项卡式 Mathematica 笔记本
有没有办法在选项卡式界面中创建和编辑笔记本(单元格序列)?可以使用TabView
或其他工具制作这样的界面吗?我认为如果我从头开始制作前端,这将是可能的,但是在标准的 Wolfram 前端中有没有办法?
有两件事促使我提出这个问题。首先,我想用 Mathematica 笔记本创建 Microsoft Office OneNote 的替代品。其次,当我在 Mathematica 工作时,我发现自己想知道标签式界面是否比打开许多单独的窗口更好。
wolfram-mathematica - 为什么从脚本创建的普通笔记本会自动最小化?
代码很简单:
但是笔记本的窗口首先被最小化,当点击(未最小化)时,它会立即再次自动最小化。当我使用 Option WindowFrame->ModelessDialog 它保持不变,但我不知道为什么只在这种情况下。任何人都可以向我解释一下这种行为。我正在使用数学几天,不知道如何在文档中找到它。谢谢。PS 我正在使用带有 Gnome 的 Debian 6,而 Mathematica 8 的试用版运行良好。
wolfram-mathematica - 如何在 Mathematica Notebooks 中自动编号单元格标签?
我试图按照 Mathematica-8 笔记本中自动编号单元格的说明,在这里
http://reference.wolfram.com/mathematica/tutorial/AutomaticNumbering.html
我创建了一个带有四个文本单元的小笔记本
将光标放在 之前foo
,然后我使用Insert
菜单Automatic numbering
项,给了我Create Automatic Numbering Object
对话框。我在Counter
下拉菜单中选择 item Text
,单击This counter object
单选按钮,然后 Huzzah!刚刚得到数字 1 foo
,大概是指Text
笔记本中的第一个类型的单元格。我现在看到
我在 1 之后插入我自己dot space
的以获得漂亮的外观
我也这样做bar
并看到预期的
因为bar
是 type 的第四个单元格Text
。伟大的。现在我想为单元格qux
和blancmange
. 我使用Cell
menu, Cell Tags...
, Add/Remove Cell tags...
item 并将标签test
放在单元格qux
和blancmange
. 我使用Cell
menu, Cell Tags...
, Show cell tags
item 来确保它们在那里,并且,果然,它们出现在笔记本中(我不会试图模仿显示,这里,但在 Dropbox public 中有指向我笔记本的链接如果你想看看这个问题底部的文件夹)。然后我将光标放在前面qux
并使用Insert
菜单,Automatic numbering
项目,这次选择Use the counter value corresponding to the location of:
,然后The first cell with the tag:
,然后test
,我的用户创建的标签,确定,我得到一个零!同上blancmange
. 我最后的(坏的)结果,在我自己的猪身上涂了一点口红之后dot
,space
看起来像
如果尝试引用一个不存在的标签,我会得到
所以 Mathematica 发现了一些东西,但不是我所期望或需要的。
还需要说我在Item Numbered
item中试了Format
item,但是我有两个问题:(1)我不知道怎么从1开始restart编号,所以每块Item Numbered
cell都属于同一个编号的序列项目。我在这里得到 1、2、3,然后是 4、5、6,稍后,以及 7、8、9,甚至更晚等等。我真的需要独立编号的项目块:这里是 1、2、3,1、2 , 3 之后,1, 2, 3 甚至更晚,等等。 (2) 我需要对各种不同类型的单元格进行编号,所以我真的需要创建自己的标签并控制我对它们的跟踪。
我将非常感谢任何建议。
这是我琐碎的小笔记本的链接。
wolfram-mathematica - 如何在 Mathematica Notebook Styles 中填写 CellFrameLabels?
我一直在努力按照这些其他答案中的好建议来获取编号的单元格框架标签
如何在 Mathematica Notebooks 中自动编号单元格标签?
我快到了。我想在 Creative / Pastel 颜色样式表中将部分编号添加到部分样式中。我创建了一个新笔记本(这是我的公共保管箱上的副本)
http://dl.dropbox.com/u/1997638/CellFrameMargins.nb
转到“格式”菜单,选择“样式表\创意\ PastelColor”,然后选择“格式”“编辑样式表”,“选择样式:部分”,然后单击样式表顶部的Creative\Pastelcolor.nb-编辑对话框.
这将打开另一个样式表编辑器,然后我转到第四项“标题和部分单元格的样式”,然后是第二项“部分”。将鼠标十字准线放在那里并单击,然后选择“单元格”菜单,“显示表达式”项,显示如下表达式:
伟大的!揭示所有细节,至少我是这么认为的。特别是,CellFrame 项目为我提供了将{{0, 0}, {1, 3}}
单元格框架标签与 Section 样式对齐所需的信息。好的,回到我的笔记本的 steylsheet 编辑器对话框,按照上述答案,我输入
CellFrameMargins -> 4
我通过反复试验找到的规则需要将单元格框架的顶部和底部与右侧的其余部分样式对齐。我很遗憾地报告它几乎只能工作。CellFrameLabels 的文本和框架之间存在空白,我想填补这些空白。就好像 CellFrameLabels 中的字体没有向上和向下伸展足够远,即使它们与 Section 单元格中的字体完全相同。我找不到填充标签背后背景的方法。我试过Background -> RGBColor[...]
了,我尝试输入显式字体,我尝试以多种组合设置 CellFrameMargins 和 CellFrameLabelMargins,但无济于事。
我很难过,不胜感激任何建议。