研究室で論文を書いていて、いざコンパイルしようとしたらLaTeX Error: Option clash for package graphicx.
というエラーが出たのでその解決策を模索して何とかなったので備忘録として記録する。
エラーが起こる原因
根本的な原因はコマンドの重複である。
今回の自分の場合は複数のファイルを\usepackage
で読み込み、まとめてコンパイルするのだが
その対象ファイルの一つである~.styファイル(texのスタイルをまとめて書いているファイル)の中に
\usepackage[]{graphicx}
と書いてる行があり、同時にmain.texには
\usepackage[dvipdfmx]{grraphicx}
というコマンドがあった。このそれぞれのコマンドの違いとしては[dvipdfmx]
というオプションの有無であり、コマンドとしては同じものなのでコンパイラがどっちのコマンドを信用すればいいのかわからねー!と怒っているためにはかれたエラーになります。
よって、コマンドの重複が無いようにすれば解決するだろう。
解決策
ということで、重複をなくせばいいので
スタイルファイル~.sty
の\usepackage{graphicx}
の行を消す、
もしくは、コンパイルする~.tex
ファイル(今回の自分の場合はmain.tex
)の中の[]{graphicx}
の行を消すかのどっちか。
※[dvipdfmx]のオプションを使いたい場合は後述するやり方でもおっけ
自分の場合はlayout.sty
というファイル内にいろいろレイアウト関係の設定が書かれているファイルを研究室内で共有して使っていて、そのファイルの先頭の方に
\usepackage{graphicx}
と書かれているのに気づかずに 自分のファイルであるmain.tex
の中に思いっきり
\usepackage[dvipdfmx]{graphicx}
を書き込んでいたのでエラーが出た。
なので、main.texのその行を消して、layout.styの
\usepackage{graphicx}
を
\usepackage[dvipdfmx]{graphicx}
に変更して使った。(共有して使っているといっても、もちろんコピーしたものをローカルにおいて使ってます。)
※追記
あまりない状況かもしれませんが、styファイルは変更できねぇ!というときに私と同じように[dvipdfmx]
をただただ使いたいだけの場合は次のほうがあります
[dvipdimx]
のオプションを反映させるだけでいいのであれば、\usepackage{graphicx}
のオプションとしてではなく\documentclass
のオプションとして
\documentclass[dvipdfmx] {...}
という風にしてもいいようですね、コメントにて指摘していただき誠に感謝いたします。
上記の書き方も基本的に重複していない想定となります。ほかの.styファイルなどですでに上記のコマンドが書き込まれていた場合には重複しないようにしましょう。
まとめ
研究室とかでtexのスタイルを流用するときは使うコマンドの重複に気を付けよう
コメント
\documentclass[dvipdfmx]{….
と、documentclass のところに書いたらうまく行きました。
なるほど、そういう手もありですね!
今回は同じコマンドでオプションの有り無しでコンパイラがどっち使えばいいかわからねーよ!!と怒っていたので
コマンドさえ重複しなければいいということですね。
参考にさせていただきます!