如何创建选项卡式Mathematica笔记本

时间:2012-01-08 15:33:58

标签: user-interface wolfram-mathematica mathematica-frontend

有没有办法在标签界面中创建和编辑笔记本(单元序列)?这样的界面可以用TabView或其他工具制作吗?我认为如果我从头开始制作前端,这是可能的,但在标准的Wolfram前端中有没有办法?


有两件事激励我提出这个问题。首先,我想用Mathematica笔记本创建Microsoft Office OneNote的替代品。其次,当我在Mathematica工作时,我发现自己想知道标签界面是否比打开多个单独的窗口更好。

1 个答案:

答案 0 :(得分:9)

虽然Mathematica不直接支持标签式笔记本窗口,但可以使用DockedCells重现某些效果。虚拟书本/功能导航界面(来自帮助菜单)执行此操作...它本质上是一个带有两个幻灯片的幻灯片放映,一个包含VB,另一个包含FN,其中DockedCells导航界面由{ {1}}看起来有点像标签。

以下是您如何自己制作这样一款笔记本的要点。对不起,这里有一些高级概念......如果您想要了解更多关于此解决方案的任何部分,也许您可​​以提出更多问题。

NotebookFind

修改:更改(* make a single page of the notebook *) page[tag_String] := Cell@CellGroupData[{Cell["", "SlideShowNavigationBar", CellTags -> {tag}], Cell[tag, "Title"]}]; (* make a single tab-like button which selects the page *) button[tag_String] := Button[Dynamic[ Setter[Dynamic[ CurrentValue[EvaluationNotebook[], {TaggingRules, "page"}, tag]], tag]], CurrentValue[EvaluationNotebook[], {TaggingRules, "page"}] = tag; NotebookLocate[tag], Appearance -> None]; (* make a notebook based upon a list of strings which are names of tabs *) makeTabbedNotebook[nameList_List] := NotebookPut@Notebook[page /@ nameList, DockedCells -> ToBoxes[ExpressionCell[Row[button /@ nameList], "DockedCell"]][[1]], ScreenStyleEnvironment -> "SlideShow"]; makeTabbedNotebook[{"First", "Second", "Third"}] ,似乎并不总是正确地滚动幻灯片,转到NotebookFind[ButtonNotebook[],tag,All,CellTags]。请参阅评论中的讨论。从理论上讲,这两段代码应该是等价的,但Mathematica 8中的一个错误似乎会使它们的行为有时不同。