\printbibliography 中项目的选择性格式化 - 在 \defbibenvironment 中执行 \bibcheck?

\printbibliography 中项目的选择性格式化 - 在 \defbibenvironment 中执行 \bibcheck?

我想在使用 \printbibliography 时有选择地更改单个参考文献的样式,以便可以突出显示特色出版物。

  1. 是否有一种优雅的方法可以使用库来实现这一点?

  2. 如果没有,我怎样才能使这段代码发挥作用?

具体来说,如何定义过滤器自定义字段在 biblatex 中?

我怎样才能在 if 条件中应用这个过滤器定义环境

  \defbibcheck{featuredPublications}{
%  TODO: filter according to custom field feature=true
}

\defbibenvironment{bibliography}
  {\inparaitem}
  {\unspace\endinparaitem}
  {\ifthenelse{\boolean{\bibcheck{featuredPublications}}} % <-- This does not work!! 
    {\item \faStar}
    {\item}
   }

谢谢!

答案1

Bibchecks 仅用于过滤参考书目列表,即控制在参考书目列表中显示和不显示哪些条目。它们不能用于影响参考书目中条目的格式。但是 bibchecks 只是从普通biblatex宏构建的,如果您想格式化内容,可以直接使用这些宏。

将特定条目标记为特殊条目的一个非常简单的方法是使用条目选项。条目选项在字段中给出options,因此这并不是您在问题中想到的语法,但优点是它无需在自定义数据模型中定义自定义字段即可工作,因此开销要小得多。

通常的方法是让选项设置一个切换开关,以便稍后进行测试。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{fontawesome5}
\usepackage[backend=biber, style=authoryear]{biblatex}

\newtoggle{bbx:featured}
\DeclareEntryOption[boolean]{feature}[true]{\settoggle{bbx:featured}{#1}}

\renewbibmacro*{begentry}{%
  \iftoggle{bbx:featured}
    {\faStar}
    {}%
}

\begin{filecontents}{\jobname.bib}
@book{elk,
  author    = {Anne Elk},
  title     = {A Theory on Brontosauruses},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
  options   = {feature=true},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,elk}

\printbibliography
\end{document}

两个条目,其中一个带有星号。


如果你坚持使用自定义字段,可以这样做

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{fontawesome5}

\begin{filecontents}{featured.dbx}
\DeclareDatamodelFields[type=field,datatype=literal]{feature}
\DeclareDatamodelEntryfields{feature}
\end{filecontents}

\usepackage[backend=biber, style=authoryear, datamodel=featured]{biblatex}


\renewbibmacro*{begentry}{%
  \iffieldequalstr{feature}{true}
    {\faStar}
    {}%
}

\begin{filecontents}{\jobname.bib}
@book{elk,
  author    = {Anne Elk},
  title     = {A Theory on Brontosauruses},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
  feature   = {true},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,elk}

\printbibliography
\end{document}

给出文件中具有特定属性的条目的条目键列表的通常方法.tex是通过参考书目类别。

首先,使用 声明一个新类别\DeclareBibliographyCategory。然后,您可以使用 向类别添加条目\addtocategory,其第二个参数接受以逗号分隔的条目键列表。在 bibmacros 中,您可以使用 检查条目是否属于类别\ifcategory。使用 选项可以轻松按类别过滤书目(无需 bibcheck)category

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{fontawesome5}
\usepackage[backend=biber, style=authoryear]{biblatex}

\DeclareBibliographyCategory{featured}
\addtocategory{featured}{elk,worman,geer}

\renewbibmacro*{begentry}{%
  \ifcategory{featured}
    {\faStar}
    {}%
}

\begin{filecontents}{\jobname.bib}
@book{elk,
  author    = {Anne Elk},
  title     = {A Theory on Brontosauruses},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,elk}

\printbibliography
\end{document}

相关内容