Подтвердить что ты не робот

Как создать записные записные книжки Mathematica

Есть ли способ создания и редактирования ноутбуков (последовательностей ячеек) в интерфейсе с вкладками? Может ли такой интерфейс быть создан с помощью TabView или какого-либо другого инструмента? Я предполагаю, что это было бы возможно, если бы я сделал интерфейс с нуля, но есть ли способ в стандартном интерфейсе Wolfram?


Две вещи мотивируют меня, чтобы спросить об этом. Во-первых, я хотел бы создать замену для Microsoft Office OneNote с ноутбуками Mathematica. Во-вторых, когда я работаю в Mathematica, я задаюсь вопросом, будет ли интерфейс с вкладками работать лучше, чем открыть несколько отдельных окон.

4b9b3361

Ответ 1

В то время как Mathematica не поддерживает непосредственно окна с вкладками для ноутбуков, можно воспроизвести что-то из эффекта с помощью DockedCells. Интерфейс Virtual Book/Function Navigator (из меню справки) делает это... это по существу слайд-шоу с двумя слайдами, один из которых содержит VB, а другой, содержащий FN, с навигационным интерфейсом DockedCells, управляемым NotebookFind это немного похоже на вкладки.

Вот суть, как вы могли бы сделать такую ​​записную книжку самостоятельно. Извините, здесь есть какие-то передовые концепции... если есть какие-то части этого решения, о которых вы хотите узнать больше, возможно, вы можете задать больше вопросов.

(* make a single page of the notebook *)
page[tag_String] := 
  [email protected][{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] :=
  [email protected][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, как представляется, заставляет их вести себя по-разному.