Пример:
Без amsmath
упаковки:
Среда
equation
автоматически нумерует уравнение.Среда
align
не может быть выполнена.
В amsmath
комплект входит:
align
иequation
без проблем работать с нумерацией уравнений: я могу использовать егоequation
для записи первых двух уравнений иalign
для записи третьего уравнения, и Latex все равно правильно их пронумерует.
У меня есть вопросы:
Остался ли код команды
equation
после загрузкиamsmath
пакета таким же, как и до загрузки пакета?Более того, если это так, то вообще, может ли загрузка разных пакетов вызывать конфликты? И как этого избежать?
решение1
Каждый может переопределить команды или окружения. Такое переопределение изменяет код. Это может привести к конфликтам или нежелательным побочным эффектам. Но обычно разработчики пакетов знают это и стараются избегать таких конфликтов — в конце концов, никто не вынужден использовать пакет, который ведет себя не так и нарушает другой код.
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\begin{equation}
x=4
\end{equation}
\renewenvironment{equation}
{\par\color{red}\Huge\centering}
{\par}
\begin{equation}
x=4
\end{equation}
\end{document}
решение2
Упаковка может переопределить любую часть латекса и создать произвольные результаты.
Например, сохраните это какzzz.sty
\everypar{}
BOO!
\stop
и добавить
\usepackage{zzz}
к любому латексному документу.
Тот факт, что equation
и align
число в последовательности не требует переопределения какой-либо среды, в этом документе определяется новая среда, zzz
которая нумерует в той же последовательности, но не переопределяет ни equation
или align
.
\documentclass{article}
\usepackage{amsmath}
\newenvironment{zzz}
{\par\refstepcounter{equation} \fbox{this is \theequation zzz}}
{zzz ends here\par}
\begin{document}
equation
\begin{equation}
1=1
\end{equation}
zzz
\begin{zzz}
qqq
\end{zzz}
align
\begin{align}
a&=1\\
b&=2
\end{align}
\end{document}
Пакеты могут иметь неразрешимые конфликты, если пакет a определяется \zzz
как красный, а пакет b определяется \zzz
как синий, то вы, очевидно, не можете заставить оба пакета работать одновременно. Если вы загружаете оба пакета в зависимости от деталей реализации, вы можете получить ошибку или можете получить красный или синий в зависимости от порядка загрузки пакетов. Автор документа должен загружать необходимые пакеты и не загружать конфликтующие пакеты.