abntex2 icon indicating copy to clipboard operation
abntex2 copied to clipboard

Comando \autoref referente Anexos retorna "Apêndice"

Open GoogleCodeExporter opened this issue 10 years ago • 15 comments
trafficstars


Ao usar o comando \autoref retorna sempre como Apêndice XXX e não como Anexo 
xxx.

Teste realizado no modelo canônico.

Original issue reported on code.google.com by [email protected] on 14 Aug 2013 at 9:06

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Original comment by laurocesar on 14 Aug 2013 at 9:21

  • Added labels: Type-Defect, Milestone-Release2.0, OpSys-All, Component-Logic
  • Removed labels: Type-Task

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Tentei as soluções seguintes e não deu certo

http://tex.stackexchange.com/questions/137432/whats-the-difference-between-ref-a
nd-autoref

http://linorg.usp.br/CTAN/macros/latex/contrib/hyperref/doc/manual.html
 Example for a redefinition if babel is used:
.....
\newcommand{\PRIVATEapendiceconfig}[2]{%
 \setboolean{abntex@apendiceousecao}{true}%
 \renewcommand{\appendixname}{#1}
  comando passou aqui #1
 \addto\extrasbrazil{%  
  \def\appendixnameautorefname{#1} %%%%%%% wfs teste ... depois apagar comentário
 }
 \ifthenelse{\boolean{ABNTEXsumario-abnt-6027-2012}}{
   \renewcommand{\appendixtocname}{\uppercase{#2}}
  }{%
  \renewcommand{\appendixtocname}{#2}} 
 \renewcommand{\appendixpagename}{#2}
 \switchchapname{#1}% Corrected from \switchapname -> \switchchapname
 \renewcommand*{\cftappendixname}{#1 \space}
}

Coloquei este comando no \PRIVATEapendiceconfig do abntex2

Se alguem tiver sugestões... 

Olhei o manual do memoir e do hyperref mas não falo inglês... 

Original comment by [email protected] on 4 Jul 2014 at 6:48

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Esta questão realmente é problemática. Vamos ter que continuar pesquisando. 
Eu também não encontrei uma solução até agora...

Original comment by laurocesar on 6 Jul 2014 at 11:26

  • Changed state: Accepted

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Se colocar a partir da linha 293 do abntex2:

\addto\captionsbrazil{% portugues-brasil
  %% ajusta nomes padroes do babel
  \renewcommand{\bibname}{Refer\^encias}
  \renewcommand{\indexname}{\'Indice}
  \renewcommand{\listfigurename}{Lista de ilustra\c{c}\~{o}es}
  \renewcommand{\listtablename}{Lista de tabelas}
  %% ajusta nomes usados com a macro \autoref
  \renewcommand{\pageautorefname}{p\'agina}
  \renewcommand{\sectionautorefname}{se{\c c}\~ao}
  \renewcommand{\subsectionautorefname}{subse{\c c}\~ao}
  \renewcommand{\subsubsectionautorefname}{subse{\c c}\~ao}
  \renewcommand{\paragraphautorefname}{subse{\c c}\~ao}
  \renewcommand{\appendixautorefname}{Anexo} %%%% ===> aqui o teste
}

Tudo passa a ser "Anexo"

Logo o hyperref está de fato usando o babel e procurando pelo nome da parte 
seguida de "autorefname".

Noutro giro para o memoir tudo é appendix..... logo não adiantaria usar 
\renewcommand{\enclautorefname}{Anexo}, aliás aqui deu erro ao tentar.

Teria que fazer a renomeação dentro do comando na linha 997 que é onde o 
abntex2 faz a mudança de nomes usando o memoir, salvo engano.

\newcommand{\PRIVATEapendiceconfig}[2]{%

mas dá erro... 

os comandos do hyperref são protegidos. seria preciso, creio, usar o 
\makeatletter e \makeatother mas não sei se têm jeito... ou se têm outro 
jeito.



Lauro, vá registrando aqui o que você tentar.
Vamos pensando juntos.

t+

Wagner F Silva



Original comment by [email protected] on 6 Jul 2014 at 6:43

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Combinado Wagner!

Original comment by laurocesar on 6 Jul 2014 at 7:32

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

De fato, é preciso investigar mais a parte de apêndices do memoir, porque o 
problema que cheguei foi exatamente o que você disse: para o memoir, tudo é 
appendix. Tanto é que a solução atual do abntex2.cls para manter Apêndice 
para Anexo num mesmo documento é um "gato" dos mais pintados, porque ele muda 
o nome durante a expansão das macros. Como essa mudança é "forçada", ela 
não é reconhecida pelo hyppref. No caso, isso é feito aqui:

% ---
% Definicoes compartilhadas entre Apendices e Anexos
% ---
\makeatletter
\newcommand\@switch[1]{ \@writefile{toc}{\renewcommand*{\cftappendixname}{#1 
\space}} }
\newcommand{\switchchapname}[1]{ \protected@write \@auxout 
{}{\string\@switch{#1} }}
\makeatother

Acredito que o próximo passo é olhar no manual da hyperref e verificar como 
definir os nomes do \autoref  da forma como precisamos, ou mesmo continuar a 
investigar no manual do memoir uma forma mais elegante de ter apêndices e 
anexos num mesmo documento.

Por fim, se não acharmos nada, poderíamos até enviar um e-mail ao criador do 
memoir.

Abraços!

Original comment by laurocesar on 6 Jul 2014 at 7:38

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Wagner,
Por acaso você conseguiu algum resultado nesta questão dos nomes dos 
apêndices?

Original comment by laurocesar on 6 Jan 2015 at 10:06

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Até que se obtenha solução definitiva, é possível usar esse workaround:

\newcommand{\refanexo}[1]{\hyperref[#1]{Anexo~\ref{#1}}}

\refanexo{anexo_xxx}

Original comment by laurocesar on 18 Jan 2015 at 1:12

GoogleCodeExporter avatar Mar 14 '15 11:03 GoogleCodeExporter

Bom dia.

Refiz o teste e aqui funcionou.

Estou usando kubuntu 14.10

Creio que era realmente uma falha do hyperref que já foi corrigida pelos desenvolvedores.

Se mais alguém puder testar...

admwagner avatar Jun 15 '15 12:06 admwagner

Bom dia.

Referente a este bug, já conseguiram a solução ou tem alguma alternativa para contorna-lo?

Att.

Devan-M avatar Oct 31 '15 15:10 Devan-M

A solução definitiva ainda não, mas o contorno já está disponível nesta thread desde 14 de março. Veja acima.

laurocesar avatar Oct 31 '15 16:10 laurocesar

Correção: o contorno eu apliquei e funciona. A única coisa que tenho de entender é o descrito:

Quando faço o \autoref do "apendice A", ele retorna "apendice 6". O mesmo acontece com o anexo A, retornando "apendice 6". Já se eu chamo o apendice D (no meu caso o último incluído), ele retorna "apendice C".

Devan-M avatar Oct 31 '15 18:10 Devan-M

Vou entrar de gaiato na conversa... Não sei se o que vou falar se aplica ao caso em questão, mas verifiquei na documentação do pacote "appendix" que existe um conhecido problema dele com o comando \include.

No meu caso, bastou incluir o comando \anexos no arquivo do primeiro anexo (antes de \chapter, obviamente). Dessa forma ao incluir o primeiro anexo com \include{Anexo1} tudo funcionou: o nome e a numeração do anexo no sumário, no texto e no bookmark do pdf.

Também funcionou com o \anexos seguido de um \input{Anexo1}.

That's all folks!

AJS-2 avatar Sep 30 '16 20:09 AJS-2

Até que se obtenha solução definitiva, é possível usar esse workaround:

\newcommand{\refanexo}[1]{\hyperref[#1]{Anexo~\ref{#1}}}

\refanexo{anexo_xxx}

Original comment by laurocesar on 18 Jan 2015 at 1:12

Assim como eu, acredito que muitas pessoas podem ter problemas ao tentar reproduzir esse workaround devido à ignorância no mundo LaTeX :)

Portanto, deixo aqui umas dicas para quem quiser testá-lo:

  • A declaração do capítulo anexo permanece inalterada:
% Primeiro anexo---------------------------------------------------------------
\chapter{Parecer do Comitê de Ética}
\label{chap:comite}

% Conteúdo
% [...]
  • A referência deve ser chamada utilizando-se o \refanexo ao invés do \autoref:
O parecer do comitê de ética é exibido no \refanexo{chap:comite}.
% Era: O parecer do comitê de ética é exibido no \autoref{chap:comite}.
  • O comando \newcommand{\refanexo}[1]{\hyperref[#1]{Anexo~\ref{#1}}} deve ser "lido" pelo compilador antes do comando \refanexo. Portanto, caso eles sejam inseridos em arquivos separados, deve-se prestar atenção na sequência dos \includes desses arquivos.

ruipimentel avatar Mar 05 '19 18:03 ruipimentel

Até que se obtenha solução definitiva, é possível usar esse workaround:

\newcommand{\refanexo}[1]{\hyperref[#1]{Anexo~\ref{#1}}}

\refanexo{anexo_xxx}

Original comment by laurocesar on 18 Jan 2015 at 1:12

Assim como eu, acredito que muitas pessoas podem ter problemas ao tentar reproduzir esse workaround devido à ignorância no mundo LaTeX :)

Portanto, deixo aqui umas dicas para quem quiser testá-lo:

  • A declaração do capítulo anexo permanece inalterada:
% Primeiro anexo---------------------------------------------------------------
\chapter{Parecer do Comitê de Ética}
\label{chap:comite}

% Conteúdo
% [...]
  • A referência deve ser chamada utilizando-se o \refanexo ao invés do \autoref:
O parecer do comitê de ética é exibido no \refanexo{chap:comite}.
% Era: O parecer do comitê de ética é exibido no \autoref{chap:comite}.
  • O comando \newcommand{\refanexo}[1]{\hyperref[#1]{Anexo~\ref{#1}}} deve ser "lido" pelo compilador antes do comando \refanexo. Portanto, caso eles sejam inseridos em arquivos separados, deve-se prestar atenção na sequência dos \includes desses arquivos.

Cara, sensacional, você ajudou de mais aqui no TCC. Muito obrigado.

Wiryco avatar Dec 10 '19 15:12 Wiryco