perl との連携
数値計算を,perl に外注し,その結果を受け取ります。
emathPl.sty など
\documentclass{jarticle} \usepackage{emath} \usepackage{emathPl} \begin{document} \calcval[s]{sqrt(2)}\foo \foo \end{document}
上のサンプルリスト rootii.tex は,普通にタイプセットしたのではエラーになります。
perl との連携を実現するには,emath から tex のコマンド
\write18{......}
を呼び出しますが,このコマンドは危険なコマンドであるため,デフォルトでは使用禁止となっています。
これを使用可能とする方法はありますが,\write18 の危険性は失われません。
\write18 を使用するのは,自分の作ったソースリストなどに限定して用いないといけません。
\write18 の使用を認めるオプションが -shell-escape です。
すなわち,コマンドプロンプトで
platex -shell-escape rootii.tex
を実行すると,エラーは起きず,2 の平方根の近似値
1.4142135623731
が画面に表示されます。
もしエラーが起きるなら,上の
連携の準備
の3項を見直しましょう。見直してもわからない,という場合は掲示板で質問します。
近年の tex では,\write18 を全面禁止ではなく,制限付きで許可する方式に変わりました。この方式では,いくつかの手順を踏めば
platex rootii.tex
とするだけで,perl との連携を実現することが出来ます。
platex --helpを実行すると,使用可能オプションが(アルファベット順に)列記されます。
....\texmf\web2c\texmf.cnfというテキストファイルをエディタで開き
shell_escape = .の右辺値を見ます。右辺値が
hoge hugahugaは仮名で,それぞれ別の(ヒミツの)名前で読み替えてください。
@echo off perl %1(ただし,Windows の場合であって,他の OS では,これに相当するシェルスクリプトを作ることになります。
\setPerlName{hoge}%
....\texmf\web2c\texmf.cnfというテキストファイルをエディタで開き
shell_escape_commands =で始まる行を見つけます。行末に \
,hogeを追加し,上書き保存します。
\usepackage{hugahuga}を追加します。上の rootii.tex に追加した
\documentclass{jarticle} \usepackage{emath} \usepackage{emathPl} \usepackage{hugahuga} \begin{document} \calcval[s]{sqrt(2)}\foo \foo \end{document}を rootiia.tex として
platex rootiiaとすれば 2 の平方根が得られるはずです。すなわち,実行時オプション -shell-... は不要ということになりました。