
Я использую biblatex (с xelatex). Если быть точнее, я использую Zotero, а затем экспортирую из Zotero в формат bib.
Все работает отлично, но моя библиография только черного цвета. Конечно, это нормальное поведение... Однако моя цель — раскрасить каждый элемент нагрудника по-разному в целях тестирования, чтобы убедиться, что я не забыл какой-либо элемент нагрудника, например «объем». Например, я хотел бы применить следующий цветовой код.
volume -> dark blue
pages -> turqoise
url -> brown
title -> red
isbn -> yellow
booktitle -> pink
publisher -> orange
author -> grey
date -> black
Можно ли сделать это ?
решение1
Вы можете изменить способ отображения поля с помощью \DeclareFieldFormat
.
Поэтому все, что вам нужно сделать, это переопределить \DeclareFieldFormat
соответствующие поля.
Однако есть несколько оговорок:
Не все «поля»поля.
biblatex
знает поля, списки и списки имен. Эти три типа используют разные\Declare...Format
директивы. Поэтому вам нужно знать тип вашего поляВам нужно знать исходное определение, если вы не хотите полностью его переопределять. Я предполагаю, что вы все еще хотите курсив и кавычки, как обычно, только цвет должен измениться.
- Несмотря на то, что можно исправить формат поля с помощью
xpatch
's\xpretofieldformat
, вам нужно знать, получают ли какие-либо типы специальную обработку. Поскольку можно исправить только общий или специфичный для типа формат, но никогда оба одновременно.
- Несмотря на то, что можно исправить формат поля с помощью
Для стандартных стилей большинство директив форматирования можно найти в biblatex.def
.
Для полей это должно быть так же просто, как поиск поля, копирование \DeclareFieldFormat
и добавление \color{...}
команды в определение. Не забывайте, что может быть несколько специфичных для типа \DeclareFieldFormat
s для одного и того же поля (в стандартных стилях вы должны найти их рядом друг с другом).
Для списков вы сделаете то же самое, но вам нужно будет искать \DeclareListFormat
. (См. publisher
ниже.)
Имена более сложные. Сначала вам нужно выяснить, какой формат имени использует имя, которое вы хотите раскрасить. author
использует формат sortname
в style=authoryear
. И sortname
определяется как family-given/given-family
. Поэтому мы копируем определение family-given/given-family
, называем его coloured:family-given/given-family
, добавляем \colour{...}
и говорим, sortname
что coloured:family-given/given-family
с этого момента будет.
\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}
При компиляции вы можете использовать опцию Biber, --validate-datamodel
которая поможет вам проверить, соответствуют ли ваши записи модели данных.