我想在使用 \printbibliography 时有选择地更改单个参考文献的样式,以便可以突出显示特色出版物。
是否有一种优雅的方法可以使用库来实现这一点?
如果没有,我怎样才能使这段代码发挥作用?
具体来说,如何定义过滤器自定义字段在 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}