abntex / abntex2

:books: Classe LaTeX e estilo bibliográfico compatíveis com as normas da ABNT
http://www.abntex.net.br
LaTeX Project Public License v1.3c
1.05k stars 218 forks source link

Criar opção para não carregar pacote hyperref automaticamente #103

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Olá,

Eu uso o pacote "footmisc" no meu preâmbulo para posicionar fixar as notas de 
rodapé na parte inferior da página com a opção "botton".

Porém, este pacote deve ser carregado antes do pacote "hyperref".
(para evitar que os links para as notas de rodapé fiquem sem referência e 
consequentemente apontando para a primeira página)

No entanto, a classe abntex2 carrega o pacote "hyperref".

Sendo assim, não é possível eu utilizar o pacote "footmisc" com a classe 
abntex2.

Gostaria de saber poque o pacote "hyperref" é carregado dentro da classe 
abntex2, e minha sugestão seria de remover este carregamento de dentro da 
classe e deixá-la para o usuário carregá-la quando necessário.

Atensiosamente,

Original issue reported on code.google.com by cfgnu...@gmail.com on 29 Dec 2013 at 6:19

GoogleCodeExporter commented 9 years ago
Olá cfgnunes

Obrigado por entrar em contato.

A classe abntex2 é dependente do hyperref. Há uma série de comandos internos 
que executamos daquele pacote, como as configurações de bookmark, por exemplo.

Porém, concordo que pudéssemos ter uma opção na classe que indicasse que o 
hyperref não deva ser carregado por padrão, talvez algo como 
"\documentclass[no_hyperref]{abntex2}". Isso deixaria a classe um pouco mais 
flexível e não quebraria a compatibilidade com os documentos anteriores.

Se quiser trabalhar nisso, seria uma ótima contribuição!

Original comment by laurocesar on 29 Dec 2013 at 8:25

GoogleCodeExporter commented 9 years ago
Título original da issue: Erro com a classe Abntex2 + pacote footmisc

Original comment by laurocesar on 29 Dec 2013 at 8:25

GoogleCodeExporter commented 9 years ago
Antes de fechar a issue, atualizar a página 
https://code.google.com/p/abntex2/wiki/LimitacoesConhecidas

Original comment by laurocesar on 29 Dec 2013 at 8:30

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Você poderia incluir o comando dentro da classe abntex2 (antes de carregar o 
pacote "hyperref")?

O comando é:
\usepackage[bottom]{footmisc}

Assim, as notas de rodapé ficarão na parte inferior da página.
E além disso, não haveria mais problemas.

Original comment by cfgnu...@gmail.com on 14 Mar 2014 at 4:15

GoogleCodeExporter commented 9 years ago
cfgnunes

Acredito que carregar mais um pacote, e ainda mais com uma opção 
pré-determinada, não seka interessante. Isso porque mantemos o princípio de 
carregar o mínimo possível de pacotes 
(http://code.google.com/p/abntex2/wiki/Diretrizes). 

Portanto, se houver outra forma de atingir o objetivo sem o pacote, seria mais 
interessante. Você poderia consultar a documentação do memoir e verificar se 
há algo equivalemente que pudesse ser apenas configurado.

Com isso incluímos no código-fonte para as próximas versões imediatamente!

Original comment by laurocesar on 14 Mar 2014 at 4:31

persiobarros commented 6 years ago

O carregamento do hyperref (e do pacote bookmark que também depende do hyperref) pelo abntex2 também causa conflito no LyX que também tem suporte para o hyperref. Se você acionar o suporte para hyperref no LyX, o pacote será carregado duas vezes com opções diferentes e isso causa conflito. Minha sugestão é colocar uma opção no abntex2 para não carregar o hyperref. Eu tentei fazer isso aqui e parece que a alteração necessária é bem pequena e fácil de implementar. Primeiro, definir a opção:

%
% Opção para desativar o suporte ao hyperrref e bookmark
%
\newboolean{ABNTEXnohyperref}
\setboolean{ABNTEXnohyperref}{false}
\DeclareOption{nohyperref}{\setboolean{ABNTEXnohyperref}{true}}

Depois é só isolar os comandos que carregam os pacotes dentro de um \ifthenelse:

\ifthenelse{\not\boolean{ABNTEXnohyperref}}{%
% ---
% Controla as referencias internas do PDF
   \RequirePackage{hyperref}
   \pdfstringdefDisableCommands{\def\\{, }\def\and{; }}
% ---

% ---
% Controla os bookmarks do PDF
   \RequirePackage{bookmark}            
% ---
}{\newcommand{\bookmarksetup}{}}

O último \newcommand é necessário porque o comando \bookmarksetup é definido no pacote bookmark e usado em vários locais do abntex2. Eu testei aqui e funcionou. Não sei se seriam necessárias outras modificações.

persiobarros commented 6 years ago

Só pra completar: se a opção criada (nohyperref) for acionada no abntex2, é preciso acionar o suporte do hyperref no LyX (Document->Settings->PDF properties), caso contrário outros erros aparecem na compilação.

persiobarros commented 6 years ago

OOPS! Há um pequeno engano na minha proposta. A última linha deveria ser:

}{\newcommand{\bookmarksetup}[1]{}}