
Estoy usando biblatex (con xelatex). Para ser más específico uso Zotero y luego exporto de Zotero al formato babero.
Todo funciona bien pero mi bibliografía solo está en color negro. Ese es el comportamiento normal, por supuesto... Sin embargo, mi objetivo es colorear cada elemento del babero de manera diferente para fines de prueba y así asegurarme de no olvidar ningún elemento del babero como "volumen". Por ejemplo, me gustaría aplicar el siguiente código de color.
volume -> dark blue
pages -> turqoise
url -> brown
title -> red
isbn -> yellow
booktitle -> pink
publisher -> orange
author -> grey
date -> black
Es posible hacer esto ?
Respuesta1
Puede cambiar la forma en que se muestra un campo con \DeclareFieldFormat
.
Entonces todo lo que tienes que hacer es redefinir \DeclareFieldFormat
los campos relevantes.
Sin embargo, hay algunas advertencias:
No todos los 'campos' soncampos.
biblatex
Conoce campos, listas y listas de nombres. Estos tres tipos utilizan\Declare...Format
directivas diferentes. Entonces necesitas saber el tipo de tu campo.Necesita conocer la definición original si no desea anularla por completo. Supongo que todavía quieres cursiva y comillas como de costumbre, solo debería cambiar el color.
- Aunque es posible parchear el formato de campo con
xpatch
's\xpretofieldformat
, es necesario saber si algún tipo recibe un tratamiento especial. Porque sólo puedes parchear el formato general o el de tipo específico, pero nunca ambos al mismo tiempo.
- Aunque es posible parchear el formato de campo con
Para los estilos estándar, la mayoría de las directivas de formato se pueden encontrar en biblatex.def
.
Para los campos, esto debería ser tan fácil como buscar el campo, copiarlo \DeclareFieldFormat
y agregar un \color{...}
comando en la definición. No olvides que puede haber varios \DeclareFieldFormat
mensajes de correo electrónico de tipo específico para el mismo campo (en los estilos estándar deberías encontrarlos uno al lado del otro).
Para las listas haría algo similar, pero buscaría \DeclareListFormat
. (Vea publisher
abajo.)
Los nombres son más complicados. Primero debe averiguar qué formato de nombre utiliza el nombre que desea colorear. author
utiliza el formato sortname
en style=authoryear
. Y sortname
se define como family-given/given-family
. Entonces copiamos la definición de family-given/given-family
, lo llamamos coloured:family-given/given-family
, agregamos \colour{...}
y le decimos sortname
que sea coloured:family-given/given-family
de ahora en adelante.
\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}
Puede utilizar la opción Biber --validate-datamodel
al compilar para ayudarle a comprobar si sus entradas se ajustan al modelo de datos.