
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 \DeclareFieldFormat
os campos relevantes.
Existem algumas ressalvas, no entanto,
Nem todos os 'campos' sãoCampos.
biblatex
conhece campos, listas e listas de nomes. Esses três tipos usam\Declare...Format
diretivas diferentes. Então você precisa saber o tipo do seu campoVocê 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.
- Mesmo que seja possível corrigir o formato do campo com
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 \DeclareFieldFormat
e adicionar um \color{...}
comando na definição. Não esqueça que pode haver vários tipos específicos \DeclareFieldFormat
para 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 publisher
abaixo.)
Os nomes são mais complicados. Você primeiro precisa descobrir qual formato de nome o nome que você deseja colorir usa. author
usa o formato sortname
em 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 sortname
para ser coloured:family-given/given-family
de 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}
Você pode usar a opção Biber --validate-datamodel
ao compilar para ajudá-lo a verificar se suas entradas estão em conformidade com o modelo de dados.