Re: Viewing Packages in mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg102740] Re: Viewing Packages in mathematica
- From: David Reiss <dreiss at scientificarts.com>
- Date: Mon, 24 Aug 2009 08:37:02 -0400 (EDT)
- Reply-to: dreiss at scientificarts.com
[This was originally posted to this thread when it first appeared but did not appear] There are several points to make on this. The first is that, generally you want to create your Mathematica cod within a Mathematica notebook (unless you are using Workbench) and then set that notebook up so that it's Input Cells or Code cells are Initialization cells. Then the notebook will save them into a corresponding .m file when the notebook is saved (a dialog will ask you this the first time you save it after you have put initialization cells in it). As for indentation, Code cells will not (by their stylesheet design) auto indent. The can be changed at the style sheet level. As for working with .m files directly. They do not retain any stylsheet information when they are saved. However styles can be imposed on them while they are open. Cells with code in .m files make use of the Core.nb stylesheet's Code cellstyle. So if you modify cells of this style in the .m file they will take on those modifications for the session that the .m file is open. If nb is the NotebookObject for the .m file in question then the following will make it behave in a way that you are desiring, modifying the cells with code in them. The code comes from http://scientificarts.com/worklife where it is used in one of the palettes for exactly the purpose you are wanting: I needed the same thing and wrote it into the http://scientificarts.com/worklife package for just this reason. ModifyCodeStyle[nb_NotebookObject, Selection] := Module[{}, NotebookFind[nb, "Code", All, CellStyle, AutoScroll -> False]; SetOptions[NotebookSelection[nb], PageWidth -> WindowWidth, AutoIndent -> Automatic, AutoSpacing -> True, LineBreakWithin -> Automatic, LineIndent -> 1, LinebreakAdjustments -> {0.85, 2, 10, 0, 1}] ]; And here is a different version which acts on the style of Code cells rather than on the cells directly: ModifyCodeStyle[nb_NotebookObject, Notebook] := Module[{styledefs, editable}, editable = Editable /. Options[nb, Editable]; SetOptions[nb, Editable -> True]; styledefs = StyleDefinitions /. Options[nb, StyleDefinitions]; Switch[Head[styledefs], Notebook, styledefs = Notebook[ { First@First[styledefs], Cell[StyleData["Code"], PageWidth -> WindowWidth, AutoIndent -> Automatic, AutoSpacing -> True, LineBreakWithin -> Automatic, LineIndent -> 1, LinebreakAdjustments -> {0.85, 2, 10, 0, 1}], Rest@First[styledefs] }, Sequence @@ Rest[List @@ styledefs] ], String | FileName | FrontEnd`FileName, styledefs = Notebook[{Cell[StyleData[StyleDefinitions -> styledefs]], Cell[StyleData["Code"], PageWidth -> WindowWidth, AutoIndent -> Automatic, AutoSpacing -> True, LineBreakWithin -> Automatic, LineIndent -> 1, LinebreakAdjustments -> {0.85, 2, 10, 0, 1}]}, StyleDefinitions -> "PrivateStylesheetFormatting.nb"] ]; SetOptions[nb, StyleDefinitions -> styledefs]; SetOptions[nb, Editable -> editable] ]; I hope this helps... --David http://scientificarts.com/worklife On Aug 21, 4:42 am, Benjamin Hell <h... at exoneon.de> wrote: > Hi, > this is a real beginner question for packages in mathematica. When I > view a package (.m) file in mathematica, the mathematica editor doesn't > show any indentation nor does any automatic line breaks when scaling the > window. So whereas my code can be read quite well in a standard > mathematica notebook, it looks ugly in a package file. Is there any way > to setup some viewing options to change that behaviour? > > Thanks in advance, > Benjamin -- <><><><><><><><><>><><><>><><><> David Reiss, Ph.D; Scientific Arts, LLC . http://www.scientificarts.com <><><><><><><><><>><><><>><><><> This message and any attachments, may contain confidential and/or legally privileged information. If you are not the intended recipient of the message by the original sender, please destroy it. Message and attachments Copyright (c) 2009, all rights reserved.