【问题标题】:Command completion in mathematica : suggest rules/optionsMathematica 中的命令完成:建议规则/选项
【发布时间】:2011-12-24 15:17:58
【问题描述】:

在当前版本的 Mathematica 中,这些键盘快捷键非常方便

Ctrl+K 完成当前命令

GraphPl -> press Ctrl+K  -> GraphPlot

Ctrl+Shift+K 完成当前命令并添加可以用 tab 键替换为实际值的参数占位符

GraphPl -> press Ctrl+Shift+K  ->  GraphPlot[{vi1->vj1,vi2->vj2,...}]

但是我找不到任何显示相关设置/选项的键盘选项

例如说如果我需要绘制具有不同布局的图形,我知道我需要使用这些可能的设置之一来设置方法

  • “循环嵌入”
  • “随机嵌入”
  • “高维嵌入”
  • “径向绘图”
  • “弹簧嵌入”
  • “SpringElectricalEmbedding”

两件事

首先如何自动完成这些选项,有快捷键吗?

GraphPlot[sg, Method -> <what keyboard shortcut to display all possible options>]

第二个如何以编程方式生成跟随PopupMenulist

  list={
   "CircularEmbedding"
   , "RandomEmbedding"
   , "HighDimensionalEmbedding"
   , "RadialDrawing"
   , "SpringEmbedding"
   , "SpringElectricalEmbedding"
   }
Manipulate[GraphPlot[sg, Method -> m], {m, list}, ControlType -> PopupMenu]

有什么方法可以内省 Mathematica 函数和访问方法元数据,类似于在其他编程语言中可以完成的方式,比如在 Java 中使用反射?

【问题讨论】:

  • Thomas Munsch 在 MathGroup 发布了调色板代码 ClickableOptions,您可能会觉得有用:[forums.wolfram.com/mathgroup/archive/2009/May/msg00351.html]
  • 您可能会发现Options 函数很有用,但它只提供带有默认值的选项名称。我知道它比您要求的要窄得多,而且它不是键盘快捷键。只是提及它以防您发现它有用。
  • @Szabolcs 我确实尝试过Options 正如你正确指出的那样,它只是提供默认选项,而不是设置的所有可能选项:( 我将添加到目前为止我能做的事情
  • @Prashant 我相信没有办法检索选项。如果您考虑如何为自己的函数实现选项,那么为什么会这样会变得很清楚。不幸的是,通常甚至没有记录值(想想Method ...)

标签: reflection wolfram-mathematica keyboard-shortcuts


【解决方案1】:

我不相信包含任何自动完成字符串的函数。除了搜索帮助文件之外,我还想不起查看特定选项的所有有效设置的方法。

您可以使用选项检查器设置 InputAliasesInputAutoReplacements 加快输入,允许通过 EsctxtEsctxtSpace 输入.

【讨论】:

  • 不仅没有自动完成功能,而且也没有对基于字符串的选项(选项名称或值)进行任何拼写检查。这是一个相当烦人的情况。
  • @Sjoerd 尽管拼写很差,但我发现旧的General:spell1 很烦人,虽然我认为这是一个不错的选项,但我不知道我会打开它。
  • 我说的是作为语法着色的一部分的命令输入期间的拼写检查。如果我写错了选项名称,颜色会发出信号。对于作为字符串的选项名称,情况并非如此。
  • @Sjoerd 可能是因为它会减慢速度?就目前而言,一旦您的代码很长,语法样式会大大减慢您在前端的输入速度。
  • @MikeHoneychurch 我的假设是名称作为字符串而不是符号用于减少命名空间占用空间(我没有注意到减速)。但我真的很讨厌它,特别是因为有些名称既作为字符串又作为符号出现(方法就是一个例子)。它打破了我对期权规则的印象。名称 -> 值对我来说读作“变量取值”,但“名称”->“值”感觉不对,感觉就像“值取值”或 1=2。我知道在模式匹配/替换方面没问题,但是当我在选项语句中读到它时,我觉得我的大脑正在咬牙切齿。
【解决方案2】:

草稿:正在进行中...

这是迄今为止我能到达的最近的地方,尽管它需要大量的增强,添加它是因为它希望从社区中获得一些想法。如果有人可以帮助进一步增强它,或者提出任何想法,将不胜感激。

ruleOfRule[list_] := Map[Rule[#, #] &, list];
Manipulate[
 GraphPlot @@ {{"A" -> "B", "B" -> "C", "C" -> "A"}, 
   options}, {{options, {}}, ruleOfRule[Options[GraphPlot]]}, 
 ControlType -> CheckboxBar]

【讨论】:

  • 这只是给你默认选项,没有多大意义。据我所知,Mathematica 没有提供标准机制来检索所有可能的选项值,所以我认为这项工作不会给您带来任何好处。唉。
  • @Sjoerd 也许这就是这个社区的用武之地?我们不能一起工作来详细说明大多数功能的选项值,并在实践中实现类似的东西吗?如果mathematica.SE 网站成为现实,我希望“合作项目”部分成为其中的一部分。
  • @Mr.Wizard 我觉得 WRi 比社区更适合这项任务。我想他们已经有一个选项数据库。我完全支持合作项目,但这似乎浪费了大量精力来实现 WRI 可以轻松完成的事情。
猜你喜欢
  • 2011-01-16
  • 2012-09-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多