标签: mathematica-frontend

如何创建选项卡式Mathematica笔记本

有没有办法在选项卡式界面中创建和编辑笔记本(单元序列)?这样的界面可以用TabView其他工具制作吗?我认为如果我从头开始制作前端,这是可能的,但在标准的Wolfram前端中有没有办法?


有两件事激励我提出这个问题.首先,我想用Mathematica笔记本创建Microsoft Office OneNote的替代品.其次,当我在Mathematica工作时,我发现自己想知道选项卡界面是否比打开多个单独的窗口更好.

user-interface wolfram-mathematica mathematica-frontend

21
推荐指数
1
解决办法
2207
查看次数

SaveDefinitions被认为是危险的

SaveDefinitions是一个不错的选择Manipulate.它导致Manipulate在Manipulate面板中存储用于创建的任何定义.以这种方式制作的Manipulate可以复制到空白笔记本中,并且仍然可以单独使用.此外,包含许多此类操作的工作笔记本也不会变成粉红色的盒子,打开时会在其下方打印错误消息.大!

然而,所有这些善良都有它的黑暗面,如果你不知道它,它会让你真的很难受.我已经在我已经工作了几天的笔记本中使用了这个,但是我向您展示了一个重新创建问题的分步玩具示例场景.

在这种情况下,你想创建一个Manipulate漂亮的波浪函数的图,所以你定义这个(请创建一个像这样的窗口大小,这很重要):

在此输入图像描述

定义很好,所以我们下次保留它并使其成为初始化单元.接下来我们添加Manipulate,并执行它.

f[x_] := x^2

Manipulate[
 Plot[n f[x], {x, -3, 3}],
 {n, 1, 4},
 SaveDefinitions -> True
 ]
Run Code Online (Sandbox Code Playgroud)

一切都很棒,Manipulate真的很闪耀,这是美好的一天.

在此输入图像描述

只是做你的偏执自我,检查定义是否正常:

在此输入图像描述

是的,一切仍然检查出来.精细.但现在你想到一个更好的波浪函数是正弦,所以你改变定义,执行和偏执,检查:

在此输入图像描述

一切都还好.你已经准备好从一天的努力中挽救你的工作并退出.[退出内核]

明天.你重新开始工作了.您评估笔记本中的初始化单元格.定义还好吗?校验.

在此输入图像描述

现在,您向下滚动到Manipulate框(不需要重新执行SaveDefinitions),使用滑块稍微玩一下.并向上滚动.

在此输入图像描述

作为你的偏执狂,你再次检查f的定义:

在此输入图像描述

瞧,有人改变了你背后的定义!Information根据In []数字(In[1]:def为f,In[2]第一个?,In[3]第二个?),在第一个和第二个(?)检查之间没有执行任何操作.

发生了什么?嗯,这Manipulate当然是.A FullForm揭示其内部结构:

Manipulate[Plot[n*f[x],{x, -3, 3}],{{n, 2.44}, 1, 4},Initialization:>{f[x_] := x^2}]
Run Code Online (Sandbox Code Playgroud)

你有罪魁祸首.框的初始化部分再次定义f,但它是旧版本,因为我们Manipulate在修改其定义后没有重新评估.一旦操纵盒出现在屏幕上,它就会被评估,并且您已经恢复了原来的定义.在全球范围内!

当然,在这个玩具示例中,很明显发生了一些奇怪的事情.在我的情况下,我在一个更大的笔记本中有一个更大的模块,在经过一些调试后,我改变了一小部分.它似乎工作,但第二天,同样的错误,在再次击中之前曾经惹过我.我花了几个小时才意识到我用来研究各方面问题的几个操作中的一个是这样做的.

显然,我很想说,这是不受欢迎的行为.现在,对于强制性问题:除了在每次更改可能由他们使用的定义时重新执行笔记本中的每个操作之外,我们还能做些什么来防止这种背后行为Manipulate发生Manipulate

wolfram-mathematica mathematica-frontend

20
推荐指数
2
解决办法
1003
查看次数

如何从命令行评估笔记本?

我们如何从命令行评估Mathematica笔记本(即在命令行模式下运行内核时)?

假设我们正在使用远程计算机.我知道有可能将笔记本转换为m文件,并对其进行评估,但我很好奇是否有可能直接使用笔记本进行此操作.


这是我到目前为止:

首先,我们需要在远程Linux机器上启动无头X服务器,因此前端可以在那里运行(并打开笔记本电脑).如果您正在使用本地计算机,请跳过此步骤.

Xvfb :1 &
export DISPLAY=:1
Run Code Online (Sandbox Code Playgroud)

在此之后我开始使用Mathematica内核(math)并执行以下操作.

这是必要的,UsingFrontEnd因为打开笔记本需要一个前端.test.nb有一个包含的输入单元格a=1.

In[1]:= nb=UsingFrontEnd@NotebookOpen["test.nb"]

Out[1]= -NotebookObject-
Run Code Online (Sandbox Code Playgroud)

在尝试评估笔记本之后,显然我得到了一个对话框,我需要Return[]用来返回.我不确定为什么输入行从1再次开始计数(前端启动了一个新内核?)注意,a没有获得值.

In[2]:= UsingFrontEnd@NotebookEvaluate[nb]

 In[1]:= a

 Out[1]= a

 In[2]:= Return[]

Out[2]= a
Run Code Online (Sandbox Code Playgroud)

从对话框返回后,a仍然没有值.

In[3]:= a

Out[3]= a
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica mathematica-frontend

19
推荐指数
2
解决办法
4604
查看次数

让Mathematica前端服从FontFamily选项

说到汉字,我无法让Mathematica的前端使用我选择的字体.如何让它使用我需要的字体?

在这里,我提供两个屏幕截图来显示问题,一个来自Word(顶部),另一个来自WinXP上的Mathematica,两者都显示相同的字符串.请注意,Mathematica使用了几种不同的字体(我猜它首先尝试使用的字体不包含字形时使用字体替换 - 但是我指定的字体包含我需要的所有字形!).在这里,我使用Win7附带的字体Microsoft YaHei,但也可以下载到XP.

编辑: 这是一些测试代码:

str = "????????????????????????????????????????????????????????????"

Style[str, Large, FontFamily -> "SimSun"]
Run Code Online (Sandbox Code Playgroud)

(SimSun附带XP,并且应该包含所有这些字符,但不确定是否在所有版本中.)

编辑2:我在Windows XP上(启用了东亚语言支持),我想知道其他操作系统的结果是否不同.

Word中的字体 Mathematica中的字体


简介: 看起来行为取决于特定的操作系统和安装的字体,不幸的是,似乎没有办法使字体统一(即使存在包含所有字形的单个字体).

fonts wolfram-mathematica mathematica-frontend

17
推荐指数
1
解决办法
1261
查看次数

Mathematica中的鼠标悬停和动态

任何人都可以指出为什么这在Mathematica 8中不起作用:

DynamicModule[{x = Pink},
 Row[
  {Style["Hello", x],
   Mouseover[
    x = Green; "World",
    x = Blue; "World"]}]]
Run Code Online (Sandbox Code Playgroud)

当我将鼠标移到"世界"时,我期望看到"Hello"的颜色发生变化.我得到的是粉红色的"你好",永远不会改变颜色.

wolfram-mathematica mathematica-frontend

14
推荐指数
5
解决办法
473
查看次数

将大写锁定密钥重新映射到Mma 7中的Esc

TLDR:如何在Mma 7中将CapsLock转换为"ShortNameDelimiter"?

我喜欢我的mma笔记本中的漂亮文本,并且经常定义函数f[\[Alpha]_] =...以匹配我正在使用的确切方程.因此,它涉及很多Esc- letter- Esc序列,并且Esc每隔一个笔划达到打破我的打字流程.

现在,CapsLock关键很少使用(我不记得我最后一次需要它),但是方便放置(你的小指就在那里!).它重新映射到Escvim为我创造了奇迹,我想知道是否有办法做到在同一个mma,而不必修改系统的键盘布局.

我尝试KeyEventTranslations.tr通过添加以下内容进行编辑EventTranslations[{...

Item[KeyEvent["CapsLock"], "ShortNameDelimiter"]
Run Code Online (Sandbox Code Playgroud)

但那没有效果.还有另一种方法吗?是CapsLock不正确的标识?如果它有帮助,我在Mac上使用Mma7学生版.

macos wolfram-mathematica keymapping mathematica-frontend

12
推荐指数
1
解决办法
1093
查看次数

如何在"工作"风格环境而不是"打印输出"中导出图形?

我最近了解到,Export数学默认使用的"Printout"画面风格的环境,而不是"Working"导出为PDF时.它有时会导致FontSize生成的PDF中的波动非常烦人.

试试例子:

Show[First@ImportString[ExportString[Style[T, 100], "PDF"], "PDF"], 
 Prolog -> Inset[Style[T, 100], FormatType -> StandardForm]]
Show[First@ImportString[ExportString[Style[T, 100], "PDF"], "PDF"], 
 Prolog -> 
  Inset[Style[T, 100, Magnification -> .8], 
   FormatType -> StandardForm]]
Run Code Online (Sandbox Code Playgroud)

截图

您可以看到导出的"T"具有笔记本中出现的"T"大小的80%.这是"Printout"默认情况下调整环境的方式.

有没有办法强制Export使用默认"Working"环境?

PS由于某些原因,Magnification->1为"打印输出"环境设置私有样式表不会影响Export.

wolfram-mathematica mathematica-frontend

12
推荐指数
1
解决办法
1307
查看次数

Mathematica 7中Un/Comment out代码的键盘快捷键?

注释/取消注释一段代码的键盘快捷键在其他编程IDE中常用于Java,.Net等语言.我发现它是一种非常有用的技术,在通过试验和错误进行实验时,可以暂时注释掉并取消注释代码的行,单词和部分,以找出什么是无效的.

我在版本7的Mathematica前端找不到任何这样的键盘快捷键.我知道可以通过选择代码注释掉代码,单击鼠标右键并从出现的菜单中选择取消/注释但这太慢了编码.

我尝试使用键盘上的菜单键 访问它,Menu但Mathematica前端不响应或识别此键与其他应用程序不同,这可能允许用于评论的组合键.其他人可以验证这不是我的机器所独有的,并且mathematica无法识别该密钥.我查看了这个问题并查看了KeyEventTranslations.tr文件,但我认为没有办法创建一个快捷方式来执行此操作(?).我应该忍受它吗?

还有其他建议吗?

(我已经看到有一个Emacs版本的mathematica,我从来没有尝试过Emacs或者这个Mma版本,并且想象它会有这种能力但是不想去安装它的麻烦和不确定性.我也猜想Wolfram Workbench可以做到这一点,但这可能不值得投资.)

wolfram-mathematica keyboard-shortcuts commenting mathematica-frontend

11
推荐指数
3
解决办法
1万
查看次数

mathematica从命令行启动前端和eval笔记本

有没有办法从(Windows)命令提示符启动mathematica前端(GUI)并让它在没有进一步用户操作的情况下评估笔记本?

即使mathematica.exe采用-run和-initfile选项,它们的工作方式也与math.exe相同.(-run''<< file.m''想要打开一个名为''<< file.m''的文件)


谢谢.第一个答案看起来很有希望,但是我得到FrontEndObject :: notavail前端不可用

(顺便说一下,每个文档都是"UseFrontEnd".)

也许是一个路径问题,但即使在设置$ FrontEndLaunchCommand之后也没有喜悦..

Re:初始化单元 - 这个简单的答案似乎完全符合我的需要,除了"你想运行初始化......"这个唠叨框.如果有一个选项somplace来自动启动内核并运行初学单元,这对于知道非常有用.

我顺便跑了6.0.

scripting wolfram-mathematica mathematica-frontend

10
推荐指数
2
解决办法
4990
查看次数

在Mathematica中评估当前单元格而不离开或丢失其中的位置

我正在使用笔记本界面在Mathematica(8或以上)中试验徽标设计,我想更改生成公式A LOT.问题是我只知道SHIFT + ENTER,这使我跳到我当前的单元格之外并失去我的位置.

有没有办法评估当前单元格而不离开它并丢失其中的位置?所以:评估一个单元并在我按下SHIFT + ENTER的确切位置回到同一个单元格.

我曾经使用过的是:

a = Exp[1.994 \[Pi]/(3 I)];

b = Nest[{#, a #, a\[Conjugate] #, #} &, 1, 5];

{Re[#], Im[#]} & /@ 
   Accumulate[
    Flatten[{0, a b, a\[Conjugate] b, -b}]] // {\[Rho]\[Chi], # // 
     Line} & // Graphics

NotebookFind[EvaluationNotebook[], "E" <> "xp", Previous];
Run Code Online (Sandbox Code Playgroud)

但我希望只有另一个关键组合或某事.我不知道.

编辑:

a = Exp[(*1*)1.994 \[Pi]/(3 I)];

b = Nest[{#, a #, a\[Conjugate] #, #} &, (*2*)1, (*3*)5];

{Re[#], Im[#]} & /@ 
   Accumulate[
    Flatten[{0, a b, a\[Conjugate] b, …
Run Code Online (Sandbox Code Playgroud)

user-interface wolfram-mathematica mathematica-frontend

10
推荐指数
1
解决办法
480
查看次数