Biber 和 Biblatex:参考书目中的参考

Biber 和 Biblatex:参考书目中的参考

我遇到了一个问题,我所有的谷歌搜索都让我束手无策。目前我正在准备我的论文,我正在结合使用 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。bblfoocommentbarbblfoofoofoobarclonesourcekey

请注意,新版本related:set提供了类似子条目的编号,但这些编号无法通过引用标签编号访问;必须像foo上面的条目一样直接引用各个相关条目。

相关内容