我遇到了一个问题,我所有的谷歌搜索都让我束手无策。目前我正在准备我的论文,我正在结合使用 biblatex 和 biber。
处理条目类型时,set
一切都运行良好。现在出现了以下问题:我首先引用了一本书,然后这本书将成为 的一部分set
,我可以在其中添加对此和其他一些引用的评论。例如:
这里是本书的引用位置。[foo] 一些其他文本,以及更多引用。[baz,biz,buz] 然后是更多文本和对一组参考文献的引用。[foobar]
现在参考书目应该显示如下:
[foo] 作者,标题...
[baz] 作者、标题...
[biz] 作者、标题...
[buz] 作者、标题...
[foobar] a) [foo] b) 评论 c) 作者,标题...(来自 [bar1]) d) 作者,标题...(来自 [bar2]) d) ...
显然这是不可能的,因为输出会自动更改为引用集合的成员:
这里是本书的引用位置。[foobar-a] 一些其他文本,以及更多引用。[baz,biz,buz] 然后是更多文本和对一组参考文献的引用。[foobar]
以及参考书目:
[baz] 作者、标题...
[biz] 作者、标题...
[buz] 作者、标题...
[foobar] a) 作者,标题...(属于 [foo])b) 评论 c) 作者,标题...(属于 [bar1])d) 作者,标题...(属于 [bar2])d) ...
我知道可以通过创建类型条目来解决这个问题misc
,其中 note 命令引用实际的书籍:
@MISC{foo-ref,
note = {\cite{foo}}
}
并将它们纳入集合中。我可以这样做,但我更愿意找到一个更优雅的解决方案。
浏览 biblatex 手册时,我找不到可以完成我的目标的选项,或者也许我错过了它(它有点庞大。)
因此,如果有人有更好的解决方案,我将非常感激。
编辑: 以下是 MWE:
\RequirePackage{filecontents}
\begin{filecontents}{test.bib}
@BOOK{foo,
title = {Foo},
publisher = {the Press},
year = {3000},
author = {the Foo},
}
@ARTICLE{baz,
author = {the Baz},
title = {Baz},
journal = {J. of Baz},
year = {3001},
volume = {1},
pages = {22},
}
@ARTICLE{buz,
author = {the Buz},
title = {Buz},
journal = {J. of Buz},
year = {3001},
volume = {1},
pages = {22},
}
@MISC{comment,
note = {a comment},
}
@BOOK{bar,
title = {Bar},
publisher = {the Press},
year = {3002},
author = {the Bar},
}
@SET{foobar,
entryset = {foo,comment,bar},
}
\end{filecontents}
\documentclass[12pt,final]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[german=quotes
]{csquotes}
\usepackage[backend=biber,
sorting=none,
style=numeric-comp,
style=chem-angew,
subentry=true,
maxcitenames=5,mincitenames=4,
maxbibnames=99,
backref=true,
natbib=true
]{biblatex}
\addbibresource{test.bib}
\begin{document}
Here is where the book is cited.\autocite{foo}
Some other Text, with some more citations.\autocite{baz,buz}
Then some more text and reference to a set of references.\autocite{foobar}
\printbibliography
\end{document}
结果如附图所示(顶部)。通过变通方法,我得到了我想要的(底部)。但这显然不是一个优雅的解决方案,正如反向引用所见,它们指向参考书目条目1(但我可以接受。)
答案1
biblatex 2.0 引入了 biber-only 相关条目功能。它提供了一种灵活的条目分组方式。默认输出类似于subentry
禁用的条目集,但可以通过relatedtype
字段进行自定义。此字段指定用于设置字段中给出的条目的本地化字符串、格式指令和参考书目宏related
。在下面的示例中,定义了一个relatedtype
名为的新键。set
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=chem-angew,backref,subentry,citetracker]{biblatex}
\usepackage[colorlinks]{hyperref}
% Access internal back-reference command
\makeatletter
\newcommand*{\mkbibbackref}[1]{\blx@backref{#1}}
\makeatother
% Customize output for related entries of the type set
\newbibmacro*{related:set}[1]{%
\ifbool{bbx:subentry}
{\printtext[parens]{\alph{bbx:relatedcount}}%
\printunit*{\addnbspace}}
{}%
\entrydata{#1}{%
\ifentryseen{\thefield{clonesourcekey}}
{\entrydata{\thefield{clonesourcekey}}{%
\mkbibbackref{\thefield{entrykey}}%
\printtext[brackets]{\printfield{prefixnumber}\printfield{labelnumber}}}}
{\usedriver{}{\thefield{entrytype}}}}}
% Move back-references for related entries of the type set to the end of the item
\AtEveryBibitem{%
\iffieldequalstr{relatedtype}{set}
{\renewcommand*{\relateddelim}{\addsemicolon\space}%
\savelist*{pageref}{\savedpageref}%
\clearlist{pageref}}
{}}
\renewbibmacro*{finentry}{%
\restorelist{pageref}{\savedpageref}%
\setunit*{\space}%
\usebibmacro{pageref}%
\finentry}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{foo,
title = {Foo},
publisher = {the Press},
year = {3000},
author = {the Foo}}
@ARTICLE{baz,
author = {the Baz},
title = {Baz},
journal = {J. of Baz},
year = {3001},
volume = {1},
pages = {22}}
@ARTICLE{buz,
author = {the Buz},
title = {Buz},
journal = {J. of Buz},
year = {3001},
volume = {1},
pages = {22}}
@MISC{comment,
note = {a comment}}
@BOOK{bar,
title = {Bar},
publisher = {the Press},
year = {3002},
author = {the Bar}}
@MISC{foobar,
related = {foo,comment,bar},
relatedtype = {set}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Here is where the book is first cited.\autocite{foo} \clearpage
Reference to a set of references.\autocite{foobar} \clearpage
More citations.\autocite{baz,buz} \clearpage
Another citation to the book.\autocite{foo}
\printbibliography
\end{document}
每个相关条目的输出都由新的related:set
参考书目宏定制。启用时,它会打印相关条目计数器(“(a)”、“(b)”等)subentry
,并根据条目的引用状态,打印条目的数字标签或由 给出的“详细”标签\usedriver
。
当相关条目集被引用时,会为、和生成foobar
三个条目。这些条目被“克隆”并被赋予新的哈希生成的条目键,以避免与直接引用冲突。因此,此处的文件有两个单独的条目- 一个由直接引用生成,另一个由引用生成。克隆条目的原始键由字段提供,该字段已引入 biblatex 2.6。bbl
foo
comment
bar
bbl
foo
foo
foobar
clonesourcekey
请注意,新版本related:set
提供了类似子条目的编号,但这些编号无法通过引用标签编号访问;必须像foo
上面的条目一样直接引用各个相关条目。