how to reuse float numbers?
Hello,
I am wondering if the float numbers can be reused for floats that are longer
than a page. I use floats that contain program segments (source code) for
a project report for my university studies.
The guidelines specify that captions for code which is longer than one page
or crosses page boundaries should be reprinted and the title changed to
(continued).
example:
Program Segment 1.1: Hello World
#include
2007/9/7, William S.
Hello,
I am wondering if the float numbers can be reused for floats that are longer than a page. I use floats that contain program segments (source code) for a project report for my university studies.
The guidelines specify that captions for code which is longer than one page or crosses page boundaries should be reprinted and the title changed to (continued).
example:
Program Segment 1.1: Hello World #include
main() { ...on next page...
Program Segment 1.1: (continued) printf("hello world!\n"); }
Can someone help me do this in ConTeXt? I think I can do the splitting of the code myself if needed, but I don't know how to reuse the float number. Currently this is how I define the float:
\definetyping[Program][blank=halfline] \definefloat[ProgramSegment][ProgramSegments] \setupcaption[ProgramSegment][location=top,align=right,headstyle=bold,style=bold,inbetween={}] \setuplabeltext[en][ProgramSegment=Program Segment ]
And I use it like this: \placeProgramSegment[here]{Hello World} { \startProgram main() { printf("hello world!\n"); } \stopProgram }
Any help will be appreciated.
Thanks, William.
you can start with the following example from Hans. \definefloat[Exhibit][table] \starttext \input tufte\par \splitfloat[lines=auto]{\placeExhibit{Knuth}} {\dorecurse{4}{\input knuth \par}} \input tufte\page[yes] \stoptext Wolfgang
On 9/7/07, Wolfgang Schuster
you can start with the following example from Hans.
\definefloat[Exhibit][table] \starttext \input tufte\par \splitfloat[lines=auto]{\placeExhibit{Knuth}} {\dorecurse{4}{\input knuth \par}} \input tufte\page[yes] \stoptext
Wolfgang
It says "there is nothing to split" at home and using ConTeXt live. Thanks for the pointer to splitfloat. I'll investigate it using ConTeXt's source code. William.
2007/9/7, William S.
On 9/7/07, Wolfgang Schuster
wrote: you can start with the following example from Hans.
\definefloat[Exhibit][table] \starttext \input tufte\par \splitfloat[lines=auto]{\placeExhibit{Knuth}} {\dorecurse{4}{\input knuth \par}} \input tufte\page[yes] \stoptext
Wolfgang
It says "there is nothing to split" at home and using ConTeXt live. Thanks for the pointer to splitfloat. I'll investigate it using ConTeXt's source code.
William.
can you try my attached example. Wolfgang
On 9/7/07, Wolfgang Schuster
can you try my attached example.
Wolfgang
Thank you! That's amazing... It seems I need to learn more about writing these macros before I can do anything like that. I almost decided to just use tables with no frame to hold my source-code... Thanks again! William.
On 9/7/07, William S.
The guidelines specify that captions for code which is longer than one page or crosses page boundaries should be reprinted and the title changed to (continued).
example:
Program Segment 1.1: Hello World #include
main() { ...on next page...
Program Segment 1.1: (continued) printf("hello world!\n"); }
Thanks to Wolfgang's help the splitting problem is solved. However, after the float is split, the captions get extra numbers (1.1.A, 1.1.B, etc). I tried to "solve" this by using \setupfloatsplitting[conversions=...] but even if I defined a conversion that prints nothing, the caption would look like "Program Segment 1.1." (the final separator is still printed). I suppose a better way would be to override the command that makes the captions (\setupcaption[ProgramSegment][command=...]) so that it prints the real caption text in the first part, and "(continued)" in the next parts. However, I've searched the mailing list archive and I can't find an example on what to put inside the command. Can someone give me a clue as to what I should put inside the command or maybe someone will have a better idea (maybe using \setupfloatsplitting[inbetween=...])? I've attached a slightly modified version of Wolfgang's document (I added a conversion for the setupfloatsplitting). Thanks, William.
2007/9/7, William S.
On 9/7/07, William S.
wrote: The guidelines specify that captions for code which is longer than one page or crosses page boundaries should be reprinted and the title changed to (continued).
example:
Program Segment 1.1: Hello World #include
main() { ...on next page...
Program Segment 1.1: (continued) printf("hello world!\n"); }
Thanks to Wolfgang's help the splitting problem is solved. However, after the float is split, the captions get extra numbers (1.1.A, 1.1.B, etc).
I tried to "solve" this by using \setupfloatsplitting[conversions=...] but even if I defined a conversion that prints nothing, the caption would look like "Program Segment 1.1." (the final separator is still printed).
Hi William, use \setupfloatsplitting[conversions=numbers] and \setupcaptions[way=bytext] The 1.1 is the normal float numbering, the 1, b, ... are the numbers of every part of the splitted float.
I suppose a better way would be to override the command that makes the captions (\setupcaption[ProgramSegment][command=...]) so that it prints the real caption text in the first part, and "(continued)" in the next parts. However, I've searched the mailing list archive and I can't find an example on what to put inside the command.
This seems to be not supported but you can try to look into core-tsp.tex, the module where float splitting is implemented.
Can someone give me a clue as to what I should put inside the command or maybe someone will have a better idea (maybe using \setupfloatsplitting[inbetween=...])?
I've attached a slightly modified version of Wolfgang's document (I added a conversion for the setupfloatsplitting).
Thanks, William.
Wolfgang
participants (2)
-
William S.
-
Wolfgang Schuster