Então, você inocentemente adicionou:
ao seu documento, e o LaTeX respondeu com\usepackage
[draft]
{foo}
! LaTeX Error: Option clash for package foo.
O erro é uma reclamação sobre carregar mais de uma vez um pacote com opções. O LaTeX reclama porque não tem meios de examinar as opções, e não porque sabe que existe um problema. (Você pode carregar um pacote quantas vezes quiser no preâmbulo de um documento, sem opções, e o LaTeX vai ignorar todos os pedido de carregamento após o primeiro; mas você só pode fornecer opções quando você carregar o pacote pela primeira vez.
Então, talvez você não seja totalmente inocente — o erro teria ocorrido na segunda linha de:
o que poderia ser digitado (de forma correta) como:\usepackage
[dvips]
{graphics}
\usepackage
[draft]
{graphics}
\usepackage
[dvips,draft]
{graphics}
Mas se você não tiver cometido esse erro (mesmo com muitas linhas separando os comandos \usepackage
, é bem fácil de percebê-lo), o problema pode ter surgido porque alguma outra coisa esta carregando o pacote por você. Como você acha o culpado? A resposta " h" para a mensagem de erro te diz quais opções foram carregadas de cada vez. Fora isso, resta recorrer à análise dos logs discutida em
“Como lidar com erros”; o truque é lembrar que o processo de carregar cada arquivo aparece no log entre parênteses; então, se o pacote foo carrega o graphics, o log vai conter algo como:
(os parênteses para graphics estão completamente cercados pelos de foo; o mesmo acontece se sua classe bar for o culpado, só que a linha começará com o caminho para bar.cls).(/foo.sty ... ... ( /graphics.sty ... ...) ... )
Se estivermos lidando com um pacote que carrega o pacote no qual você está interessado, você vai precisar pedir ao LaTeX para inserir as opções quando o foo carregá-lo. Em vez de:
você escreveria:\usepackage
{foo}
\usepackage
[draft]
{graphics}
O comando\PassOptionsToPackage
{draft}
{graphics}
\usepackage
{foo}
\PassOptionsToPackage
diz ao LaTeX[[[LBRACE]]][[[RBRACE]]] para se comportar como se suas opções tivessem sido passadas, quando ele finalmente carrega um pacote. Como é de se esperar em função do nome, o \PassOptionsToPackage
pode lidar com uma lista de opções, da mesma forma que você teria nos colchetes de opções do \usepackage
.
O problema é mais complicado se a classe do documento carregar um pacote para o qual você quer opções. Nesse caso, em vez de:
você escreveria:\documentclass
[...]
{bar}
\usepackage
[draft]
{graphics}
com\PassOptionsToPackage
{draft}
{graphics}
\documentclass
[...]
{bar}
\PassOptionsToPackage
antes do comando \documentclass
.
No entanto, se o pacote foo ou a classe bar carregar o graphics com uma opção dele que entrem em conflito com a que você precisa, você ficará travado. Por exemplo:
onde o pacote ou classe executa:\PassOptionsToPackage
{draft}
{graphics}
define\usepackage
[final]
{graphics}
final
depois de ter lidado com a opção que você passou a ele, fazendo com que o seu draft
seja esquecido. Em casos extremos, o pacote pode gerar um erro aqui (o graphics não faz esse tipo de coisa, e não há indicação de que o draft
tenha sido esquecido).
Nesse caso, você precisa modificar o próprio pacote ou classe (sujeito aos termos de licença). Pode ser útil entrar em contato com o autor: ele pode ter uma alternativa útil para sugerir.
This question on the Web: http://latex.net.br/faq/FAQ-optionclash.html
Do you have any question? Ask on: latex.net.br - we love qood questions!