Vanishing floats with location=split and \start ... \stopsplittext within
Greetings, I have run into an issue whilst using \start ... \stopsplittext. I intended to use it for large code listings (using the t-vim module), however floats with location=split using that environment seem to vanish if there is nearly not enough text before the float to fill a page. Not only that, a second float like that seems to lead to fatal errors related to an unclosed group, however the document compiles regardless. The following MWE is an example of this. I am using ConTeXt version 2024.05.27 18:16. \definefloat[codelisting][codelistings] \setupcaption[codelisting][location=top] \setuplabeltext[english][codelisting=Listing ] %\showboxes \starttext \input knuth \input knuth \input knuth \input knuth % Filler. Filler. Filler. Filler. % uncomment to push out a full page. the float will appear \startplacecodelisting[ title=My great C program on display!, location=split, ] \startsplittext \tt \input zapf \stopsplittext \stopplacecodelisting \input ward \startplacecodelisting[ title=My second great C program on display!, location=split, ] \startsplittext \tt \input ward \stopsplittext \stoptext On a related note, one can also observe that with specific amounts of text a float may end up being split in two on a single page, however I could not replicate it. Additionally, code listings done with t-vim's commands seem to lose line numbering within \start ... \stopsplittext in splittable floats, but I figure that's more on the module authors. In any case, is there more I can do other than not use floats for code listings?
On 6/4/2024 3:57 PM, Давыдов, Кирилл Александрович wrote:
Greetings,
I have run into an issue whilst using \start ... \stopsplittext. I intended to use it for large code listings (using the t-vim module), however floats with location=split using that environment seem to vanish if there is nearly not enough text before the float to fill a page. Not only that, a second float like that seems to lead to fatal errors related to an unclosed group, however the document compiles regardless. The following MWE is an example of this. I am using ConTeXt version 2024.05.27 18:16.
\definefloat[codelisting][codelistings] \setupcaption[codelisting][location=top] \setuplabeltext[english][codelisting=Listing ]
%\showboxes \starttext
\input knuth \input knuth \input knuth \input knuth % Filler. Filler. Filler. Filler. % uncomment to push out a full page. the float will appear
\startplacecodelisting[ title=My great C program on display!, location=split, ] \startsplittext \tt \input zapf \stopsplittext \stopplacecodelisting
\input ward
\startplacecodelisting[ title=My second great C program on display!, location=split, ] \startsplittext \tt \input ward \stopsplittext
\stoptext
On a related note, one can also observe that with specific amounts of text a float may end up being split in two on a single page, however I could not replicate it. Additionally, code listings done with t-vim's commands seem to lose line numbering within \start ... \stopsplittext in splittable floats, but I figure that's more on the module authors. In any case, is there more I can do other than not use floats for code listings? best add a missing \stopplacecodelisting
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 6/4/24 21:22, Hans Hagen wrote:
best add a missing \stopplacecodelisting That one's on me, thank you. Unfortunately, this does not fix the main issue. Checking the MWE's logs reveals that the splitting command found nothing to split, even if there's enough text for multiple pages. My best guess is that something goes awry when checking how much vertical space is available, since uncommenting the filler line leaves no space for an additional line in the page.
On 6/4/2024 3:57 PM, Давыдов, Кирилл Александрович wrote:
On a related note, one can also observe that with specific amounts of text a float may end up being split in two on a single page, however I could not replicate it. Replicated it: \definefloat[codelisting][codelistings] \setupcaption[codelisting][location=top] \setuplabeltext[english][codelisting=Listing ] \showboxes \starttext %\dorecurse{37}{line\crlf} % splits fine up to this point \dorecurse{38}{line\crlf} % split on the same page %\dorecurse{39}{line\crlf} % float vanishes, "there is nothing to split" %\dorecurse{40}{line\crlf} % all fine \startplacecodelisting[ title=My great C program on display!, location=split, ] \startsplittext \tt\dorecurse{6}{\input zapf} \stopsplittext \stopplacecodelisting \stoptext
participants (3)
-
Hans Hagen
-
Kirill Davidov
-
Давыдов, Кирилл Александрович