OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [docbook-apps] (sub)section titles rendered as fo:inline forLegal Contracts?


Wow!   Thanks for your answer, it sounds like exactly what I am looking for.

I was thinking of making one small tweak:  it just so happens that all 
of the
sections that need inline titles have no child sections-- so I could use 
simplesect for them.

Using simplesect might have an advantage in that you could apply the 
customizations
to it alone and leave the sectN and recursive section rules un-customized.

What do you think?

--Craeg

PS I would be interested in trading customization layers.  I am just a 
beginner, so
not sure if I have anything of interest.  I have just two files so far:
- my customized version of titlepage.templates.xml
- my custom xslt for legal contracts which imports fo/docbook.xsl

Dick Hamilton wrote:

> Craeg,
>
> I had a similar problem and did the following.  The caveat is that
> this is only lightly tested to date, so it may or may not work in
> your situation.  Also, it's far from elegant.  I suspect there are
> cleaner ways to do this that I just haven't figured out yet.
>
> The thing that makes this tough is that you need to process the
> run-in title and its following paragraph together, but the standard
> transforms process section titles in their own fo:block, then in
> another place process the following para in its own fo:block.
>
> At a high level, what I did was to process level 3 and higher titles
> and the immediately following paragraph together in the section/title
> template, instead of letting the paragraph be processed normally.
> That processing uses customized templates for the title and the
> paragraph, but they are simple customizations (mostly replacing
> fo:block with fo:inline).  Then, I created empty templates that
> matched the paragraph immediately following the title so it
> doesn't get processed in the normal place.
>
> This is based on a solution that Bob Stayton provided to someone
> else looking for this capability, but his solution was set up for
> sect1, sect2, etc., rather than recursive sections.  Here's a pointer
> to that solution.
>
> http://lists.oasis-open.org/archives/docbook-apps/200506/msg00024.html
>
> What I did was extend it to handle both recursive sections and
> hard-coded sections.  Be aware that both this solution and mine
> work only if the title is followed by a <para>.
>
> Here it is:
>
> All of this was done in a customization layer.
>
> First, I defined an attribute set called inline.para.spacing
> for anything that is different from normal.para.spacing.  You
> may not need this; I did because I was using a first line text
> indent for normal paragraphs, but not for paragraphs after an
> inline title:
>
>  <xsl:attribute-set name="inline.para.spacing">
>    <!-- whatever attributes you want to set -->
>  </xsl:attribute-set>
>
> Second, I customized the section/title template (fo/sections.xsl).
> At the very end of that template, there is a call-template
> name="section.heading".  I replaced that call with the following,
> which calls a new template, inline.section.heading, for the heading,
> followed by an apply-templates with mode="inline.para" for the next
> paragraph when the level is greater than 2.  Otherwise, the processing
> is unchanged:
>
>    <xsl:choose>
>      <xsl:when test="$level &gt; 2">
>        <fo:block xsl:use-attribute-sets="inline.para.spacing">
>          <xsl:call-template name="inline.section.heading">
>            <xsl:with-param name="level" select="$level"/>
>            <xsl:with-param name="title" select="$title"/>
>            <xsl:with-param name="marker" select="$marker"/>
>            <xsl:with-param name="titleabbrev" 
> select="$titleabbrev.elem"/>
>          </xsl:call-template>
>          <xsl:apply-templates select="following-sibling::*[1]"
>            mode="inline.para"/>
>        </fo:block>
>      </xsl:when>
>      <xsl:otherwise>
>        <xsl:call-template name="section.heading">
>          <xsl:with-param name="level" select="$level"/>
>          <xsl:with-param name="title" select="$title"/>
>          <xsl:with-param name="marker" select="$marker"/>
>          <xsl:with-param name="titleabbrev" select="$titleabbrev.elem"/>
>        </xsl:call-template>
>      </xsl:otherwise>
>    </xsl:choose>
>
> I then added the following template for para with mode="inline.para":
>
>  <xsl:template match="para" mode="inline.para">
>    <fo:inline xsl:use-attribute-sets="normal.para.spacing">
>      <xsl:call-template name="anchor"/>
>      <xsl:apply-templates/>
>    </fo:inline>
>  </xsl:template>
>
> This is identical to the template match="para" in fo/fo.xsl,
> except that it uses fo:inline instead of fo:block.
>
> Then I added the following empty templates to avoid getting a
> repeat when this section processes its paragraphs.
>
> <xsl:template
>  match="section/section/section/para[preceding-sibling::*[1][self::title]]"> 
>
> </xsl:template>
>
> The following template does the same thing if you're using non-recursive
> sections.
>
> <xsl:template match="sect3/para[preceding-sibling::*[1][self::title]]">
> </xsl:template>
>
> The magic sauce in these templates is the match, which is taken
> from Bob Stayton's example.  Here's his description:
>
> The select="para[preceding-sibling::*[1][self::title]]" attribute 
> translates
> to "take a para element, look at its preceding-sibling elements, take the
> first one, and use the para only if that first preceding-sibling is a 
> title
> element".
>
> Finally, I created the template name="inline.section.heading", which
> is identical to the template name="section.heading" in fo/sections.xsl
> except that every fo:block is replace with an fo:inline.  Also, this
> is the place where you might want to put the asterisks and other
> punctuation after your titles.  To save space, I haven't included
> that one.
>
> This is hard-coded to make level 3 and higher headings run-in.  It
> would be nice to set level with a parameter, but I haven't figured
> out how to parameterize the empty para template matches yet.
>
> So, you weren't too far off the mark in saying it will take some
> heavy customization (at least it did for me; if someone has a shorter
> way to do this, I'd like to hear about it), but it's mostly just
> copying things and making a couple of key changes in the middle.
>
> I hope this helps.  If you'd like a copy of the customization layer
> this is part of, I'd be glad to send it to you; just drop me a line.
>
> Dick Hamilton
>
> ----- Original Message ----- From: "Craeg Strong" 
> <cstrong@arielpartners.com>
> To: <docbook-apps@lists.oasis-open.org>
> Sent: Sunday, December 04, 2005 10:42 PM
> Subject: [docbook-apps] (sub)section titles rendered as fo:inline for 
> Legal Contracts?
>
>
> Hello:
>
> I am using Docbook 5.0b1 with Saxon 6.5.5 and RenderX XEP 4.4 to markup
> a legal contract (Docbook XML -> FO -> PDF).
> I have lots of numbered sections where the titles are inline, for 
> example:
>
>
>  *_1. At Will Employment_.* I understand and acknowledge that my
>  employment with the Company is for an unspecified duration and
>  constitutes “at-will” employment.
>
>
> or
>
>
>    *_2a) Company Information_.* I agree at all times during the term of
>    my employment and thereafter, to hold in strictest confidence, and
>    not to use, except for the benefit of the Company, or to disclose to
>    any person, firm or corporation without written authorization of the
>    Manager of the Company, any Confidential Information of the Company,
>    except to the extent required by law or legal process.
>
>
> It seems that in order to create something like this in my PDF output, I
> would have to make some
> pretty heavy customizations of <xsl:template match="section"> within
> xslt/fo/sections.xsl
>
> To summarize, I would like sections at level 2 to be fo:block, but
> sections > level 2 to be fo:inline
>
> Question:
>
> Can anyone think of an easier way to get inline titles? Maybe use an
> alternate markup other than section?
> Has anyone else tried to use DocBook for legal contracts?
>
> Thanks!
>
> --Craeg
>
> -




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]