Subject: Formatting "(Continued on next page...)" From: "Frank A. Christoph" <christo@xxxxxxxxxxxxxxxxxx> Date: Thu, 22 Jan 1998 19:39:10 +0900 |
I am interested in hearing ideas on how to format documents where, when the areas produced by the flow object(s) associated with a given element or elements span a page or more, some sort of "(Continued on next page...)" message is emitted at the bottom of the page. As far as I can see, there is no way to do this in general, so I am contemplating an extension. I think that this is a common feature of many typesetting layouts and seems to be a moderately serious omission in DSSSL (I think it can be done in full DSSSL using generated flow objects and reference values --- although I confess my understanding of them is weak, never having used them --- but that seems like overkill for such a simple feature), so I would like to design the extension in such a way that the interface can become a de facto standard, or maybe incorporated into a future DSSSL revision; I would be grateful for people's input on this. Solution 1 Just declare a new characteristic, keep-violation-sosofos:. The value is a list of two (displayed) sosofos, the first of which produces an area at the bottom of every page (or column) that the flow object spans, and the second of which produces an area at the top of every such page. It also accepts #f, which is the same as specifying two empty-sosofos. A typical use might be: (let ((bottom (literal "(continued on next page)")) (top (literal "(continued from previous page)"))) (make X ... keep-violation-sosofos: `(,bottom ,top))) Let's talk about the issues to consider here. Most importantly, characteristics declared in this fashion are inherited, and, although I think there is no harm in it being inherited, it's not clear to me whether it makes sense here... especially since the other display characteristics (keep:, space-before;, ...) aren't. The other issues are really just window dressing. First, there are only every two sosofos, so we could make the datatype a pair instead of a list. I avoided this since, as I recall, other characteristics do the same. Second, using a list or a pair as the datatype means that you really need to quasiquote the value. It's a sure bet that beginners will get this wrong. So it might be better to make this into two characteristics: keep-violation-start: and keep-violation-end:. Third, I'm not sure that "keep-violation" is the right word here (since keep: might be #f), and the name of the proposed characteristic(s) is rather obscure. Is there a better name (names)? Finally, what public identifier shall we use for the declaration? I certainly don't want to put it in my name. I think that we ought to create a registry for DSSSL extension public identifiers, and maybe move some of James' extensions into that registry as well. Maybe "-//DSSSList de facto extensions//.." or something. Solution 2 Add the(se) characteristic(s) to display-group. Not only is this the right place for them, but the more I think about it the more I think it is better to make the characteristic(s) non-inherited. The problem, of course, is that this cannot be done with the usual DSSSL extension capabilities. An example in this style would be: (let ((bottom (literal "(continued on next page)")) (top (literal "(continued from previous page)"))) (make display-group (make X ... keep-violation-sosofos: `(,bottom ,top)))) Comments? --FC DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
tables jade -> TeX, Sebastian Rahtz | Thread | Re: Formatting "(Continued on next , G. Ken Holman |
Re: DD: DTD for authoring., Tony Graham | Date | Modifying SGML tags, Fabienne . CLAVERIE |
Month |