SaveDefinitions in Manipulate is not saving definitions from packages
- To: mathgroup at smc.vnet.net
- Subject: [mg94628] SaveDefinitions in Manipulate is not saving definitions from packages
- From: dr DanW <dmaxwarren at gmail.com>
- Date: Thu, 18 Dec 2008 07:20:44 -0500 (EST)
I asked a similar question previously, but I didn't do a good job of describing the problem. I am trying to send a notebook to a colleague who does not have access to Mathematica. There is a Manipulate statement that demonstrates the results of my calculations that I want him to be able to work with. As I understand it, this is one of the intended purposes for MathPlayer. However, I have run into a limitation that seriously impedes my ability to do this. Like any good programmer, whenever I create a useful function, I put it into a package for later reuse. As a consequence, I am always using Needs[] in my notebooks to import the functions I have written. The problem is that when I use Manipulate[args, SaveDefinitions->True] any definitions from imported packages do not get saved. Am I doing something wrong, or is this a known limitation? To reproduce, put the following minimal package code in a file called SaveDefinitionsPackage.m in your $UserBaseDirectory/Applications folder: BeginPackage["SaveDefinitionsPackage`"] SaveDefinitionsPackageTest::usage="SaveDefinitionsPackageTest[] prints a message."; Begin["`Private`"] SaveDefinitionsPackageTest[]:="SaveDefinitionPackage loaded successfully"; End[ ] Protect[Evaluate[$Context <> "*"]] EndPackage[ ] And the following code in a different notebook (Test.nb): Needs["SaveDefinitionsPackage`"] Manipulate[ ToString[n] <> " " <> SaveDefinitionsPackageTest[], {n, 0, 10, 1}, SaveDefinitions -> True ] Execute the notebook, save, close, kill the kernel, and reopen Test.nb. It is evident that the SaveDefinitionsPackageTest[] function definition was not saved with the Test.nb notebook. Any ideas? Daniel