Um pacote pode substituir os comandos originais no Latex?

Um pacote pode substituir os comandos originais no Latex?

Um exemplo:

Sem o amsmathpacote:

  1. O equationambiente numera a equação automaticamente.

  2. O alignambiente não pode ser executado.

Com o amsmathpacote:

  1. aligne equationtrabalhar perfeitamente na numeração de equações: posso usar equationpara escrever minhas duas primeiras equações e alignpara escrever minha terceira equação, e o Latex ainda as numerará corretamente.

Minhas perguntas são:

  1. O código do comando equationapós carregar o amsmathpacote ainda é o mesmo de antes de carregar o pacote?

  2. 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}

insira a descrição da imagem aqui

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 equatione alignem sequência não exige uma redefinição de nenhum dos ambientes, este documento define um novo ambiente zzzque numera na mesma sequência, mas não redefine equationou align.

insira a descrição da imagem aqui

\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 \zzzcomo vermelho e o pacote b for \zzzazul, 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.

informação relacionada