Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I've run into a problem when using both gb4e and the authoryear-icomp style of biblatex. [I mistakenly thought gb4e had something to do with this, so this question was originally named Avoid clash of gb4e with biblatex?]

When there are two consecutive citations of the same work in the vicinity of a page break, authoryear-icomp should produce either this:

  • bla bla bla (Smith 2012, p. 1) bla {PAGE BREAK} bla bla (Smith 2012, p. 2) bla bla bla

or that:

  • bla bla bla (Smith 2012, p. 1) bla bla bla (ibid., p. 2) bla {PAGE BREAK} bla bla

However, what really happens in conjunction with a preceding exe-environment of gb4e is exactly the opposite:

  1. bla bla bla (Smith 2012, p. 1) bla {PAGE BREAK} bla bla (ibid., p. 2) bla bla bla
  2. bla bla bla (Smith 2012, p. 1) bla bla bla (Smith 2012, p. 2) bla {PAGE BREAK} bla bla

Note that these are oscillating results after each rerun of pdflatex, that is to say, pdflatex will not produce a stable version!

My only guess is that gb4e has a bad influence on biblatex. Is there any way to fix that while keeping both authoryear-icomp and gb4e?

Here is a minimalish example. It's not really as minimal as I'd hoped for, but it took me several hours to break it down to this:

\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}
share|improve this question
    
I'm not sure this is an incompatibility with gb4e. If I remove that package and \newenvironment{exe}{\par\medskip}{\par\bigskip} and \newcommand{\ex}{ex} I replicate the problem without gb4e. I think there's just an unstable page boundary, which is messing with the ibidtracker. I can't quite work out why that should be: but it may help someone who can. –  Paul Stanley Nov 6 '12 at 22:35

1 Answer 1

I think that what is happening is this (but this is largely somewhat battle-hardened guesswork: I've never really delved into how biblatex tracks pages)

As you may know, LaTeX doesn't "know" as it goes along where it will break the page. So any package that wants to track page numbering has data written to the aux file when the page is shipped out, and the number is therefore known. It then looks at that data next time it runs, and "knows" what page the relevant event occurred on. I assume that this is what biblatex does for "pagetracking".

The trouble is that if this changes the text, the page-breaks may shift. And so on.

I think that's what's happening here. It's not to do with gb4e. On the first run the citation seems to fit on the first page, so the aux file records "this citation was on page 1".

Next time round, biblatex looks at this, and says "OK, that fit on page 1, so I'll use ibid". Unfortunately, doing that forces the citation onto the next page, so this time the aux file records: "citation was on page 2". And biblatex (which is using "old information" about where the citation appears) wrongly prints the citation as an "ibid".

All would be well if the citation stayed on page 2, because biblatex would put things right next time it ran and it would get back in sync. But in fact next time, because a full citation is used, it moves back to page 1! So this time you end up with a full citation on page 1.

And next time ... you get the picture. It's a rare but known phenomenon: see this question. It's not unique to biblatex.

I can't quite work out why it happens in your case: but I expect someone who understands line- and pagebreaking could. As you've discovered creating the MWE, the stars have to be aligned: if you add a few words at the start of the final paragraph, the problem resolves itself.

The only practical solution I think is to keep a beady eye out for this in the final proof (no point worrying about it till then, because page breaking will be changing anyway), and if need be rewrite to move the citation away from the danger zone, or make some other manual adjustment. Or just don't worry about it: it's pretty uncommon, and if the worst error in your final proof is one or two uses of ibid where strictly speaking they shouldn't be, I'll eat my laptop.

share|improve this answer
    
Thanks for your information. Too bad. At least it is not a gb4e issue (I have rewritten the question accordingly). You are right that the issue just disappeared after continuing on the document. –  mach Nov 8 '12 at 14:19
2  
A beady eye is needed only to locate the unstable citation label as biblatex has a page break check. This problem will issue a persistent "rerun LaTeX" message in the log. –  Audrey Nov 9 '12 at 14:56

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.