perl との連携

数値計算を,perl に外注し,その結果を受け取ります。
 

定義されているスタイルファイル

emathPl.sty など

解説

趣旨

連携の準備

  1. perl のインストール
    Unix, Mac では標準でインストールされていますから,この項はスキップです。次の 2. に進みます。
    Windows の場合は
      http://www.activestate.com/activeperl/downloads
    からインストールします。
  2. perl の動作確認をします。
    コマンドプロンプトで(MAC ではターミナル),キーボードから
      perl -v
    と打ち込み,エンターキーを押します。
    (コマンドプロンプトの操作に不慣れの方は「コマンドプロンプトのページ」をご覧ください。)
    反応は次の2つのケースがあります。
    1. 画面に
        This is perl 5, version 16, subversion.....
      とバージョンが表示されれば,perl はインストールされました。
    2. 不幸にして
        'perl' は、内部コマンドまたは外部コマンド、
        操作可能なプログラムまたはバッチ ファイルとして認識されていません。
      と表示された場合は,環境変数 PATH を設定する必要があります。
      ( perl を c:\perl にインストールした場合は,環境変数 PATH に
         c:\perl\bin
       を追加します)
      PATH の設定は,OS(あるいはそのバージョン)によって異なります。
      それぞれの OS の解説書,あるいは web の解説ページでお調べください。
  3. emath のライブラリファイルの配置
    emath では,perl のライブラリファイル emath.pl などを用いますから,
    修正パックに含まれる最新の
      emath.pl, degsine.pl, nCr.pl
    などをしかるべき場所に配置します。
    しかるべき場所とは,環境により異なりますので,次のようにして調べます。
    コマンドプロンプト(ターミナル)で
      perl -V
    を実行したとき,一番最後の方に登場するメッセージ
      @INC:
    の次の行から,perl のライブラリファイルを配置し得る場所が列記されます。
    そのうちのどこかに emath.pl などを置きます。
    〈注〉emath.pl などを更新する際は,旧ファイルに上書きコピーします。
     旧ファイルが残っていて思わぬトラブルになる事例がBBS #9834からのスレッドにあります。

サンプルリスト

\documentclass{jarticle}
\usepackage{emath}
\usepackage{emathPp}
\begin{document}
\calcval[s]{sqrt(2)}\foo
\foo
\end{document}
file上のソースファイル

実行の前に

上のサンプルリスト rootii.tex は,普通にタイプセットしたのではエラーになります。
perl との連携を実現するには,emath から tex のコマンド

  \write18{......}

を呼び出しますが,このコマンドは危険なコマンドであるため,デフォルトでは使用禁止となっています。
これを使用可能とする方法はありますが,\write18 の危険性は失われません。
\write18 を使用するのは,自分の作ったソースリストなどに限定して用いないといけません。

実行時オプション -shell-escape

\write18 の使用を認めるオプションが -shell-escape です。
すなわち,コマンドプロンプトで,
  カレントディレクトリを rootii.tex が存在するディレクトリ
とした上で

  platex -shell-escape rootii.tex

を実行します。 エラーなく実行できたら,引き続きコマンドプロンプトで

  dvipdfm rootii.dvi

を実行します。rootii.tex と同じディレクトリに rootii.pdf が作成されるはずです。
それを PDF-viewer で開くと,2 の平方根の近似値
  1.4142135623731
が画面に表示されます。

  platex -kanji=utf8 -shell-escape rootii.tex

と,漢字コードも指定しなければならないこともあります。
kanji=... の右辺値は euc|jis|sjis|utf8 のいずれかで,使用している tex 環境に合わせます。

-sh

も有効でしたが,近年の platex では(-shell-restricted オプションが新設され) -sh とした場合

-shell-escape
-shell-restricted

のいずれの省略形であるかが判断できませんから,platex は

platex: option `-sh' is ambiguous

という警告を出力します。ただし,これはログファイルには記録されません。
(この場合,\write18 は無効で,perl との連携は出来ません。)
省略形を用いるなら,少なくとも

-shell-e

までは書かないといけません。

-shell-escape

です。

-shell -escape

と,-shell, -escape の間に空白を入れてはいけません。
前者の場合,platex には一つのオプション -shell-escape を与えたことになりますが,
後者の場合,platex には二つのオプション
  -shell
  -escape
が与えられたことになり,platex は
  platex: option `-shell' is ambiguous
  platex: unrecognized option `-escape'
を出力します(ログファイルには記録されません)。

関連事項

注意事項


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS