Um exemplo:
Sem o amsmath
pacote:
O
equation
ambiente numera a equação automaticamente.O
align
ambiente não pode ser executado.
Com o amsmath
pacote:
align
eequation
trabalhar perfeitamente na numeração de equações: posso usarequation
para escrever minhas duas primeiras equações ealign
para escrever minha terceira equação, e o Latex ainda as numerará corretamente.
Minhas perguntas são:
O código do comando
equation
após carregar oamsmath
pacote ainda é o mesmo de antes de carregar o pacote?Além disso, se for esse o caso, então, em geral, o carregamento de pacotes diferentes pode causar conflitos? E como evitamos isso?
Responder1
Todos podem redefinir comandos ou ambientes. Tal redefinição altera o código. Isso pode levar a conflitos ou efeitos colaterais indesejados. Mas normalmente os criadores de pacotes sabem disso e tentam evitar tais conflitos - afinal ninguém é forçado a usar um pacote que não se comporte e quebre outro código.
\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}
Responder2
Uma embalagem pode redefinir qualquer parte do látex e produzir resultados arbitrários.
Por exemplo, salve isso comozzz.sty
\everypar{}
BOO!
\stop
e adicione
\usepackage{zzz}
para qualquer documento de látex.
Como o número equation
e align
em sequência não exige uma redefinição de nenhum dos ambientes, este documento define um novo ambiente zzz
que numera na mesma sequência, mas não redefine equation
ou 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}
Os pacotes podem ter conflitos irreconciliáveis se o pacote a for definido \zzz
como vermelho e o pacote b for \zzz
azul, então você claramente não pode ter os dois pacotes funcionando ao mesmo tempo. Se você carregar ambos os pacotes dependendo dos detalhes da implementação, poderá receber um erro ou poderá ficar vermelho ou azul dependendo da ordem de carregamento do pacote. Cabe ao autor do documento carregar os pacotes necessários e não carregar pacotes conflitantes.