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