21

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


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

4

1 回答 1

10

虽然 Mathematica 不直接支持选项卡式笔记本窗口,但可以使用DockedCells. Virtual Book/Function Navigator 界面(来自帮助菜单)执行此操作...它本质上是一个带有两张幻灯片的幻灯片放映,一张持有 VB,另一张包含 FN,其DockedCells驱动的导航界面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]似乎并不总是正确滚动幻灯片的 更改为NotebookLocate[tag]。请参阅评论中的讨论。理论上,这两段代码应该是等价的,但 Mathematica 8 中的一个错误似乎使它们有时表现不同。

于 2012-01-16T22:03:39.463 回答