서로 싸우는 패키지

마지막 하이퍼참조, 이후 클래리레프, 더 이상 사용되지 않는 쌍, 최소 예제.

서로 싸우는 패키지

LaTeX 패키지는 서로의 명령을 자유롭게 재정의할 수 있으며 많은 경우 의도적으로 그렇게 합니다. 이것이 hyperref가 모든 상호 참조를 링크로 바꾸는 방법입니다. 이는 또한 두 개의 패키지가 각각 호환되지 않는 가정으로 동일한 명령을 패치할 수 있다는 것을 의미하며, 결과는 ‘Command \footnote done’ 또는 ’Option conflict for package xcolor’와 같은 명백한 오류부터 조용히 잘못된 출력까지 다양합니다. 충돌은 이전에 작동했던 서문에 패키지를 추가한 직후에 거의 항상 표면화되는데, 이것이 가장 큰 단서이기도 합니다.

로딩순서는 전투의 절반입니다

나중에 로드된 패키지가 최종 결정을 내리기 때문에 많은 충돌은 순전히 순서에 따라 해결됩니다. 가장 중요한 규칙은 ’hyperref’를 서문 끝 부분에 로드하는 것입니다. 이는 LaTeX의 상호 참조 기계의 상당 부분을 다시 작성하고 해당 패치를 실행 취소한 후 로드된 패키지를 다시 작성합니다. 예외의 짧은 목록은 나중에 와야 하며 실제로 만나게 될 예외는 hyperref 위에 위치하도록 설계되었으며 그 뒤에 로드되어야 하는 cleveref입니다.

\usepackage{graphicx}
\usepackage{amsmath}
% ... everything else ...
\usepackage{hyperref}
\usepackage{cleveref} % after hyperref, by design

패키지의 문서가 다른 패키지와 관련된 위치를 지정하면 이를 믿으십시오. 이러한 메모는 누군가가 이미 당신이 겪게 될 충돌에 부딪혔기 때문에 존재합니다.

더 이상 사용되지 않는 패키지 및 대체 패키지

일부 충돌은 후속 패키지 옆에 죽은 패키지를 로드할 때 발생합니다. epsfiggraphicx, subFiguresubcaption, 또는 오래된 timesmathptmx shim을 newtxtext와 같은 최신 글꼴 패키지와 결합하지 마십시오. 오래된 템플릿이 일반적인 소스입니다. 템플릿이 작성될 당시의 최신 내용을 로드하고 그 위에 최신 버전을 추가합니다. 오래된 것을 제거하고 교체품을 보관하십시오. nag 패키지는 컴파일 타임에 오래된 사용법을 표시할 수 있습니다.

옵션 충돌

’패키지 X에 대한 옵션 충돌’은 패키지가 다른 옵션과 함께 두 번 로드되었음을 의미하며, 종종 뒤에서 문서 클래스에 의해 한 번 로드되었습니다. 새 옵션을 사용하여 다시 로드할 수는 없지만, 누군가 로드하기 전에 옵션을 삽입할 수 있습니다. \documentclass 앞에 \PassOptionsToPackage{table}{xcolor}를 넣으면 옵션이 먼저 로드되는 항목에 병합됩니다.

최소한의 예시로 분리

원인이 명확하지 않은 경우 최소한의 작업 예제를 작성하십시오. \documentclass만 포함하는 문서, 두 개의 의심되는 패키지, 그리고 한 줄의 텍스트가 있는 \begin{document}...\end{document}. 오류가 재현되면 그렇지 않을 때까지 로드 순서와 옵션을 전환합니다. 재현되지 않으면 돌아올 때까지 다른 패키지를 반으로 다시 추가하십시오. 이 이진 검색은 몇 번의 컴파일로 수렴되어 검색할 명확한 쌍을 제공합니다. 컴파일되지 않는 대학 클래스 파일에 설명된 대로 동일한 기술로 상속된 프리앰블을 복구합니다.

런타임(으)로 돌아가기