我使用具有 authoryear 样式的 biblatex,结果显示 @inproceedings 项目
...“标题”。在:书名. 第 123 卷。系列标题。
如何将其更改为:
...“标题”。在:书名,第 123 卷系列标题。
答案1
这个 hack 似乎可以达到目的:
\documentclass{article}
\usepackage{filecontents} % Just for the example
\usepackage[style=authoryear,backend=bibtex]{biblatex}
\DeclareFieldFormat[inproceedings]{volume}{Volume #1 of}
\DeclareFieldFormat[inproceedings]{series}{\mkbibemph{#1}}
\DeclareBibliographyDriver{inproceedings}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\setunit{\space}\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\usebibmacro{finentry}}
\addbibresource{\jobname.bib}
\begin{filecontents}{\jobname.bib}
@inproceedings{Author2013,
Title = {{A great paper}},
Author = {A Author},
Booktitle = {Booktitle},
Series = {Title of Series},
Volume = {1},
Year = {2013}
}
\end{filecontents}
\begin{document}
\cite{Author2013}
\printbibliography
\end{document}
我刚刚声明了volume
和的字段格式series
,并修改了驱动程序中的一行inproceedings
以更改单元末尾的标点符号。在这个简单的示例中,它可以工作,但我尚未检查当您有其他字段时它是否会引起麻烦,并且可能有更好的方法来实现它。