评论

评论

我尝试了几天使用 biblatex 完成以下任务:

我需要两个参考书目,其条目前面应有一个字母,例如“A”。第二个参考书目应从第一个继续编号,即应为


第一本参考书目

[A1] 一些参考

[A2] 其他参考

第二份参考书目

[A3] 第三个参考

[A4] 以及最后一个参考

主要参考书目

[1] 参考

[2] 另参考文献

[3]等等


我用于测试的 MWE:

\begin{document\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[sorting=none,backend=bibtex8]{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}

\nocite{aristotle:physics,aristotle:poetics,nussbaum,pines,vangennep,wassenberg}

\printbibliography[keyword=primary, title={primary}, prefixnumbers={A}]
\printbibliography[keyword=secondary, title={secondary}, prefixnumbers={A}]
\printbibliography[notkeyword=primary,notkeyword=secondary, title={other},resetnumbers]

\end{document}

我阅读了有关 biblatex 的 defernumbers 和 resetnumbers 选项的手册。也许我理解错了... 到目前为止,我尝试过:

  • 未设置全局选项导致 [A1]、[A2]、[A3]、[A4]、[5]、[6]、...(以及应全局设置为“true”defernumbers的警告...)defernumbers
  • defernumbers=true结果为 [A1], [A2], [A1], [A2], [1], [2], ...
  • resetnumbers没有任何效果,无论是否defernumbers为真或假(在后一种情况下显然是全局选项是 的要求resetnumbers)。如果我尝试重置第二个前缀书目的编号,它也不会产生任何效果(据我所知,resetnumbers 隐含在 prefixnumbers 中……)

实现上述书目的唯一方法是通过定义不同的 bib-environments 来实现,例如使用 Biblatex 的前缀数字时覆盖隐式重置数字?!

没有biblatex解决方案?我甚至尝试了开发版本 3.0,但无济于事……

任何有关该问题的提示都值得赞赏

答案1

\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[sorting=none,backend=biber,defernumbers]{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}

\cite{aristotle:physics,aristotle:poetics,nussbaum,pines,vangennep,wassenberg}

\makeatletter
\begingroup
\def\blx@prefixnumbers{A}
\printbibliography[keyword=primary, title={primary}]
\printbibliography[keyword=secondary, title={secondary}]
\endgroup

\printbibliography[notkeyword=primary,notkeyword=secondary, title={other},resetnumbers]

\end{document}

评论

  • 我改用了 biber,没有用 bibtex8 测试
  • 测试前删除辅助文件 - biblatex 将标签值存储在那里,并且它们可以非常持久。

在此处输入图片描述

答案2

这确实是一个错误。它已在 biblatex 3.5(需要 biber 2.6)中得到修复(两者目前都在 Sourceforge 的 DEV 中)。现在可以指定resetnumbers=false为正常以抑制隐式重置。我考虑过撤销这个隐式重置,但我明白为什么要实施它 - 人们通常会期望前缀的更改(或者仅仅是前缀的存在,即使它与以前的参考书目前缀相同)会重置编号。不幸的是,实现相当简单,因为重置发生在任何前缀是在 a 时设置的,\printbibliography并且前缀的更改未被跟踪。我认为不值得跟踪前缀的更改,因此您可以通过明确不重置以自然的方式简单地覆盖行为,这似乎是每个人都希望能够做到的。更新的解决方案biblatex 3.3+是:

\documentclass[a4paper,12pt]{article}

\usepackage[sorting=none, defernumbers]{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}

\nocite{aristotle:physics,aristotle:poetics,nussbaum,pines,vangennep,wassenberg}
\newrefcontext[labelprefix=A]
\printbibliography[keyword=primary, title={primary}]
\printbibliography[keyword=secondary, title={secondary}, resetnumbers=false]
\newrefcontext
\printbibliography[notkeyword=primary,notkeyword=secondary, title={other}, resetnumbers]

\end{document}

resetnumbers请注意最后的必要性,\printbibliography因为平原\newrefcontext清空了labelprefix停止隐式重置。

相关内容