This was something that I was wondering myself, just yesterday. I wanted
to be able to do a list that had a certain height and would
automatically wrap to the next column on the right when the height was
exceeded. But atlas, this mere mortal failed and could not figure out
how to do it with standard Docbook features.
I think that this is a feature that could be added to the lists in
Docbook?
Regards,
Dean Nelson
Enterprise Electronics Corp
-----Original Message-----
From: Colin Shapiro [mailto:[EMAIL PROTECTED]
Sent: Tuesday, April 03, 2007 2:14 PM
To: [email protected]
Subject: [docbook-apps] Dynamically creating an FO table based
on content length
Hi all,
I have a problem which I can't think of a good way to solve. I
realize that I am perhaps approaching this problem incorrectly, so I
hope someone can point me in the right direction.
Suppose that I have an arbitrary series of paragraphs in my
source file, containing an arbitrary amount of content:
<para>This is some content.</para>
<para>This is more content.</para>
<para>This is even more content.</para>
<para>This is a longer amount of content.</para>
Now, suppose that I want to format this source in an FO table
with a single row of cells. I want the table to have a fixed
height--say, 2 inches--so that the table never grows higher than 2
inches. I might do this by placing block-containers within the table
cells, giving them height attributes. Then, I distribute my content
among the table cells accordingly:
<fo:table>
<fo:table-column column-number="1"/>
<fo:table-column column-number="2"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block-container height="2in">
<fo:block>This is some content.</fo:block>
<fo:block>This is more content.</fo:block>
<fo:block>This is even more content.</fo:block>
</fo:block-container>
</fo:table-cell>
<fo:table-cell>
<fo:block-container height="2in">
<fo:block>This is a longer amount of
content.</fo:block>
</fo:block-container>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
The problem, however, is that the source file can contain any
number of paragraphs of various lengths, and this will not be known
until processing time. Since I never want my table exceed 2 inches in
height, I may need to add more columns as needed to get additional
cells. The idea here is that the first cell will accommodate
2-inches-worth of content, then whatever overflows will spill into the
next cell, which will in turn accommodate 2 inches of content, etc., and
this will continue until all content is displayed.
I'd like a stylesheet to automatically handle this. It will
determine how much content there is, how many table columns are needed,
and distribute the content accordingly. However, this seems rather
difficult to do, since the stylesheet has no way of knowing what the
final print output will look like, how large the fonts will be, etc.
I might be able to do something with string lengths. Calculate
the length of each paragraph, calculate the capacity of a table cell,
and output the paragraphs in table cells where they fit. But this would
be based on character counts only, which hold no bearing on the final
print output when a variable-width font is used; i.e., if the string
"abcde" has a length of "5", that doesn't tell me anything about how
much physical space the text "abcde" will occupy when printed in
Helvetica font at size 12pt.
Does what I'm getting at make sense? I hope I am being clear
about my problem; let me know if I am not.
Thanks,
Colin