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






All Articles