LaTeX:パッケージのオプションの競合

FAQ UKの「パッケージのオプション衝突」ページの翻訳  TeXユーザーのグループ。


ドキュメントに行を挿入しました

\usepackage[draft]{foo} 

そして今  LaTeX誓う

! LaTeX Error: Option clash for package foo.
( foo)

このエラーは、オプションを使用してパッケージが複数回ダウンロードされたことを示します。  LaTeX彼はオプションを個別に処理できないため、不満です。 (ドキュメントの前文では、オプションなしでパッケージを数回ダウンロードできます-  LaTeX最初のダウンロード要求のみを処理し、後続の要求は無視します。 ただし、オプションはパッケージの最初のダウンロード時にのみ指定できます)。

すべてが最初に思えたほど単純ではないようです。 次のコードがエラーの原因である場合

 \usepackage[dvips]{graphics} \usepackage[draft]{graphics} 

間違いなく次のように書き直すべきです。

 \usepackage[dvips,draft]{graphics} 

エラーの原因がそれほど明らかではない場合(このようなダウンロードが複数の行にまたがっている場合でも、肉眼で簡単に検出できます)? 興味のあるパッケージは既に別の場所にダウンロードされていることが判明する場合があります。 しかし、正確にはどこですか? エラーメッセージの後にhキーを押すと、パッケージのダウンロード[1] [2]が呼び出されたオプションのリストを見ることができます。 応答メッセージが異なるように見える場合は、記事「エラーへの対処方法」のヒントを使用する必要があります。 覚えておくべき主なことは、ログ内のパッケージをダウンロードするプロセスは角括弧で囲まれているため、 graphicsパッケージがfooパッケージにロードされると、ログは次のようになります

 (/foo.sty ... ... (/graphics.sty ... ...) ... ) 

graphicsパッケージのブラケットは、 fooパッケージのブラケットで囲まれていることに注意してください。 barクラスの場合、メッセージはまったく同じになり、最初の行にのみbar.clsファイルへのパスがbar.clsます。

興味のあるパッケージが別のパッケージ内にロードされている場合、尋ねることができます  LaTeX必要なオプションを転送します。 代わりに

 \usepackage{foo} \usepackage[draft]{graphics} 

書くべき

 \PassOptionsToPackage{draft}{graphics} \usepackage{foo} 

チーム\PassOptionsToPackageは尋ねます  LaTeXパッケージの最終ダウンロード中にパラメーターがオプションとして指定されているかのように、パッケージの最終ダウンロード中に動作します。 \PassOptionsToPackageの名前は、一度に複数のオプションを指定できることを示しています。

ドキュメントクラスにロードされているパッケージにオプションを渡す必要がある場合、問題はやや複雑です。 この場合、代わりに

 \documentclass[...]{bar} \usepackage[draft]{graphics} 

\PassOptionsToPackageコマンドの前に\PassOptionsToPackageコマンドを挿入する必要があります。

 \PassOptionsToPackage{draft}{graphics} \documentclass[...]{bar} 

fooパッケージまたはbarクラスで、指定したいオプションと競合するオプションでgraphicsパッケージがロードされると、スタックしているように見えるかもしれません。

例えば

 \PassOptionsToPackage{draft}{graphics} 

パッケージまたはクラスが言う間

 \usepackage[final]{graphics} 

オプションが外部から渡された後にfinalオプションが設定され、 draftは単に破棄されます。 場合によっては、パッケージにエラーメッセージが表示されることがあります(ただし、 graphicsこれらのいずれでもないため、診断なしでdraftオプションは破棄されます)。

この場合、パッケージ/クラスを自分で編集できます(ライセンスに応じて)。 また、パッケージの作者に連絡することも有用です。作者は、問題を解決するための代替方法を提供するかもしれません[3]



翻訳者メモ



  1. エラーメッセージの例
    非表示のテキスト
     %clash.tex \documentclass{article} \usepackage[dvips]{graphics} \usepackage[draft]{graphics} \begin{document} \end{document} 

    $ latex clash.tex
    ...
    ! LaTeX Error: Option clash for package graphics.

    See the LaTeX manual or LaTeX Companion for explanation.
    Type H for immediate help.
    ...

    l.5

    ? h
    The package graphics has already been loaded with options:
    [dvips]
    There has now been an attempt to load it with options
    [draft]
    Adding the global options:
    dvips,draft
    to your \documentclass declaration may fix this.
    Try typing to proceed.
  2. 私のTeXstudioでは、 latex -interaction=nonstopmode ... Log - Log Fileセクションの「basement」でそのような結果を探す必要があります。
  3. TeX.SXは、よりエレガントなソリューションを提供します: \PreventPackageFromLoading scrlfile

Source: https://habr.com/ru/post/J348774/


All Articles