biblatex colore cada elemento de um babador com uma cor diferente

biblatex colore cada elemento de um babador com uma cor diferente

Estou usando biblatex (com xelatex). Para ser mais específico eu uso o Zotero e depois exporto do Zotero para o formato babador.

Tudo funciona bem, mas minha bibliografia é apenas na cor preta. Esse é o comportamento normal, claro... No entanto, meu objetivo é colorir cada elemento do babador de maneira diferente para fins de teste, a fim de ter certeza de que não esqueci um elemento do babador, como 'volume'. Por exemplo, gostaria de aplicar o seguinte código de cores.

    volume -> dark blue
    pages -> turqoise
    url -> brown
    title -> red
    isbn -> yellow
    booktitle -> pink
    publisher -> orange
    author -> grey
    date -> black

É possível fazer isso ?

Responder1

Você pode alterar a forma como um campo é exibido com \DeclareFieldFormat.

Portanto, tudo que você precisa fazer é redefinir \DeclareFieldFormatos campos relevantes.

Existem algumas ressalvas, no entanto,

  1. Nem todos os 'campos' sãoCampos. biblatexconhece campos, listas e listas de nomes. Esses três tipos usam \Declare...Formatdiretivas diferentes. Então você precisa saber o tipo do seu campo

  2. Você precisa saber a definição original se não quiser substituí-la completamente. Presumo aqui que você ainda deseja itálico e aspas como de costume, apenas a cor deve mudar.

    • Mesmo que seja possível corrigir o formato do campo com xpatch's \xpretofieldformat, você precisa saber se algum tipo recebe tratamento especial. Porque você só pode corrigir o formato geral ou específico do tipo, mas nunca os dois ao mesmo tempo.

Para os estilos padrão, a maioria das diretivas de formatação podem ser encontradas em biblatex.def.

Para campos, isso deve ser tão fácil quanto pesquisar o campo, copiar \DeclareFieldFormate adicionar um \color{...}comando na definição. Não esqueça que pode haver vários tipos específicos \DeclareFieldFormatpara o mesmo campo (nos estilos padrão você deve encontrá-los um ao lado do outro).

Para listas, você faria algo semelhante, mas procuraria por \DeclareListFormat. (Veja publisherabaixo.)

Os nomes são mais complicados. Você primeiro precisa descobrir qual formato de nome o nome que você deseja colorir usa. authorusa o formato sortnameem style=authoryear. E sortnameé definido como family-given/given-family. Então copiamos a definição de family-given/given-family, chamamos coloured:family-given/given-family, adicionamos \colour{...}e dizemos sortnamepara ser coloured:family-given/given-familyde agora em diante.

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}

\usepackage[svgnames]{xcolor}

\DeclareFieldFormat{volume}{\color{DarkBlue}\bibstring{volume}~#1}% volume of a book
\DeclareFieldFormat[article,periodical]{volume}{\color{DarkBlue}#1}% volume of a journal

\DeclareFieldFormat{pages}{\color{Turquoise}\mkpageprefix[bookpagination]{#1}}

\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\color{Brown}\url{#1}}

\DeclareFieldFormat{title}{\color{Red}\mkbibemph{#1}}
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\color{Red}\mkbibquote{#1\isdot}}
\DeclareFieldFormat
  [suppbook,suppcollection,suppperiodical]
  {title}{\color{Red}#1}

\DeclareFieldFormat{isbn}{\mkbibacro{ISBN}\addcolon\space \color{Yellow}#1}

\DeclareFieldFormat{booktitle}{\color{Pink}\mkbibemph{#1}}

\DeclareListFormat{publisher}{%
  \color{Orange}%
  \usebibmacro{list:delim}{#1}%
  #1\isdot
  \usebibmacro{list:andothers}}

\DeclareNameFormat{coloured:family-given/given-family}{%
  \color{Grey}%
  \ifnumequal{\value{listcount}}{1}
    {\ifgiveninits
       {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}%
     \ifboolexpe{%
       test {\ifdefvoid\namepartgiven}
       and
       test {\ifdefvoid\namepartprefix}}
       {}
       {\usebibmacro{name:revsdelim}}}
    {\ifgiveninits
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
  \usebibmacro{name:andothers}}

\DeclareNameAlias{sortname}{coloured:family-given/given-family}

\begin{document}
\cite{sigfridsson,vizedom:related,westfahl:space,worman,geer,nussbaum,ctan}
\printbibliography
\end{document}

insira a descrição da imagem aqui

Você pode usar a opção Biber --validate-datamodelao compilar para ajudá-lo a verificar se suas entradas estão em conformidade com o modelo de dados.

informação relacionada