问题标签 [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.

0 投票
2 回答
295 浏览

wolfram-mathematica - 每个组在指定级别的唯一上下文

最新版本的 Mathematica 提供了$Context为每个单元组设置唯一的选项,通过:

  • 评估 > 笔记本的默认上下文 > 每个单元组唯一

这是一个吸引人的概念,但我发现它无法使用,因为我的代码跨越了多个单元组。

我想要一种方法来为特定级别的单元组(例如 every )指定唯一的上下文Section,但不是为 every Subsectionor指定单独的上下文Subsubsection

解决方案将需要在创建新单元组时对其产生影响。

0 投票
1 回答
1640 浏览

wolfram-mathematica - 如何在“工作”风格环境而不是“打印输出”中导出图形?

我最近了解到,ExportMathematica中默认使用"Printout"屏幕样式环境,而不是"Working"在导出为 PDF 时。它有时会导致FontSize生成的 PDF 出现波动,这非常烦人。

尝试例如:

截屏

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

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

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

0 投票
2 回答
347 浏览

wolfram-mathematica - 制作自定义 InputForm 和 ShortInputForm

我经常希望看到Mathematica的图形对象的内部表示不是在其中,FullForm而是在可读性更强InputForm的情况下,能够通过双击它来选择部分代码并轻松地将这段代码复制到新的输入Cell中。但默认情况下InputForm不允许这样做,因为InputForm默认情况下显示为 a String,而不是Mathematica的代码。有没有办法InputForm显示为Mathematica的代码?

我还经常希望看到这样的缩短版本,InputForm其中所有长的坐标列表都显示为第一个坐标,然后是用 包裹的跳过的坐标值的数量Skeleton,所有的空Lists都被删除,所有的数字也被缩短以显示不超过 6 位数字。最好仅将 6 位数字用于坐标,但用于颜色指令,例如Hue仅显示 2 个有效数字。例如,

应该给:

(注意-0.9999998592131705转换为-1.,1.2822827157509358*^-7转换为1.28228*^-7Hue[0.9060679774997897, 0.6, 0.6]转换为Hue[0.91, 0.6, 0.6])。

通过这种方式,我希望得到InputForm作为Mathematica代码的输出,并且还有一个ShortInputForm函数可以提供该代码的缩短版本。有谁能够帮助我?


至于问题的第一部分,我找到了一种方法来实现我想要的:

0 投票
3 回答
1160 浏览

wolfram-mathematica - TableForm 与 TableHeadings 对齐到左,但表的内容对齐到右

TableFormwith option 是在Mathematica FrontEndTableHeadings中显示好看的经典表格的一种快速简便的方法。唯一的问题是,通常会显示这样的表格,其标题向左对齐,但表格的内容向右对齐。是否可以强制以这种方式行事?或者如果不是,那么以这种方式进行模拟的最佳方法是什么?TableFormTableForm

0 投票
2 回答
5783 浏览

wolfram-mathematica - 如何对齐 Mathematica 笔记本中的注释?

我不知道这是不是以前问过的。简单的格式化问题。我注意到有时很难将评论(----)相互对齐。一定是字体类型问题。如果我能让东西完全对齐,它在屏幕上看起来会好一点。这是一个例子:

但实际上在我面前的笔记本上是这样的:

在此处输入图像描述

如果我将第二行中的 *) 向左移动一个空格,它将变成这样:

在此处输入图像描述

所以,不能让它对齐。我正在使用输入类型的单元格(标准单元格)。

我不能使用其他单元格类型,例如代码等。我想知道是否有人知道让这个对齐的技巧。

谢谢

编辑 1:在样式表演示中显示输入单元格使用的字体

在此处输入图像描述

编辑 2:使用 Alexey Popkov 下面显示的代码,修复了注释的字体问题,现在它们很容易对齐。这是一个屏幕截图 在此处输入图像描述

编辑 3:

好吧,派对并没有持续多久。演示中不允许使用 SetOptions。太糟糕了,因为 Alexey 的解决方案效果很好,使评论对齐并且看起来更好。

反正。真的没什么大不了的。可以忍受一些错位的评论:)

在此处输入图像描述

0 投票
1 回答
252 浏览

windows - 创建用于在已安装的 Mathematica 版本之间切换 .NB 关联的调色板

我想创建一个调色板,用于在 Windows 下已安装的Mathematica版本之间切换 .NB 文件关联。

目前,我开发了以下代码来枚举Mathematica的已安装版本并在它们之间切换:

1) 获取Mathematica已安装版本的系统注册表项名称列表:

2) 将命令行选项 -b(禁用启动屏幕)和-directlaunch(禁用启动最新安装的Mathematica版本的机制)添加到用于在系统注册表中启动Mathematica FrontEnd的命令行字符串的函数:

该功能可以按如下方式使用:

3) 获取当前 .NB 文件关联的函数:

4) 用于在安装的所有Mathematica版本之间切换的按钮(但我认为使用Dynamicand可能会更好地实现SetterBar):

除了上述之外,这里还有一个命令,它禁止在安装的不同Mathematica版本之间共享首选项(默认情况下,所有安装的版本都使用一个文件来存储前端设置):

所以我的问题是:

如何创建和安装一个小Palette程序,它将动态显示 .NB 文件的当前文件关联,并允许通过单击按钮在它们之间切换?我认为它可能可以实现,SetterBar但我仍然没有经验Dynamic和调色板创建。

0 投票
2 回答
167 浏览

wolfram-mathematica - 柱内自毁按钮

如何创建一个仅在某些全局 FrontEnd 设置的值是并且将自毁并在按下它后将其设置为的整行Button时才显示的内容?FalseColumnTrue

我需要这样的东西:

但是使用此代码,Button按下后不会消失。有没有可能让它自毁?


最终解决方案基于belisariusmikuszefski的想法:

关键点是:

  • 引入附加Dynamic变量b并将其与 的值绑定Options[$FrontEnd, "VersionedPreferences"]
  • 用而不是使用 inside包装整个Column构造。DynamicDynamicColumn
0 投票
3 回答
891 浏览

wolfram-mathematica - 将内联格式添加到使用消息的便捷方式

Messages内置函数的使用嵌入了内嵌格式。例如:

可以看到,这种内联格式基于 Core.nb 样式表的“内联格式的样式”部分中定义的一组样式。但是我还没有找到这些样式的任何文档,也没有找到任何关于向usage Messages 添加格式的便捷算法的描述。

在Mathematicausage Message中向用户定义的 s添加内联格式的便捷方法是什么?Core.nb 样式表中定义的内联格式的默认样式的使用规则是什么?我想使用Mathematica将内联格式添加到我的包中的 s ,而不安装其他组件,如 Workbench 等。usage Message

PS s 中嵌入的内嵌格式的语法String部分记录在教程页面“ Boxes 的字符串表示”中。官方新闻组中有关此语法的相关问题:“ (任何文档)线性语法? ”在前端显示此类字符串ShowStringCharacters->FalseCell.

0 投票
1 回答
160 浏览

wolfram-mathematica - 是否可以创建 MakeBoxesStop 包装器?

众所周知,通过输出表达式MakeBoxes将图形表达式转换为前端用来表示图形的框语言(当$Output有默认选项时FormatType->StandardForm)。例如,如果我们评估:

我们得到一个由以下内容包裹的磁盘HoldComplete

截屏

这是因为HoldComplete不会停止MakeBoxes将其内容转换为排版表达式:

所以我的问题是:是否可以进行一些额外的定义,以便MakeBoxes用 head 包装任何表达式MakeBoxesStop将阻止MakeBoxes将该表达式转换为排版形式?在这种情况下,表达式在输出中应该与任何其他表达式一样,其中没有与符号关联的规则;在上述情况下:

截屏

PS 请不要建议使用InputForm,因为我对它的默认行为不满意

0 投票
2 回答
1116 浏览

wolfram-mathematica - SaveDefinitions 被认为是危险的

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

然而,所有这些善良都有它的阴暗面,如果你不知道的话,它会咬你一口。我已经在我已经工作了几天的笔记本中找到了这个,但我向您展示了一个逐步重现问题的玩具示例场景。

在这种情况下,您想创建一个Manipulate显示漂亮波浪函数的图,因此您定义了这个(请制作这样的窗口大小,这很重要):

在此处输入图像描述

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

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

在此处输入图像描述

只是作为你偏执的自我,你检查定义是否正确:

在此处输入图像描述

是的,一切仍在检查中。美好的。但是现在你突然想到一个更好的波形函数应该是一个正弦函数,所以你改变了定义,执行,并且偏执,检查:

在此处输入图像描述

一切都还好。你已经准备好从一天的辛勤工作中拯救你的工作并退出。[退出内核]

明天。你重新开始你的工作。您评估笔记本中的初始化单元。清晰度还不错?查看。

在此处输入图像描述

现在,您向下滚动到您的 Manipulate 框(由于有了 ,无需重新执行SaveDefinitions),稍微玩一下滑块。并向上滚动。

在此处输入图像描述

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

在此处输入图像描述

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

发生了什么?嗯,这是Manipulate当然的。AFullForm揭示了它的内部结构:

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

当然,在这个玩具示例中,很明显正在发生一些奇怪的事情。就我而言,我在一个更大的笔记本中有一个更大的模块,经过一些调试,我在其中更改了一小部分。它似乎起作用了,但是第二天,在我之前一直困扰我的同一个错误再次出现。我花了几个小时才意识到我用来从各个方面研究手头问题的几个 Manipulates 之一就是这样做的。

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