biblatex ビブの各要素を異なる色で色付けする

biblatex ビブの各要素を異なる色で色付けする

私は biblatex (xelatex 付き) を使用しています。具体的には、Zotero を使用して、Zotero から bib 形式にエクスポートします。

すべて正常に動作しますが、参考文献は黒色のみです。もちろん、これは正常な動作です...ただし、私の目的は、テスト目的で各 bib 要素を異なる色にして、'volume' などの bib の要素を忘れていないことを確認することです。たとえば、次のカラー コードを適用します。

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

これは可能ですか?

答え1

フィールドの表示方法は で変更できます\DeclareFieldFormat

\DeclareFieldFormatしたがって、関連するフィールドを再定義するだけです。

ただし、いくつか注意点があります。

  1. すべての「分野」が田畑.biblatexフィールド、リスト、名前リストを認識できます。これら3つのタイプは異なる\Declare...Formatディレクティブを使用します。したがって、フィールドのタイプを知る必要があります。

  2. 完全に上書きしたくない場合は、元の定義を知っておく必要があります。ここでは、通常どおり斜体と引用符を使用し、色のみを変更することを想定しています。

    • xpatchフィールド形式を'sを使用してパッチすることは可能ですが\xpretofieldformat、特別な処理が必要な型があるかどうかを知る必要があります。パッチできるのは一般的な形式か型固有の形式のみであり、両方を同時にパッチすることはできないためです。

標準スタイルの場合、ほとんどの書式設定ディレクティブは にありますbiblatex.def

フィールドの場合、これはフィールドを検索し、 をコピーして定義にコマンド\DeclareFieldFormatを追加するのと同じくらい簡単です。同じフィールドに複数のタイプ固有の が存在する可能性があることを忘れないでください (標準スタイルでは、それらは互いに隣り合って表示されます)。\color{...}\DeclareFieldFormat

リストの場合も同様のことを行いますが、 を検索します\DeclareListFormat。(publisher下記参照)

名前はより複雑です。まず、色付けしたい名前がどの名前形式を使用しているかを調べる必要があります。は のauthor形式を使用します。また、は として定義されます。したがって、 の定義をコピーしてと呼び、 を追加して、今後は となるように指示します。sortnamestyle=authoryearsortnamefamily-given/given-familyfamily-given/given-familycoloured:family-given/given-family\colour{...}sortnamecoloured: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と、エントリがデータ モデルに準拠しているかどうかを確認できます。

関連情報