我有一份文档,需要多个参考书目:一个是我自己按时间顺序排列的出版物,并带有数字引用;另一个是其他出版物,并按作者姓名的字母顺序排列引用。
这似乎是的典型场景biblatex
,因此我尝试使用多个类别和多个 refcontext:
% !TeX TS-program = pdflatex
% !TeX encoding = UTF-8
% !TeX spellcheck = en_US
% !TeX TXS-program:bibliography = txs:///biber
% !BIB program = biber
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage[backend=biber, safeinputenc=true, style=alphabetic, labelnumber=true, defernumbers=true, maxbibnames=99]{biblatex}
\addbibresource{references.bib}
% Filter categories by author
% https://tex.stackexchange.com/questions/28509/biblatex-filter-out-publications-from-a-specific-author-in-the-references-dynam
\DeclareBibliographyCategory{mine}
\DeclareIndexNameFormat{mine}{%
\nameparts{#1}%
\ifdefstring{\namepartfamily}{\"{A}}{%
\addtocategory{mine}{\thefield{entrykey}}}{}
}
\AtDataInput{%
\indexnames[mine]{author}}
% Different citation styles for own and other publictions
% https://tex.stackexchange.com/questions/299064/biblatex-two-bibliographies-with-different-styles-and-sortings
\renewbibmacro*{cite}{%
\printtext[bibhyperref]{%
\printfield{labelprefix}%
\ifcategory{mine}
{\printfield{labelnumber}}
{\printfield{labelalpha}%
\printfield{extraalpha}}}}
\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}
\defbibenvironment{mineenv}
{\list
{\printtext[labelnumberwidth]{%
\printfield{prefixnumber}%
\printfield{labelnumber}}}
{\setlength{\labelwidth}{\labelnumberwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}%
\renewcommand*{\makelabel}[1]{\hss##1}}
{\endlist}
{\item}
\usepackage{hyperref}
\begin{document}
\cite{othersZ}
\cite[8]{mineB}
\cite{othersY}
\cite{mineA, mineAErratum}
\cite{othersX}
\printbibheading
\newrefcontext[sorting=ynt]
\printbibliography[category=mine, heading=subbibliography, env=mineenv, title={My Publications (chronologically)}]
\newrefcontext[sorting=nty]
\printbibliography[notcategory=mine, heading=subbibliography, title={Other References (alphabetically)}]
\end{document}
参考书目文件references.bib
:
@article{mineA,
title={A},
author={Guy, Some Other and Ä, Myself},
journal={Some Journal},
date={2020-02-12},
addendum={Corrected in \cite{mineAErratum}},
}
@article{mineAErratum,
title={Erratum to \enquote{A}},
author={Guy, Some Other and Ä, Myself},
journal={Unpublished},
year={2020},
addendum={Erratum to \cite{mineA}},
}
@article{mineB,
title={B},
author={Else, Someone and Ä, Myself},
journal={Another Journal},
date={2020-02-24},
volume={123},
}
@article{mineC,
title={C},
author={Again, Someone and Ä, Myself},
journal={YAJ},
year={2018},
}
@article{othersX,
author="A, B and X, y",
title="Important work",
year="2018",
journal="Important Journal",
}
@article{othersY,
author="Zz, Aa",
title="Also Important work",
year="1998",
journal="Also Important Journal",
}
@article{othersZ,
author="A, B and Zz, Aa",
title="Not so important work",
year="2000",
journal="Not So Important Journal",
}
问题是,[0]
除参考书目中的数字引用外,所有数字引用都显示为。我认为问题是第二个 refcontext 覆盖了第一个 refcontext 分配的数字。
biblatex 2016/03/03 v3.3 (TeX Live 2015) 存在此问题
更新:评论 (由 moewe 提出) 指出此行为已在新版本的 TeX Live 中修复。
最初,我以为 Ubuntu 16.04 LTS 运行的是 TeX Live 2016。但事实证明它实际上使用的是 TeX Live 2015。当我使用 TeX Live 2016 运行上述示例时,它运行正常。所以我希望它最终也能在 arXiv 上运行。
我留下这个问题是因为有人可能知道如何缓解 TeX Live 2015 中的问题,而且也许有人遇到过同样的问题。
答案1
这是一个问题biblatex
,已在 v3.4 中修复。一些相关的错误报告:https://github.com/plk/biblatex/issues/386,https://github.com/plk/biblatex/issues/396。
不幸的是,v3.4 中对此问题的修复包括对 refcontext 内部进行一些严重的重新设计,因此我们无法从提交日志中复制简单的一行修复。
我并不怀疑可以修复 v3.3,但考虑到这个版本biblatex
已经有四年多了,而且 arXiv 也不支持,所以我真的不明白这有什么意义。