20

タブ付きインターフェースでノートブック(セルのシーケンス)を作成し編集する方法はありますか?そのようなインターフェイスはTabViewまたは他のツールで作成できますか?フロントエンドを最初から作成した場合、これが可能だと仮定していますが、標準のWolframフロントエンドには方法がありますか?タブ付きMathematicaノートブックの作成方法


2つのことが私にこれを求めます。まず、MathematicaノートブックでMicrosoft Office OneNoteの代替品を作りたいと思います。第二に、私がMathematicaで働いているときに、タブ付きのインターフェースが、多数の別々のウィンドウを開いているよりもうまくいくかどうか疑問に思います。

+5

Mathematicaはプレゼンテーション用のノートブックのページネーションをサポートしています。また、 "ドッキングされたセル"(常に上部に表示)もサポートしています。この2つを結合して、ドッキングされたセルにページを切り替えるためのユーザーインターフェイスを作成することができます。これは単なる出発点のアイデアです。 – Szabolcs

+0

私はそれについてもっと考えた後、出力のためだけに働く答えを掲示しました。これを行うには、選択したウィンドウやノートブックを除くすべてのウィンドウでVisible-> Falseを設定することで、ウィンドウ間を切り替える別のタブバーまたはパレットを作成するのが最も簡単だと思います。これは、タブ付きインターフェイスの錯覚を与えるかもしれません。 –

+3

* Mathematica *のフロントエンドユーザーインターフェイスには、組み込みの(ネイティブの)タブ付きインターフェイスはありません(しかし、これは[email protected]へ報告するための素晴らしい提案です)。私が考えることができるフロントエンドユーザーインターフェースの最も近いものは、スライドショー環境です( 'Palettes'メニューを開き、' Slide Show'を選択します)。 –

答えて

8

Mathematicaはタブ付きノートブックウィンドウを直接サポートしていませんが、DockedCellsを使って効果を再現することは可能です。 Virtual Book/Function Navigatorのインターフェース(ヘルプメニューから)はこれを行います。本質的に2つのスライドを持つスライドショーです.1つはVBを保持し、もう1つはFNを含み、タブのようなもの。

ここに、ノートブックを自分で作成する方法の要点があります。申し訳ありませんが、ここにいくつかの先進的な概念があります。詳細について知りたいこのソリューションの部分がある場合、多分より多くの質問をスピンさせることができます。

(* 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]に、正しくスライドショーをスクロールしないように見えます。コメントの議論を参照してください。 2つのコードは理論上は同等であるべきですが、Mathematica 8のバグは時々異なった動作をするように見えます。

+5

ジョン、私は上記を実行するとV 8.04に気付きました、そして今は 'First'で設定されている、次に 'Second'をクリックすると、ボタンは現在 'second'最初'。しかし、私が「3番目」にあり、「2番目」をクリックすると、それはokに変わります。私はこれを修正するのは簡単だと確信していますが、あなたのコードはあまりにも進んで私が今それを理解することができます:)。私はスクリーンショットを追加することができますが、コメントでそれを行う方法を知らない。 – Nasser

+3

'NotebookFind [ButtonNotebook []、tag、All、CellTags]'行を 'NotebookLocate [tag]'に置き換えると、@ Nasserのコメント内の問題を修正しているようです。また、Setter [Dynamic [CurrentValue [....] ...]の中には、タグを削除する必要があるという特別な用語があります。 – kglr

+0

@kguler私は 'Setter'ではなく' CurrentValue'の中に 'tag 'を意味すると思います。これを削除すると、実際にボタンを押すまでセッターは押されたように見えません。これはデフォルト値を提供する、文書化されていない第3引数のようです。 – Szabolcs

関連する問題