Ein option clash geschieht, wenn ein Paket zweimal mit unterschiedlicher Optionenliste geladen wird. Oft geschieht das, weil ein Paket von einem anderen geladen wird, ohne dass man das weiß, so wie in diesem Beispiel - hier wird TikZ verwendet und zusätzlich xcolor
mit der table
-Option geladen:
\documentclass{article} \usepackage{tikz} \usepackage[table]{xcolor} \begin{document} text \end{document}
Man erhält:
! LaTeX Error: Option clash for package xcolor. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.4 \begin {document}
Zwei Fälle kann man hier unterscheiden:
Einmal wird das Paket ohne Optionen und einmal mit Optionen geladen. Hier genügt es, die Ladereihenfolge zu vertauschen, so dass der Aufruf mit Optionen zuerst erfolgt. Also statt
\documentclass{article} \usepackage{xcolor}% vielleicht versteckt in einem anderen Paket \usepackage[table]{xcolor} \begin{document} Fehler \end{document}
Die andere Reihenfolge:
\documentclass{article} \usepackage[table]{xcolor} \usepackage{xcolor}% vielleicht versteckt in einem anderen Paket \begin{document} Kein Fehler
\end{document}
Das ist daher auch in der Regel die erste Maßnahme, die man ausprobiert.
Zweite Möglichkeit: das Paket wird zweimal mit Optionen geladen, aber mit unterschiedlichen:
\documentclass{article} \usepackage[svgnames]{xcolor} \usepackage[table]{xcolor}% vielleicht versteckt in einem anderen Paket \begin{document} Fehler
\end{document}
In einem solchen Fall kann man anstatt das Paket ein zweites Mal zu Laden, die Optionen an das Paket weiterreichen. Dafür gibt es den Befehl \PassOptionsToPackage{<Optionen>}{<Paket>}
:
\documentclass{article} \PassOptionsToPackage{svgnames}{xcolor} \usepackage[table]{xcolor}% vielleicht versteckt in einem anderen Paket \begin{document} Kein Fehler \end{document}
Diese Maßnahme hätte auch im ersten Fall funktioniert. \PassOptionsToPackage
muss übrigens vor dem ersten Laden des betreffenden Pakets eingesetzt werden. Setzt man es daher vor \documentclass
, dann ist man auf der sicheren Seite.
Oft hilft es auch, die zusätzliche Option global einzusetzen, das heißt, sie der Klasse mitzugeben:
\documentclass[svgnames]{article} \usepackage[table]{xcolor}% vielleicht versteckt in einem anderen Paket \begin{document} Kein Fehler \end{document}
Diese letzte Maßnahme funktioniert in der Regel auch, wenn das betreffende Paket nicht von anderen Paket sondern von der Dokumentenklasse geladen wird. (So lädt die beamer
-Klasse z.B. ebenfalls das xcolor
Paket):
\documentclass[svgnames,table]{beamer} \begin{document} \begin{frame} \textcolor{Goldenrod}{Kein Fehler} \begin{tabular}{|l|c|} \rowcolor[gray]{.9} eins & zwei\\ \rowcolor[gray]{.5} drei & vier \end{tabular} \end{frame} \end{document}
Wenn alle Stricke reißen, kann man das betreffende Paket auch vor der Klasse zu laden (mit \RequirePackage
statt \usepackage
), oder (wie oben schon vorgeschlagen) eben den Aufruf \PassOptionsToPackage
vor \documentclass
zu setzen. Nötig kann das z.B. sein, da der Einsatz als globale Option an alle Pakete weitergereicht wird, die die Option kennen, was manchmal unerwünscht sein kann. Vorsicht: nicht jedes Paket kann erfolgreich vor der Klasse geladen werden! Diese Maßnahme sollte man nur in Ausnahmefällen verwenden, wenn man weiß, was man tut.
Clemens hat das auf TeXwelt.de hier geschrieben: LaTeX Error: Option clash for package - wie beheben?