Fix multiple footnotes in footnote entry (#5545)

This commit is contained in:
PgBiel 2024-12-08 13:35:54 -03:00 committed by GitHub
parent e6de044b1d
commit 62567fc91e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 1 deletions

View File

@ -470,7 +470,20 @@ impl<'a, 'b> Composer<'a, 'b, '_, '_> {
// Lay out nested footnotes.
for (_, note) in nested {
self.footnote(note, regions, flow_need, migratable)?;
match self.footnote(note, regions, flow_need, migratable) {
// This footnote was already processed or queued.
Ok(_) => {}
// Footnotes always request a relayout when processed for the
// first time, so we ignore a relayout request since we're
// about to do so afterwards. Without this check, the first
// inner footnote interrupts processing of the following ones.
Err(Stop::Relayout(_)) => {}
// Either of
// - A `Stop::Finish` indicating that the frame's origin element
// should migrate to uphold the footnote invariant.
// - A fatal error.
err => return err,
}
}
// Since we laid out a footnote, we need a relayout.

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

View File

@ -291,3 +291,7 @@ A #footnote(numbering: "*")[B]<fn>, C @fn, D @fn, E @fn.
// Test whether an empty footnote would cause infinite loop
#show footnote.entry: it => {}
#lorem(3) #footnote[A footnote]
--- issue-5256-multiple-footnotes-in-footnote ---
// Test whether all footnotes inside another footnote are listed.
#footnote[#footnote[A]#footnote[B]#footnote[C]]