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] | [Elist Home]


Subject: Re: DOCBOOK-APPS: Re: How to output appendices,bibliographies on seperate pages using DSSSL


On Thu, Nov 29, 2001 at 07:55:08PM -0500, Rory Hunter wrote:
> Norman Walsh wrote:
> 
> >/ Rory Hunter <roryh@dcs.ed.ac.uk> was heard to say:
> >| I'd like to be able to output appendices and bibliographies on
> >| seperate pages, using the DSSSL print stylesheet. I've looked at
> >| dbparam.dsl, and at some of the other files, but it's a bit beyond me
> >| at present. Is there any relatively easy way to do this?
> >
> >Are these appendixes and bibliographies in a book, or somewhere else?
> 
> 
> They're in an <article>.

I have done that for appendices.  It requires modifying the handling
of article, and the handling of appendices.  This sample code may help
you - I hope it's OK when out of context - the full file will be
released RSN (ie. when I'm done with admin tasks) at
https://savannah.gnu.org/projects/alcovebook/

Indeed what this does is providing an
%article-section-starts-new-page% flag, which controls that for all
section-level elements, including glossary and such.

There are also many features in that, some of which maybe not
optimally implemented - hopefully all changed code should be tagged as
such.  The reference code was 1.72, I did not upgrade it yet.


;;;
;;; Modified code from docbook-dsssl 1.72
;;;

;; emulate 1.72 behaviour using new features

(define %article-section-starts-new-page% #f)
(define %endnotes-on-own-page% #f)
(define ($endnotes-left-footer$) ($left-footer$))
(define ($endnotes-right-footer$) ($right-footer$))
(define ($endnotes-center-footer$) ($center-footer$))

(define (%titlepage-left-header%) (empty-sosofo))
(define (%titlepage-right-header%) (empty-sosofo))
(define (%titlepage-center-header%) (empty-sosofo))

(define (%titlepage-left-footer%) (empty-sosofo))
(define (%titlepage-right-footer%) (empty-sosofo))
(define (%titlepage-center-footer%) (empty-sosofo))


;; the code

(element article
  (let* ((info (node-list-filter-by-gi (children (current-node))
                                       (list (normalize "artheader")
                                             (normalize "articleinfo"))))
         (nl   (titlepage-info-elements (current-node) info))
         (article-titlepage (if %generate-article-titlepage-on-separate-page%
                                (make sequence
                                  (if (article-titlepage-content? nl 'recto)
                                      (make simple-page-sequence
                                        page-n-columns: %page-n-columns%
                                        use: default-text-style
                                        quadding: %default-quadding%
;; BEGIN ADDITION
					center-header: (%titlepage-center-header%)
					left-header: (%titlepage-left-header%)
					right-header: (%titlepage-right-header%)
					center-footer: (%titlepage-center-footer%)
					left-footer: (%titlepage-left-footer%)
					right-footer: (%titlepage-right-footer%)
;; END ADDITION
                                        (article-titlepage nl 'recto))
                                      (empty-sosofo))
                                  (if (article-titlepage-content? nl 'verso)
                                      (make simple-page-sequence
                                        page-n-columns: %page-n-columns%
                                        use: default-text-style
                                        quadding: %default-quadding%
;; BEGIN ADDITION
					center-header: (%titlepage-center-header%)
					left-header: (%titlepage-left-header%)
					right-header: (%titlepage-right-header%)
					center-footer: (%titlepage-center-footer%)
					left-footer: (%titlepage-left-footer%)
					right-footer: (%titlepage-right-footer%)
;; END ADDITION
					(article-titlepage nl 'verso))
                                      (empty-sosofo)))
                                (make sequence
                                  (article-titlepage nl 'recto)
                                  (article-titlepage nl 'verso)))))
    (make sequence
      (if (and %generate-article-titlepage% 
               %generate-article-titlepage-on-separate-page%)
          article-titlepage
          (empty-sosofo))

      (if (and %generate-article-toc% 
               (not %generate-article-toc-on-titlepage%)
               %generate-article-titlepage-on-separate-page%
               (generate-toc-in-front))
          (make simple-page-sequence
            page-n-columns: %page-n-columns%
            page-number-restart?: %article-page-number-restart%
            page-number-format: ($page-number-format$ (normalize "toc"))
            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
            use: default-text-style
            quadding: %default-quadding%
            (build-toc (current-node)
                       (toc-depth (current-node))))
          (empty-sosofo))

;; BEGIN ADDITION          
      (if %article-section-starts-new-page%
	  (make sequence
	    (process-children)
	    (make-endnotes))
;;; END ADDITION

	  (make simple-page-sequence
;; BEGIN ADDITION          
	    ;; WARNING: all this is copied in "element section" below
;;; END ADDITION
	    page-n-columns: %page-n-columns%
	    page-number-restart?: (or %article-page-number-restart% 
				      (book-start?))
	    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%

	    (if (and %generate-article-titlepage% 
		     (not %generate-article-titlepage-on-separate-page%))
		article-titlepage
		(empty-sosofo))

	    (if (and %generate-article-toc% 
		     (generate-toc-in-front)
		     (not %generate-article-toc-on-titlepage%)
		     (not %generate-article-titlepage-on-separate-page%))
		(make display-group
		  space-after: (* (HSIZE 3) %head-after-factor%)
		  (build-toc (current-node)
			     (toc-depth (current-node))))
		(empty-sosofo))

	    (process-children)

;;; BEGIN ADDITION
	    (if %endnotes-on-own-page%
		(empty-sosofo)
;;; END ADDITION
		(make-endnotes))

	    (if (and %generate-article-toc% 
		     (not (generate-toc-in-front))
		     (not %generate-article-toc-on-titlepage%)
		     (not %generate-article-titlepage-on-separate-page%))
		(make display-group
		  space-after: (* (HSIZE 3) %head-after-factor%)
		  (build-toc (current-node)
			     (toc-depth (current-node))))
		(empty-sosofo))))

;;; BEGIN ADDITION
      (if %endnotes-on-own-page%

	  (make simple-page-sequence
	    page-n-columns: %page-n-columns%
	    page-number-restart?: (or %article-page-number-restart% 
				      (book-start?))
	    page-number-format: ($page-number-format$)
	    use: default-text-style
	    left-header:   ($left-header$)
	    center-header: ($center-header$)
	    right-header:  ($right-header$)
	    left-footer:   ($endnotes-left-footer$)
	    center-footer: ($endnotes-center-footer$)
	    right-footer:  ($endnotes-right-footer$)
	    start-indent: %body-start-indent%
	    input-whitespace-treatment: 'collapse
	    quadding: %default-quadding%

	    (make-endnotes))
	  (empty-sosofo))
;;; END ADDITION

      (if (and %generate-article-toc% 
               (not %generate-article-toc-on-titlepage%)
               %generate-article-titlepage-on-separate-page%
               (not (generate-toc-in-front)))
          (make simple-page-sequence
            page-n-columns: %page-n-columns%
            use: default-text-style
            quadding: %default-quadding%
            (build-toc (current-node)
                       (toc-depth (current-node))))
          (empty-sosofo)))))

(element section ($maybe-paged-section$))
(element (article appendix) ($maybe-paged-section$))
(element (article glossary) ($maybe-paged-section$))

(define ($maybe-paged-section$)
  (if (and %article-section-starts-new-page%
	   (not (is-section-level-element (parent (current-node)))))
      (make simple-page-sequence
	;; WARNING: all this is copied from the page-seq above
	page-n-columns: %page-n-columns%
	page-number-restart?: (or %article-page-number-restart% 
				  (book-start?))
	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%

	($section$))
      ($section$)))


Hope this helps,
-- 
Yann Dirson <Yann.Dirson@fr.alcove.com>                 http://www.alcove.com/
Free-Software Engineer				      Ingénieur Logiciel-Libre
Free-Software time manager    	       Responsable du temps Informatique-Libre
Debian GNU/Linux developper <dirson@debian.org>


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


Powered by eList eXpress LLC