Как получить автоматическое преобразование части [[двойные скобки]] при вставке? - PullRequest
7 голосов
/ 28 марта 2011

Моя любимая мозоль - это использование двойных квадратных скобок для Part, а не одного символа \[LeftDoubleBracket] и \[RightDoubleBracket]. Я хотел бы, чтобы они автоматически заменялись при вставке простого текста (например, из StackOverflow) в Mathematica Notebook. Мне не удалось настроить это.

Можно ли это сделать с помощью ImportAutoReplacements или другого автоматического метода (предпочтительно), или мне нужно будет использовать метод, такой как «Вставить палитру табличных данных», на который есть ссылка здесь ?

В любом случае, я не очень разбираюсь в строках и хочу научиться наилучшему способу подсчета скобок.


Sjoerd дал Defer, а Саймон дал Ctrl + Shift + N , которые заставляют Mathematica автоматически форматировать код. Это прекрасные варианты.

Мне все еще интересен метод, который является автоматическим и / или сохраняет как можно большую часть исходного кода. Например, поддержание функций префикса f@1, infix 1 ~f~ 2 и postfix 1 // f в их исходных формах.


Подраздел этого вопроса был размещен в виде Соответствующие скобки в строке и получил несколько хороших ответов.

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

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

РЕДАКТИРОВАТЬ
, чтобы исправить мой слегка не по теме первый ответ, вот замена шаблона, которая, кажется,выполнить работу (хотя мне самому трудно понять, почему это должно быть b, а не b_; последнее не работает):

Defer[f[g[h[[i[[j[2], k[[1, m[[1, n[2]]]]]]]]]]]] /. 
 HoldPattern[Part[b, a_]] -> HoldPattern[b\[LeftDoubleBracket]a\[RightDoubleBracket]]

enter image description here

Я ухожу из автоматизациичасть для вас.

РЕДАКТИРОВАТЬ 2
Я обнаружил, что если вы добавите вышеуказанное правило в ImportAutoReplacements и вставите свой SO-код в блокнот в Defer [] и оцените это, выв итоге получится удобная форма с двойными скобками, которую можно использовать в качестве ввода где-то еще.

РЕДАКТИРОВАТЬ 3
Как отметил Mr.Wizard незаметно ниже в комментариях, правило заменыне обязательноDefer делает это самостоятельно!Научный прогресс идет "Boink", чтобы процитировать Билла Уоттерсона.

Boink

РЕДАКТИРОВАТЬ 4
Жюри по-прежнему на Defer.У этого есть некоторые специфические побочные эффекты, и не работает хорошо на всех выражениях.попробуйте "Вставить палитру табличных данных" в , например, в вопросе о наборе инструментов .Вставка этого блока кода в Defer и выполнение дает мне это:
palette

Это работало намного лучше в другом фрагменте кода из того же потока:

enter image description here

Вторая часть - это то, как это выглядит после включения его для ввода путем редактирования вывода первого блока (в основном, я вставил пару возвратов, чтобы восстановить формат).Это превращает его в ввод.Обратите внимание, что все двойные скобки превратились в соответствующий соответствующий символ, но обратите внимание также на изменение положения ReleaseHold.

0 голосов
/ 21 августа 2011

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

(можно) выделите текст и нажмите Ctrl + Shift + N для перевода в StandardForm

...