Properly resolve undefined citations with Xe/Lua and bibliography environment

These need an extra LaTeX run
This commit is contained in:
Juergen Spitzmueller 2023-04-08 19:25:30 +02:00
parent 8c5b65ae6c
commit 7b6707fc52

View File

@ -401,11 +401,13 @@ int LaTeX::run(TeXErrors & terr)
// After the bibliography was processed, we need more passes of LaTeX // After the bibliography was processed, we need more passes of LaTeX
// in order to resolve the citations. We need to do this before the index // in order to resolve the citations. We need to do this before the index
// is being generated (since we need the correct pagination, see #2696). // is being generated (since we need the correct pagination, see #2696).
// With bibliography environment, another LaTeX run might be needed
// as well to resolve citations.
// Also, memoir (at least) writes an empty *idx file in the first place. // Also, memoir (at least) writes an empty *idx file in the first place.
// A further latex run is needed in that case as well. // A further latex run is needed in that case as well.
FileName const idxfile(changeExtension(file.absFileName(), ".idx")); FileName const idxfile(changeExtension(file.absFileName(), ".idx"));
if (run_bibtex || (idxfile.exists() && idxfile.isFileEmpty())) { if (run_bibtex || (scanres & UNDEF_CIT) || (idxfile.exists() && idxfile.isFileEmpty())) {
while ((head.sumchange() || rerun || (scanres & RERUN)) while ((head.sumchange() || rerun || (scanres & RERUN) || (scanres & UNDEF_CIT))
&& count < MAX_RUN) { && count < MAX_RUN) {
// Yes rerun until message goes away, or until // Yes rerun until message goes away, or until
// MAX_RUNS are reached. // MAX_RUNS are reached.