16
$\begingroup$

I need certain user defined functions over and over. I was wondering how can I define and where and how to save them such that each time I start a notebook, these functions are available and need not to be defined again.

$\endgroup$

1 Answer 1

22
$\begingroup$

Best place is to make a package. But if you do not feel like it, you can put the definitions in the init.m file

using init.m

see http://reference.wolfram.com/mathematica/ref/file/init.m.html for more information on using init.m. From the above:

"Possible locations for init.m files include the following:"

 $BaseDirectory/Kernel kernel initialization code for all users
 $UserBaseDirectory/Kernel kernel initialization code for the currently logged-in user
 $BaseDirectory/FrontEnd front end initialization code for all users
 $UserBaseDirectory/FrontEnd front end initialization code for the currently logged-in user

When using init.m you do not need to load anything, as init.m is read automatically if is is found when Mathematica starts.

Using a package

If you put the definitions in a package, say foo.m and then you can load your package, like this

 Get["c:\\mydata\\foo.m"]

or if the package is in one of the standard locations in the Mathematica $Path you can write

 Needs["foo`"]

whenever you need to use the functions.

To make a simple package, here is a note I wrote here it has more information.

See also this question here at how to install and use a package https://stackoverflow.com/questions/4641512/how-to-install-new-packages-for-mathematica

also WRI page on packages http://reference.wolfram.com/mathematica/tutorial/SettingUpMathematicaPackages.html

Autoloading packages

For advanced packages, you can make a package that will also load automatically when Mathematica starts. These has to go to a special location though, called AutoLoad.

This link below is very useful to tell one where to put everything in Mathematica and talks more about this autoloading

http://reference.wolfram.com/mathematica/tutorial/MathematicaFileOrganization.html

$\endgroup$
2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.