Tgif FAQ - LaTeX Equation パッケージインストール時の問題


注意:

このページは、 Tgif ホームページ にある FAQ のページ を、竹野研究室 (主に竹野) が日本語に翻訳したものです。 オリジナルサイトの作者 (Bill Cheng 氏) の許可の元、ここに公開します。

FAQ 以外のページへのリンクは、 ほとんどがオリジナルページへのリンクになっていますので、 日本語訳はされていません (ただし、そのうち主なものは今後日本語訳することも考えています)。 また、ここに書かれているリンク先やソフトウェアなどの情報は、 書かれてからかなり年月が経っていますので、 リンク切れになっていたり、 現在の状況には合わない情報である可能性もあります。

この日本語訳のページに関する意見や質問は、 オリジナルサイトの作者ではなく、 竹野 にお願いいたします。

(05/31 2017)

このページのオリジナルサイト: http://bourbon.usc.edu/tgif/faq/latex.html

目次へ戻る


 
Tgif の図の中で LaTeX の数式を使いたいのですが、 それを行う手順を教えてもらえませんか (可能なら各手順をひとつずつ) ?
tgif-4.1.16 以降、 tgif の標準的な配布物には、LaTeX 数式記号ファイルがついてきます:
      eq4.sym
      eq4-2x.sym
      eq4-ps2epsi.sym
      eq4-epstool.sym
eq4.sym を使用するには、 latexdvips に加えて以下が必要です:

  • pstoepsi - dvips で生成した PS (postscript) ファイルを EPSI (概観用ビットマップを持つ EPS (カプセル化 PostScript) ファイル) に変換するツール
  • netpbm - pstoepsi が作成する EPSI ファイル用に、 PBM ファイルを概観用ビットマップに変換するのに使用する
  • ghostscript - pstoepsiPS ファイルを PBM ファイルにレンダリングするのに使用する

これらのツールを正しくインストールすれば、 単純に eq4.sym を例示し、 eq= 属性の値を変更することができます。 数式が大きい場合は、数式オブジェクトの上で右クリックすることで エディタ内で Edit 属性を選択し、 eq= を選択して、 あなたの好きなエディタ内でその数式を編集することもできます (エディタを選ぶには X デフォルト値の Tgif.Editor を使えます)。

そして数式オブジェクトをダブルクリックしてすると tgif は以下のコマンドを実行します:

      latex <tmpfile>
      dvips -N -n 1 -o <tmpfile>.ps <tmpfile>
      pstoepsi <tmpfile>.ps <tmpfile>.eps
ここで、<tmpfile> は tgif が生成する一時ファイルです (通常 /tmpTgif から始まる名前で作成します)。

これは、すべてが適切にインストールされている場合に動作します。 もしうまく動かなければ、エラーメッセージボックスが現われます。 そのボックスを閉じないでください。 ディレクトリ /tmp に移動し、 Tgif で始まり .tex で終わる最新のファイルを探し、 それをコピーしてください。 そして、問題を見つけるために上のコマンドを手動で実行してください。 例えば以下のようにします:

      cd /tmp
      ls -lrt Tgif*
  
      -rw-r--r--   1 william     230 Mar 22 11:27 TgifmTaOdC.tex
      -rw-r--r--   1 william    4636 Mar 22 11:27 TgifmTaOdC.log
      -rw-r--r--   1 william     324 Mar 22 11:27 TgifmTaOdC.dvi
      -rw-r--r--   1 william       8 Mar 22 11:27 TgifmTaOdC.aux
      -rw-r--r--   1 william   18561 Mar 22 11:27 TgifmTaOdC.ps
      -rw-r--r--   1 william   18561 Mar 22 11:27 TgifmTaOdC.eps
(この一覧内の TgifmTaOdC.ps と TgifmTaOdC.eps は同じファイルサイズですが、これは pstoepsi が 正しく動か なかった ことを意味することに注意してください。)
      cp TgifmTaOdC.tex foo.tex
      latex foo
      dvips -N -n 1 -o foo.ps foo
      pstoepsi foo.ps foo.eps
      more foo.eps
この時点で、foo.eps の最初の数行は以下のようになります:
      %!PS-Adobe-2.0 EPSF-1.2
      %%BoundingBox: 258 634 354 653
      %%BeginPreview: 97 20 1 20
      % 00000000000000000000000e00
      % ...
      % 00000000000000000003c00000
      %%EndImage
      %%EndPreview
      ...
これらの行は、pstoepsi が追加したものです。 %%BoundingBox:%%BeginPreview: の数値は、 あなたの数式に依存し、 先頭行の PS-AdobeEPSF のバージョンは、 環境の設定によって変わる可能性があります。

latex, dvips, pstoepsi 等を 手動で実行する際にエラーが出た場合は、 それらのツールの設定に問題があります。 これらは問題がなく、かつ tgif が相変わらずエラーを出す場合は、 私にメールを送ってください !

eq4-2x.sym は、より高解像度 (2x) の概観用ビットマップを作りますが、 そのためには、 netpbm特別な バージョンの netpbm-20may1999 が必要です。 netpbm の新しい版では多分うまく動きません。

eq4-ps2epsi.sym は、 4.1.43 より前の tgif を使っている場合にはお勧めしません。 4.1.43 以降の tgif を使っていて、 主に PS/EPS/PDF ファイルを生成するのに使っている場合は、 むしろ eq4-ps2epsi.sym を使うべきでしょう。

eq4-epstool.symeq4.sym と似ていますが、 こちらは epstool を使っています。

上の回答で、eq4.sym を例示し、 eq= 属性の値を変更する とはどういう意味ですか ? どのようにして 数式オブジェクト を作成できますか ?
eq4.sym が /home/yourself/lib/tgif/latex にある場合は、 以下の行をあなたの ~/.Xdefaults ファイルに追加します:
      Tgif.MaxDomains:    1
      Tgif.DomainPath0:   LaTeX:.:/home/yourself/lib/tgif/latex
      Tgif.DefaultDomain: 0
上は、あなたがドメインを 1 つ持っていることを意味しています。 そしてドメイン番号 0 は、LaTeX と名前付けられ、 tgif はカレントディレクトリ内、 そして /home/yourself/lib/tgif/latex ディレクトリで *.sym ファイルを探すことになります。 tgif の起動時には、デフォルトドメインはドメイン番号 0 になります。

そして tgif を実行すると、スペシャルメニューから (または <Cntrl>i を押して)「例示」 (Instantiate、ブロックオブジェクト例) を選択でき、 そこに eq4.sym が見つかるでしょう。 それをダブルクリックすると、 tgif は描画領域内にそれを置く場所をクリックするよう要求します。 それをそこに置くと、eq4 の一つの記号の例示が現れ、 その例示は eq4 オブジェクト (または LaTeX equation オブジェクト) と呼ばれます。 そして、編集モードに進んで (または <Cntrl>w を押して)、 eq= 属性内のどこかでクリックすれば、 その数式を編集できます。

私は Tgif 関連の良いものページ の LaTeX Equation パッケージ内の操作に従いましたが、 エラーがたくさんでました。何が悪いのでしょう ?
あなたが gs5.10 を使用していて、 LaTeX Equation パッケージ内の README.latex の指示に従い ftp.cs.ucla.edu か export.lcs.mit.edu から pstoepsi.tar.Z を取得したのであれば、問題が起きるでしょう。

それは、pstoepsi.tar.Z は「オリジナル」の pstoepsi だからです 私はそれを元々誰が書いたか知りませんが、 それは古い ghostscript でしか動作しません。

Q: pbmtoepsi 用の Makefile には 「PBM_ROOT=/where_the_root_of_pbmplus_is」 という行がありますが、 pbmplus が何であるか、またはそれがどこにあるか知りません。

実は netpbm は以前 pbmplus と呼ばれていました。 そして pbmplus には pbmtoepsi はついていませんでした。 元々の pbmtoepsi がリリースされたときには netpbm は存在していませんでしたので、 その記述は pbmplus 用に説明しているのでしょう。

Netpbm-1mar1994 には pbmtoepsi がついています。 よって、netpbm-1mar1994 と pstoepsi パッケージ内の シェルスクリプトがあれば、 pstoepsi パッケージ内の他のファイルは必要ありません。 netpbm-1mar1994 には (シンボリックリンクミスのような) 小さな問題がありますので、小さな修正をほどこして netpbm-15nov1997 という名前にしました。 これらは tgif のツールのページ にリンクがあります。 gs5.10 を使っているなら基本的に、netpbm-15nov1997、 pstoepsi シェルスクリプトが必要で、 そして tgif ホームページにしたがって そのシェルスクリプトに変更を加える必要があります。

Q: pstoepsi シェルスクリプトは、 それ自身が特殊なソフト群を必要としているようです。 pstoppm.ps という名前のファイルを必要としているようで、 それは gs5.10 のインストール先にはないようですが、 古い gs3.33 のインストール先にはありましたので、 それを使うように設定しました。

gs5.10 は pstoppm.ps を持っていませんが、 それは gs がそれ自身ですべての PPM ファイルを作れるからです。 古い pstoepsi のみが pstoppm.ps に関係していますが、 よってそれは gs5.10 では動作しません。 pstoepsi シェルスクリプトを tgif ホームページから取得すれば、 新しい gs で、そして pstoppm.ps はなくてもちゃんと動作します ! この場合、あなたが PSTOPPM に何を設定するかを 気にする必要はありません。

Q: rasttopnm と呼ばれるものの置き場所を知りたいのですが、 聞いたこともありませんし、多分持っていないと思います。 これを使おうともしていないようです。

それは pstoepsi では使われていません。 元々の pstoepsi パッケージには、rastotopnm を使用する pstorast と呼ばれるプログラムがついています。 よって、RASTTOPNM には何を設定するかを気にする必要はありません。

pstoepsi を実行すると以下のようになります:

{bluemoon:william}[1] pstoepsi Tgifa00377.ps Tgifa00377.epsi
Usage: (file) ppmNrun
    converts file.ps to file.ppm (single page),
    or file.1ppm, file.2ppm, ... (multi page).
    N is # of bits per pixel (1, 8, or 24).
Examples: (golfer) ppm1run ..or.. (escher) ppm8run
Optional commands you can give first:
    horiz_DPI vert_DPI ppmsetdensity
    horiz_inches vert_inches ppmsetpagesize
    (dirname/) ppmsetprefix
    page_num ppmsetfirstpagenumber
GS>Writing Tgifa00377.ppm
Error: /undefined in writeppmfile
Operand stack:
    --nostringval-- --nostringval--
Execution stack:
...

上の問題点は、"Error: /undefined in writeppmfile" です。 gs5.10 は "writeppmfile" をもはやサポートしていません。 新しい ghostscript のことを知らない元々の pstoepsi を動かしているせいでうまくいっていないのです ! tgif ホームページ上にある pstoepsi シェルスクリプトなら ちゃんと動きます。

私はとりあえずすべてうまくいきました。 LaTeX の文字列の表示をなくすにはどうしたらいいですか ?
2 つの方法があります。 一つは、スペシャルメニューの属性 (Attribute) サブメニューの、 「Move/Justify An Attribute」を選択する方法です。 カーソルが変わったら左マウスボタン (Btn1) をドラッグし、 eq= 属性を選択します。 そして再びカーソルが変わったら右マウスボタン (Btn3) をクリックし、 eq= 属性を隠します。

もう一つは、以下を X リソースに追加することです:

      Tgif.ShortCuts: !<Key>T:ToggleNamedAttrShown(eq=)
この X リソースは、<SHIFT>t キーを eq= の引数付きで ToggleNamedAttrShown に割り当てます。 よって、tgif 上 (tgif の描画モードがテキストモードでは ない 場合) で <SHIFT>t を押すと、 選択された eq= 属性の表示がトグル (On/Off) されます。