Пакети, які борються між собою

hyperref останній, cleveref після, застарілі пари, мінімум прикладів.

Пакети, які борються між собою

Пакунки LaTeX можуть вільно перевизначати команди один одного, і багато хто робить це свідомо. Саме так hyperref перетворює кожне перехресне посилання на посилання. Це також означає, що кожен з двох пакетів може виправляти ту саму команду з несумісними припущеннями, і результат коливається від прямої помилки, як-от Команда \виноска вже визначена або Конфлікт параметрів для пакета xcolor, до результату, який є мовчазно неправильним. Конфлікти майже завжди виникають відразу після того, як ви додаєте пакет до попередньої преамбули, що також є найбільшою підказкою.

Порядок завантаження - половина справи

Багато конфліктів вирішуються суто за наказом, тому що останнє слово залишається за пакетом, завантаженим пізніше. Найважливіше правило: завантажуйте hyperref в кінці преамбули. Він переписує великі частини механізму перехресних посилань LaTeX, і пакунки, завантажені після нього, можуть скасувати ці латки. Короткий список винятків має з’явитися ще пізніше, і той, який ви насправді зустрінете, це cleveref, який призначений для того, щоб сидіти поверх hyperref і повинен бути завантажений після нього:

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

Якщо в документації пакета вказано позицію щодо іншого пакета, вірте цьому. Ці нотатки існують, тому що хтось уже зіткнувся з конфліктом, який ви збираєтеся мати.

Застарілі пакети та їх заміни

Деякі конфлікти виникають через завантаження мертвого пакета поруч із його наступником. Не поєднуйте epsfig з graphicx, subfigure з subcaption або старі times і mathptmx прокладки з сучасними пакетами шрифтів, як-от newtxtext. Старі шаблони є звичайним джерелом: вони завантажують те, що було актуальним на момент написання шаблону, а ви додаєте сучасний еквівалент зверху. Видаліть застарілий і збережіть заміну. Пакет nag може позначати застаріле використання під час компіляції.

Зіткнення варіантів

«Конфлікт параметрів для пакета X» означає, що пакет було завантажено двічі з різними параметрами, часто один раз вашим класом документів за вашою спиною. Ви не можете знову завантажити його з новими параметрами, але ви можете вставити параметри до того, як хтось завантажить його: помістіть \PassOptionsToPackage{table}{xcolor} перед \documentclass, і параметри буде об’єднано в будь-яке завантаження, яке відбудеться першим.

Виділення за допомогою мінімального прикладу

Якщо причина неочевидна, створіть мінімальний робочий приклад: документ, що містить лише \documentclass, два підозрілих пакети та \begin{document}...\end{document} з одним рядком тексту. Якщо помилка повторюється, перемикайте порядок завантаження та параметри, доки вона не зникне. Якщо він не відтворюється, додайте інші пакунки назад навпіл, доки він не повернеться. Цей бінарний пошук об’єднує кілька компіляцій і дає вам чітку пару для пошуку. Ця ж техніка рятує успадковані преамбули, як описано в файли класів університету, які не компілюються.

Назад до Час виконання