|
Subject: RE: Embedded displays in <para>s in DocBook From: Avi Kivity <Avi@xxxxxxxxxxxxx> Date: Fri, 19 Feb 1999 17:56:39 +0200 |
On Friday, February 19, 1999 13:54, Andrey Taranov
[SMTP:andrey@xxxxxxxxxxxxx] wrote:
> Hello Dssslist,
>
> What do you think of the following problem:
>
> I use a customized version of Norman's stylesheet to process
> DocBook
> texts. The standard paragraph style in my company is justified
> text
> with indented first line. Now consider some displayed element
> embedded in para text (e.g. <literallayout>):
>
> <para>Some text ...
> <literallayout>example text</>
> continuation of the preceding text.</para>
>
> The result of this construct is that we get an extra space at the
> beginning of continuation paragraph in RTF output. This is
> definitely not desired.
>
> One solution would be to glue the first word of continuation text
> to
> the close tag of the displayed element. This solves the problem
> ok,
> but does not satisfy me, because I just cannot make all the
> typers
> in the company follow this convention. Two alternatives remain:
>
> 1) process the situation as it is by the stylesheet somehow; or
I'm not familiar with docbook, but there is probably a (process-children)
buried inside para processing.
You could replace it with the following untested code:
(element para
;unrelated magic
(process-node-list (trim-some-nodes-around-some-other-nodes whitespace?
displayed-element? (children (current-node))))
;more processing
)
(define (displayed-element? nd)
(match-element? 'literallayout nd)
)
(define (whitespace? nd) ???)
(define (trim-some-nodes-around-some-other-nodes trim? around? nl)
(node-list-reverse
(trim-nodes-after trim? around?
(node-list-reverse
(trim-nodes-after trim? around? nl)
)
)
)
)
(define (trim-nodes-after trim? after? nl)
(node-list-reduce
nl
(lambda (nl candidate)
(if
(and
(after? (node-list-last nl))
(trim? candidate)
)
nl ;trimmed away
(node-list nl candidate)
)
)
(node-list)
)
)
> 2) split the <para> element in two -- preceding the display and
> following the display -- and use some role=cont attribute on the
> continuation paragraph to tell the stylesheet to suppress the
> indentation of the first line.
>
> The question is: which way to choose? Both require some support
> from
> the stylesheet, but I cannot think of a way to implement the 1)
> way.
> On the other hand I can implement things like way 2) quite easily.
>
>
> Which way is THE-RIGHT-THING, anyhow?
>
I don't like placing unnecessary constraints on authors (knowing they will
be violated), so I try to do as much as possible in the style sheet.
Modifying DTDs is even worse -- DTD == compatibility.
All in all, this is an icky solution to an icky problem. Seems a lot of work
just to get rid of a little space.
-Avi
---
.sig temporarily out of order. we apologize for any inconvenience.
DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Embedded displays in <para>s in Doc, Andrey Taranov | Thread | grouping elements, Bas Peters |
| Embedded displays in <para>s in Doc, Andrey Taranov | Date | grouping elements, Bas Peters |
| Month |