互いに戦うパッケージ
hyperref が最後、crebleef が後、廃止されたペア、最小限の例。
互いに戦うパッケージ
LaTeX パッケージは相互にコマンドを自由に再定義できますが、多くは意図的に再定義しています。これが、「hyperref」がすべての相互参照をリンクに変える方法です。また、これは、2 つのパッケージがそれぞれ、互換性のない前提条件で同じコマンドにパッチを適用する可能性があることを意味し、その結果は、「コマンド \脚注はすでに定義されています」 や 「パッケージ xcolor のオプションが衝突する」 などの完全なエラーから、黙って間違っている出力に至るまで多岐にわたります。競合はほとんどの場合、以前に動作していたプリアンブルにパッケージを追加した直後に表面化し、これが最大の手がかりでもあります。
読み込み順が戦いの半分を決める
後でロードされたパッケージが最後のワードを取得するため、競合の多くは純粋に順序によって解決されます。最も重要なルール: プリアンブルの終わり近くで hyperref をロードします。これは LaTeX の相互参照機構の大部分を書き換え、その後ロードされたパッケージはそれらのパッチを元に戻す可能性があります。例外の短いリストはさらに後で表示される必要があり、実際に遭遇する例外は cleveref です。これは hyperref の上に配置されるように設計されており、その後にロードする必要があります。
\usepackage{graphicx}\usepackage{amsmath}% ... everything else ...\usepackage{hyperref}\usepackage{cleveref} % after hyperref, by designパッケージのドキュメントで別のパッケージとの相対的な位置が指定されている場合は、それを信じてください。これらのメモは、あなたが抱えようとしている葛藤に誰かがすでにぶつかったために存在します。
廃止されたパッケージとその代替パッケージ
一部の競合は、無効なパッケージを後続パッケージの隣にロードすることで発生します。 epsfig と graphicx、subfigure と subcaption、または古い times および mathptmx shim を newtxtext などの最新のフォント パッケージと組み合わせないでください。古いテンプレートが通常のソースです。テンプレートが作成された時点で最新のものはすべてロードされ、最新の同等のものをその上に追加します。古いものを削除し、交換用のものを保管しておいてください。 nag パッケージは、コンパイル時に古い使用法にフラグを立てることができます。
オプションの衝突
「パッケージ X のオプションの衝突」は、パッケージが異なるオプションで 2 回ロードされたことを意味します。多くの場合、背後のドキュメント クラスによって 1 回ロードされました。新しいオプションを使用して再度ロードすることはできませんが、誰かがロードする前にオプションを挿入することはできます。\PassOptionsToPackage{table}{xcolor} を \documentclass の前に置くと、オプションは最初にロードされた方にマージされます。
最小限の例で分離する
原因が明らかでない場合は、最小限の動作例を作成します。つまり、「\documentclass」、2 つの疑わしいパッケージ、および 1 行のテキストを含む「\begin{document}…\end{document}」のみを含むドキュメントです。エラーが再現する場合は、エラーが再現されなくなるまでロード順序とオプションを切り替えます。再現しない場合は、再現するまで他のパッケージを半分に分けて追加してください。このバイナリ検索は数回のコンパイルで収束し、検索対象となる明確なペアが得られます。 コンパイルされない大学のクラス ファイル で説明されているように、同じ手法で継承されたプリアンブルをレスキューします。