TemplateBox[{box1,box2,…},tag]
低レベルのボックス構造で,ボックス boxiの表示と評価をパラメータ化する.
TemplateBox["key1"expr1,"key2"expr2,…,tag]
ボックス式かもしれずそうではないかもしれない任意の式の使用を許す.
TemplateBox
TemplateBox[{box1,box2,…},tag]
低レベルのボックス構造で,ボックス boxiの表示と評価をパラメータ化する.
TemplateBox["key1"expr1,"key2"expr2,…,tag]
ボックス式かもしれずそうではないかもしれない任意の式の使用を許す.
詳細とオプション
- TemplateBoxのパラメータは,表示や評価に使われる新たなボックス式を作成する関数に入力される.DisplayFunctionオプションは表示用のボックス作成に使われる関数を指定し,InterpretationFunctionオプションは評価に使われる関数を指定する.
- TemplateBoxの tag が文字列の場合は,そのスタイルがTemplateBoxに使われる.
- 使用可能なオプション
-
BaseStyle {} 使用するスタイル CopyFunction Automatic クリップボードにコピーする際に boxiをボックス構造に組み立てる純関数 DisplayFunction None boxiを表示用のボックス構造に組み立てる純関数 Editable Automatic boxiの編集を許可するかどうか InterpretationFunction Automatic boxiを評価用のボックス構造に組み立てる純関数 Selectable Automatic boxiの個別選択を許可するかどうか SyntaxForm Automatic 解析目的でボックスをどのように解釈するか Tooltip None マウスカーソルがボックス上に来た場合に表示するツールチップ TooltipDelay 0. ツールチップの表示までの遅延時間 TooltipStyle {} ツールチップのスタイル指定 - DisplayFunctionとInterpretationFunction,CopyFunctionは,ボックス構造に単純な並べ替えと代入を許可する純関数のみを受け付ける.これらの関数はWolfram言語カーネルでは評価されず,スタンドアロンのカーネル機能はサポートしない.
- TemplateBoxの連想形式が使われている場合は,純関数がSlot["keyi"]または# keyiを使って expriを参照するかもしれない.
- DynamicあるいはSliderやCheckbox等のコントロールの主引数に現れる純関数の引数は,事実上,DynamicModule変数であるかのように扱われる.
- スタイルシートでDisplayFunctionが指定された場合は,スタイルシートが変更されると表示されているすべてのTemplateBoxが一様に変更される.
- 編集したりインタラクトしたりできるのはTemplateBoxのボックス引数であって,DisplayFunctionの一部であるボックスではないということは,TemplateBoxの重要な側面である.
- CopyFunctionAutomaticは,「編集」▶ 「コピー」は,TextClipboardTypeの値に応じてDisplayFunctionまたはInterpretationFunctionによって生成されたボックスを使わなければならないことを示す.
- 新たな表記法を定義するために,TemplateBoxを使ったMakeBoxesやMakeExpressionの規則を書くことができる.
- TemplateBoxが任意のボックス式をパラメータとしてサポートできない場合は,オプションEditable->Falseを使ってユーザがパラメータを編集できないようにすることが望ましい.
例題
すべて開く すべて閉じる例 (3)
スタイルシートに"Binomial"スタイルで保存されているテンプレートを表示する:
TemplateBox[{"a", "b"}, "Binomial"]//RawBoxes明示的なDisplayFunctionでテンプレートを表示する:
TemplateBox[{"a", "b"}, "MyCommutator", DisplayFunction :> (RowBox[{"[", RowBox[{#1, ",", #2}], "]"}]&)]//RawBoxesテンプレートの引数をSliderの動的な値として使う:
TemplateBox[<|"value" -> .5|>, "Slider", DisplayFunction :> (GridBox[{{SliderBox[Dynamic[#value]], InputFieldBox[Dynamic[#value]]}}]&)]//RawBoxesスコープ (1)
InterpretationFunctionを使ってテンプレートの評価の仕方を制御する:
CellPrint[ExpressionCell[RawBoxes[TemplateBox[{6}, "Million", DisplayFunction -> (RowBox[{#1, " million"}]&), InterpretationFunction -> (RowBox[{#1, "*", "1000000"}]&)]], "Input", CellTags -> "Example"]];NotebookEvaluate[EvaluationNotebook[], EvaluationElements -> {"Tags" -> {"Example"}}]6 * 1000000一般化と拡張 (1)
ボックス形式ではない値はInterpretationBoxで解釈の一部として使うことができる:
TemplateBox[<|"bool" -> True|>, "boolean", DisplayFunction -> (CheckboxBox[Dynamic[#bool]]&), InterpretationFunction -> (InterpretationBox["", #bool]&)]//RawBoxesオプション (11)
BaseStyle (1)
CopyFunction (1)
DisplayFunction (1)
DisplayFunctionは,スタイルシートから継承されたあらゆるDisplayFunctionを無効にする:
c + RawBoxes[TemplateBox[{"a", "b"}, "Binomial"]]c + RawBoxes[TemplateBox[{"a", "b"}, "Binomial", DisplayFunction :> (RowBox[{"[", RowBox[{#1, ",", #2}], "]"}]&)]]Editable (1)
TemplateBoxのコンテンツは,デフォルトで,編集可能である:
TemplateBox[{"editable contents"}, "template", DisplayFunction -> (FrameBox[#]&)]//RawBoxesSelectableFalseとするとボックスの任意の個々の引数の編集が不可能になる:
RawBoxes@TemplateBox[{"uneditable contents"}, "template", DisplayFunction -> (FrameBox[#]&), Editable -> False]InterpretationFunction (2)
InterpretationFunctionは,評価に使われるボックス構造を与える:
TemplateBox[{"a", "b"}, "MyCommutator",
InterpretationFunction :> (RowBox[{"LieBracket", "[", RowBox[{#1, ",", #2}], "]"}]&), DisplayFunction :> (RowBox[{"[", RowBox[{#1, ",", #2}], "]"}]&),
Tooltip :> Automatic]//RawBoxes入力として使われたものと同じ構造を評価するとLieBracketになる:
MyCommutator[a, b]Automaticという値は,tag がボックス構造の関数の頭部として使われるようにする:
TemplateBox[{"a", "b"}, "MyCommutator",
InterpretationFunction :> Automatic, DisplayFunction :> (RowBox[{"[", RowBox[{#1, ",", #2}], "]"}]&),
Tooltip :> Automatic]//RawBoxesMyCommutator[a, b]Selectable (1)
TemplateBoxのコンテンツは,デフォルトで選択可能になっている:
TemplateBox[{"selectable contents"}, "template", DisplayFunction -> (FrameBox[#]&)]//RawBoxesSelectableFalseとすると,ボックスの任意の個々の引数が選択できなくなる:
TemplateBox[{"unselectable contents"}, "template", DisplayFunction -> (FrameBox[#]&), Selectable -> False]//RawBoxesSyntaxForm (1)
SyntaxFormを使って,演算子として使われるTemplateBoxの優先順位を設定することができる:
TemplateBox[{"x"}, "DerivativeOperator", DisplayFunction :> (FractionBox["∂", RowBox[{"∂", #1}]]&),
SyntaxForm -> "∂"]//RawBoxesTooltip (1)
マウスがテンプレートボックスの上に来たときに表示されるツールチップを指定する:
TemplateBox[{"a", "b"}, "Binomial", Tooltip :> "a vacuous tooltip"]//RawBoxesTooltip->Automaticとすると,tag からツールチップが生成される:
TemplateBox[{"X", "b"}, "LieDerivative", DisplayFunction :> (RowBox[{SubscriptBox["ℒ", #1], #2}]&),
Tooltip :> Automatic]//RawBoxesTooltipDelay (1)
考えられる問題 (2)
結果として無効なボックス構造になるDisplayFunctionはエラーになる:
TemplateBox[{"a", "b"}, "MyCommutator", DisplayFunction :> (RowBox[{"[", foo[{#1, ",", #2}], "]"}]&)]//RawBoxesテンプレートパラメータは編集可能なフィールドと動的値の両方として使うことはできない:
TemplateBox[<|"value" -> "contents"|>, "template", DisplayFunction -> (RowBox[{"{", DynamicBox[ToBoxes[#value]], ",", #value, "}"}]&)]//RawBoxes上記は最初は正しく表示されるが,これを編集しようとしても動的値は更新されない:
{Dynamic["contents"], contents}InputFieldBoxを使って動的値でもある編集可能なフィールドを作る:
TemplateBox[<|"value" -> "contents"|>, "template", DisplayFunction -> (RowBox[{"{", DynamicBox[ToBoxes[#value]], ",", InputFieldBox[Dynamic[#value], String, Appearance -> None, ContinuousAction -> True, FieldSize -> {{1, Infinity}, 1}], "}"}]&)]//RawBoxes関連項目
関連するガイド
テキスト
Wolfram Research (2008), TemplateBox, Wolfram言語関数, https://reference.wolfram.com/language/ref/TemplateBox.html (2020年に更新).
CMS
Wolfram Language. 2008. "TemplateBox." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/TemplateBox.html.
APA
Wolfram Language. (2008). TemplateBox. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TemplateBox.html
BibTeX
@misc{reference.wolfram_2026_templatebox, author="Wolfram Research", title="{TemplateBox}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/TemplateBox.html}", note=[Accessed: 06-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_templatebox, organization={Wolfram Research}, title={TemplateBox}, year={2020}, url={https://reference.wolfram.com/language/ref/TemplateBox.html}, note=[Accessed: 06-November-2026]}