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: Index entry fo:block disrupts keep-with-next.within-column


In case it's useful to anyone, adding
keep-with-next.within-column="always" to the fo:block for index
entries did solve my problem. The title stays with the index entry and
the index entry stays with the first visible content of the section.

Here's the customization I used to do it. I had to remove the
xsl:choose condition for using xep.extensions. The references to
entities defined in common/entities.ent were causing problems because
the relative path to the entity file was hard to include in my
customization layer. So if you're relying on xep.extensions, this
might not work.

  <!-- ************************************ -->
  <!-- *** Add keep-with-next attribute to index entry anchors. The
invisible -->
  <!-- *** fo:blocks for index entries break the keep-with-next
relationship  -->
  <!-- *** between titles and the first content of their sections. -->
  <!-- ************************************ -->

  <xsl:template match="d:indexterm" name="indexterm">
    <!-- Temporal workaround for bug in AXF -->
    <xsl:variable name="wrapper.name">
      <xsl:choose>
        <xsl:when test="$axf.extensions != 0 or $fop1.extensions != 0">
          <xsl:call-template name="inline.or.block"/>
        </xsl:when>
        <xsl:otherwise>fo:wrapper</xsl:otherwise>
      </xsl:choose>
    </xsl:variable>

    <xsl:element name="{$wrapper.name}">
      <xsl:attribute name="id">
        <xsl:call-template name="object.id"/>
      </xsl:attribute>
      <!-- Adding this attribute so that the invisible anchors won't
prevent titles
            from staying with the following content on a page. -->
      <xsl:attribute name="keep-with-next.within-column">
        <xsl:text>always</xsl:text>
      </xsl:attribute>
      <!-- Removed a choose element. The following comment was in the
otherwise condition. -->
      <xsl:comment>
        <xsl:call-template name="comment-escape-string">
          <xsl:with-param name="string">
            <xsl:value-of select="d:primary"/>
            <xsl:if test="d:secondary">
              <xsl:text>, </xsl:text>
              <xsl:value-of select="d:secondary"/>
            </xsl:if>
            <xsl:if test="d:tertiary">
              <xsl:text>, </xsl:text>
              <xsl:value-of select="d:tertiary"/>
            </xsl:if>
          </xsl:with-param>
        </xsl:call-template>
      </xsl:comment>
    </xsl:element>
  </xsl:template>

On Tue, Jun 2, 2015 at 3:33 PM, Peter Desjardins
<peter.desjardins.us@gmail.com> wrote:
> I noticed a section title separated from the first paragraph in its
> section by a PDF page break. The title of the section is at the bottom
> of one page and the first paragraph at the top of the next page. I'm
> using the docbook-xsl-ns-1.78.1 stylesheets.
>
> The problem is caused by an index entry between the title and the
> first paragraph. If I remove the index entry, the title is kept-with
> the following para.
>
> The index entry results in a fo:block to mark the internal destination:
>
>   <fo:block id="d0e240"><!--containers--></fo:block>
>
> So the title is satisfied with being kept-with the index entry fo:block.
>
> I am considering customizing the fo:block for index entries to add a
> keep-with-next.within-column="always" attribute.
>
> Does anyone know of a better way to prevent index entries from
> interfering with keep-with-next behavior?
>
> Thanks!
>
> Peter
>
> ****** My DocBook *****
>
> <section xml:id="containers-about">
>   <title>Containers</title>
>
>   <indexterm>
>     <primary>containers</primary>
>    </indexterm>
>
>    <para>Containers ...
>
>
> ****** The corresponding FO *****
>
> <fo:block>
>       <fo:block keep-together.within-column="always" margin-left="0pt"
> font-family="sans-serif,Symbol,ZapfDingbats">
>         <fo:block keep-with-next.within-column="always">
>           <fo:block font-family="sans-serif,Symbol,ZapfDingbats"
> font-weight="bold" keep-with-next.within-column="always"
> space-before.minimum="0.8em" space-before.optimum="1.0em"
> space-before.maximum="1.2em" text-align="start" start-indent="0pt">
>             <fo:block font-size="12pt" color="#405D99"
> font-weight="600" space-before.optimum="2.0em"
> space-before.minimum="1.8em"
> space-before.maximum="2.2em">Containers</fo:block>
>           </fo:block>
>         </fo:block>
>       </fo:block>
>     </fo:block>
>   </fo:block>
>   <fo:block id="d0e240"><!--containers--></fo:block>
>   <fo:block space-before.optimum="1.7em" space-before.minimum="1.5em"
> space-before.maximum="1.9em">
>     Containers ...


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