mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-04 06:11:37 +01:00 
			
		
		
		
	
		
			
	
	
		
			506 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			506 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								;; $Id$
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								;; This file is part of the Modular DocBook Stylesheet distribution.
							 | 
						||
| 
								 | 
							
								;; See ../README or http://nwalsh.com/docbook/dsssl/
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; ============================= COMPONENTS =============================
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								;; in docbook, components are containers at the chapter/appendix level
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($title-header-footer-element$)
							 | 
						||
| 
								 | 
							
								  (let* ((firstchild (node-list-first (children (current-node))))
							 | 
						||
| 
								 | 
							
									 (metainfo   (if (node-list-empty? firstchild)
							 | 
						||
| 
								 | 
							
											 (empty-node-list)
							 | 
						||
| 
								 | 
							
											 (if (member (gi firstchild) (info-element-list))
							 | 
						||
| 
								 | 
							
											     firstchild
							 | 
						||
| 
								 | 
							
											     (empty-node-list))))
							 | 
						||
| 
								 | 
							
									 (metatitle  (select-elements (children metainfo) (normalize "title")))
							 | 
						||
| 
								 | 
							
									 (metatabb   (select-elements (children metainfo) (normalize "titleabbrev")))
							 | 
						||
| 
								 | 
							
									 (title      (select-elements (children (current-node)) 
							 | 
						||
| 
								 | 
							
												      (normalize "title")))
							 | 
						||
| 
								 | 
							
									 (titleabb   (select-elements (children (current-node)) 
							 | 
						||
| 
								 | 
							
												      (normalize "titleabbrev"))))
							 | 
						||
| 
								 | 
							
								    (if (node-list-empty? metatabb)
							 | 
						||
| 
								 | 
							
									(if (node-list-empty? titleabb)
							 | 
						||
| 
								 | 
							
									    (if (node-list-empty? metatitle)
							 | 
						||
| 
								 | 
							
										title
							 | 
						||
| 
								 | 
							
										metatitle)
							 | 
						||
| 
								 | 
							
									    titleabb)
							 | 
						||
| 
								 | 
							
									metatabb)))
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								(define ($refentry-header-footer-element$)
							 | 
						||
| 
								 | 
							
								  (let* ((refdescriptor (node-list-first 
							 | 
						||
| 
								 | 
							
											 (select-elements 
							 | 
						||
| 
								 | 
							
											  (descendants (current-node)) (normalize "refdescriptor"))))
							 | 
						||
| 
								 | 
							
									 (refname       (node-list-first 
							 | 
						||
| 
								 | 
							
											 (select-elements 
							 | 
						||
| 
								 | 
							
											  (descendants (current-node)) (normalize "refname"))))
							 | 
						||
| 
								 | 
							
								         (refentrytitle (node-list-first 
							 | 
						||
| 
								 | 
							
											 (select-elements 
							 | 
						||
| 
								 | 
							
											  (descendants (current-node)) (normalize "refentrytitle")))))
							 | 
						||
| 
								 | 
							
								    (if (node-list-empty? refentrytitle)
							 | 
						||
| 
								 | 
							
									(if (node-list-empty? refdescriptor)
							 | 
						||
| 
								 | 
							
									    refname
							 | 
						||
| 
								 | 
							
									    refdescriptor)
							 | 
						||
| 
								 | 
							
									refentrytitle)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($title-header-footer$)
							 | 
						||
| 
								 | 
							
								  (let* ((title (if (equal? (gi) (normalize "refentry"))
							 | 
						||
| 
								 | 
							
										   ($refentry-header-footer-element$)
							 | 
						||
| 
								 | 
							
										   ($title-header-footer-element$))))
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      font-posture: 'italic
							 | 
						||
| 
								 | 
							
								      (with-mode hf-mode 
							 | 
						||
| 
								 | 
							
									(process-node-list title)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($page-number-header-footer$) 
							 | 
						||
| 
								 | 
							
								  (let ((component (ancestor-member (current-node) 
							 | 
						||
| 
								 | 
							
												    (append (division-element-list)
							 | 
						||
| 
								 | 
							
													    (component-element-list)))))
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      font-posture: 'italic
							 | 
						||
| 
								 | 
							
								      (literal 
							 | 
						||
| 
								 | 
							
								       (gentext-page)
							 | 
						||
| 
								 | 
							
								       (if %page-number-restart%
							 | 
						||
| 
								 | 
							
									   (cond
							 | 
						||
| 
								 | 
							
									    ((equal? (gi component) (normalize "appendix") ) 
							 | 
						||
| 
								 | 
							
									     (string-append
							 | 
						||
| 
								 | 
							
									      (element-label component #t)
							 | 
						||
| 
								 | 
							
									      (gentext-intra-label-sep "_pagenumber")))
							 | 
						||
| 
								 | 
							
									    ((equal? (gi component) (normalize "chapter"))
							 | 
						||
| 
								 | 
							
									     (string-append
							 | 
						||
| 
								 | 
							
									      (element-label component #t)
							 | 
						||
| 
								 | 
							
									      (gentext-intra-label-sep "_pagenumber")))
							 | 
						||
| 
								 | 
							
									    (else ""))
							 | 
						||
| 
								 | 
							
									   ""))
							 | 
						||
| 
								 | 
							
								      (page-number-sosofo))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (first-page-inner-header gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (first-page-center-header gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (first-page-outer-header gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (page-inner-header gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (page-center-header gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (page-outer-header gi)
							 | 
						||
| 
								 | 
							
								  (cond
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "dedication")) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "lot")) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "part")) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "toc")) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								   (else ($title-header-footer$))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (first-page-inner-footer gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (first-page-center-footer gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (first-page-outer-footer gi)
							 | 
						||
| 
								 | 
							
								  (cond
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "dedication")) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "part")) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								   (else ($page-number-header-footer$))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (page-inner-footer gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (page-center-footer gi)
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (page-outer-footer gi)
							 | 
						||
| 
								 | 
							
								  ($page-number-header-footer$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($page-number-format$ #!optional (gi (gi)))
							 | 
						||
| 
								 | 
							
								  (cond
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "toc")) "i")
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "lot")) "i")
							 | 
						||
| 
								 | 
							
								   ((equal? (normalize gi) (normalize "preface")) "i")
							 | 
						||
| 
								 | 
							
								   (else "1")))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($left-header$ #!optional (gi (gi)))
							 | 
						||
| 
								 | 
							
								  (if-first-page
							 | 
						||
| 
								 | 
							
								   (if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
								       (first-page-inner-header gi)
							 | 
						||
| 
								 | 
							
								       (first-page-outer-header gi))
							 | 
						||
| 
								 | 
							
								   (if %two-side%
							 | 
						||
| 
								 | 
							
								       (if-front-page
							 | 
						||
| 
								 | 
							
									(if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									    (page-inner-header gi)
							 | 
						||
| 
								 | 
							
									    (page-outer-header gi))
							 | 
						||
| 
								 | 
							
									(if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									    (page-outer-header gi)
							 | 
						||
| 
								 | 
							
									    (page-inner-header gi)))
							 | 
						||
| 
								 | 
							
								       (if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									   (page-inner-header gi)
							 | 
						||
| 
								 | 
							
									   (page-outer-header gi)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($center-header$ #!optional (gi (gi)))
							 | 
						||
| 
								 | 
							
								  (if-first-page
							 | 
						||
| 
								 | 
							
								   (first-page-center-header gi)
							 | 
						||
| 
								 | 
							
								   (page-center-header gi)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($right-header$ #!optional (gi (gi)))
							 | 
						||
| 
								 | 
							
								  (if-first-page
							 | 
						||
| 
								 | 
							
								   (if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
								       (first-page-outer-header gi)
							 | 
						||
| 
								 | 
							
								       (first-page-inner-header gi))
							 | 
						||
| 
								 | 
							
								   (if %two-side%
							 | 
						||
| 
								 | 
							
								       (if-front-page
							 | 
						||
| 
								 | 
							
									(if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									    (page-outer-header gi)
							 | 
						||
| 
								 | 
							
									    (page-inner-header gi))
							 | 
						||
| 
								 | 
							
									(if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									    (page-inner-header gi)
							 | 
						||
| 
								 | 
							
									    (page-outer-header gi)))
							 | 
						||
| 
								 | 
							
								       (if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									   (page-outer-header gi)
							 | 
						||
| 
								 | 
							
									   (page-inner-header gi)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($left-footer$ #!optional (gi (gi)))
							 | 
						||
| 
								 | 
							
								  (if-first-page
							 | 
						||
| 
								 | 
							
								   (if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
								       (first-page-inner-footer gi)
							 | 
						||
| 
								 | 
							
								       (first-page-outer-footer gi))
							 | 
						||
| 
								 | 
							
								   (if %two-side%
							 | 
						||
| 
								 | 
							
								       (if-front-page
							 | 
						||
| 
								 | 
							
									(if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									    (page-inner-footer gi)
							 | 
						||
| 
								 | 
							
									    (page-outer-footer gi))
							 | 
						||
| 
								 | 
							
									(if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									    (page-outer-footer gi)
							 | 
						||
| 
								 | 
							
									    (page-inner-footer gi)))
							 | 
						||
| 
								 | 
							
								       (if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									   (page-inner-footer gi)
							 | 
						||
| 
								 | 
							
									   (page-outer-footer gi)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($center-footer$ #!optional (gi (gi)))
							 | 
						||
| 
								 | 
							
								  (if-first-page
							 | 
						||
| 
								 | 
							
								   (first-page-center-footer gi)
							 | 
						||
| 
								 | 
							
								   (page-center-footer gi)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($right-footer$ #!optional (gi (gi)))
							 | 
						||
| 
								 | 
							
								  (if-first-page
							 | 
						||
| 
								 | 
							
								   (if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
								       (first-page-outer-footer gi)
							 | 
						||
| 
								 | 
							
								       (first-page-inner-footer gi))
							 | 
						||
| 
								 | 
							
								   (if %two-side%
							 | 
						||
| 
								 | 
							
								       (if-front-page
							 | 
						||
| 
								 | 
							
									(if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									    (page-outer-footer gi)
							 | 
						||
| 
								 | 
							
									    (page-inner-footer gi))
							 | 
						||
| 
								 | 
							
									(if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									    (page-inner-footer gi)
							 | 
						||
| 
								 | 
							
									    (page-outer-footer gi)))
							 | 
						||
| 
								 | 
							
								       (if (equal? %writing-mode% 'left-to-right)
							 | 
						||
| 
								 | 
							
									   (page-outer-footer gi)
							 | 
						||
| 
								 | 
							
									   (page-inner-footer gi)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($component$)
							 | 
						||
| 
								 | 
							
								  (make simple-page-sequence
							 | 
						||
| 
								 | 
							
								    page-n-columns: %page-n-columns%
							 | 
						||
| 
								 | 
							
								    page-number-restart?: (or %page-number-restart% 
							 | 
						||
| 
								 | 
							
											      (book-start?) 
							 | 
						||
| 
								 | 
							
											      (first-chapter?))
							 | 
						||
| 
								 | 
							
								    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)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define ($component-title$)
							 | 
						||
| 
								 | 
							
								  (let* ((info (cond
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "appendix"))
							 | 
						||
| 
								 | 
							
										 (select-elements (children (current-node)) (normalize "docinfo")))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "article"))
							 | 
						||
| 
								 | 
							
										 (node-list-filter-by-gi (children (current-node))
							 | 
						||
| 
								 | 
							
													 (list (normalize "artheader")
							 | 
						||
| 
								 | 
							
													       (normalize "articleinfo"))))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "bibliography"))
							 | 
						||
| 
								 | 
							
										 (select-elements (children (current-node)) (normalize "docinfo")))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "chapter"))
							 | 
						||
| 
								 | 
							
										 (select-elements (children (current-node)) (normalize "docinfo")))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "dedication")) 
							 | 
						||
| 
								 | 
							
										 (empty-node-list))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "glossary"))
							 | 
						||
| 
								 | 
							
										 (select-elements (children (current-node)) (normalize "docinfo")))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "index"))
							 | 
						||
| 
								 | 
							
										 (select-elements (children (current-node)) (normalize "docinfo")))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "preface"))
							 | 
						||
| 
								 | 
							
										 (select-elements (children (current-node)) (normalize "docinfo")))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "reference"))
							 | 
						||
| 
								 | 
							
										 (select-elements (children (current-node)) (normalize "docinfo")))
							 | 
						||
| 
								 | 
							
										((equal? (gi) (normalize "setindex"))
							 | 
						||
| 
								 | 
							
										 (select-elements (children (current-node)) (normalize "docinfo")))
							 | 
						||
| 
								 | 
							
										(else
							 | 
						||
| 
								 | 
							
										 (empty-node-list))))
							 | 
						||
| 
								 | 
							
									 (exp-children (if (node-list-empty? info)
							 | 
						||
| 
								 | 
							
											   (empty-node-list)
							 | 
						||
| 
								 | 
							
											   (expand-children (children info) 
							 | 
						||
| 
								 | 
							
													    (list (normalize "bookbiblio") 
							 | 
						||
| 
								 | 
							
														  (normalize "bibliomisc")
							 | 
						||
| 
								 | 
							
														  (normalize "biblioset")))))
							 | 
						||
| 
								 | 
							
									 (parent-titles (select-elements (children (current-node)) (normalize "title")))
							 | 
						||
| 
								 | 
							
									 (info-titles   (select-elements exp-children (normalize "title")))
							 | 
						||
| 
								 | 
							
									 (titles        (if (node-list-empty? parent-titles)
							 | 
						||
| 
								 | 
							
											    info-titles
							 | 
						||
| 
								 | 
							
											    parent-titles))
							 | 
						||
| 
								 | 
							
									 (subtitles     (select-elements exp-children (normalize "subtitle"))))
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (make paragraph
							 | 
						||
| 
								 | 
							
									font-family-name: %title-font-family%
							 | 
						||
| 
								 | 
							
									font-weight: 'bold
							 | 
						||
| 
								 | 
							
									font-size: (HSIZE 4)
							 | 
						||
| 
								 | 
							
									line-spacing: (* (HSIZE 4) %line-spacing-factor%)
							 | 
						||
| 
								 | 
							
									space-before: (* (HSIZE 4) %head-before-factor%)
							 | 
						||
| 
								 | 
							
									start-indent: 0pt
							 | 
						||
| 
								 | 
							
									first-line-start-indent: 0pt
							 | 
						||
| 
								 | 
							
									quadding: %component-title-quadding%
							 | 
						||
| 
								 | 
							
									heading-level: (if %generate-heading-level% 1 0)
							 | 
						||
| 
								 | 
							
									keep-with-next?: #t
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									(if (string=? (element-label) "")
							 | 
						||
| 
								 | 
							
									    (empty-sosofo)
							 | 
						||
| 
								 | 
							
									    (literal (gentext-element-name-space (current-node))
							 | 
						||
| 
								 | 
							
										     (element-label)
							 | 
						||
| 
								 | 
							
										     (gentext-label-title-sep (gi))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									(if (node-list-empty? titles)
							 | 
						||
| 
								 | 
							
									    (element-title-sosofo) ;; get a default!
							 | 
						||
| 
								 | 
							
									    (with-mode component-title-mode
							 | 
						||
| 
								 | 
							
									      (make sequence
							 | 
						||
| 
								 | 
							
										(process-node-list titles)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      (make paragraph
							 | 
						||
| 
								 | 
							
									font-family-name: %title-font-family%
							 | 
						||
| 
								 | 
							
									font-weight: 'bold
							 | 
						||
| 
								 | 
							
									font-posture: 'italic
							 | 
						||
| 
								 | 
							
									font-size: (HSIZE 3)
							 | 
						||
| 
								 | 
							
									line-spacing: (* (HSIZE 3) %line-spacing-factor%)
							 | 
						||
| 
								 | 
							
									space-before: (* 0.5 (* (HSIZE 3) %head-before-factor%))
							 | 
						||
| 
								 | 
							
									space-after: (* (HSIZE 4) %head-after-factor%)
							 | 
						||
| 
								 | 
							
									start-indent: 0pt
							 | 
						||
| 
								 | 
							
									first-line-start-indent: 0pt
							 | 
						||
| 
								 | 
							
									quadding: %component-subtitle-quadding%
							 | 
						||
| 
								 | 
							
									keep-with-next?: #t
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									(with-mode component-title-mode
							 | 
						||
| 
								 | 
							
									  (make sequence
							 | 
						||
| 
								 | 
							
									    (process-node-list subtitles)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(mode component-title-mode
							 | 
						||
| 
								 | 
							
								  (element title
							 | 
						||
| 
								 | 
							
								    (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element subtitle
							 | 
						||
| 
								 | 
							
								    (process-children))
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; this is how we prevent the title in the header from acquiring the
							 | 
						||
| 
								 | 
							
								;;   display treatment that it receives in the body of the document
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								(mode hf-mode
							 | 
						||
| 
								 | 
							
								  (element title
							 | 
						||
| 
								 | 
							
								    (let* ((component (ancestor-member (current-node) 
							 | 
						||
| 
								 | 
							
												       (component-element-list)))
							 | 
						||
| 
								 | 
							
									   (chaporapp (or (equal? (gi component) (normalize "chapter"))
							 | 
						||
| 
								 | 
							
											  (equal? (gi component) (normalize "appendix")))))
							 | 
						||
| 
								 | 
							
								      (if %chap-app-running-heads%
							 | 
						||
| 
								 | 
							
									  (make sequence
							 | 
						||
| 
								 | 
							
									    (if (and chaporapp
							 | 
						||
| 
								 | 
							
										     %chapter-autolabel%
							 | 
						||
| 
								 | 
							
										     (or %chap-app-running-head-autolabel%
							 | 
						||
| 
								 | 
							
											 (attribute-string (normalize "label") component)))
							 | 
						||
| 
								 | 
							
										(literal (gentext-element-name-space component)
							 | 
						||
| 
								 | 
							
											 (element-label component)
							 | 
						||
| 
								 | 
							
											 (gentext-label-title-sep (gi component)))
							 | 
						||
| 
								 | 
							
										(empty-sosofo))
							 | 
						||
| 
								 | 
							
									    (process-children-trim))
							 | 
						||
| 
								 | 
							
									  (empty-sosofo))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element titleabbrev
							 | 
						||
| 
								 | 
							
								    (if %chap-app-running-heads%
							 | 
						||
| 
								 | 
							
									(make sequence
							 | 
						||
| 
								 | 
							
									  (if (or (have-ancestor? (normalize "chapter"))
							 | 
						||
| 
								 | 
							
										  (have-ancestor? (normalize "appendix")))
							 | 
						||
| 
								 | 
							
									      (literal (gentext-element-name-space (parent))
							 | 
						||
| 
								 | 
							
										       (element-label (parent))
							 | 
						||
| 
								 | 
							
										       (gentext-label-title-sep (gi (parent))))
							 | 
						||
| 
								 | 
							
									      (empty-sosofo))
							 | 
						||
| 
								 | 
							
									  (process-children-trim))
							 | 
						||
| 
								 | 
							
									(empty-sosofo)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element refentrytitle
							 | 
						||
| 
								 | 
							
								    (if %chap-app-running-heads%
							 | 
						||
| 
								 | 
							
									(process-children-trim)
							 | 
						||
| 
								 | 
							
									(empty-sosofo)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element refdescriptor
							 | 
						||
| 
								 | 
							
								    (if %chap-app-running-heads%
							 | 
						||
| 
								 | 
							
									(process-children-trim)
							 | 
						||
| 
								 | 
							
									(empty-sosofo)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element refname
							 | 
						||
| 
								 | 
							
								    (if %chap-app-running-heads%
							 | 
						||
| 
								 | 
							
									(process-children-trim)
							 | 
						||
| 
								 | 
							
									(empty-sosofo)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ;; Graphics aren't allowed in headers and footers...
							 | 
						||
| 
								 | 
							
								  (element graphic
							 | 
						||
| 
								 | 
							
								    (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element inlinegraphic
							 | 
						||
| 
								 | 
							
								    (empty-sosofo))
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element appendix ($component$))
							 | 
						||
| 
								 | 
							
								(element (article appendix) ($section$)) ;; this is a special case
							 | 
						||
| 
								 | 
							
								(element (appendix title) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element chapter ($component$))
							 | 
						||
| 
								 | 
							
								(element (chapter title) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element preface ($component$))
							 | 
						||
| 
								 | 
							
								(element (preface title) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; Dedication is empty except in a special mode so that it can be
							 | 
						||
| 
								 | 
							
								;; reordered (made to come before the TOCs)
							 | 
						||
| 
								 | 
							
								(element dedication (empty-sosofo))
							 | 
						||
| 
								 | 
							
								(mode dedication-page-mode
							 | 
						||
| 
								 | 
							
								  (element dedication ($component$))
							 | 
						||
| 
								 | 
							
								  (element (dedication title) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; Articles are like components, except that if they may have much
							 | 
						||
| 
								 | 
							
								;; more formal title pages (created with article-titlepage).
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								(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%
							 | 
						||
| 
								 | 
							
													(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%
							 | 
						||
| 
								 | 
							
													(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))
							 | 
						||
| 
								 | 
							
									  
							 | 
						||
| 
								 | 
							
								      (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:   ($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)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									(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)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      (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 (article title) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 |