使用多种样式时 BibLaTeX 不稳定

使用多种样式时 BibLaTeX 不稳定

我使用 BibLaTeX 的两种不同的参考书目样式,一种是作者年份样式(用于出版物),另一种是简单的数字样式,用于在线参考,但 pdfLaTeX 始终无法稳定下来。问题是由于defernumbers/omitnumbers选项,我必须运行 pdflatex/biber/pdflatex/pdflatex 才能获得正确的数字(基本上,作者年份样式的参考文献在编号中不会被忽略,因此您需要运行 pdflatex 两次,以便让 BibLaTeX 重新计算正确的数字),但最后一次 pdflatex 运行将更改参考文献的文本大小的宽度,因此可能会更改分页符并将其他参考文献移动到其他页面,因此需要重新运行 pdflatex。如果 BibLaTeX(使用版本 2.4 + biber 1.4,但我认为我在另一台计算机上使用 2.5/1.5 时也遇到了同样的问题)没有循环行为,那就完全没问题了:再运行一次 pdfLaTeX 会将数字改回错误的数字,您必须再运行一次才能获得正确的数字……这会再次更改分页符,您就陷入困境了。以下几乎 MWE(我必须包含 @online 条目的替代环境和引用命令来演示该问题,不确定如何缩小它)展示了 defernumbers/omitnumbers 选项的循环行为,这是(我认为)我的问题的根本原因:

\documentclass{article}

\usepackage[style=authoryear,backend=biber,labelnumber,defernumbers]{biblatex}

\DeclareCiteCommand{\citeonline}[\mkbibbrackets]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{%
     \printfield{prefixnumber}%
     \printfield{labelnumber}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\defbibenvironment{online}
  {\list
     {\printtext[labelnumberwidth]{%
  \iffieldundef{shorthand}
    {\printfield{prefixnumber}%
     \printfield{labelnumber}}
    {\printfield{shorthand}}}}
     {\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}

\begin{filecontents*}{test.bib}
@article{TehAuthor2013,
  author = "TehAuthor",
  year = 2013,
  journal = "Random Thoughts about science",
  title = "Blablabla",
}
@online{TSE2011,
  author = "TSE",
  year = 2011,
  url = "http://tex.stackexchange.com/blabla",
}
\end{filecontents*}
\bibliography{test.bib}

\title{}
\begin{document}

\parencite{TehAuthor2013} \\
\parencite{TSE2011}

\printbibliography[heading=subbibliography,title={In print},nottype=online,omitnumbers]
\printbibliography[heading=subbibliography,title={Online},sorting=none,type=online,env=online]

\end{document}

这是一个值得报告的错误,还是我做错了什么?(我知道整个替代环境/子书目不是很漂亮,但它似乎可以完成工作,我还没有找到其他方法来做到这一点)

答案1

作为参考,这个问题已在 biblatex 2.6 beta 中修复。请参阅https://github.com/plk/biblatex/issues/70

相关内容