57

I want to draw some coloured circles, so I loaded tikz in my preamble. However, now xcolor is telling me that it has an "option clash". How should I fix this?

\documentclass{article}
\usepackage{tikz}
\usepackage[table]{xcolor}

\begin{document}
Hello world.
\end{document}

The error message is this:

! LaTeX Error: Option clash for package xcolor.

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

l.4 

The package xcolor has already been loaded with options:
  []
There has now been an attempt to load it with options
  [table]
Adding the global options:
  ,table
to your \documentclass declaration may fix this.
Try typing  <return>  to proceed.

2 Answers 2

81

Load xcolor before tikz:

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

The problem is that pgf/tikz already loads xcolor so loading it again with a new package option triggers the error message.

Another option is to pass the table option to the class and not to the xcolor package. Then the packages can be loaded in any order:

\documentclass[table]{article}
\usepackage{xcolor}
\usepackage{tikz}

or

\documentclass[table]{article}
\usepackage{tikz}
\usepackage{xcolor}
4
  • 3
    @Gonzalo-Medina Can any options for any package be passed to the document class?
    – Ariel
    Apr 11, 2012 at 1:35
  • 2
    @Ariel: no, not every option for every package can be passed as a class option; it depends on how the option was declared in the package. Apr 11, 2012 at 1:46
  • 6
    @GonzaloMedina Every option passed to the class is "global", so that it's tried with every loaded package. If the package knows it, it's applied; otherwise it's ignored. A package doesn't distinguish between global and local options (those which are passed in \usepackage). However, it's not a good idea to indiscriminately pass package options as global options. In this case it may be a good solution.
    – egreg
    Apr 11, 2012 at 6:40
  • 1
    @egreg: yes, I know that; my comment was addressing cases like \documentclass[T1]{report} \usepackage{fontenc} in which the option will be ignored. Apr 11, 2012 at 16:19
28

Add \PassOptionsToPackage{table}{xcolor} before \documentclass[10pt]{article} and remove the line \usepackage[table]{xcolor}.

5
  • 5
    That fixes the problem - what it is doing and why did I get this error?
    – Ariel
    Apr 11, 2012 at 0:08
  • 3
    @Ariel: I’m relatively sure, that it would be sufficient to load xcolor after the documentclass, but before other packages, that load itself (x)color. And TikZ is, in fact, one of those, but it loads xcolor without the table option.
    – Speravir
    Apr 11, 2012 at 0:21
  • 1
    Ah - so the error is because xcolor is loaded twice?
    – Ariel
    Apr 11, 2012 at 0:23
  • 1
    I second Ariel's query for further elucidation :-) ! Jul 8, 2013 at 7:26
  • this worked for me also after the '\documentclass' declaration
    – twp
    Oct 3, 2021 at 13:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .