我最近迁移到了,biblatex
并试图了解调整参考书目中参考文献外观的多种可能性。例如,对于集合中具有特定条目的作品,我想更改其在参考书目中volume
的外观。volume
我参与了renewbibmacro
建设。因此,我在文档的序言中添加了
\renewbibmacro*{volume}{%
\printtext{VOLUMEMACRO}\space\printfield{volume}%
}%
这没有产生任何结果,而使用 didDeclareFieldFormat
却有效:
\DeclareFieldFormat{volume}{\printtext{VOLUMEDECLARE} #1}
但是,它不适用于volume
中的字段article
。当我使用renewbibmacro
for时author
,它对 有效article
:
\renewbibmacro*{author}{%
\printtext{anon}%
}
我搜索了这个论坛和biblatex
手册,但找不到关于如何使用这些函数的简明概述renewbibmacro
。DeclareFieldFormat
因此,我自己发布了这篇文章。所以我很想了解这种结构的用法,以及哪些字段可以通过这种方式更改,哪些字段不能通过这种方式更改。
表明MWE
forDeclareFieldFormat
仅volume
适用于collection
,并且renewbibmacro
forauthor
有效:
\documentclass[10pt, english]{report}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=authoryear]{biblatex}
\begin{filecontents}{abib.bib}
@article{some:article:1964,
author = "Mister Smart",
title = {A very difficult narrative of sub-atomic particles in the diary of Louis XIV},
journal = {Journal for Advanced Thinking},
volume = "41",
number = "3",
year = "1964",
pages = "307--323"
}
@collection{collection:mass:histroical:vol1,
options = useeditor,
title = {Collections of the Massachusetts Historical Society},
volume = {i},
series = {third series},
address = {Boston},
year = 1896,
sorttitle = {Collections of the Massachusetts Historical Society},
shorthand = {Collections MHS Vol.~1},
publisher = {Massachusetts Historical Society}
}
\end{filecontents}
\addbibresource{./abib.bib}
\DeclareFieldFormat{volume}{\printtext{VOLUMEDECLARE} #1}
%\newbibmacro*{volume}{%
% \printtext{VOLUMEMACRO}\space\printfield{volume}%
%}%
\renewbibmacro*{author}{%
\printtext{anon}%
}
\begin{document}
Test ~\textcite{some:article:1964} and~\textcite{collection:mass:histroical:vol1}.
\printbibliography
\end{document}
答案1
你必须区分bibmacros
、其field formats
和bibdrivers
。
- bibdrivers(文件 standard.bbx)是打印出不同条目的宏,其中每个条目类型(如书籍,文章;除了熟悉的)有自己的宏。
bibmacros 是 biblatex基本的宏,即为一个特定主题收集数据:如果没有给出作者,
author
则可能需要用该信息替换打印的信息。editor
字段格式在较低级别上起作用。它们是为特定输入设置的字段(作者、标题、年份),而 bibmacros/bibdrivers 将它们拼凑在一起。您可以为所有条目类型全局设置字段格式,也可以仅为特定条目类型设置字段格式,即仅强调条目类型书籍的标题字段(只需将其设置在方括号中)。
对于您的 MWE/代码片段:
\renewbibmacro*{volume}{%
\printtext{VOLUMEMACRO}\space\printfield{volume}%
}%
该代码片段不会执行任何操作,因为 a) 从未volume
声明过宏,并且 b) 声明宏没有多大意义,因为它只打印出信息 + 基本字符串。
\DeclareFieldFormat{volume}{\printtext{VOLUMEDECLARE} #1}
这是正确的做法,因为volume
是场地...
但:如果您希望所有条目类型都采用该格式,包括已经设置的格式,则必须使用带星号的版本覆盖所有现有格式:
\DeclareFieldFormat*{volume}{\printtext{VOLUMEDECLARE} #1}
下面的代码片段没有意义,因为它用您的anon
字符串替换了所有作者信息:
\renewbibmacro*{author}{%
\printtext{anon}%
}