\calcval
計算を perl に外注し,結果を受け取ります。
定義されているスタイルファイル †
emathPl.sty
書式 †
\calcval[#1]#2#3
- #1: perl の printf の書式指定
デフォルトは [f] すなわち固定小数点形式の浮動小数点数
- #2: perl の計算式
perl の文法で記述します。
TeX の制御綴りは展開されて perl に引き渡されます。
- #3: 結果を受け取る制御綴
基本例 †
perl を起動して計算をさせ,結果を受け取ります。
計算式の部分は,そのまま perl に引き渡されますから,
perl の文法に従って記述します。
式に制御綴を含む場合 †
TeX の制御綴は展開されて perl に渡されますが,~
負の数の場合,注意が必要です。~
下の場合,エラーとなります。
\aval-\bval は,展開されて 1--2 となって,perl に引き渡されますが,
perl の文法エラーを惹起します。
perl はエラーメッセージを出力しますが,TeX の統合環境の多くはこのエラーを無視します。
正しい perl の式を作るには \bval を (...) で括ってやります。
すなわち \aval-(\bval) とすれば,perl に引き渡される式は 1-(-2) となり,
正しい結果が返ります。
- 上の例で,\aval も括弧で括って
\calcval{(\aval)-(\bval)}
としてもよいわけで,
perl に渡す制御綴は (....) で括れ
が安全策です。
書式指定 †
デフォルトでは,perl の printf の書式指定が %f となっていますが,
これを変更するオプションが [...] です。
... の部分は,perl の printf の書式指定の先頭 `%' を除去したものを与えます。
次の例は [.4f] として,小数点以下4桁を指定しています。
なお,この機能を利用して四捨五入をするのは危険です。
下の注意事項をご覧ください。
戻り値として整数を指定するには,[d] をオプションに指定します。
なお,整数の桁数が多いときに,3桁ごとにコンマを入れるには
emathKs.sty で定義されている \ketakugiri を用います。
- perl の関数 printf の書式指定については,perl の解説書をご覧ください。
例えば,「初めてのPerl」の場合
6.3.2 printf を使用した書式指定出力
のところに解説があります。
注意事項 †
- このコマンドは,perl との連携機能を必要とします。
したがって,platex を起動するさい
platex -shell-escape hoge.tex
などど,起動オプション
-shell-escape
を付加しなければなりません。
詳しくはperlとの連携ページをご覧ください。
(以前は,起動オプションを -sh と省略形で済ますことが出来ましたが,
最近の platex では,省略形は許されなくなっています。)
- 数値計算をするのが前提です。文字列計算などに用いることはできません。
文字列計算・複雑な計算には\CalcValを利用します。
- 四捨五入をするのに書式指定を用いるのは危険です。
- emathパッケージには,\EMround を用意しています。
- 四捨五入をするには,FPパッケージの利用もあるでしょう。
関連事項 †
- perl の関数 printf の書式指定については,perl の解説書をご覧ください。
例えば,「初めてのPerl」の場合
6.3.2 printf を使用した書式指定出力
のところに解説があります。
- perl との連携機能を用いると
作業用ファイル
が作成されます。それが煩わしい場合は,それらをサブディレクトリに収納することが出来ます。
\EMworkfiledir コマンド
のページをご覧ください。
- \CalcVal
- EMcallperl環境?
7721