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

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook message

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


Subject: DOCBOOK: Extra Spaces Caused by <indexterm>s


Processing expectations for <indexterm> include:

    IndexTerms are suppressed in the primary text flow, although they
    contribute to the population of an index and serve as anchors for
    cross references. Under no circumstances is the actual content of
    IndexTerm rendered in the primary flow.

The DVI/PostScript file produced from the attached DocBook/XML file
has one erroneous space for each indexterm in the source.  Which tool
(or me?) is responsible for these erroneous spaces and how do we fix
it?

To create the DVI/PostScript file, I used

jade -D/usr/lib/sgml/stylesheets/docbook  -t sgml -d html.dsl  -V html-index dtds/decls/xml.dcl foo.xml
perl collateindex.pl -t 'Index' -i 'index' -g -p -o genindex.sgm HTML.index
jade -D/usr/lib/sgml/stylesheets/docbook  -t tex -d print.dsl  -V tex-backend -V use-eps dtds/decls/xml.dcl foo.xml
jadetex foo.tex
xdvi foo.dvi &

with versions:
jade -v
jade:I: Jade version "1.2.1"
jade:I: SP version "1.3.3"

collateindex.pl 1.1 2001/12/04

jadetex -v		
TeX (Web2C 7.3.1) 3.14159
kpathsea version 3.3.1
(I believe this is jadetex 3.12, but what command-line option do I use
to prove this?)

Attached:
1) foo.xml
2) foo.ps
3) print.dsl  (which does not modify indexterm)

Thanks for your help,
Jeffrey D. Oldham
oldham@codesourcery.com
<?xml version="1.0"?>

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
[
  <!ENTITY ExecTest "<classname>ExecTest</classname>">
]>
<article>
<articleinfo>
  <title>Title</title>
  <authorgroup>
    <author>
      <firstname>Jeffrey</firstname><othername>D.</othername><surname>Oldham</surname>
      <affiliation>
        <orgname>Some Wonderful Company</orgname>
      </affiliation>
    </author>
  </authorgroup>
  <date>2001 November 07</date>
</articleinfo>

<section>
<title>Introduction</title>

<para>Why does adding indexterms cause spaces to appear here:
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
    <indexterm>
     <primary>data-parallel operation</primary>
    </indexterm>
ending here?</para>

<para>Why does omitting indexterms not cause spaces to appear here:
ending here?</para>

</section>

</article>

foo.ps

<!-- DSSSL stylesheet for generating TeX from DocBook documents. -->

<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!ENTITY docbook.dsl PUBLIC "-//Norman Walsh//DOCUMENT DocBook Print Stylesheet//EN" CDATA DSSSL>
]>

<!-- This DSSSL stylesheet formats the POOMA manual, written in
     DocBook, as converted to PostScript and PDF.  When producing
     PostScript, be sure to define 'use-eps' on the jade command line:
        jade ... -V use-eps
     This ensures EPS graphics files can be used. 

     Jeffrey D. Oldham
     2002 January 29 -->

<style-sheet>
<style-specification use="docbook">
<style-specification-body>

;; $Id: print.dsl,v 1.1 2002/01/31 21:20:27 oldham Exp $
;;
;; This file is part of the Modular DocBook Stylesheet distribution.
;; See ../README or http://www.berkshire.net/~norm/dsssl/
;;
;; Example of a customization layer on top of the modular docbook style
;; sheet.  Definitions inserted in this file take precedence over 
;; definitions in the 'use'd stylesheet(s).

;; Number chapters and sections.
(define %chapter-autolabel% #t)
(define %section-autolabel% #t)

;; Use a readable font size.
(define %visual-acuity% "normal")  ;; was "presbyopic"
;; Prevent verbatim text from being displayed at a different size.
(define %verbatim-size-factor% 0.8) ;; was 1.1

;; Indent program listings four spaces
(define %indent-programlisting-lines% "    ")

;; Support two-sided printing.
(define %two-side% #t)	;; does not have any effect

;; Produce justified text and hyphenation.
(define %default-quadding% 'justify)
(define %hyphenation% #t)

;; Produce footnotes at the bottom of the page, not section end.
(define bop-footnotes #t)

;; Use EPS for PS generation and PNG for PDF generation.
;; Use '-V use-eps' to use EPS files.
(define use-eps #f)
(define %graphic-extensions% 
  (if use-eps
      '("eps" "epsf" "gif" "tif" "tiff" "jpg" "jpeg" "png")
      '("gif" "tif" "tiff" "jpg" "jpeg" "png")))
; modified from stylesheets/docbook/print/db31.dsl
(define preferred-mediaobject-notations
  (if use-eps
      (list "EPS" "PS" "JPG" "JPEG" "PNG" "linespecific")
      (list "JPG" "JPEG" "PNG" "linespecific")))
(define preferred-mediaobject-extensions
  (if use-eps
      (list "eps" "ps" "jpg" "jpeg" "png")
      (list "jpg" "jpeg" "png")))

;; Layout variable lists in a reasonable way.
;; does not work well (define %may-format-variablelist-as-table% #t)
;; (define %always-format-variablelist-as-table #t) ;; does not work at all

;; Float tables and examples.
(define formal-object-float #f)
;(define %example-rules% #t)	Uncomment if use floats.
;(define %figure-rules% %example-rules%)
;(define %table-rules% %example-rules%)

;; Fix space breaking for xref text.  I tried modifying
;; en-xref-strings from docbook/common/dbl1en.dsl, but I could not get
;; it to work because the entities in this list are not defined.

;; Change the default presentation for various tags.
; Use mono-space font for computer items.
(element command ($mono-seq$))
(element envar ($mono-seq$))
(element errorname ($mono-seq$))
(element errortype ($mono-seq$))
(element keywordname ($mono-seq$))	; new tag aded by Oldham
(element methodname ($mono-seq$))	; new tag aded by Oldham
(element operator ($mono-seq$))		; new tag aded by Oldham
(element statement ($mono-seq$))	; new tag aded by Oldham
(element symbol ($mono-seq$))
(element token ($mono-seq$))
(element type ($mono-seq$))

; Number all pages sequentially, rather than separate numbering for
; various pieces of the preface.
; Copied from stylesheets/docbook/print/dbdivis.dsl.
(element book 
  (let* ((bookinfo  (select-elements (children (current-node)) 
				     (normalize "bookinfo")))
	 (dedication (select-elements (children (current-node)) 
				      (normalize "dedication")))
	 (nl        (titlepage-info-elements (current-node) bookinfo)))
    (make sequence
      (if %generate-book-titlepage%
	  (make sequence
	    (book-titlepage nl 'recto)
	    (book-titlepage nl 'verso))
	  (empty-sosofo))

      (if (node-list-empty? dedication)
	  (empty-sosofo)
	  (with-mode dedication-page-mode
	    (process-node-list dedication)))

      (if (not (generate-toc-in-front))
	  (process-children)
	  (empty-sosofo))

      (if %generate-book-toc%
	  (make simple-page-sequence
	    page-n-columns: %page-n-columns%
	    page-number-restart?: #f	; changed from #t
	    page-number-format: ($page-number-format$ (normalize "toc"))
	    use: default-text-style
	    left-header:   ($left-header$ (normalize "toc"))
	    center-header: ($center-header$ (normalize "toc"))
	    right-header:  ($right-header$ (normalize "toc"))
	    left-footer:   ($left-footer$ (normalize "toc"))
	    center-footer: ($center-footer$ (normalize "toc"))
	    right-footer:  ($right-footer$ (normalize "toc"))
	    input-whitespace-treatment: 'collapse
	    (build-toc (current-node)
		       (toc-depth (current-node))))
	  (empty-sosofo))
	    
      (let loop ((gilist ($generate-book-lot-list$)))
	(if (null? gilist)
	    (empty-sosofo)
	    (if (not (node-list-empty? 
		      (select-elements (descendants (current-node))
				       (car gilist))))
		(make simple-page-sequence
		  page-n-columns: %page-n-columns%
		  page-number-format: ($page-number-format$ (normalize "lot"))
		  use: default-text-style
		  left-header:   ($left-header$ (normalize "lot"))
		  center-header: ($center-header$ (normalize "lot"))
		  right-header:  ($right-header$ (normalize "lot"))
		  left-footer:   ($left-footer$ (normalize "lot"))
		  center-footer: ($center-footer$ (normalize "lot"))
		  right-footer:  ($right-footer$ (normalize "lot"))
		  input-whitespace-treatment: 'collapse
		  (build-lot (current-node) (car gilist))
		  (loop (cdr gilist)))
		(loop (cdr gilist)))))

      (if (generate-toc-in-front)
	  (process-children)
	  (empty-sosofo)))))
; Copied from stylesheets/docbook/print/dbcompon.dsl.
(define ($component$)
  (make simple-page-sequence
    page-n-columns: %page-n-columns%
    page-number-restart?: #f		; changed
    page-number-format: ($page-number-format$)
    use: default-text-style
    left-header:   ($left-header$)
    center-header: ($center-header$)
    right-header:  ($right-header$)
    left-footer:   ($left-footer$)
    center-footer: ($center-footer$)
    right-footer:  ($right-footer$)
    start-indent: %body-start-indent%
    input-whitespace-treatment: 'collapse
    quadding: %default-quadding%
    (make sequence
      ($component-title$)
      (process-children))
    (make-endnotes)))

; Center figures.
(element mediaobject
  (make paragraph
    quadding: 'center			; added
    ($mediaobject$)))

;; Display verbatim block environments with smaller font.
; Copied from stylesheets/docbook/print/dbverb.dsl.
(define ($verbatim-display$ indent line-numbers?)
  (let* ((width-in-chars (if (attribute-string (normalize "width"))
			     (string->number (attribute-string (normalize "width")))
			     %verbatim-default-width%))
	 (fsize (lambda () (if (or (attribute-string (normalize "width"))
				   (not %verbatim-size-factor%))
			       (/ (/ (- %text-width% (inherited-start-indent))
				     width-in-chars) 
				  0.7)
			      (inherited-font-size)))) ; changed
	 (vspace (if (INBLOCK?)
		     0pt
		     (if (INLIST?)
			 %para-sep% 
			 %block-sep%))))
    (make paragraph
      use: verbatim-style
      space-before: (if (and (string=? (gi (parent)) (normalize "entry"))
 			     (absolute-first-sibling?))
			0pt
			vspace)
      space-after:  (if (and (string=? (gi (parent)) (normalize "entry"))
 			     (absolute-last-sibling?))
			0pt
			vspace)
      font-size: (fsize)
      line-spacing: (* (fsize) %line-spacing-factor%)
      start-indent: (if (INBLOCK?)
			(inherited-start-indent)
			(+ %block-start-indent% (inherited-start-indent)))
      (if (or indent line-numbers?)
	  ($linespecific-line-by-line$ indent line-numbers?)
	  (process-children)))))

;; Remove initial and final spaces before programlisting embedded
;; within a para.
(define ($verbatim-display-embedded$ indent line-numbers?)
  (let* ((width-in-chars (if (attribute-string (normalize "width"))
			     (string->number (attribute-string (normalize "width")))
			     %verbatim-default-width%))
	 (fsize (lambda () (if (or (attribute-string (normalize "width"))
				   (not %verbatim-size-factor%))
			       (/ (/ (- %text-width% (inherited-start-indent))
				     width-in-chars) 
				  0.7)
			       (inherited-font-size))))) ; changed
    (make paragraph
      use: verbatim-style
      space-before: 0pt
      space-after: 0pt
      min-pre-line-spacing: 0pt
      min-post-line-spacing: 0pt
      keep-with-previous?: #t
      keep-with-next?: #t
      font-size: (fsize)
      line-spacing: (* (fsize) %line-spacing-factor%)
      start-indent: (if (INBLOCK?)
			(inherited-start-indent)
			(+ %block-start-indent% (inherited-start-indent)))
      (if (or indent line-numbers?)
	  ($linespecific-line-by-line$ indent line-numbers?)
	  (process-children)))))
(element (para programlisting)		; process the programlisting, not para
  ($verbatim-display-embedded$
   %indent-programlisting-lines%
   %number-programlisting-lines%))

;; Remove initial and final spaces before itemizedlist embedded
;; within a para.
(define ($list-embedded$)
  (make display-group
    start-indent: (if (INBLOCK?)
                      (inherited-start-indent)
                      (+ %block-start-indent% (inherited-start-indent)))
    space-after:  0pt
    space-before: 0pt
    min-pre-line-spacing: 0pt
    min-post-line-spacing: 0pt
    keep-with-previous?: #t
    keep-with-next?: #t))
(element (para itemizedlist)
  ($list-embedded$))
(element (para orderedlist)
  ($list-embedded$))

;;; From http://cyberelk.net/tim/docbook/selfdocbook/selfdocbook.dsl.html:
;;; To make URLs line wrap we use the TeX 'url' package.
;;; See also: jadetex.cfg
;; First we need to declare the 'formatting-instruction' flow class.
(declare-flow-object-class formatting-instruction
"UNREGISTERED::James Clark//Flow Object Class::formatting-instruction")
;; Then redefine ulink to use it.
(element ulink
  (make sequence
    (if (node-list-empty? (children (current-node)))
        ; ulink url="...", /ulink
        (make formatting-instruction
          data: (string-append "\\url{"
                               (attribute-string (normalize "url"))
                               "}"))
        (if (equal? (attribute-string (normalize "url"))
                    (data-of (current-node)))
        ; ulink url="http://...", http://..., /ulink
            (make formatting-instruction
	      data: (string-append "\\url{"
				   (attribute-string (normalize "url"))
				   "}"))
        ; ulink url="http://...", some text, /ulink
            (make sequence
              ($charseq$)
              (literal " (")
              (make formatting-instruction data:
                    (string-append "\\url{"
                                   (attribute-string (normalize "url"))
                                   "}"))
              (literal ")"))))))
;;; And redefine filename to use it too.
(element filename
  (make formatting-instruction
    data: (string-append "\\path{" (data-of (current-node)) "}")))

;; We use ten callouts and only special symbols for nine are permitted.
(define %callout-fancy-bug% #f)

;; Support PDF bookmarks.
;; From http://www.dpawson.co.uk/docbook/dsssl/dssslpdf.html#bookmarks.
(declare-characteristic heading-level 
   "UNREGISTERED::James Clark//Characteristic::heading-level" 2)


</style-specification-body>
</style-specification>

<external-specification id="docbook" document="docbook.dsl">

</style-sheet>


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


Powered by eList eXpress LLC