Go to the first, previous, next, last section, table of contents.


もっと憑依モード

Calc がある式に「憑依」したとき、 すなわち現バッファの生成・読込み後、初めて Calc がその式を解析したとき、 Calc はその式の書かれている言語が何かを理解しようとします。 式が TeX みたいな `\' シーケンスを含んでいれば、 その式は TeX モードで解釈されます。 式が複数行の Bigモードで書かれたように見えれば、 Big モードで解釈されます。 それ以外は、現行の言語モードで解釈されます。

ここで注意すべきは、Calc の結論が何であれ、 言語モードは自動的には切替らないということです。 言語モードが TeX に設定されていなくても TeX の式を読むことはできますが、 すぐにその式を現行の言語モードに適合するように書替えてしまいます。 その後もTeX のままにしておきたければ、d T とタイプして、 TeX モードに切替える必要があります。

Calc の解析エンジンはある種の式が解析できません。 例えば、解析エンジンが認識できない行列は、 v ] (calc-matrix-brackets) によって 行列表示スタイルを明示してやらねばなりません。 d p (calc-show-plain) は、 「プレーン」版の式を完全整形された式と一緒に表示するモードを On/Off します。 このようなプレーン版と一緒にされた式を Calc が読みとった場合、 プレーン版の方を読んで、整形版の式は無視します。

デフォルトでは、プレーンの式の前後に `%%%' 記号が付けられます。 この表記方法の長所は、`%' が TeX ではコメント先頭として扱われるので、 TeX ソース中に式を書込んでも、プレーン部分が印刷に現れない点です。 「プレーン」式のデリミタを変えて、eqn など他の整形システムで コメントとして扱われるようにする方法は、憑依モードのカスタマイズ 参照 。

「Big」モードで整形された式には、Calc の解析エンジンが未だ認識できない 表記がいくつかあります。 特に、sum, prod, integ などの大記号が読めないし、 右辺引数が省略された `=>' を扱うことができません。 また、Calc は Z C コマンドによってユーザー定義された 特殊な書式が認識できません(User-Defined Compositions 参照 )。 このような場合、「プレーン」モードを使っておいて、 後日も Calc が確実に認識できるようにしておくことが大事です。

「プレーン」モードが重要な役割をはたす他の例は、 数桁の有効数字でフロートモードを指定している場合です。 通常、憑依した編集バッファをセーブして再ロードすると、 計算されていても表示されていない桁は失われてしまいます。 しかし、「プレーン」モードにしておけば、 丸められた数値と一緒に完全な数値がファイル内に確実に保たれるのです。

憑依バッファは Emacs メモリ中に残留する限り、 アクティブ化した式を全部覚えています。 埋込み式(embedded formula)が π の12桁表示であったとしましょう。 ここで C-u 5 d n とタイプすると5桁だけが表示されますが、 Calc スタックには全12桁が残っているので、 d n をタイプすれば、すべてが再表示されます。 もっと驚くべきことに、 いったん憑依モードを終了したあとで再び憑依した場合でも、 d n で12桁全部が復活します。 各バッファはアクティブ化した式を全部覚えているからです。 しかしながら、ファイルにセーブして新たな Emacs セッションとして再ロードすると、 非表示の桁は失われてしまいます。「プレーン」モードを使っていれば大丈夫です。

憑依モードの適用において、 式のコピーの連鎖を作ってその進展を示したいと思うことがあるでしょう。 例えば、自分のファイルに次のように書きたいと思うかもしれません。 ("Calc 入門"の章の例を使って以下に詳述します)

                            ln(ln(x))

の微分は

                          (ln(ln(x)) の微分)

この x = 2 における値は

                             (その値)

そして x = 3 における値は

                             (その値)

M-# d (calc-embedded-duplicate) は、 このような連鎖を手軽に作るコマンドです。 M-# d とタイプすると、 カーソルが置かれた式(この時点で憑依していてもいなくてもかまいません)が すぐ下にコピーされて、 今度はそのコピーが憑依対象になります。

この例では、単に最初の行から始めれば良いのです。

                            ln(ln(x))

式の上にカーソルを置いて M-# d とタイプすると、その結果は

                            ln(ln(x))

                            ln(ln(x))

となって、2番目のコピー式に憑依が移ります。 さあ、ここで a d x RET と打って微分をとり、 その微分のコピーを2つ作るために M-# d M-# d と続けます。 さらに、3 s l x RET と打って最後の式を評価し、 そして最後から2番目の式に移動して 2 s l x RET と打ちます。

最後に、M-# e と打って憑依を終了しましょう。 そして少し戻って各式の間に必要な文を挿入するのです。

カーソル場所に新しく埋込み式(embedded formula)を作って憑依するには、 M-# f (calc-embedded-new-formula) コマンドを使います。 これはデフォルトのデリミタ(普通は単なる空行)を一組挿入し、 代数的入力待ち状態になります(入力するとその式に憑依します)。 このコマンドは短縮コマンドであって、 自分でデリミタを一組入力し、その間へカーソルを移動し、 そこで M-# e とする操作と同じです。 M-# 'M-# f と同じです。

M-# n (calc-embedded-next) コマンドと、 M-# p (calc-embedded-previous) コマンドは、 バッファ内で前後のアクティブな埋込み式(embedded formula)まで カーソルを移動します。 正負の接頭引数をつけると、いくつか先まで飛ぶことができます。 ただし、このコマンド群はテキストを解析して式を探すのではなく、 以前に憑依モードでアクティブ化された式の場所を目指しているだけです。 実際、M-# nM-# p は どの埋込み式(embedded formula)が現在アクティブ化されているかを 知るのに便利です。 また、このコマンド群は憑依モードを開始せず、 ただカーソルを移動するだけです。 (ところで、 M-# は第2ストロークのシフトやメタ・キーの状態を無視するので、 M-# n とタイプするのはそれほど面倒ではありません。 シフト・キーとメタ・キーを押下したまま M-# M-N と打つことができます。)

M-# ` (calc-embedded-edit) コマンドは、 ` (calc-edit) のように、 現在カーソルがある埋込み式(embedded formula)を編集するとき使います。 憑依モードは必ずしもOnでなくてもかまいません。 編集を完了するには M-# M-# と押します。 編集のキャンセルは M-# x です。


Go to the first, previous, next, last section, table of contents.     利用度数