! LaTeX Error: Option clash for package X는 같은 패키지가 서로 다른 옵션으로 두 번 불러와졌다는 뜻입니다. 보통 당신의 \usepackage보다 앞에서 다른 무언가가 이미 X를(당신의 옵션 없이) 불러왔기 때문입니다. 패키지는 한 번만 불러올 수 있습니다.
왜 발생하는가
패키지는 한 번만 불러옵니다. 따라서 \usepackage[opt]{X}가 X가 이미(클래스, 다른 패키지, 또는 앞선 다른 옵션의 \usepackage{X}에 의해) 불러와진 뒤에 오면 옵션이 충돌하여 “Option clash”가 됩니다. 전형적인 예는 어떤 패키지가 xcolor를 옵션 없이 끌어온 뒤, 당신이 \usepackage[table]{xcolor}라고 쓰는 경우입니다.
대처
- X가 불러와지기 전에
\PassOptionsToPackage{opt}{X}를 씁니다(프리앰블 맨 앞 또는 X를 끌어오는 패키지보다 앞). 그러면 첫 로드 때 옵션이 적용됩니다. - 같은 패키지는 모든 옵션을 넣은 한 번의
\usepackage로 합치고, 자동으로 불러오는 것보다 앞에서 불러옵니다. - 읽기 순서를 정리합니다. 옵션을 주고 싶은 패키지를 그것을 끌어오는 패키지보다 먼저 불러옵니다.
latex
% X が読まれる前に(プリアンブル冒頭)/ before X loads, at the very top
\PassOptionsToPackage{table}{xcolor}
\documentclass{article}
% 以降どこかで \usepackage{xcolor} されても table が効く
% (table applies even if something else loads xcolor later)그 밖의 충돌
옵션 충돌 외에도 같은 것을 재정의하는 호환되지 않는 패키지끼리 충돌할 수 있습니다. 예를 들어 hyperref는 많은 패키지와 간섭하기 쉬워, 관례적으로 가능한 한 마지막에 가깝게 불러옵니다. 각 패키지의 README나 로그 힌트에 따라 불러오기 순서와 호환 옵션을 조정하세요.