软件包选项之间的冲突

软件包选项之间的冲突

我在序言中定义了以下软件包,一旦运行该文件,就会产生以下错误,提示软件包选项存在冲突。软件包如下:

\documentclass[addpoints,11pt]{exam}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{latexsym}
\usepackage{enumerate}
\usepackage{array}
\usepackage{amsthm}
\usepackage{cancel}
\usepackage{amsfonts}
\usepackage{tikz}
\usepackage{upgreek}
\usepackage{calligra}
\usepackage{graphicx,graphics}
\usepackage[normalem]{ulem}
\usepackage[all]{xy}
\usepackage[dvipsnames]{xcolor}

\begin{document}
 .......    
\end{document}

错误日志

有什么办法可以预防以及问题持续存在的真正根源是什么?

答案1

\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass{...}
\usepackage[normalem]{ulem}
\usepackage[all]{xy}
\usepackage{xcolor}

但是,它似乎xcolor已被你的 documentclass 或其他包加载

答案2

好吧,既然 Herbert 为选项冲突提供了通用解决方案,那么这里还有另一种解决方案:

\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}

只需放xcolor包裹 tikz包裹。

解释:

在 LaTeX 中,你不能两次或多次加载同一个包\usepackage。如果一个包已经加载,则另一个\usepackage 没有任何选项都将被安全地忽略,但\usepackage 有些选项会产生选项冲突。

tikzxcolor内部加载,无需任何选项。如果要使用xcolor其他选项,可以在 之前使用它tikz


您甚至可以使用这种方式来防止选项冲突:

\documentclass[dvipsnames]{exam}
\usepackage{tikz}

的选项\documentclass是全局的。如果可能,这些选项将传递给任何后续包。如果您想将选项传递给由文档类加载的包,它特别有用。但是,它不如那么精确\PassOptionsToPackage

答案3

跑步

\documentclass[10pt]{article}
\usepackage[normalem]{ulem}
\usepackage[all]{xy}
\usepackage[dvipsnames]{xcolor}
\begin{document}
abcdefgh
\end{document}

在当前 TeXlive 2011 安装中不会产生任何警告或错误。

如果您正在使用附加软件包(hyperref例如,出现此问题的软件包),那么这里可能有解决问题的方法:例如,尝试使用 xcolorsvgnames选项(如果颜色范围合适),使用明确的\definecolor命令或尝试各种诊断程序。

提供更多信息,包括问题的完整但最小规模的工作示例将有助于提供更好的响应。

相关内容