biblatex colorea cada elemento de un babero en un color diferente

biblatex colorea cada elemento de un babero en un color diferente

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 \DeclareFieldFormatlos campos relevantes.

Sin embargo, hay algunas advertencias:

  1. No todos los 'campos' soncampos. biblatexConoce campos, listas y listas de nombres. Estos tres tipos utilizan \Declare...Formatdirectivas diferentes. Entonces necesitas saber el tipo de tu campo.

  2. 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.

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 \DeclareFieldFormaty agregar un \color{...}comando en la definición. No olvides que puede haber varios \DeclareFieldFormatmensajes 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 publisherabajo.)

Los nombres son más complicados. Primero debe averiguar qué formato de nombre utiliza el nombre que desea colorear. authorutiliza el formato sortnameen style=authoryear. Y sortnamese 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 sortnameque sea coloured:family-given/given-familyde 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}

ingrese la descripción de la imagen aquí

Puede utilizar la opción Biber --validate-datamodelal compilar para ayudarle a comprobar si sus entradas se ajustan al modelo de datos.

información relacionada