我用biblatex
它来引用重印本。我需要在 MWE 中更改以下内容:i) 显示页码的反向引用应位于最后(句点之后)ii) 重印书籍(test2)的年份应位于标题之后和括号之间。因此,我希望实现以下目标:
Foo, John (2012), Test 1. Helsinki:Blah Press. Rpt. as Test 2 (2013). Chicago: Baz Press. (cit. on p. 1)
以下是 MWE:
\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber,backref=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{foo12,
author = {John Foo},
title = {Test 1},
year = {2012},
publisher = {Blah Press},
address = {Helsinki},
related = {foo13},
relatedtype = {reprintas}
}
@Book{foo13,
author = {John Foo},
title = {Test 2},
year = {2013},
publisher = {Baz Press},
address = {Chicago},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\textcite{foo12}
\printbibliography
\end{document}
答案1
这是一个解决方案,首先我们创建 bib 宏的副本pageref
并调用它mypageref
(复制自biblatex.def
)
\newbibmacro*{mypageref}{%
\iflistundef{pageref}
{}
{\printtext[parens]{%
\ifnumgreater{\value{pageref}}{1}
{\bibstring{backrefpages}\ppspace}
{\bibstring{backrefpage}\ppspace}%
\printlist[pageref][-\value{listtotal}]{pageref}}}}
然后我们清空定义pageref
\renewbibmacro{pageref}{}
最后,我们指示使用钩子在引用的末尾使用新定义finentry
。
\renewbibmacro{finentry}{\setunit{\bibpagerefpunct}\newblock\usebibmacro{mypageref}\finentry}
要更改重印本的外观,必须提供related:reprints
宏定义。这是它的简化版本(它不检查作者是否相同,不包含有关最终编辑者的信息,...)
\newbibmacro{related:reprintas}[1]{
\entrydata{#1}{
\printfield{title}
\mkbibparens{\printdate}
\setunit{\adddot\addspace}
\clearfield{date}
\usebibmacro{publisher+location+date}
}
}
PS:将后引文献移到重印本之后,会让人无法理解在给出后引文献的页面上引用的是原始作品还是重印本。