Способы работать вокруг ошибки Нотации Mathematica?

Mathematica предлагает пакет Нотации для определения пользовательской нотации, и это, кажется, работает отлично, пока я не сохраняю ноутбук с пользовательской нотацией как пакет и попытка использовать Needs["..."] импортировать новую нотацию. Как зарегистрировано в списке рассылки Mathematica, это вызывает причудливые синтаксические ошибки при оценке любого вызова к Notation[]. Предложенное решение состоит в том, чтобы вручную открыть ноутбук нотации и оценить его в ядро, но это - боль для файлов, которые я планирую на распределении. Если бы у кого-либо есть лучшее обходное решение для проблемы, я был бы очень признателен за справку!

6
задан dreeves 25 February 2010 в 19:41
поделиться

1 ответ

Я думаю, ваша проблема заключается в том, как система Mathematica относится к обозначениям[], цитата:

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

Возможно, вообще невозможно, чтобы файл пакета вызывал Notation[], но есть предложение использовать ParsedBoxWrapper, с которым у меня сейчас не было времени поиграться.

Есть одно непростое решение вашей проблемы, которое заключается в том, что вы помещаете все назначения Notation[] в одну ячейку блокнота и делаете ее ячейкой инициализации (щелкните правой кнопкой мыши на краю ячейки --> Initalization Cell). При этом, кстати, будет создан .m-файл с содержимым только этой ячейки (но этот файл, увы, не будет работать с Needs[] или <<). После этого вы можете свернуть ячейку, сделать ее нередактируемой, неоцениваемой, и эй, престо! Почти то, что вы хотите.

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

3
ответ дан 17 December 2019 в 18:15
поделиться