避免使用 biblatex ibid 引用样式进行无限次编译?

避免使用 biblatex ibid 引用样式进行无限次编译?

我在使用gb4e 和authoryear-icomp的样式时遇到了一个问题biblatex。[我错误地认为gb4e与此有关,所以这个问题最初被命名为避免 gb4e 与 biblatex 冲突?]

当分页符附近有两次连续引用同一作品时,authoryear-icomp应产生以下结果:

  • bla bla bla (Smith 2012,第 1 页) bla {PAGE BREAK} bla bla (Smith 2012,第 2 页) bla bla bla

或者那个:

  • bla bla bla (Smith 2012,第 1 页) bla bla bla (同上,第 2 页) bla {PAGE BREAK} bla bla

然而,与 gb4e 先前的 exe 环境结合时实际发生的情况却恰恰相反:

  1. bla bla bla (Smith 2012,第 1 页) bla {PAGE BREAK} bla bla (同上,第 2 页) bla bla bla
  2. bla bla bla (Smith 2012,第 1 页) bla bla bla (Smith 2012,第 2 页) bla {PAGE BREAK} bla bla

注意,每次重新运行pdflatex后,这些都是震荡结果,也就是说,pdflatex不会产生稳定的版本!

我唯一的猜测是 gb4e 对 biblatex 有不良影响。有没有办法在保留和 gb4e 的同时 解决这个问题?authoryear-icomp

这是一个最简单的例子。它并没有我所希望的那么简单,但我花了几个小时才把它分解成这样:

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[style=authoryear-icomp]{biblatex}
%\usepackage{gb4e}\noautomath
\usepackage{filecontents}
\bibliography{generated}
\begin{filecontents}{generated.bib}
@book{schifferle2010,
  author={Hans Peter Schifferle},
  title={Zunehmende Behauchung},
  date={2010},
}
\end{filecontents}
\begin{document}
\newenvironment{exe}{\par\medskip}{\par\bigskip}
\newcommand{\ex}{ex}
aaa aaa aaaaaaaaaa aaaaaaaa aaa aaaaaaaa aaa aaaaaaaaaaaaaaaaa aaa aaaa aaaaaaaaaaa aaaaaa aaa aaaaaaaaaaaaaaa aaaaaaaaaaa aaa aaaa aaaaaaaaa aaaaaaaaa aaa aaa aaaaaa aaa aaa aaaaaaaaaaa aaa aaaaaa aaa aaaaaaaaa aaa aaaaaaaa aaaaaaaaaaa aaaaa aaa aaaaaaaaaaa aa aaaa aa aaaaaaaaaaaaaaaaaa aaaa aaaaaaaaaaa aaaaaa aa aaaaa aaa aaa aaaaaaaaaaa aaaaaa aaaaaaaaaa aaaaa aa aaa aaaaaaaaaaaaaaaaa aaaa aaaaaaaaaa aaaaaa aaa aa aaaa aaaa aaaaa a aa aaaaaa aa aa aaaaaaaaaaaaaaaaaaa aaa aaaaaaaaaaaaaaaa aaaaaaaaaaa aaaaaa aaaaa

aaa aaaaaaa aaaaaaaaaaaa aaa aaaaaa aaa aaaaa aaaa aa aaa aaaaaaaaa aaaaaaaaaaaaaaaaaa aaaaaaaaa aaaaaaaaaa aa aaaaaaa aaaaaaaaaaaaaa aaa aa aaa aaaaaaaa aaaaaaaaaaa aa aaaa aaaaaaaa aaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaa aa aaaaaa aaaaaaaaaaaa aaaaaaaaa aaa aaaaaa aaaaa aaa aaaaaaaaa aaaaaaaaaaa aaaaaaaa aaaaaa aaaaaaaaaaaa aaaaa aaaaaaaaa aaaaaaaaaaaaaa aaaa aaaaaaaaaaaaaaaaaaaa aaaaaa aaa aaa aaa aaaaaaaaa aaaaa aa aaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaa aaa aaaaaaaaaaaaaaaaaaa aaa aaaaa aaaaaaa aaaaaa aaaaaaa aaa aaa aaaaaaaaaaa aaaaa aaaaaaaa aaaaaaaaaaa aaaaaa aaaaaaaaaaa aaaa aaa aaaaaa aaaaaaa aaa aaaaaaaaaaaaa aaaaa aaa aaaaaa aaaaaaaaaaa aaaaaa aaaa aaaaaaa aaa aaaaaaa aaaaa aaa aaaaaaaaaaaaaa aaaaa aaaaaaaaa aaa aaaaaaaaa aaaaaa aaaaaaaaa aaa aaaaaa aaaaaaaa aaa aaa aaaaaaaaa aaaaaaaaaaaaaaa aaaaa aaa aa aaaa aaaa aaa aaaa

aaaaaa aaaaaaaa aaa aaaaaaaa aaaaaaaaaaaaaa aaa aa aaaaa aaaaaaaaaa aaaaaaaaa aaa aa aaaa aaaaaaaaa
\subsubsection{aaa aaaaaaaaa aaaa}
\subsection{aaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaa aaaaaa aaa aaaaa aa aaaaaaaaaaaaaaaaaa}
aaa aaaaaaaaaaa aaaaaaa aaa aaaaaaaaaaaaaaaaaa aaaaaaaa aaaa aaaa aaa aaa aaaaaaaaaaaaaa aaa aaaaaaaaaaa aaa aaaaaaaaa aaaaaaaaaaaaaaaa aaa aaaaaaaaa aaaaaaaaaaaaaaaa aaaaa aaa aaaaaaaaaaaaaaaa aaaa aaa aaaaaaaaaa aaaa aaaaa aaaaaaa aa aaa aaaaaaaaaaa aaa aaaaaaaaaaaaaa aaaaaaaaa aaaa aa aaaaaaaaa aaaaaaaaa aaaaaaa aaaaaaaaa aa aaaaaa aaaaaaaa aaaaaaa aaa aaaaaaaaaaaaaaaaaa aaaaaaaa aaa aaa aaaaaaa aaaaaaaaaaaa aaaaaaaaa aaaaaaaa

\begin{exe}
  \ex aaaaaaaaaaaaaaaaa aaaaaa aaa aaaaa aaaaaaaaaaaaa aaaa aaaaa aa aaaaaaaaaa aaaa aa aaaaaaaaaaaaaaa aaaaaaaaaaaa
\end{exe}

aaaaaaaaaa aaaaaa aaaaaa aaa aaaaaaaaaa aaa aaaa aaa aaaaaaaaaaaaaaa aaa aaa aaaaaaaaaaaaaaaaaa aaaaaaaaaaa aaaaaaaa aaaa aaa aaaaaaaaaa aaa aaa aaa aaa aaa aa aaaaa aaaaaaaaaaaaaa aaaaaaaaaaa aaaaaa aaa aaaaaaa aaa aaaaa aaaaaaaaaa aa aaaaaaaaaaaaaa aa aaaa aa aaaa aaaa aa aaaaa aaaa aaaaaaaaaaaaaa aaaaaa aa aaaa aaaaa aa aaaa aaaaaaaaaaaa aaaaaaaa aaaaa aaa aaaaaaaaaa aaaaaaaaaa aaa aaaaa aaaaaaaaaaaaaaaaaa aa aaaa aaaa aaaaaaa aa aaaaaaaa aaaaaaaaaa aaaaaaaaaaaa \autocite[54]{schifferle2010} aaaaaaaaaa aaaaa aaaaa aaaaaaaaa aaaaa aaaaaa aaaa aaaa aaaaaa aaaaaaaaaaaaa aaaaaaaaaa aaaaaaaaa aaa aa aaaaaaaa aaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaaa aaaaa aaaa aaaaaaa aaa aaaaaaaa aa aaaaa \cite[vgl.][46]{schifferle2010}). Eine \"{a}hnliche hervorhebende Aspiration ist bei /k/ seltener zu erwarten sein als bei /t/ und /p/, da es bei der Aufnahme von Lehnwˆrtern ¸blicherweise zu /kx/ affriziert wird.
\end{document}

答案1

思考发生的事情是这样的(但这很大程度上是一种久经沙场的猜测:我从来没有真正深入研究过 biblatex 如何跟踪页面)

您可能知道,LaTeX 在运行过程中并“不知道”它会在何处分页。因此,任何想要跟踪页码的软件包都会在页面发送出去时将数据写入辅助文件,因此页码是已知的。然后它在下次运行时查看该数据,并“知道”相关事件发生在哪个页面上。我认为这就是 biblatex 对“页面跟踪”所做的。

问题是,如果这改变了文本,分页符可能会移动。等等。

我认为这就是这里发生的事情。这与 无关gb4e。第一次运行时,引文似乎适合第一页,因此aux文件记录“此引文在第 1 页”。

下次,biblatex看到这个,然后说“好的,它适合放在第 1 页,所以我将使用 ibid”。不幸的是,这样做会强制将引文放到下一页,所以这次辅助文件记录:“引文在第 2 页”。并且biblatex(使用关于引文出现位置的“旧信息”)错误地将引文打印为“ibid”。

如果引文保留在第 2 页,那么一切都会好起来,因为 biblatex 会在下次运行时纠正错误并重新同步。但事实上,下次,由于使用了完整引文,它会移回第 1 页!所以这一次,你最终会在第 1 页看到完整引文。

下次……你就会明白了。这是一种罕见但已知的现象:见这个问题. 这并不是 biblatex 所独有的。

我无法完全理解为什么会出现这种情况:但我希望了解换行和分页的人可以理解。正如您在创建 MWE 时发现的那样,必须将一切准备就绪:如果您在最后一段的开头添加几个单词,问题就会自行解决。

我认为唯一可行的解​​决方案是在最终校样中密切关注这一点(在此之前没有必要担心,因为无论如何分页都会发生变化),如果需要,请重写以将引文移出危险区域,或进行其他手动调整。或者干脆不要担心:这种情况很少见,如果你最终校样中最严重的错误是使用 ibid 一两次,严格来说不应该使用,我会把我的笔记本电脑吃掉。

相关内容