56 votes

L'intégration des cahiers de Mathematica du centre de documentation

Si vous avez été à l'aide de Mathematica pour un bien que vous avez probablement attaché au centre de documentation. Il y a toujours quelque chose de nouveau que vous trouverez dans ces pages. Laisser les options pour une fonction ou juste quelques exemples qui, à un certain moment ne lui semble pas utile pour vous.

Il est probable que vous avez écrit paquets avec vos fonctions spécialisées que vous utilisez tout le temps. Parfois, vous pourriez penser à un exemple clair à utiliser avec votre fonction, mais il est probable qu'il finit par être oublié quelque part sur votre disque dur. Si vous l'aviez écrit, à la documentation, au moment où on pensait peut-être que vous ne voudriez pas être à la recherche pour elle désespérément plus tard.

Pour cette raison, je voudrais savoir comment faire pour intégrer la documentation pour vos propres fonctions avec Mathematica du centre de documentation de la programmation. Cette question est ici d'étudier comment adapter la documentation. Si vous avez écrit des scripts pour vous aider à faire cela, merci de le partager avec la communauté.

Wolfram s Workbench n'est pas une solution acceptable pour cette question. Tout doit être fait avec l'installation simple de Mathematica. Il y a un couple de points que la solution devrait couvrir:

  1. Création de la documentation pour une fonction (de Préférence un modèle).
  2. La création de guides et de tutoriels (S'ils le jugent utile).
  3. Reliant les carnets de notes pour le centre de documentation.
  4. La création de "l'utilisation" des messages qui s'affichent correctement dans les différents environnements.
    • Dans Le Cahier Mathematica ?Symbol
    • Dans Le Centre De La Documentation Search: Symbol

C'est vraiment un très vaste sujet, j'ai des solutions pour les 1, 2 et 3. Je suis absent point numéro 4. Alors dites-nous, comment documenter vos fonctions avec le centre de documentation?


Mise à jour

J'ai ajouté une autre réponse. J'espère que cette réponse est plus encourageant pour les utilisateurs de Mathematica pour écrire des pages de documentation avec leurs paquets. Je pense que l'écriture de pages de documentation est bénéfique pour l'application de l'écrivain ainsi que les utilisateurs de l'application. Si vous téléchargez le package que j'ai écrit je vous suggère de suivre le tutoriel afin que vous puissiez voir ce qui se passe à chaque étape. Cela vous donnera une expérience précieuse pour les futurs projets.

Github (24 Mai 2014)

Depuis que j'ai écrit le paquet il y a eu plusieurs personnes intéressées dans ce package. J'ai téléchargé le package sur Github: https://github.com/jmlopez-rod/ApplicationMaker. Merci de me contacter si vous souhaitez être un contributeur dans le référentiel.

45voto

jmlopez Points 2040

Pour montrer comment créer de la documentation qui s'incorpore à la Centre de Documentation, nous allons créer un package qui contient des fonctions très simples et de sa documentation. Permet d'appeler notre package SOPackage. Ce paquet sera stocké dans un dossier du même nom et un tel dossier doit être conservé dans $BaseDirectory ou $UserBaseDirectory$. L' SOPakage le dossier de besoins à la structure de l'arbre.

enter image description here

Notez que la racine est le répertoire SOPackage.

SOPackage

Maintenant, nous allons créer un nouveau fichier notebook à l'intérieur d' SOPackage: SOPackage.nb. Ce sont les contenus de l'ordinateur portable

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[];

Voici une capture d'écran de ce que vous devriez voir

SOPackage

Un raccourci pour obtenir le bon format, comme il a été souligné par @alexey-popkov est de mettre en évidence la lettre que vous voulez mettre en forme, appuyez sur Command+0 (Alt+0 dans windows) et entrez "TI". Ensuite, répétez ce processus pour toutes les lettres qui doivent être modifiées. Maintenant nous sauver ce cahier, comme SOPackage.nb. En cas de Mathematica ne vous demande pas si vous voulez créer un paquet parce que vous avez oublié de changer la cellule à une cellule d'initialisation, alors vous pouvez aller à l' Format->OptionInspector. Assurez-vous que vous sélectionnez "Options pour SOPackage.nb", sinon, l'option que vous devez définir à true sera grisé. Maintenant, cliquez sur Notebook Options->FileOptions->AutoGeneratePackage et sélectionnez Automatic. Fermer la fenêtre des options et enregistrer le fichier. Chaque fois que vous enregistrez SOPackage.nb le fichier SOPackage.m sera mis à jour (Ne plaisante pas avec ce m de fichier).

L' Kernel répertoire doit contenir qu'un seul fichier: init.m. Ce fichier doit avoir la ligne suivante:

Get["SOPackage`SOPackage`"];

Après cela, nous avons un plan de travail. Vous pouvez essayer ce qui suit pour vous assurer que tout fonctionne bien.

Test

La Documentation

Nous permet de commencer par créer la page du guide. Ce sera la page qui s'affiche lorsque vous tapez SOPackage dans le centre de doc. Permet de commencer par la création d'un carnet de notes et l'enregistrer sous SOPackage/Documentation/English/Guides comme SOPackage_E.nb. La raison pour laquelle je suis en lui donnant l'extension "_E" est parce que ce sera une copie modifiable. Notez que vous ne pouvez pas modifier les documents dans le centre de documentation. Eh bien, vous pouvez, mais ces changements ne jamais prendre effet. Vous aurez probablement souhaitez modifier votre documentation que vous construisez votre paquet si c'est une bonne idée d'avoir une copie que vous pouvez modifier. Pour cet exemple, on peut copier le contenu de l' Combinatorica guide, sur la Doc de type centre d' Combinatorica/guide/CombinatoricaPackage sélectionnez toutes les cellules, de les copier et coller dans votre SOPackage_E.nb le fichier. Faire quelques changements dans la juste de sorte que vous savez qu'ils sont ceux que vous faites. Dans mon cas, j'ai remplacé Combinatorica avec SOPackage. Dans le cas, vous ne pouvez pas modifier une partie d'un texte, c'est ce que vous devez faire:

1: Cliquez sur le texte que vous ne pouvez pas modifier.

enter image description here

2: rendez - Cell->Show Expression ou entrez Command+Shift+E ou quelque chose d'équivalent sous windows.

enter image description here

3: Aspect de l'argument de la cellule. C'est un style. Dans certains cas, vous pourrez voir "Utilisation", "Notes", "ObjectName" parmi d'autres. Une fois que vous localiser le style de la cellule que vous ne pouvez pas modifier, allez cliquer sur le portable à modifier et entrez Command+Shift+E pour montrer de retour de l'expression.

4: Aller à l' Format->Edit StyleSheet..., entrez le style que vous devez modifier.

enter image description here

5: Une cellule montrant le style apparaît. Assurez-vous que cette cellule est sélectionnée et aller à l' Format->Object Inspector.

6: Aller à l' Editing Options et définissez Editable de vrai.

enter image description here

7: Modifier la inmodifiable.

enter image description here

Je vous suggère de d'abord saisir le nom de tous les styles que vous voulez être en mesure de les modifier comme je l'ai montré dans la capture d'écran. Pour l'instant j'ai seulement changé de ceux que j'ai mentionné dans l'étape 3. Une fois que vous les avez dans la liste, sélectionnez-les tous et à mettre l'modifiable à la fois. Un autre point important est que ce fichier peut être un modèle. Vous devez enregistrer ce fichier quelque part et lorsque vous avez besoin de faire une documentation viens de l'ouvrir, l'enregistrer sous un autre nom dans le droit chemin et de commencer à copier les cellules à partir de la documentation existante carnets de notes.

C'est à vous de décider comment vous créer ce guide. Pour l'instant permet simplement de mettre des bêtises. Vous allez voir mes captures d'écran. Les deux fichiers sont à la documentation de vos fonctions. Copiez et collez votre fichier de modèle d' SOPackage/Documentation/English/ReferencePages/Symbols et nommer les fichiers AddTwo_E.nb et DotTwo_E.nb. Rechercher de la documentation que vous le souhaitez, prendre en Sin par exemple et de copier et coller les informations de ces fichiers. Je vais changer les noms juste pour montrer comment ils fonctionnent.

La création du fichier de modèle peut sûrement être réduite. Si quelqu'un sait comment le faire par programmation, n'hésitez pas à modifier cette section ici et de le remplacer par le code. Vous allez tous nous faire une faveur énorme.

PacletInfo.m

Ce fichier va droit dans le répertoire OSPackage et contient les éléments suivants:

Paclet[
Name -> "SOPackage",
Version -> "0.0.1",
MathematicaVersion -> "8+",
Extensions -> {{
    "Documentation", 
    Resources -> {
        "Guides/SOPackage"
    }, 
    Language -> "English"
}}
]

Il y a une dernière chose que nous devons faire avant que nous puissions avoir la documenation prêt. Nous avons besoin de faire l'ensemble de la documentation des fonctions non modifiable et nous avons à lui donner le même format que le reste des documents. Cette fois, j'ai écrit un script qui fait cela. Je l'appelle MakeDoc car il permettra aussi de renforcer l'index. Enregistrez ce fichier sous OSPackage. Je vais briser ce fichier intwo 4 parties de sorte que vous pouvez obtenir une explication.

pname = "SOPackage";
Get[pname <> "`"];
basepath = $UserBaseDirectory<>"/Applications/"<>pname<>"/Documentation/English/ReferencePages/Symbols/";
$UserBaseDirectory <> "/Applications/" <> pname <> "/Documentation/English/ReferencePages/Symbols/";

Nous devons nous assurer que nous redémarrer Mathematica avant de le faire. Nous allons d'abord charger le package et définissez le répertoire racine de l'ensemble de la documentation des fonctions. Sur l'étape suivante, nous allons essentiellement de copier coller le code, nous allons faire ce qui suit pour chaque fonction.

snname := "AddTwo";
nb = NotebookOpen[basepath <> snname <> "_E.nb"];
NotebookSave[nb, basepath <> snname <> ".nb"];
SetOptions[nb,
  TaggingRules -> {
    "ModificationHighlight" -> False,
    "Metadata" -> {
      "context" -> pname <> "`",
      "keywords" -> {},
      "index" -> True,
      "label" -> "OSPackage Package Paclet Symbol",
      "language" -> "en",
      "paclet" -> "OSPackage Package",
      "status" -> "",
      "summary" -> AddTwo::usage,
      "synonyms" -> {},
      "title" -> "AddTwo",
      "type" -> "Symbol",
      "uri" -> pname <> "/ref/AddTwo"},
    "SearchTextTranslated" -> ""
    }
  ];
SetOptions[nb, Saveable -> False];
SetOptions[nb, 
  StyleDefinitions -> 
   FrontEnd`FileName[{"Wolfram"}, "Reference.nb"]];
NotebookSave[nb];

Ce bloc de code ouvre le modifiable en fonction de la documentation. Il enregistre avec le nom correct. Et puis ça change de ses attributs, de sorte qu'il n'est pas modifiable et il lui donne le même aspect que le reste des documents. Nous faisons la même chose pour chaque fonction. Notez que le "résumé" est défini à l' usage message de la fonction. C'est ce que nous allons voir lorsque l'on recherche la fonction.

snname := "DotTwo";
nb = NotebookOpen[basepath <> snname <> "_E.nb"];
NotebookSave[nb, basepath <> snname <> ".nb"];
SetOptions[nb,
  TaggingRules -> {
    "ModificationHighlight" -> False,
    "Metadata" -> {
      "context" -> pname <> "`",
      "keywords" -> {},
      "index" -> True,
      "label" -> "OSPackage Package Paclet Symbol",
      "language" -> "en",
      "paclet" -> "OSPackage Package",
      "status" -> "",
      "summary" -> DotTwo::usage,
      "synonyms" -> {},
      "title" -> "DotTwo",
      "type" -> "Symbol",
      "uri" -> pname <> "/ref/DotTwo"},
    "SearchTextTranslated" -> ""
    }
  ];
SetOptions[nb, Saveable -> False];
SetOptions[nb, 
  StyleDefinitions -> 
   FrontEnd`FileName[{"Wolfram"}, "Reference.nb"]];
NotebookSave[nb];

Très important, nous n'avons pas modifié le guide, c'est tout ce qu'il faut:

snname := "SOPackage";
nb = NotebookOpen[guidepath <> snname <> "_E.nb"];
NotebookSave[nb, guidepath <> snname <> ".nb"];
SetOptions[nb, Saveable -> False];
SetOptions[nb, StyleDefinitions -> FrontEnd`FileName[{"Wolfram"}, "Reference.nb"]];
NotebookSave[nb];

Et enfin, nous avons créer l'index comme ceci:

indir = $UserBaseDirectory<>"/Applications/"<>pname<>"/Documentation/English/Index";
If[FileNames[indir] != {}, DeleteDirectory[indir, DeleteContents -> True]];
ind = DocumentationSearch`NewDocumentationNotebookIndexer[indir];
DocumentationSearch`AddDocumentationNotebook[ind, basepath <> "AddTwo.nb"];
DocumentationSearch`AddDocumentationNotebook[ind, basepath <> "DotTwo.nb"];
DocumentationSearch`CloseDocumentationNotebookIndexer[ind];

Notez que nous avons besoin d'une ligne avec AddDocumenationNotebook pour chaque fonction. Après l'exécution de l' MakeDoc.nb les fichiers AddTwo.nb, DotTwo.nb et SOPackage.nb me sera créé. Ces fichiers ne peuvent pas être modifiés. Vous pourrez également voir un dossier nommé Index. C'est tous les binaires de données qui contient des informations pour le centre de doc. Si jamais vous apportez une modification de la documentation, vous devez exécuter MakeDoc.nb pour effectuer les modifications prennent effet. Voici l'arborescence du document que nous avons maintenant.

enter image description here

Après cela, il faut relancer Mathematica et de prendre notre documentation pour un tour.

C'est ce qui arrive lorsque vous recherchez "SOPackage".

enter image description here

Laisse le regard de l'utilisation de la AddTwo

enter image description here

Notez qu'une flèche avec un lien vers la page de doc a été ajouté automatiquement.

Malheureusement, si l'on recherche de l' AddTwo dans la doc center c'est ce que nous obtenons:

enter image description here

Comment pouvons-nous faire en sorte que le résumé de la fonction n'est pas formaté?

N'hésitez pas à modifier mon code en le téléchargeant à partir d' ici.

Merci pour la lecture.

Manuel

32voto

jmlopez Points 2040

Il m'a fallu un certain temps mais j'ai enfin fini d'écrire une documentation de Mathematica application à l'aide de Mathematica aux utilisateurs d'écrire leurs documenté paquets.

Cette application s'appelle" ApplicationMaker. Il contient trois paquets avec plusieurs fonctions pour vous aider à créer la demande. En utilisant ces fonctions, vous pouvez sauter en passant par tout le désordre que j'avais décrit dans ma réponse précédente.

Si vous téléchargez ApplicationMaker de mon site, vous trouverez un tutoriel détaillé pour vous montrer comment créer une application complète avec sa documentation.

Vue d'ensemble

Pour créer une nouvelle application vous commencez par appeler NewApplication. Cela crée l'arborescence du répertoire je l'ai mentionné dans la réponse précédente. Pour en savoir plus à propos de Mathematica l'organisation des fichiers, cliquez ici.

L'étape suivante consiste à créer les packages. Pour que vous vous appelez NewPackage. Cette fonction crée un modèle où vous écrivez votre code.

Lorsque vous avez fini d'écrire votre code, vous devez appeler UpdateInit. Cela met à jour le fichier init que Mathematica besoins de sorte que vous pouvez utiliser la fonction Get (<<).

À ce stade, vous êtes prêt à créer la documentation. Appelez simplement CreateReferencePages et cela va créer un document de base que vous pouvez modifier afin de documenter les pages de référence pour chaque symbole dans votre application.

Si vous souhaitez créer un guide ou un tutoriel pour votre application, alors vous pouvez communiquer NewGuide et NewTutorial.

Lorsque vous avez terminé de faire vos modifications, vous devez construire votre application de sorte que Mathematica peut-il s'adapter à son centre de documentation. Vous faites cela en appelant BuildApplication.

À ce stade, vous avez terminé. Si vous utilisez Information sur l'un des symboles de votre paquet, vous devriez voir une flèche annexé qui vous mène à la page de référence pour ce symbole.

Si vous souhaitez partager cette application, vous devez d'abord déployer. L'application contient les pages de référence qui collaborent avec le centre de documentation et de ceux que vous modifiez. Par le déploiement de vous obtenir un répertoire avec uniquement les fichiers nécessaires pour que votre demande de travail.

Installation

Tout ce que vous avez à faire est de déposer le dossier ApplicationMaker en $UserBaseDirectory/Applications/ ou $BaseDirectory/Applications/.

Pour commencer ouvrez le centre de documentation et de chercher des "ApplicationMaker". Cela devrait vous montrer le guide montrant toutes les fonctions que le paquet contient. Tout en bas, vous devriez voir un lien vers le tutoriel.

Les Derniers Mots De

C'est la première application que j'ai jamais construire de Mathematica. Je vais essayer de continuer à mettre à jour le package que je découvre de nouvelles choses pour rendre le package mieux. Pour l'instant, j'espère que cette première version de ApplicationMaker est utile à personne d'essayer de documenter leurs Mathematica applications.

Vous pouvez télécharger ApplicationMaker ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X