Open ggabriel96 opened 6 years ago
Esse é, de fato, mais um problema da classe do que do estilo bibliográfico. De qualquer forma, acho que a ABNT sempre pede o título "Referências", então fiz essa mudança no próprio biblatex-abnt (https://github.com/abntex/biblatex-abnt/commit/95014f117ea457d1a03ae9161dc22fa4bb1a5608).
Por enquanto, essa versão só está disponível aqui no repositório. Enquanto ela não está disponível no ctan, você pode simplesmente fazer isto, em vez de definir um novo heading:
\printbibliography[title={Referências}]
Para resolver isso na classe, acho que o ideal é fazer algo assim:
\AtBeginDocument{
\@ifpackageloaded{biblatex}{
\defbibheading{bibliography}[\refname]{%
\chapter*{#1}%
\if@twoside
\markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
\else
\markright{\abx@MakeMarkcase{#1}}%
\fi
\ifmemoirbibintoc
{\phantomsection
\addcontentsline{toc}{chapter}{#1}}
{}}
}{}
}
Eu não estou muito familiarizado com a classe abntex, então não vou fazer a mudança, mas acho que é uma boa, assim o título ficaria correto mesmo se a classe fosse utilizada com outro estilo.
Por "mais um problema da classe" você quer dizer do abnTeX2? Porque pelo que eu vi aqui, o problema continua usando o Memoir diretamente. E, sim, a ABNT requer sempre "Referências" mesmo.
Quanto à sua solução pra classe, se importaria de explicar o porquê do \if@twoside
e \markboth
e \markright
? Eu também não manjo muito do abnTeX2... na verdade eu comecei agora a me aventurar com LaTeX "mais avançado" e escrita de pacotes e classes.
Sim, um problema da classe abntex2, e não do biblatex-abnt.
O BibLaTeX usa \refname
pras classes do tipo "article" (article, scrartcl, memoir com a opção article
) e \bibname
pra classes do tipo "book" (book, scrbook, memoir vanilla).
Então o título é (com razão) definido de acordo com a classe, e não com o estilo bibliográfico.
Eu não uso e não conheço bem a classe abntex2, mas me parece que ela usa a classe memoir vanilla, que é feita para produzir livros, para imprimir coisas que não são livros. Então, na minha opinião, a classe abntex2 é que deveria dizer, "este documento não é estritamente um livro, e ele segue um formato específico, de modo que o título das referências deve ser X, e não Y".
Um usuário poderia, por exemplo, estar publicando um livro qualquer, sem seguir as normas da ABNT. Então ele usa a classe memoir pra diagramar o livro, usa formatos doidos pros títulos de capítulos e assim vai. Ele não está nem aí pras normas, só quer fazer um livro bonitinho. Só que ele precisa adicionar a bibliografia, então tem que escolher um estilo… e o livro vai ser publicado no Brasil, então por que não usar o biblatex-abnt? Nesse caso, ele pode querer apenas que a bibliografia siga o formato da ABNT. O título do capítulo da bibliografia, por outro lado, não precisa seguir as normas da ABNT, mas deve ter o mesmo formato doido que ele usou pros demais capítulos, e pode inclusive ter um título nada a ver. O título não deve ficar de acordo com o estilo bibliográfico, mas com o restante do documento (trabalho acadêmico, artigo etc.), e ele deve seguir, portanto, o que está especificado na classe, e não no estilo.
No entanto, eu imagino que a maior parte dos usuários do biblatex-abnt queira que o título também siga a norma. Por isso achei OK fazer a mudança no próprio estilo… então quando o biblatex-abnt for usado, o titulo será "Referências" independentemente da classe utilizada. Além disso, minha alteração só modifica o título padrão — ele ainda pode ser modificado explicitamente por classes específicas ou pelo próprio usuário (com \printbibliography[title={Bibliografia}]
, por exemplo). Então me pareceu ser uma mudança relativamente segura. Se no futuro houver alguma objeção eu posso pensar em voltar para o comportamento normal do BibLaTeX.
Quanto à minha solução, eu também não tenho a menor ideia do porquê dessas linhas, rs. Eu só olhei o código do próprio BibLaTeX e copiei o "heading" usado pro memoir, mudando apenas o título para \refname
em vez de \bibname
:
Mas, pesquisando agora rapidinho, me parece que o \markboth
e o \markright
têm a ver com o modo como o título do capítulo aparece no cabeçalho (quando aparece). Imagino que o \markboth
faça o título aparecer no cabeçalho das duas páginas quando elas estão lado a lado, algo assim. 🤷🏻♂️
Ah sim, eu não creio que tenha a ver com o biblatex-abnt
mesmo. E interessante isso dos usos do \refname
e \bibname
... concordo contigo! Aliás, separar o conteúdo da formatação é uma das vantagens do LaTeX, certo? Tudo bem, nesse caso o conteúdo do título é ditado pela norma, mas enfim... o que eu acho estranho é que não adianta executar um \renewcommand{\bibname}{Refer\^encias}
antes de \begin{document}
e eu não consegui descobrir o porquê. Se isso funcionasse, tava tudo certo. Eu só queria mudar o texto impresso, não mexer com o estilo. :(
Hmmm, entendi. Vou dar uma pesquisada a mais então sobre esses \mark...
e então incorporo à minha solução.
Muito agradecido! :)
P.S.: devemos fechar a issue?
Redefinir o comando não adianta porque o próprio BibLaTeX redefine outra vez pra usar as bibstrings dos arquivos ltx.
Então se o que você quer é redefinir o texto do comando você precisa redefinir a bibstring, mais ou menos assim:
\DefineBibliographyStrings{brazilian}{%
bibliography = {Referências},
}
Aí o BibLaTeX vai redefinir os comandos \bibname
e \refname
pra usar essas bibstrings:
Mas você vai ter redefinido a string bibliography
e ele vai usar o que você especificou.
Só que essas soluções não são muito boas por alguns motivos.
Em primeiro lugar, se você redefinisse o comando \bibname
diretamente, você perderia a localização… então o título seria "Referências" mesmo se o arquivo estivesse em inglês.
Se em vez de redefinir o comando diretamente você redefinir a bibstring, como eu falei, tem em primeiro lugar um problema semântico… a string bibliography
não deve ser Referências
em português, ela deve ser Bibliografia
mesmo. Só que o título não deve usar essa bibstring, e sim a references
.
Além disso, você teria que mudar a bibstring bibliography
pra todos os idiomas, sendo que existe uma bibstring adequada já traduzida (a references
).
Então o que acontece é que o BibLaTeX é mais esperto… em vez de usar os comandos \bibname
e \refname
de modo ingênuo, ele os redefine de acordo com as bibstrings, permitindo títulos diferentes em idiomas diferentes. Então o que você precisa mudar não é os comandos, e sim as bibstrings.
Só que no seu caso o que você quer mudar não é nem as bibstrings… o que você quer é que o título use a bibstring references
em vez da bibstring bibliography
. E isso foi o que eu fiz na minha solução: redefini o heading bibliography
, que é o padrão, pra usar \refname
e, consequentemente, a bibstring references
.
O código não precisa ser acrescentado necessariamente na classe, por sinal; você pode usar o código que eu mandei no seu preâmbulo.
Sobre esta issue, acho que o ideal é que isso seja resolvido na própria classe, então eu deixaria aberta. Mas fica a critério da equipe aqui da classe.
Entendi. De fato, definir \refname
como eu fiz no primeiro post é desnecessário.
Novamente, agradeço muito pela atenção! :smiley:
Sem problemas. 🍻
abnTeX2 com BibLaTeX emite título "Bibliografia" ao invés de "Referências"
Sistema Operacional: Fedora 28
latex --version
: pdfTeX 3.14159265-2.6-1.40.18 (TeX Live 2017) Versão do abnTeX2: 2016/02/26 v-1.9.6 Versão do Memoir: 2016/05/16 v3.7f Versão do BibLaTeX: 2016/09/17 v3.6 Versão do Biber: 2.6 Customização: na verdade, descobri o problema por estar escrevendo uma customização (uffstex).Descrição do problema
Apesar do abnTeX2 emitir o comando
\renewcommand{\bibname}{Refer\^encias}
dentro do\addto\captionsbrazil
, ao utilizá-lo com o BibLaTeX o valor do comando\bibname
não é respeitado. E por mais que executemos o\renewcommand
novamente, nada muda. Não consegui descobri porquê... há várias discussões na internet sobre Memoir + BibLaTeX, mas nada muito conclusivo. Pode ser algo com o Babel também, mas não faço ideia.Além disso, vale notar que o abnTeX2 implementa o título das referências através de um
\renewcommand{\bibsection}
. Porém, a documentação do BibLaTeX diz para utilizarmos o comando\defbibheading
(apesar de não relacionada, veja o início da primeira resposta dessa pergunta; na documentação mais recente, entretanto, a seção que explica isso é 3.14.2).MWE
Um exemplo de código "mínimo" pra reproduzir o problema é o seguinte:
E então no arquivo
refs.bib
:Melhoria
Para resolver isso, eu precisei fazer o seguinte: defini o comando
\refname
para usar ao invés do\bibname
(ele é usado em outras classes também) e reimplementei o trecho do\renewcommand{\bibsection}
com os comandos recomendados pela documentação do BibLaTeX (o conteúdo em si é o mesmo da definição original do abnTeX2).E então executando
\printbibliography[heading=abnt]
resulta no título correto. Porém, desta forma, um\renewcommand*{\refname}{<título>}
funciona só depois que o Babel executar os comandos especificados dentro do\captions<língua>
(após\begin{document}
, por exemplo).Note que executar
\renewcommand{\bibname}{Refer\^encias}
após obegin{document}
funciona, mas então cada usuário tem que fazer isso (e de acordo com a língua do documento). E fazer isso automaticamente na classe não funciona:Eu já acho essa solução uma baita gambiarra, mas sem
\addto\captionsbrazil
até tem efeito, só que daí não sei como filtrar pela língua selecionada e estraga a formatação da entrada no sumário.