[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>
<!-- 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