我在序言中定义了以下软件包,一旦运行该文件,就会产生以下错误,提示软件包选项存在冲突。软件包如下:
\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
和有些选项会产生选项冲突。
tikz
包xcolor
内部加载,无需任何选项。如果要使用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
命令或尝试各种诊断程序。
提供更多信息,包括问题的完整但最小规模的工作示例将有助于提供更好的响应。