パレットの作成

パレットはキーボードの拡張のようなものである.パレットを使うとタイプセット文字を入力したり,ノートブックにスタイルを付けたり,評価を実行したり等,Mathematica で多くのアクションを実行することができる.他のノートブックと同様に,パレットもメニュー項目あるいはプログラムを使って作成することができる.

CreatePalette[expr]expr を含むパレットノートブックをフロントエンドで作成し,開く
PaletteNotebook[{cell1,cell2,...}]フロントエンドで操作することのできるパレットノートブックのインセル表現
パレット 選択範囲からパレットを作成
フロントエンドの現行の選択範囲からパレットノートブックを作成する
パレット カスタマイズ可能なパレットユーザによるカスタマイズが可能なパレット

パレット作成ツール

パレットノートブックには独特の特性がある.パレットノートブックを現行選択のノートブックとすることはできるが,通常InputNotebookにはなり得ない.このため,パレットはフロントエンドのキーボード入力の対象となるノートブックへの操作を行うことができる.詳細は「カーネルからのノートブック操作」を参照のこと.

プログラムを使ったパレットの作成

CreatePalette[expr]expr を含む保存されていないパレットノートブックを作成し,それを別のウィンドウで開く.パレットを保存するためには,ウィンドウを閉じ,保存ダイアログが現れたらファイルを保存する.あるいはNotebookSaveを使ってプログラムでパレットノートブックを保存する.

以下はPasteButtonを使って記号を入力ノートブックにペーストするパレットである.PasteButtonはパレットで使えるよう特別に設計されたボタンである.これは挿入点で内容を直接入力ノートブックにペーストする.これをRawBoxesと一緒に使うと,PasteButtonは未解釈のボックスを入力ノートブックにペーストする.

また,PaletteNotebookを使ってパレットノートブックのインセル表現を作成することもできる.ボタンをクリックするかCreatePalettePaletteNotebook式をラップすると,そのノートブックを含む別のウィンドウをフロントエンドで開くことができる.

In[40]:=
Click for copyable input
Out[40]=

RawBoxes[boxes]boxes をそれ以上解釈せず文字通りに挿入するので,その記号は入力式あるいはテキストセルの一部として使うことができる.

Cell[BoxData["\<\"\"\>"],"cellstyle"]解釈されたボックス構造
Cell[BoxData[""],"cellstyle"]解釈されていないボックス構造

ボックス構造の比較

入力(Input)セル:
Click for copyable input
テキスト(Text)セル:

∞°×÷→⧴=≠≤≥¬

""のボックス構造がパレットの文字列として解釈されるならば,スタイルに関係なくフロントエンドは""を常に文字列として扱う.

入力(Input)セル:
Click for copyable input
テキスト(Text)セル:

""

次のパレットは,フロントエンドトークンを使ってアクティブなノートブックにスタイル付きのセルを挿入する.フロントエンドトークンは,通常メニューを使って行うようにカーネル内からフロントエンドコマンドを実行する.フロントエンドトークンのリストは「フロントエンドトークン」を参照のこと.

i以下のパレットはWolfram Mathematica ドキュメントセンターにリンクされている.また入力ノートブックの出力セルすべてを削除したり,カーネルを終了したりすることができる.

In[2]:=
Click for copyable input
In[3]:=
Click for copyable input
In[4]:=
Click for copyable input
Out[4]=

CreatePalette基本数学アシスタントパレットを含むいくつかの Mathematica パレットを作成するのに使用された.

4.gif

選択範囲からのパレットの作成

パレットは,セルまたはその内容を選び,パレット ► パレットの作成を使うことにより作成することもできる.パレットを保存するためには,ウィンドウを閉じ,保存ダイアログが現れたらファイルを保存する.

例えば,入力ノートブックに入力テンプレートをペーストする以下の表を考えてみる.

In[76]:=
Click for copyable input
Out[76]=

表を選び,パレット ► 選択範囲からパレットを作成を選んでパレットを作成する.保存されていないパレットが別のウィンドウで現れる.

5.gif

これは,一時的あるいは実験的な目的では便利なこともあるが,パレット開発にとって最適の方法ではない.CreatePaletteを使うことで,評価されるとパレットの作成が完全に自動化されるようなプログラムを書くことができる.メニュー項目では,エラーの対象となり得る手動の操作が必要になる.この方法だと,パレットを編集したり,その中のバグを修正したりしたい場合に,再生成するのが難しいパレットを作ることになる.

パレットの仕上げと保存

CreatePaletteおよびパレット ► 選択範囲からパレットを作成はデフォルトで,通常のパレットの外観と動作に適するようにオプションが設定されたノートブックを作成する.しかし,Magnification等のオプションも便利であるかもしれない.

1.  これらのオプションをプログラムで設定する場合は,上記のオプションのそれぞれをCreatePalette文の中で指定する.以下がその例である.

CreatePalette[expr, Magnification->1.0, DynamicUpdating->True]

注意:DynamicUpdating->Trueの設定は,パレットの機能が完全にデバッグされ,すぐに使える状態になるまで行ってはならない.この設定では,フロントエンドがバグを含む可能性があるかどうか分からない動的評価を放棄することができないからである.

2.  オプションインスペクタを使ってこれらのオプションを設定する場合は,パレットを選んでからオプションインスペクタを開く.

ノートブック設定 ► 表示設定で,グローバル設定の継承を避けるようにMagnificationを明示的に設定する.

セル設定 ► 評価設定DynamicUpdating->Trueと明示的に設定し,ユーザのフロントエンドで動的更新が無効になっていてもDynamicが有効になるようにする.

パレットを保存したい場合,パレットウィンドウの閉じるボタンをクリックするとパレットを保存するかどうかを尋ねられる.NotebookSaveを使ってプログラムでパレットノートブックを保存することもできる.

Mathematica にパレットをインストールする

パレットがメインのパレットメニューに現れるようにするためには,パレットをPalettePathにインストールしなければならない.

In[10]:=
Click for copyable input
Out[10]=

パレットをインストールする最も簡単な方法は,パレット ► パレットのインストール Mathematica 項目のインストールダイアログでソースファイル,パレット名,インストールディレクトリを入力しOKをクリックすることである.

7.gif

パレットは Mathematica アプリケーションの一部としてインストールすることもできる.アプリケーションにパレットを加えるためには,アプリケーションフォルダ内にFrontEnd\Palettes\ディレクトリを作成し,この場所にパレットを保存する.例えばパレットMyPalette.nbは,MyApplication\FrontEnd\Palettes\に置く.

高度な例題

依存オープナビュー

Dynamicの第2引数は,もう一方のオープナビューの状態を制御して,一度に1つのオープナビューだけが開いたままでいるようにするために使うことができる.

パレットの状態はTaggingRulesを使って追跡および制御することもできる.動的変数とは異なり,TaggingRulesはフロントエンドにより自動的にキャッシュされるため,インストールされているパレットはたとえ保存不可だとしても複数のフロントエンドセッションに渡りそのコントロールオブジェクト状態を覚えておくことができる.このドキュメントではこれ以上は触れないが,チュートリアル「パレットの状態の保存と追跡」で詳細と例題をご覧いただきたい.

関数の適用と評価

パレットは評価を実行し,結果をノートブックに返すことができる.

In[7]:=
Click for copyable input
Out[7]=

次の多項式を考えてみる.式をハイライトし,上のパレットのExpand[]を選ぶ.Mathematica は選択範囲に関数を適用し,結果となる式をその場で評価する.

適用前
Click for copyable input
適用後
Click for copyable input
New to Mathematica? Find your learning path »
Have a question? Ask support »