> Re: W32TeX を入れ替えたら EPS が出なくなった
> 2013年 05月 27日(月曜日) 22:59 - 本田 知亮 の投稿
> https://okumuralab.org/tex/mod/forum/discuss.php?d=1022
>
〔中略〕
> dvioutについてきているdviout.defを
> dvips.defと同じ場所にいれれば
> (ほんとうはtexmf-localの対応する場所のほうがいいけど)
> dvioutオプションも使えます
〔後略〕
(1) graphicx.sty が呼んでいる graphics.sty には、
\DeclareOption{dviout}{\def\Gin@driver{dviout.def}}
がありませんので、dviout.def を入れるだけですと、\usepackage[dviout]{graphicx} とすると、
! LaTeX Error: Unknown option `dviout' for package `graphics'.
と言われてしまうと思います。
検索しますと graphics.sty に直接 \DeclareOption を書き足したというような方もいらっしゃったりしますが、オリジナルを書き換えるのはやはりマズイですよね。
で、どうしたらよいかといいますと、dviout には、dviout.def だけでなく、graphics.cfg も同梱されていますので、これも TeX から見えるところに一緒に入れておけば大丈夫ですよね。
(2) ただ、「(dviout 付属の)graphics.cfg を TeX から見えるところに置く」 にも多少悩ましいものがあります。
というのも、元々 graphics.cfg がないのであれば、dviout に同梱されてるものを適当なところに入れればいいだけなのですが、今の W32TeX には graphics.cfg があります。
私の手元の W32TeX はもう半年以上前のものなので、現在のものと違っているかも知れませんけれど、$TEXMF/tex/latex/config/ には、
\ProvidesFile{graphics.cfg}%
[2010/04/23 v1.9 graphics configuration of TeX Live]%
があります。
これを dviout に付属のものと置き換えたり、または、先にサーチされる texmf-local のほうに dviout 付属のものを置いたりしてしまってよいものかが、よく分かりません (オプションを省略した際に、どのドライバがデフォルトになるのかについて、違いが出るのだろうとは思うのですが)。
(3) ちょっと検索しましたところ、
3a) W32TeX には dviout 用の graphics.cfg が含まれていて、他方 dviout.def は dviout がインストール時に自動的に TeX ツリーにコピーする。
という記事や、
3b) W32TeX で “texmf” が “texmf-dist” に変更されたことにより、「TeXインストーラ3」 を使うと、「dviout.def のコピーに失敗」 とのログが記録される。
というような記事がヒットしましたが、これらは現状を反映しているのでしょうか? (私は 「TeXインストーラ3」 を使ったことがなく、あと、自分がインストールしたときのこともすっかり忘れてしまいました.すいません.)
うお・・・外しまくりorz
フォローありがとうございます.
>dviout には、dviout.def だけでなく、graphics.cfg も同梱されていますので、これも TeX から見えるところに一緒に入れておけば大丈夫ですよね。
まったくもってその通りです.
dvioutの配布の中の
dviout/GRAPHIC/LATEX2Eに
当該ファイルはあります.
これを
texmf-loca/latex/graphics/
(なければ作る)
にいれればいいんですが・・・
いま,新しいW32TeXをみたら
dvioutオプションはインストールされています.
ですので,古いW32TeXやほかのTeXで
dvioutオプションが使えなかったら
この作業をするということで問題ないと思います.
ただし,すでにgraphics.cfgが存在する環境で
この作業をすると何か起こるかもしれませんので
要注意です.
#今みているgraphics.cfgはdviout以外にも
#いろいろ細工が入っています.
フォローありがとうございます.
>dviout には、dviout.def だけでなく、graphics.cfg も同梱されていますので、これも TeX から見えるところに一緒に入れておけば大丈夫ですよね。
まったくもってその通りです.
dvioutの配布の中の
dviout/GRAPHIC/LATEX2Eに
当該ファイルはあります.
これを
texmf-loca/latex/graphics/
(なければ作る)
にいれればいいんですが・・・
いま,新しいW32TeXをみたら
dvioutオプションはインストールされています.
ですので,古いW32TeXやほかのTeXで
dvioutオプションが使えなかったら
この作業をするということで問題ないと思います.
ただし,すでにgraphics.cfgが存在する環境で
この作業をすると何か起こるかもしれませんので
要注意です.
#今みているgraphics.cfgはdviout以外にも
#いろいろ細工が入っています.
本田さん:
> フォローありがとうございます.
内容的に独立のトピックにしたほうが多くの方の役に立つのではないか(*註1) と思って、別トピックを立ててみたのですが、万一、本田さんが 「揚げ足をとられた」 とお感じになられてたらどうしよう、とちょっと心配でした。なので、こう言っていただけて、安心しました。
(*註1) dviout と EPS という組み合わせで LaTeX を使われてる方が、現在どれくらいいらっしゃるのかは、分からないのですけれど…。
あべのりさん:
> 昨日更新しました.たぶんこれで大丈夫なはずです.
偶然とはいえ、きちんとご対応されたタイミングで引き合いに出してしまい、申し訳ありません。
さて。
現在の W32TeX に入っている graphics.cfg 〔以下 “graphics.cfg (T/L)” と略記〕 と dviout に同梱されている graphics.cfg 〔以下 “graphics.cfg (D/O)” と略記〕 との兼ね合いについて、理解できた範囲でまとめてみます (間違っていたらご指摘ください):
“graphics.cfg” の役割は、基本的には、デフォルトのドライバの指定ということのようです。つまり、ユーザーが、ドライバ指定なしで (graphics や) graphicx パッケージを読み込んだときでも、ちゃんとドライバが指定されるように、予め \ExecuteOptions で何らかのドライバオプションを実行しておくようにしてあるみたいです。
● graphics.cfg (T/L) では、使われているエンジンをチェックして、それに応じてデフォルトのドライバを決めて、\ExecuteOptions で実行しているようです (pdfTeX の pdf モードの場合には、epstopdf パッケージ等も読み込んでいます)。
● graphics.cfg (D/O) では、“dviout” オプションで dviout.def が読み込まれるように \DeclareOption を追加的に宣言して、その後、\ExecuteOptions で、オプション “dviout” を実行しています。
つまり、graphics.cfg (T/L) の存在意義も、graphics.cfg (D/O) 内の \ExecuteOptions{dviout} の役割も、いずれも、ユーザーがドライバを指定せずに graphicx を読み込んだ場合に備えてのデフォルトのドライバ指定です。
したがって、もしもユーザーが自覚的に必ずドライバを指定するのであれば、graphics.cfg (T/L) がなくても、また、graphics.cfg (D/O) 内の \ExecuteOptions{dviout} がなくても、あまり問題は生じないようにも思えます(*註2)。
よって、ユーザーが忘れずにドライバを指定することを前提とするなら、graphicx で “dviout” というオプションも追加的に使えるようにするだけであれば、TeX から見えるところに置いておく graphics.cfg の中味は、
\DeclareOption{dviout}{\def\Gin@driver{dviout.def}}
の一行で十分と言えるのかも知れません。
(*註2) いえ、pdfTeX で EPS を使うには、graphics.cfg (T/L) がやっているように、epstopdf も読み込む必要がありますので、本当は、graphicx のドライバ指定だけでは問題が生じる場面はあり得ますね… (つまり、pdfTeX を使う場合には、下手にドライバ指定をしないほうが、却ってうまく行くことになるんですよね)。
うーん、こう考えると、graphicx で dviout オプションを使うことに拘るのは得策でないような気がしてきました。graphics.cfg (T/L) には手を触れないことにして、dviout を使いたい場合には、dvips を指定するかまたは無指定 (dvi モードで無指定だと dvips がデフォルトなので) というのが、結局のところ穏当なのでしょうか。
ウダウダと余計なことを書き連ねてしまいましたが、単純に、graphics.cfg (T/L) に
\DeclareOption{dviout}{\def\Gin@driver{dviout.def}}
を一行書き足した graphics.cfg を texmf-local 以下に入れれば、graphics.cfg (T/L) と graphics.cfg (D/O) 両方の設定を有効にすることが出来ますね。失礼しました。
あと、
> “graphics.cfg” の役割は、基本的には、デフォルトのドライバの指定
> ということのようです。
とも書きましたが、graphics.cfg には、\ExecuteOptions の他にも、\graphicspath とか \DeclareGraphicsExtensions や \DeclareGraphicsRule など、ユーザーが個々に自分用の設定を書き足しておけばいいのですね。
あべのりさん
> インストーラは今のところdvioutアーカイブ内のdviout.defを
> コピーするだけの動作なのですが,さらにgraphics.cfgを
> $TEXMFLOCAL以下の適当な場所にコピーしておけばよい,
> という理解であっていますか?
いえ、そうしますと、graphics.cfg (D/O) が graphics.cfg (T/L) より優先されてしまって、
● ドライバ指定なしで graphicx を使うとデフォルトのドライバが “dviout” になる
● pdfTeX 利用時には graphicx のドライバ指定を “pdftex” としても (それだけでは) EPS は扱えないまま (graphics.cfg (T/L) なら、ドライバ無指定でうまくいくように細工されているのに)
ということになってしまうと思います。
この、graphics.cfg (D/O) かそれとも graphics.cfg (T/L) か、の二者択一になることが 「悩まし」 かったのですが、角藤先生が W32TeX [2013/05/30] で両者を一つにまとめてくださったことで、その板挟みから解放されることになりました (ありがとうございます>角藤先生)。
なので、(今後は) dviout.def のコピーだけで大丈夫かと思います。