お世話になります。
mac os x 10.6+texshopです。
emathを導入すべくいろいろといじっているうちに、
タイプセットそのものができなくなってしまいました。
texshopのコンソールに以下のエラーが出ます。
ファイル名.dvi -> ファイル名.pdf
** ERROR ** Could not open specified DVI file: ファイル名.dvi
Output file removed.
ファイル名.texと同じディレクトリに生成されるファイル名.logの中身は空です。
これはdviファイルが生成されていないことを示しているのでしょうか。
言葉足らずでした。
Output file removed.
は、
「.texから.dviを作ったけど、.dviから.pdfが作れなかったので、.dviは削除しましたよ」
と解釈してよいのか、という質問でした。
つまり、
1)そもそも.dviが作られていないのか
2)あるいは(上記のように)一度作られた.dviが削除されたのか
のどちらなのかを、まず調べねばと思ったのです。
1)なら、tex>dviの段階に、
2)なら、dvi>pdfの段階に、
それぞれ問題があるのではないかと。
そして、
Finderで.dviが見つからない
.logの中身が空
の2点から、上記1)の意味ではないかと考えた次第です。
投稿後、ターミナルで試みることを思い出し、
.texの存在するディレクトリに移動した上で、
/Applications/pTeX.app/teTeX/bin/ptex ファイル名.tex
としてみました。
(パスを通していないので、コマンド部分はフルパスです。)
すると、何の反応もありません。
具体的には、ターミナルに、
コンピュータ名:ディレクトリ名 ユーザ名$ /Applications/pTeX.app/teTeX/bin/ptex ファイル名.tex
コンピュータ名:ディレクトリ名 ユーザ名$
と表示され、次のコマンドを待っている状態です。
何のメッセージも出ないため、さてどうしたものかと。
Output file removed.
は、
「.texから.dviを作ったけど、.dviから.pdfが作れなかったので、.dviは削除しましたよ」
と解釈してよいのか、という質問でした。
つまり、
1)そもそも.dviが作られていないのか
2)あるいは(上記のように)一度作られた.dviが削除されたのか
のどちらなのかを、まず調べねばと思ったのです。
1)なら、tex>dviの段階に、
2)なら、dvi>pdfの段階に、
それぞれ問題があるのではないかと。
そして、
Finderで.dviが見つからない
.logの中身が空
の2点から、上記1)の意味ではないかと考えた次第です。
投稿後、ターミナルで試みることを思い出し、
.texの存在するディレクトリに移動した上で、
/Applications/pTeX.app/teTeX/bin/ptex ファイル名.tex
としてみました。
(パスを通していないので、コマンド部分はフルパスです。)
すると、何の反応もありません。
具体的には、ターミナルに、
コンピュータ名:ディレクトリ名 ユーザ名$ /Applications/pTeX.app/teTeX/bin/ptex ファイル名.tex
コンピュータ名:ディレクトリ名 ユーザ名$
と表示され、次のコマンドを待っている状態です。
何のメッセージも出ないため、さてどうしたものかと。
>Output file removed. は dvipdfmx のメッセージですから,空のpdfを削除したということです。
なるほど。dvipdfmxが、
dviが作られていないので、当然開けない。
そのため空のpdfができた。
それを削除した。
と言っているわけですね。
理解できました。ありがとうございます。
と同時に、奥村先生のコメントを拝見し、
1)tex>dviの段階
2)dvi>pdfの段階
のうちの2)の方について、ターミナルからdvipdfmxを試していないことに気付きました。
そこで、以前(トラブル前)に作成したdviに対して、ターミナルから、
/opt/local/bin/dvipdfmx
としてみたところ、(いくつかのWARNINGは出ましたが)pdfが出力されました。
ここで、なぜoptなのかというと、
パスを通していないため、フルパスが必要。
Finderのスポットライトで、dvipdfmxを検索。
2つ見つかる。一つは、
/opt/local/bin/dvipdfmx(上記)
もう一つは、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/local/bin/dvipdfmx
一つ目を使用。
という流れです。
>platex でなく ptex で試されているのは大丈夫でしょうか
これについてご説明します。
まず、Finderのスポットライトでplatexを検索しました。すると、
「platex」という名の「フォルダ」や、
「platex.拡張子」という名の「ファイル」
は出てくるのですが、
「platex」という名の「unix実行ファイル」
は一つも出てきませんでした。
そこで、pTeX.appのパッケージの中にあることを思い出し、
/Applications/pTeX.app/teTeX/bin/platex
としました。しかし反応ナシ。これは、
/Applications/pTeX.app/teTeX/bin/platex
が、エイリアスファイル(Windowsのショートカットファイル)だからか?と考え、
オリジナルファイルである
/Applications/pTeX.app/teTeX/bin/ptex
で試した。という次第です。
今、Finderのスポットライトでptexを検索してみたところ、
さきほどのdvipdfmxと同様に、
/opt/local/bin/ptex
と、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/local/bin/ptex
の2つが見つかりました。
/Applications/pTeX.app/teTeX/bin/ptex
は、パッケージ内部のため検索結果に反映されないのだと解釈しています。
そして、ターミナルから、
/opt/local/bin/ptex
としてみたところ、反応はありました。ありましたが、
This is pTeX, Version 3.141592-p3.1.10 (utf8.euc) (Web2C 7.5.4)
(./ファイル名.tex
! Undefined control sequence.
l.1 \documentclass
[11pt]{jarticle}
?
というものでした。returnキーを押していくと、
! Undefined control sequence.
l.2(略)
! Undefined control sequence.
l.3(略)
と続いていきます。
長くなり申し訳ありません。
自分なりに整理してみますと、
1)複数のtexがインストールされている。具体的には、
/opt
と、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/
と、
/usr
の3箇所。
2)1)の3箇所目/usrに、dvipdfmxやptexが存在しない。
以上2点が根本的な問題のような気がしております。
実は「LaTeXiT」というアプリケーションも併用しており、
そちらは、上記1)の一つ目/optを使用しています。
そして、これまで通り機能しています。
ということは、今回のトラブルの要因は2)の方かなと感じるのですが。。。
いずれにしろ、1)の状態を解消し、texを使用するための環境を整理せねばと感じています。
手順としては、
一度tex関連をすべて削除し、再度構築
だと思うのですが、
どこからどこまでを削除すればよいか
がわかりません。
どうかご教授願えませんでしょうか。
なお、削除の後の再構築については、奥村先生の「美文書作成入門」の5版が本日到着予定ですので、そちらを参照してゼロから取り組んでみるつもりです。
なるほど。dvipdfmxが、
dviが作られていないので、当然開けない。
そのため空のpdfができた。
それを削除した。
と言っているわけですね。
理解できました。ありがとうございます。
と同時に、奥村先生のコメントを拝見し、
1)tex>dviの段階
2)dvi>pdfの段階
のうちの2)の方について、ターミナルからdvipdfmxを試していないことに気付きました。
そこで、以前(トラブル前)に作成したdviに対して、ターミナルから、
/opt/local/bin/dvipdfmx
としてみたところ、(いくつかのWARNINGは出ましたが)pdfが出力されました。
ここで、なぜoptなのかというと、
パスを通していないため、フルパスが必要。
Finderのスポットライトで、dvipdfmxを検索。
2つ見つかる。一つは、
/opt/local/bin/dvipdfmx(上記)
もう一つは、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/local/bin/dvipdfmx
一つ目を使用。
という流れです。
>platex でなく ptex で試されているのは大丈夫でしょうか
これについてご説明します。
まず、Finderのスポットライトでplatexを検索しました。すると、
「platex」という名の「フォルダ」や、
「platex.拡張子」という名の「ファイル」
は出てくるのですが、
「platex」という名の「unix実行ファイル」
は一つも出てきませんでした。
そこで、pTeX.appのパッケージの中にあることを思い出し、
/Applications/pTeX.app/teTeX/bin/platex
としました。しかし反応ナシ。これは、
/Applications/pTeX.app/teTeX/bin/platex
が、エイリアスファイル(Windowsのショートカットファイル)だからか?と考え、
オリジナルファイルである
/Applications/pTeX.app/teTeX/bin/ptex
で試した。という次第です。
今、Finderのスポットライトでptexを検索してみたところ、
さきほどのdvipdfmxと同様に、
/opt/local/bin/ptex
と、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/local/bin/ptex
の2つが見つかりました。
/Applications/pTeX.app/teTeX/bin/ptex
は、パッケージ内部のため検索結果に反映されないのだと解釈しています。
そして、ターミナルから、
/opt/local/bin/ptex
としてみたところ、反応はありました。ありましたが、
This is pTeX, Version 3.141592-p3.1.10 (utf8.euc) (Web2C 7.5.4)
(./ファイル名.tex
! Undefined control sequence.
l.1 \documentclass
[11pt]{jarticle}
?
というものでした。returnキーを押していくと、
! Undefined control sequence.
l.2(略)
! Undefined control sequence.
l.3(略)
と続いていきます。
長くなり申し訳ありません。
自分なりに整理してみますと、
1)複数のtexがインストールされている。具体的には、
/opt
と、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/
と、
/usr
の3箇所。
2)1)の3箇所目/usrに、dvipdfmxやptexが存在しない。
以上2点が根本的な問題のような気がしております。
実は「LaTeXiT」というアプリケーションも併用しており、
そちらは、上記1)の一つ目/optを使用しています。
そして、これまで通り機能しています。
ということは、今回のトラブルの要因は2)の方かなと感じるのですが。。。
いずれにしろ、1)の状態を解消し、texを使用するための環境を整理せねばと感じています。
手順としては、
一度tex関連をすべて削除し、再度構築
だと思うのですが、
どこからどこまでを削除すればよいか
がわかりません。
どうかご教授願えませんでしょうか。
なお、削除の後の再構築については、奥村先生の「美文書作成入門」の5版が本日到着予定ですので、そちらを参照してゼロから取り組んでみるつもりです。
pTeX.appの再インストールにより解決しました。
今回、そもそもの発端は、
mac+texshop+emath
の組み合わせで、perlが正しく作動しないことでした。
初歩的なこととは思いますが、同様にお困りの方がおられた場合のために、記しておきます。
1)emath.plの置き場所について
/Library/Perl/
ではダメで、
/Library/Perl/5.10.0
でした。
2)--shell-escapeについて
http://www2.kumagaku.ac.jp/teacher/herogw/shell.html
の方法により、解決しました。
貴重な時間を割いていただき、ありがとうございました。
蛇足ですが、奥村先生の「美文書作成入門」の到着は明日でした。
楽しみに持っているところです。
今回、そもそもの発端は、
mac+texshop+emath
の組み合わせで、perlが正しく作動しないことでした。
初歩的なこととは思いますが、同様にお困りの方がおられた場合のために、記しておきます。
1)emath.plの置き場所について
/Library/Perl/
ではダメで、
/Library/Perl/5.10.0
でした。
2)--shell-escapeについて
http://www2.kumagaku.ac.jp/teacher/herogw/shell.html
の方法により、解決しました。
貴重な時間を割いていただき、ありがとうございました。
蛇足ですが、奥村先生の「美文書作成入門」の到着は明日でした。
楽しみに持っているところです。
> shell_escape_commands =
> のところに,安全なコマンドを列挙しています。
TeX Live 2009 における restricted shell escape には
security 上の問題が残っています。TeX Live 2009
としては、無効にしてあったと思います。
(TeX Live 2009 段階の W32TeX では、知られていた部分
を fix して、有効にしていました。)
従ってこれも不明のソースに対しては、使わないことを
お勧めします。準備中の TeX Live 2010 では今のところ
問題は見つかっていないので、有効になっています。
> のところに,安全なコマンドを列挙しています。
TeX Live 2009 における restricted shell escape には
security 上の問題が残っています。TeX Live 2009
としては、無効にしてあったと思います。
(TeX Live 2009 段階の W32TeX では、知られていた部分
を fix して、有効にしていました。)
従ってこれも不明のソースに対しては、使わないことを
お勧めします。準備中の TeX Live 2010 では今のところ
問題は見つかっていないので、有効になっています。
> 確かに美文書5版DVDのものを実行しても
> /usr/local/texlive/p2009/bin/i386-apple-darwin10.3.0/latex
> では
> restricted \write18 enabled.
> が出ますが
> /usr/local/texlive/2009/bin/universal-darwin/latex
> では出ませんね。
異なる texmf.cnf を読んでいるのでしょうか?
約束は以下のとおりです:
shell_escape = y or
shell_escape = t or
shell_escape = 1
どんなコマンドも shell escape として許可する。
shell_escape = p
制限付き。つまり shell_escape_commands にリストしたもの
だけを許可する。 shell_escape_commands が空のときは、
何も許可していないことになる。
それ以外、通常
shell_escape = n
shell_escape = f
shell_escape = 0 など。
shell escape を禁止する。
> /usr/local/texlive/p2009/bin/i386-apple-darwin10.3.0/latex
> では
> restricted \write18 enabled.
> が出ますが
> /usr/local/texlive/2009/bin/universal-darwin/latex
> では出ませんね。
異なる texmf.cnf を読んでいるのでしょうか?
約束は以下のとおりです:
shell_escape = y or
shell_escape = t or
shell_escape = 1
どんなコマンドも shell escape として許可する。
shell_escape = p
制限付き。つまり shell_escape_commands にリストしたもの
だけを許可する。 shell_escape_commands が空のときは、
何も許可していないことになる。
それ以外、通常
shell_escape = n
shell_escape = f
shell_escape = 0 など。
shell escape を禁止する。
ありがとうございます。
>ところで私はまだ --shell-escape は怖くて使えていません。
--shell-escapeについて調べると、必ずセキュリティ上の問題について言及があります。
しかし、具体的にどのようなことが起こり得るのかが書かれていません。
初心者である自分の解釈は、
1)自分で作成したtexのソースファイルを処理する分には、何ら危険性はない。
2)他人が作成したtexのソースファイルを処理する際には、悪意ある記述により、外部プログラムが起動され、被害を受ける可能性がある。
3)ということは、自分で書いたtexのソースファイルに限って--shell-escapeを用いれば問題ない。
というものでした。
しかしここで皆さんの議論、つまり熟練者が警戒している様子を拝見すると、
自分は何か大きな勘違いをしているのではないかという気がしてきたのですが、
いかがでしょうか。
>ところで私はまだ --shell-escape は怖くて使えていません。
--shell-escapeについて調べると、必ずセキュリティ上の問題について言及があります。
しかし、具体的にどのようなことが起こり得るのかが書かれていません。
初心者である自分の解釈は、
1)自分で作成したtexのソースファイルを処理する分には、何ら危険性はない。
2)他人が作成したtexのソースファイルを処理する際には、悪意ある記述により、外部プログラムが起動され、被害を受ける可能性がある。
3)ということは、自分で書いたtexのソースファイルに限って--shell-escapeを用いれば問題ない。
というものでした。
しかしここで皆さんの議論、つまり熟練者が警戒している様子を拝見すると、
自分は何か大きな勘違いをしているのではないかという気がしてきたのですが、
いかがでしょうか。
> emathについても同様にできるかもしれません。
と,水を向けていただきましたので,emath の場合について
restricted \write18 enabled.
を利用する私案を書かせていただきます。
ただし,Windows を前提とします。
perl を起動するバッチファイルを用います。
ここでは仮に,そのファイル名を hoge.cmd とします。
仮のファイル名(hoge) は各自の好みで決めてください。
以下,hoge とあるところはすべて置き換えてください。
ただし,そのファイル名を他人に知られると \write18 の危険が身に及びます。
1) emathMy.sty (なければ作り,emath.sty と同じディレクトリに置きます)
に,次の1行を追加します。
\setPerlName{hoge}%
2) tex の実行ディレクトリ(platex.exe が存在しているディレクトリ)に
次の1行からなるファイル hoge.cmd を作成します。
perl %1
3) texmf.cnf の shell_escape_commands 末尾に
,hoge
を追加します。
注1:emath のバージョンについて
丸ごとパックだけではダメで,修正パックを当ててあることが条件です。
注2:log ファイルには,ファイル名 hoge が記録されます。
log ファイルをさらすことは危険を伴います。
注3:確認リスト perlhoge.tex です。-shell-escape オプションをつけずに
platex perlhoge.tex
を実行して,2の平方根の近似値
1.4142135623731
が表示されれば,
emath から perl を子プロセスとして呼び出す
ことが出来ています。なお,実行すると2個の作業ファイル
perlhoge.d1.pl
perlhoge.d1.dta
が作成されます(emath のバージョンによっては
perlhoge.d1 の部分は perlhoge_d1
となります)。
% --- perlhoge.tex ---------------------------
\documentclass{jarticle}
\usepackage{emath}
\usepackage{emathPl}
\begin{document}
\calcval[s]{sqrt(2)}\rootii
\rootii
\end{document}
と,水を向けていただきましたので,emath の場合について
restricted \write18 enabled.
を利用する私案を書かせていただきます。
ただし,Windows を前提とします。
perl を起動するバッチファイルを用います。
ここでは仮に,そのファイル名を hoge.cmd とします。
仮のファイル名(hoge) は各自の好みで決めてください。
以下,hoge とあるところはすべて置き換えてください。
ただし,そのファイル名を他人に知られると \write18 の危険が身に及びます。
1) emathMy.sty (なければ作り,emath.sty と同じディレクトリに置きます)
に,次の1行を追加します。
\setPerlName{hoge}%
2) tex の実行ディレクトリ(platex.exe が存在しているディレクトリ)に
次の1行からなるファイル hoge.cmd を作成します。
perl %1
3) texmf.cnf の shell_escape_commands 末尾に
,hoge
を追加します。
注1:emath のバージョンについて
丸ごとパックだけではダメで,修正パックを当ててあることが条件です。
注2:log ファイルには,ファイル名 hoge が記録されます。
log ファイルをさらすことは危険を伴います。
注3:確認リスト perlhoge.tex です。-shell-escape オプションをつけずに
platex perlhoge.tex
を実行して,2の平方根の近似値
1.4142135623731
が表示されれば,
emath から perl を子プロセスとして呼び出す
ことが出来ています。なお,実行すると2個の作業ファイル
perlhoge.d1.pl
perlhoge.d1.dta
が作成されます(emath のバージョンによっては
perlhoge.d1 の部分は perlhoge_d1
となります)。
% --- perlhoge.tex ---------------------------
\documentclass{jarticle}
\usepackage{emath}
\usepackage{emathPl}
\begin{document}
\calcval[s]{sqrt(2)}\rootii
\rootii
\end{document}