Завершение команды в Mathematica: предложить правила / опции - PullRequest
11 голосов
/ 24 декабря 2011

В текущей версии Mathematica эти сочетания клавиш очень удобны

Ctrl + K завершает текущую команду

GraphPl -> press Ctrl+K  -> GraphPlot

Ctrl + Shift + K завершает текущую команду и добавляет заполнители аргументов, которые можно заменить фактическими значениями с помощью tab key

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

Однако я не смог найти какую-либо опцию клавиатуры, чтобы показать связанные настройки / опции

Например, Скажем, если мне нужно построить график с разными макетами, я знаю, что мне нужно установить метод с одной из этих возможных настроек

  • "CircularEmbedding"
  • "RandomEmbedding"
  • "HighDimensionalEmbedding"
  • "RadialDrawing"
  • "SpringEmbedding"
  • "SpringElectricalEmbedding"

Две вещи

Первый. Как выполнить автозаполнение этих опций, есть ли комбинация клавиш?

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

Во-вторых, как генерировать следующие PopupMenu list программно

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

Есть ли способ проанализировать функции Mathematica и метод доступа к метаданным, подобный тому, как это можно сделать в других языках программирования, например, использовать отражение в Java?

Ответы [ 2 ]

2 голосов
/ 24 декабря 2011

Я не верю, что есть какая-либо функция для автозаполнения строки.Я также не могу вспомнить способ просмотра всех допустимых настроек для определенного параметра, кроме поиска файлов справки.

Вы можете ускорить ввод с помощью настроек инспектора параметров InputAliases и InputAutoReplacements, что позволяет вводить с помощью Esc txt Esc или txt Пробел .

1 голос
/ 25 декабря 2011

Черновик: работа в процессе ...

Это самое близкое, чего я мог достичь, хотя он требует множества улучшений, добавляя его, поскольку он надеется получить некоторые идеиот сообщества.Если бы кто-то мог помочь улучшить его или предложить какую-либо идею, это было бы очень полезно.

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

options

...