Интеграция ноутбуков в Центр документации Mathematica


Если вы используете Mathematica на некоторое время вы, вероятно, привязались к центру документации. Всегда есть что-то новое, что вы найдете на этих страницах. Пусть это будут варианты функции или просто некоторые примеры, которые в какой-то момент не показались вам полезными.

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

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

верстак вольфрама не является приемлемым решением для этого вопроса. Все должно быть сделано с простой установки Mathematica. Существует несколько моментов, которые решение должно охватывать:

  1. создание документации для функции (желательно шаблон).
  2. создание руководств и учебных пособий (если они считаются полезными).
  3. связывание записных книжек с документацией центр.
  4. создание сообщений "использование", которые правильно отображаются в разных средах.
    • В Mathematica Notebook ?Symbol
    • В Центре Документации Search: Symbol

Это действительно широкая тема, у меня есть решения для 1, 2 и 3. Мне не хватает пункта 4. Итак, расскажите нам, как вы документируете свои функции в Центре документации?


обновление

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

Github (24 Мая 2014)

Так как я написал пакет там было несколько человек, заинтересованных в этом пакете. Я загрузил пакет в Github:https://github.com/jmlopez-rod/ApplicationMaker. пожалуйста, свяжитесь со мной, если вы хотите быть участником репозитория.

3 51

3 ответа:

чтобы показать, как создать документацию, которая включает в себя Центр документации, мы создадим пакет, который содержит очень простые функции и его документацию. Давайте назовем наш пакет SOPackage. Этот пакет будет храниться в папке с тем же именем, и такая папка должна храниться в любом $BaseDirectory или $UserBaseDirectory$. Элемент SOPakage папка должна иметь следующую древовидную структуру.

enter image description here

обратите внимание, что корневой каталог SOPackage.

SOPackage

теперь мы создадим новый файл Блокнота внутри SOPackage:SOPackage.nb. Таково содержание записной книжки

BeginPackage["SOPackage`"];
AddTwo::usage = "AddTwo[\!\(\*StyleBox[\"a\", \"TI\"]\), \!\(\*StyleBox[\"b\", \"TI\"]\)] returns \!\(\*StyleBox[\"a\", \"TI\"]\)+\!\(\*StyleBox[\"b\", \"TI\"]\).";
DotTwo::usage = "DotTwo[\!\(\*StyleBox[\"a\", \"TI\"]\), \!\(\*StyleBox[\"b\", \"TI\"]\)] returns \!\(\*StyleBox[\"a\", \"TI\"]\)*\!\(\*StyleBox[\"b\", \"TI\"]\).";
AddTwo::argnum = "AddTwo was called with `1` arguments. It expected 2.";
DotTwo::argnum = "DotTwo was called with `1` arguments. It expected 2.";
Begin["`Private`"];
AddTwo[a_, b_] := a + b
AddTwo[args___] := (Message[AddTwo::argnum, Length[{args}]]; $Failed)
DotTwo[a_, b_] := a*b
DotTwo[args___] := (Message[DotTwo::argnum, Length[{args}]]; $Failed)
End[];
EndPackage[];

вот скриншот того, что вы должны увидеть

SOPackage

обратите внимание, что сообщения об использовании обычно форматируют параметры особым образом. Ярлык, чтобы получить этот формат (указано @alexey-popkov), чтобы выделить письмо, которое вы хотите отформатировать, нажмите команда+0 ( Alt+0 в windows) и введите "TI". Повторите этот процесс для всех букв, которые необходимо изменить. Измените ячейку на ячейку инициализации через Cell->CellProperties->Initialization Cell. Теперь мы сохраняем этот блокнот как SOPackage.nb. На всякий случай Mathematica не спрашивал вас, Хотите ли вы создать пакет, потому что вы забыли изменить ячейку на ячейку инициализации, тогда вы можете перейти к Format->OptionInspector. Убедитесь, что вы выбираете "параметры для SOPackage.nb " в противном случае параметр, который вам нужно установить правда будет выделена серым цветом. Теперь нажмите на Notebook Options->FileOptions->AutoGeneratedPackage и выберите Automatic. Закройте окно Параметры и сохраните файл. Каждый раз, когда вы экономите SOPackage.nb файл SOPackage.m будет обновляться (не связывайтесь с этим файлом m).

The

мне потребовалось время, но я, наконец, закончил писать документированное приложение Mathematica, чтобы помочь пользователям Mathematica написать свои документированные пакеты.

это приложение называется ApplicationMaker. Он содержит три пакета с различными функциями, которые помогут вам создать приложение. Используя эти функции, вы можете пропустить все беспорядки, которые я описал в своем предыдущем ответе.

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

обзор

чтобы создать новое приложение, вы начинаете с вызова NewApplication. Это создает дерево каталогов, о котором я упоминал в предыдущем ответе. Чтобы узнать больше о файловой организации Mathematica, нажмите здесь.

следующим шагом является создание пакетов. За что тебя зовут NewPackage. Эта функция создает шаблон, в котором вы пишете свой код.

когда вы закончите писать свой код вам нужно позвонить UpdateInit. Это обновляет init-файл, который нужен Mathematica, чтобы вы могли использовать функцию Get (<<).

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

если вы хотите создать путеводитель или учебник для вашего приложения, то вы можете звоните NewGuide и NewTutorial.

когда вы закончите делать свои изменения, вам нужно построить свое приложение, чтобы Mathematica могла адаптировать его к своему центру документации. Вы делаете это, позвонив BuildApplication.

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

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

установка

все, что вам нужно сделать, это удалить папку ApplicationMaker на $UserBaseDirectory/Applications/ или $BaseDirectory/Applications/.

для начала откройте Центр документации и найдите "ApplicationMaker". Это должно показать вам руководство, показывающее все функции что пакет содержит. В самом низу вы должны увидеть ссылку на учебник.

Последние Слова

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

вы можете скачать ApplicationMaker здесь.

Я загрузил ваш ApplicationMaker и тестирует его с помощью Mathematica 10 на Windows 7 64 бит. Отличная работа и хорошо документированы! Я обнаружил небольшую ошибку, которая нуждалась в исправлении на моей настройке при создании нового приложения с помощью NewApplication. Оказывается, что переменная root функции MakeDirectory не может быть строка с нулевой длиной (вызывает ошибку при создании каталогов). Я исправил это, включив тест в исходный код:

MakeDirectory[root_, start_, main_, sub_] := Module[
  {nm, ns, tmp},
  nm = Position[main, start];
  If[Length@nm != 0, nm = nm[[1, 1]]];
  If[Length@sub[[nm]] != 0,
   Do[
    tmp = 
     If[StringLength[root] != 0, 
      FileNameJoin[{root, start, sub[[nm, i]]}], 
      FileNameJoin[{start, sub[[nm, i]]}]];
    If[DirectoryQ[tmp], 
     Print[Style["Existing Directory : ", "MSG", Gray], 
      Style[tmp, "MSG", Bold]], 
     CreateDirectory[tmp];
     Print[Style["Directory Created  : ", "MSG", Blue], 
      Style[tmp, "MSG", Bold]]
     ];
    , {i, Length@sub[[nm]]}]
   ];
  Do[
   MakeDirectory[
    If[StringLength[root] != 0, FileNameJoin[{root, start}], start], 
    sub[[nm, i]], main, sub],
   {i, Length@sub[[nm]]}
   ]
  ]