Pacote relata “comando previamente definido”

Você carrega um par de pacotes, e o segundo relata que um dos comandos definidos já está presente. Por exemplo, tanto txfonts quanto amsmath definem um comando \iint (e \iiint e assim por diante); então,

...
\usepackage{txfonts}
\usepackage{amsmath}
produz uma cadeia de mensagens de erro da forma:
! LaTeX Error: Command \iint already defined.
               Or name \end... illegal, see p.192 of the manual.
Como regra geral, coisas que o amsmath define são bem definidas; porém, existe um bom motivo para usar a versão txfonts do \iint — as fontes tx associadas tem um símbolo de integral duplo que não precisa ser “simulado” da maneira como o amsmath faz. No caso de você estar carregando vários pacotes de símbolos, cada um dos quais definindo um mesmo símbolo, é provavel que você tenha esse problema de forma acentuada (\euro é uma vítima comum).

Há casos semelhantes onde um pacote redefine o comando de outro, mas nenhum erro ocorre porque o pacote que está redefinindo não usa o \newcommand. Geralmente, nesse caso, você só nota a mudança porque você presume a definição dada pelo primeiro pacote. Os pacotes amsmathtxfonts são esse par; txfonts não provoca erros.

Você pode lidar com o problema salvando e restaurando o comando. Programadores de macro talvez façam isso por eles mesmos; para o resto de nós, existe o pacote savesym. A sequência

\usepackage{savesym}
\usepackage{amsmath}
\savesymbol{iint}
\usepackage{txfonts}
\restoresymbol{TXF}{iint}
resolve, restaurando a versão amsmath do comando e fazendo a versão txfonts do comando disponível como \TXFiint.

Não há muita documentação sobre o savesym : os únicos comandos são \savesymbol e \restoresymbol, como dito acima.

amsmath.sty
Part of amslatex
savesym.sty
savesym
txfonts.sty
Part of txfonts


Do you have any question? Ask on: latex.net.br - we love qood questions!