+;; $Id: dbttlpg.dsl,v 1.13 2004/10/10 21:15:06 petere78 Exp $
+;;
+;; This file is part of the Modular DocBook Stylesheet distribution.
+;; See ../README or http://nwalsh.com/docbook/dsssl/
+;;
+
+(define (have-sibling? sibling-gi #!optional (node (current-node)))
+ (let loop ((nl (children (parent node))))
+ (if (node-list-empty? nl)
+ #f
+ (if (equal? (gi (node-list-first nl)) sibling-gi)
+ #t
+ (loop (node-list-rest nl))))))
+
+(define (titlepage-content? elements gis)
+ (let giloop ((gilist gis))
+ (if (null? gilist)
+ #f
+ (if (not (node-list-empty? (node-list-filter-by-gi
+ elements
+ (list (car gilist)))))
+ #t
+ (giloop (cdr gilist))))))
+
+(define (titlepage-gi-list-by-elements elements nodelist)
+ ;; Elements is a list of GIs. Nodelist is a list of nodes.
+ ;; This function returns all of the nodes in nodelist that
+ ;; are in elements in the order they occur in elements.
+ (let loop ((gilist elements) (rlist (empty-node-list)))
+ (if (null? gilist)
+ rlist
+ (loop (cdr gilist)
+ (node-list rlist (node-list-filter-by-gi
+ nodelist (list (car gilist))))))))
+
+(define (titlepage-gi-list-by-nodelist elements nodelist)
+ ;; Elements is a list of GIs. Nodelist is a list of nodes.
+ ;; This function returns all of the nodes in nodelist that
+ ;; are in elements in the order they occur in nodelist.
+ (let loop ((nl nodelist) (rlist (empty-node-list)))
+ (if (node-list-empty? nl)
+ rlist
+ (if (member (gi (node-list-first nl)) elements)
+ (loop (node-list-rest nl)
+ (node-list rlist (node-list-first nl)))
+ (loop (node-list-rest nl) rlist)))))
+
+(define (titlepage-nodelist elements nodelist)
+ ;; We expand BOOKBIBLIO, BIBLIOMISC, and BIBLIOSET in the element
+ ;; list because that level of wrapper usually isn't significant.
+ (let ((exp-nodelist (expand-children nodelist (list (normalize "bookbiblio")
+ (normalize "bibliomisc")
+ (normalize "biblioset")))))
+ (if %titlepage-in-info-order%
+ (titlepage-gi-list-by-nodelist elements exp-nodelist)
+ (titlepage-gi-list-by-elements elements exp-nodelist))))
+
+(mode titlepage-address-mode
+ (default (process-children)))
+
+;; == Title pages for SETs ==============================================
+
+(define (set-titlepage-recto-elements)
+ (list (normalize "title")
+ (normalize "subtitle")
+ (normalize "graphic")
+ (normalize "mediaobject")
+ (normalize "corpauthor")
+ (normalize "authorgroup")
+ (normalize "author")
+ (normalize "editor")))
+
+(define (set-titlepage-verso-elements)
+ (list (normalize "title")
+ (normalize "subtitle")
+ (normalize "corpauthor")
+ (normalize "authorgroup")
+ (normalize "author")
+ (normalize "editor")
+ (normalize "edition")
+ (normalize "pubdate")
+ (normalize "copyright")
+ (normalize "legalnotice")
+ (normalize "revhistory")))
+
+(define (set-titlepage-content? elements side)
+ (titlepage-content? elements (if (equal? side 'recto)
+ (set-titlepage-recto-elements)
+ (set-titlepage-verso-elements))))
+
+(define (set-titlepage elements #!optional (side 'recto))
+ (let ((nodelist (titlepage-nodelist
+ (if (equal? side 'recto)
+ (set-titlepage-recto-elements)
+ (set-titlepage-verso-elements))
+ elements)))
+;; (make simple-page-sequence
+;; page-n-columns: %titlepage-n-columns%
+;; input-whitespace-treatment: 'collapse
+;; use: default-text-style
+ (make sequence
+
+ ;; This hack is required for the RTF backend. If an external-graphic
+ ;; is the first thing on the page, RTF doesn't seem to do the right
+ ;; thing (the graphic winds up on the baseline of the first line
+ ;; of the page, left justified). This "one point rule" fixes
+ ;; that problem.
+ (make paragraph
+ line-spacing: 1pt
+ (literal ""))
+
+ (let loop ((nl nodelist) (lastnode (empty-node-list)))
+ (if (node-list-empty? nl)
+ (empty-sosofo)
+ (make sequence
+ (if (or (node-list-empty? lastnode)
+ (not (equal? (gi (node-list-first nl))
+ (gi lastnode))))
+ (set-titlepage-before (node-list-first nl) side)
+ (empty-sosofo))
+ (cond
+ ((equal? (gi (node-list-first nl)) (normalize "abbrev"))
+ (set-titlepage-abbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "abstract"))
+ (set-titlepage-abstract (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "address"))
+ (set-titlepage-address (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "affiliation"))
+ (set-titlepage-affiliation (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "artpagenums"))
+ (set-titlepage-artpagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "author"))
+ (set-titlepage-author (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorblurb"))
+ (set-titlepage-authorblurb (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorgroup"))
+ (set-titlepage-authorgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorinitials"))
+ (set-titlepage-authorinitials (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bibliomisc"))
+ (set-titlepage-bibliomisc (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "biblioset"))
+ (set-titlepage-biblioset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bookbiblio"))
+ (set-titlepage-bookbiblio (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "citetitle"))
+ (set-titlepage-citetitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "collab"))
+ (set-titlepage-collab (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "confgroup"))
+ (set-titlepage-confgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractnum"))
+ (set-titlepage-contractnum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractsponsor"))
+ (set-titlepage-contractsponsor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contrib"))
+ (set-titlepage-contrib (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "copyright"))
+ (set-titlepage-copyright (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpauthor"))
+ (set-titlepage-corpauthor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpname"))
+ (set-titlepage-corpname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "date"))
+ (set-titlepage-date (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "edition"))
+ (set-titlepage-edition (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "editor"))
+ (set-titlepage-editor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "firstname"))
+ (set-titlepage-firstname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "graphic"))
+ (set-titlepage-graphic (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "honorific"))
+ (set-titlepage-honorific (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "indexterm"))
+ (set-titlepage-indexterm (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "invpartnumber"))
+ (set-titlepage-invpartnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "isbn"))
+ (set-titlepage-isbn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issn"))
+ (set-titlepage-issn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issuenum"))
+ (set-titlepage-issuenum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "itermset"))
+ (set-titlepage-itermset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "keywordset"))
+ (set-titlepage-keywordset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "legalnotice"))
+ (set-titlepage-legalnotice (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "lineage"))
+ (set-titlepage-lineage (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "mediaobject"))
+ (set-titlepage-mediaobject (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "modespec"))
+ (set-titlepage-modespec (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "orgname"))
+ (set-titlepage-orgname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othercredit"))
+ (set-titlepage-othercredit (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othername"))
+ (set-titlepage-othername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pagenums"))
+ (set-titlepage-pagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "printhistory"))
+ (set-titlepage-printhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productname"))
+ (set-titlepage-productname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productnumber"))
+ (set-titlepage-productnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubdate"))
+ (set-titlepage-pubdate (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publisher"))
+ (set-titlepage-publisher (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publishername"))
+ (set-titlepage-publishername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubsnumber"))
+ (set-titlepage-pubsnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "releaseinfo"))
+ (set-titlepage-releaseinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "revhistory"))
+ (set-titlepage-revhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesinfo"))
+ (set-titlepage-seriesinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesvolnums"))
+ (set-titlepage-seriesvolnums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subjectset"))
+ (set-titlepage-subjectset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subtitle"))
+ (set-titlepage-subtitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "surname"))
+ (set-titlepage-surname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "title"))
+ (set-titlepage-title (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "titleabbrev"))
+ (set-titlepage-titleabbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "volumenum"))
+ (set-titlepage-volumenum (node-list-first nl) side))
+ (else
+ (set-titlepage-default (node-list-first nl) side)))
+ (loop (node-list-rest nl) (node-list-first nl))))))))
+
+(define (set-titlepage-before node side)
+ (if (equal? side 'recto)
+ (cond
+ ((equal? (gi node) (normalize "corpauthor"))
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;")))
+ ((equal? (gi node) (normalize "authorgroup"))
+ (if (have-sibling? (normalize "corpauthor") node)
+ (empty-sosofo)
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;"))))
+ ((equal? (gi node) (normalize "author"))
+ (if (or (have-sibling? (normalize "corpauthor") node)
+ (have-sibling? (normalize "authorgroup") node))
+ (empty-sosofo)
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;"))))
+ (else (empty-sosofo)))
+ (empty-sosofo)))
+
+(define (set-titlepage-default node side)
+ (let ((foo (debug (string-append "No set-titlepage-* for " (gi node) "!"))))
+ (empty-sosofo)))
+
+(define (set-titlepage-element node side)
+ (if (equal? side 'recto)
+ (with-mode set-titlepage-recto-mode
+ (process-node-list node))
+ (with-mode set-titlepage-verso-mode
+ (process-node-list node))))
+
+(define (set-titlepage-abbrev node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-abstract node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-address node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-affiliation node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-artpagenums node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-author node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-authorblurb node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-authorgroup node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-authorinitials node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-bibliomisc node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-biblioset node side)
+ (set-titlepage node side))
+(define (set-titlepage-bookbiblio node side)
+ (set-titlepage node side))
+(define (set-titlepage-citetitle node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-collab node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-confgroup node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-contractnum node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-contractsponsor node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-contrib node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-copyright node side)
+ (set-titlepage-element node side))
+
+(define (set-titlepage-corpauthor node side)
+ (if (equal? side 'recto)
+ (set-titlepage-element node side)
+ (if (first-sibling? node)
+ (make paragraph
+ (with-mode set-titlepage-verso-mode
+ (process-node-list
+ (select-elements (children (parent node))
+ (normalize "corpauthor")))))
+ (empty-sosofo))))
+
+(define (set-titlepage-corpname node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-date node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-edition node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-editor node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-firstname node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-graphic node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-honorific node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-indexterm node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-invpartnumber node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-isbn node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-issn node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-issuenum node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-itermset node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-keywordset node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-legalnotice node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-lineage node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-mediaobject node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-modespec node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-orgname node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-othercredit node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-othername node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-pagenums node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-printhistory node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-productname node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-productnumber node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-pubdate node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-publisher node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-publishername node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-pubsnumber node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-releaseinfo node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-revhistory node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-seriesinfo node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-seriesvolnums node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-subjectset node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-subtitle node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-surname node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-title node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-titleabbrev node side)
+ (set-titlepage-element node side))
+(define (set-titlepage-volumenum node side)
+ (set-titlepage-element node side))
+
+(define set-titlepage-recto-style
+ (style
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ font-size: (HSIZE 1)))
+
+(define set-titlepage-verso-style
+ (style
+ font-family-name: %body-font-family%))
+
+(mode set-titlepage-recto-mode
+ (element abbrev
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element abstract
+ (make display-group
+ use: set-titlepage-recto-style
+ quadding: 'start
+ ($semiformal-object$)))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element (abstract para)
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element address
+ (make display-group
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make display-group
+ use: set-titlepage-recto-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element author
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element authorblurb
+ (make display-group
+ use: set-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element (authorblurb para)
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element authorgroup
+ (make display-group
+ (process-children)))
+
+ (element authorinitials
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ (make sequence
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (process-children))
+ ;; This paragraph is a hack to get the spacing right.
+ ;; Authors always have an affiliation paragraph below them, even if
+ ;; it's empty, so corpauthors need one too.
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal "\no-break-space;"))))
+
+ (element corpname
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ (let ((editor-name (author-string)))
+ (make sequence
+ (if (first-sibling?)
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor% 6)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal (gentext-edited-by)))
+ (empty-sosofo))
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal editor-name)))))
+
+ (element firstname
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'center)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: set-titlepage-recto-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: 'start
+ line-spacing: (* 0.8 (inherited-line-spacing))
+ font-size: (* 0.8 (inherited-font-size))
+ (process-children)))
+
+ (element lineage
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element othercredit
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element othername
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element printhistory
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element publisher
+ (make display-group
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: set-titlepage-recto-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: set-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdescription)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: (HSIZE 4)
+ line-spacing: (* (HSIZE 4) %line-spacing-factor%)
+ space-before: (* (HSIZE 4) %head-before-factor%)
+ quadding: %division-subtitle-quadding%
+ keep-with-next?: #t
+ (process-children-trim)))
+
+ (element surname
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element title
+ (make paragraph
+ use: set-titlepage-recto-style
+ font-size: (HSIZE 5)
+ line-spacing: (* (HSIZE 5) %line-spacing-factor%)
+ space-before: (* (HSIZE 5) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ heading-level: (if %generate-heading-level% 1 0)
+ (with-mode title-mode
+ (process-children-trim))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: set-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+)
+
+(mode set-titlepage-verso-mode
+ (element abbrev
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element abstract ($semiformal-object$))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element address
+ (make display-group
+ use: set-titlepage-verso-style
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element author
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element authorblurb
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element authorgroup
+ (make paragraph
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (process-children-trim))))
+
+ (element authorinitials
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: set-titlepage-verso-style
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ ;; note: set-titlepage-corpauthor takes care of wrapping multiple
+ ;; corpauthors
+ (make sequence
+ (if (first-sibling?)
+ (if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
+ (empty-sosofo)
+ (literal (gentext-by) " "))
+ (literal ", "))
+ (process-children)))
+
+ (element corpname
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ ;; Print the editor name.
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (or #t (not in-group)) ; nevermind, always put out the Edited by
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-edited-by))
+ (literal "\no-break-space;")
+ (literal (author-string))))
+ (make sequence
+ (literal (author-string))))))
+
+ (element firstname
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'start)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: set-titlepage-verso-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: set-titlepage-verso-style
+ font-size: (* (inherited-font-size) 0.8)
+ (process-children-trim)))
+
+ (element lineage
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element othercredit
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element othername
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element printhistory
+ (make display-group
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ (literal (gentext-element-name-space (gi (current-node))))
+ (process-children)))
+
+ (element publisher
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: set-titlepage-verso-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: set-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: set-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: set-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: set-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ ;(process-node-list revremark)))
+ (empty-sosofo)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: set-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdescription)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (literal (if (first-sibling?) ": " "; "))
+ (process-children)))
+
+ (element surname
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+ (element title
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (with-mode title-mode
+ (process-children))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: set-titlepage-verso-style
+ (process-children)))
+
+)
+
+;; == Title pages for BOOKs =============================================
+
+(define (book-titlepage-recto-elements)
+ (list (normalize "title")
+ (normalize "subtitle")
+ (normalize "graphic")
+ (normalize "mediaobject")
+ (normalize "corpauthor")
+ (normalize "authorgroup")
+ (normalize "author")
+ (normalize "editor")))
+
+(define (book-titlepage-verso-elements)
+ (list (normalize "title")
+ (normalize "subtitle")
+ (normalize "corpauthor")
+ (normalize "authorgroup")
+ (normalize "author")
+ (normalize "editor")
+ (normalize "edition")
+ (normalize "pubdate")
+ (normalize "copyright")
+ (normalize "abstract")
+ (normalize "legalnotice")
+ (normalize "revhistory")))
+
+(define (book-titlepage-content? elements side)
+ (titlepage-content? elements (if (equal? side 'recto)
+ (book-titlepage-recto-elements)
+ (book-titlepage-verso-elements))))
+
+(define (book-titlepage elements #!optional (side 'recto))
+ (let ((nodelist (titlepage-nodelist
+ (if (equal? side 'recto)
+ (book-titlepage-recto-elements)
+ (book-titlepage-verso-elements))
+ elements)))
+;; (make simple-page-sequence
+;; page-n-columns: %titlepage-n-columns%
+;; input-whitespace-treatment: 'collapse
+;; use: default-text-style
+ (make sequence
+
+ ;; This hack is required for the RTF backend. If an external-graphic
+ ;; is the first thing on the page, RTF doesn't seem to do the right
+ ;; thing (the graphic winds up on the baseline of the first line
+ ;; of the page, left justified). This "one point rule" fixes
+ ;; that problem.
+ (make paragraph
+ line-spacing: 1pt
+ (literal ""))
+
+ (let loop ((nl nodelist) (lastnode (empty-node-list)))
+ (if (node-list-empty? nl)
+ (empty-sosofo)
+ (make sequence
+ (if (or (node-list-empty? lastnode)
+ (not (equal? (gi (node-list-first nl))
+ (gi lastnode))))
+ (book-titlepage-before (node-list-first nl) side)
+ (empty-sosofo))
+ (cond
+ ((equal? (gi (node-list-first nl)) (normalize "abbrev"))
+ (book-titlepage-abbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "abstract"))
+ (book-titlepage-abstract (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "address"))
+ (book-titlepage-address (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "affiliation"))
+ (book-titlepage-affiliation (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "artpagenums"))
+ (book-titlepage-artpagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "author"))
+ (book-titlepage-author (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorblurb"))
+ (book-titlepage-authorblurb (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorgroup"))
+ (book-titlepage-authorgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorinitials"))
+ (book-titlepage-authorinitials (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bibliomisc"))
+ (book-titlepage-bibliomisc (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "biblioset"))
+ (book-titlepage-biblioset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bookbiblio"))
+ (book-titlepage-bookbiblio (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "citetitle"))
+ (book-titlepage-citetitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "collab"))
+ (book-titlepage-collab (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "confgroup"))
+ (book-titlepage-confgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractnum"))
+ (book-titlepage-contractnum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractsponsor"))
+ (book-titlepage-contractsponsor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contrib"))
+ (book-titlepage-contrib (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "copyright"))
+ (book-titlepage-copyright (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpauthor"))
+ (book-titlepage-corpauthor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpname"))
+ (book-titlepage-corpname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "date"))
+ (book-titlepage-date (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "edition"))
+ (book-titlepage-edition (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "editor"))
+ (book-titlepage-editor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "firstname"))
+ (book-titlepage-firstname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "graphic"))
+ (book-titlepage-graphic (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "honorific"))
+ (book-titlepage-honorific (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "indexterm"))
+ (book-titlepage-indexterm (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "invpartnumber"))
+ (book-titlepage-invpartnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "isbn"))
+ (book-titlepage-isbn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issn"))
+ (book-titlepage-issn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issuenum"))
+ (book-titlepage-issuenum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "itermset"))
+ (book-titlepage-itermset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "keywordset"))
+ (book-titlepage-keywordset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "legalnotice"))
+ (book-titlepage-legalnotice (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "lineage"))
+ (book-titlepage-lineage (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "mediaobject"))
+ (book-titlepage-mediaobject (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "modespec"))
+ (book-titlepage-modespec (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "orgname"))
+ (book-titlepage-orgname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othercredit"))
+ (book-titlepage-othercredit (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othername"))
+ (book-titlepage-othername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pagenums"))
+ (book-titlepage-pagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "printhistory"))
+ (book-titlepage-printhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productname"))
+ (book-titlepage-productname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productnumber"))
+ (book-titlepage-productnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubdate"))
+ (book-titlepage-pubdate (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publisher"))
+ (book-titlepage-publisher (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publishername"))
+ (book-titlepage-publishername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubsnumber"))
+ (book-titlepage-pubsnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "releaseinfo"))
+ (book-titlepage-releaseinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "revhistory"))
+ (book-titlepage-revhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesinfo"))
+ (book-titlepage-seriesinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesvolnums"))
+ (book-titlepage-seriesvolnums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subjectset"))
+ (book-titlepage-subjectset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subtitle"))
+ (book-titlepage-subtitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "surname"))
+ (book-titlepage-surname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "title"))
+ (book-titlepage-title (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "titleabbrev"))
+ (book-titlepage-titleabbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "volumenum"))
+ (book-titlepage-volumenum (node-list-first nl) side))
+ (else
+ (book-titlepage-default (node-list-first nl) side)))
+ (loop (node-list-rest nl) (node-list-first nl))))))))
+
+(define (book-titlepage-before node side)
+ (if (equal? side 'recto)
+ (cond
+ ((equal? (gi node) (normalize "corpauthor"))
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;")))
+ ((equal? (gi node) (normalize "authorgroup"))
+ (if (have-sibling? (normalize "corpauthor") node)
+ (empty-sosofo)
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;"))))
+ ((equal? (gi node) (normalize "author"))
+ (if (or (have-sibling? (normalize "corpauthor") node)
+ (have-sibling? (normalize "authorgroup") node))
+ (empty-sosofo)
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;"))))
+ (else (empty-sosofo)))
+ (empty-sosofo)))
+
+(define (book-titlepage-default node side)
+ (let ((foo (debug (string-append "No book-titlepage-* for " (gi node) "!"))))
+ (empty-sosofo)))
+
+(define (book-titlepage-element node side)
+ (if (equal? side 'recto)
+ (with-mode book-titlepage-recto-mode
+ (process-node-list node))
+ (with-mode book-titlepage-verso-mode
+ (process-node-list node))))
+
+(define (book-titlepage-abbrev node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-abstract node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-address node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-affiliation node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-artpagenums node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-author node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-authorblurb node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-authorgroup node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-authorinitials node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-bibliomisc node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-biblioset node side)
+ (book-titlepage node side))
+(define (book-titlepage-bookbiblio node side)
+ (book-titlepage node side))
+(define (book-titlepage-citetitle node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-collab node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-confgroup node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-contractnum node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-contractsponsor node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-contrib node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-copyright node side)
+ (book-titlepage-element node side))
+
+(define (book-titlepage-corpauthor node side)
+ (if (equal? side 'recto)
+ (book-titlepage-element node side)
+ (if (first-sibling? node)
+ (make paragraph
+ (with-mode book-titlepage-verso-mode
+ (process-node-list
+ (select-elements (children (parent node))
+ (normalize "corpauthor")))))
+ (empty-sosofo))))
+
+(define (book-titlepage-corpname node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-date node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-edition node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-editor node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-firstname node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-graphic node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-honorific node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-indexterm node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-invpartnumber node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-isbn node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-issn node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-issuenum node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-itermset node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-keywordset node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-legalnotice node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-lineage node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-mediaobject node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-modespec node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-orgname node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-othercredit node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-othername node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-pagenums node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-printhistory node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-productname node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-productnumber node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-pubdate node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-publisher node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-publishername node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-pubsnumber node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-releaseinfo node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-revhistory node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-seriesinfo node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-seriesvolnums node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-subjectset node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-subtitle node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-surname node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-title node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-titleabbrev node side)
+ (book-titlepage-element node side))
+(define (book-titlepage-volumenum node side)
+ (book-titlepage-element node side))
+
+(define book-titlepage-recto-style
+ (style
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ font-size: (HSIZE 1)))
+
+(define book-titlepage-verso-style
+ (style
+ font-family-name: %body-font-family%))
+
+(mode book-titlepage-recto-mode
+ (element abbrev
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element abstract
+ (make display-group
+ use: book-titlepage-recto-style
+ quadding: 'start
+ ($semiformal-object$)))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element (abstract para)
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element address
+ (make display-group
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make display-group
+ use: book-titlepage-recto-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element author
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element authorblurb
+ (make display-group
+ use: book-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element (authorblurb para)
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element authorgroup
+ (make display-group
+ (process-children)))
+
+ (element authorinitials
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ (make sequence
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (process-children))
+ ;; This paragraph is a hack to get the spacing right.
+ ;; Authors always have an affiliation paragraph below them, even if
+ ;; it's empty, so corpauthors need one too.
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal "\no-break-space;"))))
+
+ (element corpname
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ (let ((editor-name (author-string)))
+ (make sequence
+ (if (first-sibling?)
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor% 6)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal (gentext-edited-by)))
+ (empty-sosofo))
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal editor-name)))))
+
+ (element firstname
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'center)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: book-titlepage-recto-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: 'start
+ line-spacing: (* 0.8 (inherited-line-spacing))
+ font-size: (* 0.8 (inherited-font-size))
+ (process-children)))
+
+ (element lineage
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element othercredit
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element othername
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element printhistory
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element publisher
+ (make display-group
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: book-titlepage-recto-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: book-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revremark)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: (HSIZE 4)
+ line-spacing: (* (HSIZE 4) %line-spacing-factor%)
+ space-before: (* (HSIZE 4) %head-before-factor%)
+ quadding: %division-subtitle-quadding%
+ keep-with-next?: #t
+ (process-children-trim)))
+
+ (element surname
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element title
+ (make paragraph
+ use: book-titlepage-recto-style
+ font-size: (HSIZE 5)
+ line-spacing: (* (HSIZE 5) %line-spacing-factor%)
+ space-before: (* (HSIZE 5) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ heading-level: (if %generate-heading-level% 1 0)
+ (with-mode title-mode
+ (process-children-trim))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: book-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+)
+
+(mode book-titlepage-verso-mode
+ (element abbrev
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element abstract ($semiformal-object$))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element address
+ (make display-group
+ use: book-titlepage-verso-style
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element author
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element authorblurb
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element authorgroup
+ (let* ((editors (select-elements (children (current-node)) (normalize "editor"))))
+ (make paragraph
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (if (node-list-empty? editors)
+ (literal (gentext-by))
+ (literal (gentext-edited-by)))
+ (literal "\no-break-space;")
+ (process-children-trim)))))
+
+ (element authorinitials
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: book-titlepage-verso-style
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ ;; note: book-titlepage-corpauthor takes care of wrapping multiple
+ ;; corpauthors
+ (make sequence
+ (if (first-sibling?)
+ (if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
+ (empty-sosofo)
+ (literal (gentext-by) " "))
+ (literal ", "))
+ (process-children)))
+
+ (element corpname
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ ;; Print the editor name.
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (or #f (not in-group)) ; nevermind, always put out the Edited by
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-edited-by))
+ (literal "\no-break-space;")
+ (literal (author-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element firstname
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'start)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: book-titlepage-verso-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: book-titlepage-verso-style
+ font-size: (* (inherited-font-size) 0.8)
+ (process-children-trim)))
+
+ (element lineage
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element othercredit
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element othername
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element printhistory
+ (make display-group
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ (literal (gentext-element-name-space (gi (current-node))))
+ (process-children)))
+
+ (element publisher
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: book-titlepage-verso-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: book-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: book-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: book-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: book-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: book-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdescription)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (literal (if (first-sibling?) ": " "; "))
+ (process-children)))
+
+ (element surname
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+
+ (element title
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (with-mode title-mode
+ (process-children))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: book-titlepage-verso-style
+ (process-children)))
+)
+
+;; == Title pages for PARTs =============================================
+
+(define (part-titlepage-recto-elements)
+ (list (normalize "title")
+ (normalize "subtitle")))
+
+(define (part-titlepage-verso-elements)
+ '())
+
+(define (part-titlepage-content? elements side)
+ (titlepage-content? elements (if (equal? side 'recto)
+ (part-titlepage-recto-elements)
+ (part-titlepage-verso-elements))))
+
+(define (part-titlepage elements #!optional (side 'recto))
+ (let ((nodelist (titlepage-nodelist
+ (if (equal? side 'recto)
+ (part-titlepage-recto-elements)
+ (part-titlepage-verso-elements))
+ elements))
+ ;; partintro is a special case...
+ (partintro (node-list-first
+ (node-list-filter-by-gi elements (list (normalize "partintro"))))))
+ (if (part-titlepage-content? elements side)
+;; (make simple-page-sequence
+;; page-n-columns: %titlepage-n-columns%
+;; input-whitespace-treatment: 'collapse
+;; use: default-text-style
+ (make sequence
+
+ ;; This hack is required for the RTF backend. If an external-graphic
+ ;; is the first thing on the page, RTF doesn't seem to do the right
+ ;; thing (the graphic winds up on the baseline of the first line
+ ;; of the page, left justified). This "one point rule" fixes
+ ;; that problem.
+ (make paragraph
+ line-spacing: 1pt
+ (literal ""))
+
+ (let loop ((nl nodelist) (lastnode (empty-node-list)))
+ (if (node-list-empty? nl)
+ (empty-sosofo)
+ (make sequence
+ (if (or (node-list-empty? lastnode)
+ (not (equal? (gi (node-list-first nl))
+ (gi lastnode))))
+ (part-titlepage-before (node-list-first nl) side)
+ (empty-sosofo))
+ (cond
+ ((equal? (gi (node-list-first nl)) (normalize "abbrev"))
+ (part-titlepage-abbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "abstract"))
+ (part-titlepage-abstract (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "address"))
+ (part-titlepage-address (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "affiliation"))
+ (part-titlepage-affiliation (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "artpagenums"))
+ (part-titlepage-artpagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "author"))
+ (part-titlepage-author (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorblurb"))
+ (part-titlepage-authorblurb (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorgroup"))
+ (part-titlepage-authorgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorinitials"))
+ (part-titlepage-authorinitials (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bibliomisc"))
+ (part-titlepage-bibliomisc (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "biblioset"))
+ (part-titlepage-biblioset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bookbiblio"))
+ (part-titlepage-bookbiblio (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "citetitle"))
+ (part-titlepage-citetitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "collab"))
+ (part-titlepage-collab (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "confgroup"))
+ (part-titlepage-confgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractnum"))
+ (part-titlepage-contractnum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractsponsor"))
+ (part-titlepage-contractsponsor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contrib"))
+ (part-titlepage-contrib (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "copyright"))
+ (part-titlepage-copyright (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpauthor"))
+ (part-titlepage-corpauthor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpname"))
+ (part-titlepage-corpname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "date"))
+ (part-titlepage-date (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "edition"))
+ (part-titlepage-edition (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "editor"))
+ (part-titlepage-editor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "firstname"))
+ (part-titlepage-firstname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "graphic"))
+ (part-titlepage-graphic (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "honorific"))
+ (part-titlepage-honorific (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "indexterm"))
+ (part-titlepage-indexterm (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "invpartnumber"))
+ (part-titlepage-invpartnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "isbn"))
+ (part-titlepage-isbn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issn"))
+ (part-titlepage-issn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issuenum"))
+ (part-titlepage-issuenum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "itermset"))
+ (part-titlepage-itermset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "keywordset"))
+ (part-titlepage-keywordset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "legalnotice"))
+ (part-titlepage-legalnotice (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "lineage"))
+ (part-titlepage-lineage (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "mediaobject"))
+ (part-titlepage-mediaobject (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "modespec"))
+ (part-titlepage-modespec (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "orgname"))
+ (part-titlepage-orgname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othercredit"))
+ (part-titlepage-othercredit (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othername"))
+ (part-titlepage-othername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pagenums"))
+ (part-titlepage-pagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "printhistory"))
+ (part-titlepage-printhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productname"))
+ (part-titlepage-productname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productnumber"))
+ (part-titlepage-productnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubdate"))
+ (part-titlepage-pubdate (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publisher"))
+ (part-titlepage-publisher (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publishername"))
+ (part-titlepage-publishername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubsnumber"))
+ (part-titlepage-pubsnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "releaseinfo"))
+ (part-titlepage-releaseinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "revhistory"))
+ (part-titlepage-revhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesinfo"))
+ (part-titlepage-seriesinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesvolnums"))
+ (part-titlepage-seriesvolnums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subjectset"))
+ (part-titlepage-subjectset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subtitle"))
+ (part-titlepage-subtitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "surname"))
+ (part-titlepage-surname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "title"))
+ (part-titlepage-title (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "titleabbrev"))
+ (part-titlepage-titleabbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "volumenum"))
+ (part-titlepage-volumenum (node-list-first nl) side))
+ (else
+ (part-titlepage-default (node-list-first nl) side)))
+ (loop (node-list-rest nl) (node-list-first nl)))))
+
+ (if (and %generate-part-toc%
+ %generate-part-toc-on-titlepage%
+ (equal? side 'recto))
+ (make display-group
+ (build-toc (current-node)
+ (toc-depth (current-node))))
+ (empty-sosofo))
+
+ ;; PartIntro is a special case
+ (if (and (equal? side 'recto)
+ (not (node-list-empty? partintro))
+ %generate-partintro-on-titlepage%)
+ ($process-partintro$ partintro #f)
+ (empty-sosofo)))
+ (empty-sosofo))))
+
+(define (part-titlepage-before node side)
+ (if (equal? side 'recto)
+ (cond
+ ((equal? (gi node) (normalize "corpauthor"))
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;")))
+ ((equal? (gi node) (normalize "authorgroup"))
+ (if (have-sibling? (normalize "corpauthor") node)
+ (empty-sosofo)
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;"))))
+ ((equal? (gi node) (normalize "author"))
+ (if (or (have-sibling? (normalize "corpauthor") node)
+ (have-sibling? (normalize "authorgroup") node))
+ (empty-sosofo)
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;"))))
+ (else (empty-sosofo)))
+ (empty-sosofo)))
+
+(define (part-titlepage-default node side)
+ (let ((foo (debug (string-append "No part-titlepage-* for " (gi node) "!"))))
+ (empty-sosofo)))
+
+(define (part-titlepage-element node side)
+ (if (equal? side 'recto)
+ (with-mode part-titlepage-recto-mode
+ (process-node-list node))
+ (with-mode part-titlepage-verso-mode
+ (process-node-list node))))
+
+(define (part-titlepage-abbrev node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-abstract node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-address node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-affiliation node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-artpagenums node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-author node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-authorblurb node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-authorgroup node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-authorinitials node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-bibliomisc node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-biblioset node side)
+ (part-titlepage node side))
+(define (part-titlepage-bookbiblio node side)
+ (part-titlepage node side))
+(define (part-titlepage-citetitle node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-collab node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-confgroup node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-contractnum node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-contractsponsor node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-contrib node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-copyright node side)
+ (part-titlepage-element node side))
+
+(define (part-titlepage-corpauthor node side)
+ (if (equal? side 'recto)
+ (book-titlepage-element node side)
+ (if (first-sibling? node)
+ (make paragraph
+ (with-mode book-titlepage-verso-mode
+ (process-node-list
+ (select-elements (children (parent node))
+ (normalize "corpauthor")))))
+ (empty-sosofo))))
+
+(define (part-titlepage-corpname node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-date node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-edition node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-editor node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-firstname node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-graphic node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-honorific node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-indexterm node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-invpartnumber node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-isbn node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-issn node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-issuenum node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-itermset node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-keywordset node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-legalnotice node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-lineage node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-mediaobject node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-modespec node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-orgname node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-othercredit node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-othername node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-pagenums node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-printhistory node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-productname node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-productnumber node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-pubdate node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-publisher node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-publishername node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-pubsnumber node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-releaseinfo node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-revhistory node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-seriesinfo node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-seriesvolnums node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-subjectset node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-subtitle node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-surname node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-title node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-titleabbrev node side)
+ (part-titlepage-element node side))
+(define (part-titlepage-volumenum node side)
+ (part-titlepage-element node side))
+
+(define part-titlepage-recto-style
+ (style
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ font-size: (HSIZE 1)))
+
+(define part-titlepage-verso-style
+ (style
+ font-family-name: %body-font-family%))
+
+(mode part-titlepage-recto-mode
+ (element abbrev
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element abstract
+ (make display-group
+ use: part-titlepage-recto-style
+ quadding: 'start
+ ($semiformal-object$)))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element (abstract para)
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element address
+ (make display-group
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make display-group
+ use: part-titlepage-recto-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element author
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element authorblurb
+ (make display-group
+ use: part-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element (authorblurb para)
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element authorgroup
+ (make display-group
+ (process-children)))
+
+ (element authorinitials
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ (make sequence
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (process-children))
+ ;; This paragraph is a hack to get the spacing right.
+ ;; Authors always have an affiliation paragraph below them, even if
+ ;; it's empty, so corpauthors need one too.
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal "\no-break-space;"))))
+
+ (element corpname
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ (let ((editor-name (author-string)))
+ (make sequence
+ (if (first-sibling?)
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor% 6)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal (gentext-edited-by)))
+ (empty-sosofo))
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal editor-name)))))
+
+ (element firstname
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'center)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: part-titlepage-recto-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: 'start
+ line-spacing: (* 0.8 (inherited-line-spacing))
+ font-size: (* 0.8 (inherited-font-size))
+ (process-children)))
+
+ (element lineage
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element othercredit
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element othername
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element printhistory
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element publisher
+ (make display-group
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: part-titlepage-recto-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: part-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdescription)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: (HSIZE 4)
+ line-spacing: (* (HSIZE 4) %line-spacing-factor%)
+ space-before: (* (HSIZE 4) %head-before-factor%)
+ quadding: %division-subtitle-quadding%
+ keep-with-next?: #t
+ (process-children-trim)))
+
+ (element surname
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element title
+ (let ((division (ancestor-member (current-node) (division-element-list))))
+ (make paragraph
+ use: part-titlepage-recto-style
+ font-size: (HSIZE 5)
+ line-spacing: (* (HSIZE 5) %line-spacing-factor%)
+ space-before: (* (HSIZE 5) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ heading-level: (if %generate-heading-level% 1 0)
+ (if (string=? (element-label division) "")
+ (empty-sosofo)
+ (literal (element-label division)
+ (gentext-label-title-sep (gi division))))
+ (with-mode title-mode
+ (process-children)))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: part-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+)
+
+(mode part-titlepage-verso-mode
+ (element abbrev
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element abstract ($semiformal-object$))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element address
+ (make display-group
+ use: part-titlepage-verso-style
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element author
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element authorblurb
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element authorgroup
+ (make paragraph
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (process-children-trim))))
+
+ (element authorinitials
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: part-titlepage-verso-style
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ ;; note: part-titlepage-corpauthor takes care of wrapping multiple
+ ;; corpauthors
+ (make sequence
+ (if (first-sibling?)
+ (if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
+ (empty-sosofo)
+ (literal (gentext-by) " "))
+ (literal ", "))
+ (process-children)))
+
+ (element corpname
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ ;; Print the editor name.
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (or #t (not in-group)) ; nevermind, always put out the Edited by
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-edited-by))
+ (literal "\no-break-space;")
+ (literal (author-string))))
+ (make sequence
+ (literal (author-string))))))
+
+ (element firstname
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'start)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: part-titlepage-verso-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: part-titlepage-verso-style
+ font-size: (* (inherited-font-size) 0.8)
+ (process-children-trim)))
+
+ (element lineage
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element othercredit
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element othername
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element printhistory
+ (make display-group
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ (literal (gentext-element-name-space (gi (current-node))))
+ (process-children)))
+
+ (element publisher
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: part-titlepage-verso-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: part-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: part-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: part-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: part-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: part-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revremark)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (literal (if (first-sibling?) ": " "; "))
+ (process-children)))
+
+ (element surname
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+
+ (element title
+ (let ((division (ancestor-member (current-node) (division-element-list))))
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (if (string=? (element-label division) "")
+ (empty-sosofo)
+ (literal (element-label division)
+ (gentext-label-title-sep (gi division))))
+ (with-mode title-mode
+ (process-children)))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: part-titlepage-verso-style
+ (process-children)))
+)
+
+;; == Title pages for ARTICLEs ==========================================
+;;
+;; Note: Article title pages are a little different in that they do not
+;; create their own simple-page-sequence.
+;;
+
+(define (article-titlepage-recto-elements)
+ (list (normalize "title")
+ (normalize "subtitle")
+ (normalize "corpauthor")
+ (normalize "authorgroup")
+ (normalize "author")
+ (normalize "releaseinfo")
+ (normalize "copyright")
+ (normalize "pubdate")
+ (normalize "revhistory")
+ (normalize "abstract")))
+
+(define (article-titlepage-verso-elements)
+ '())
+
+(define (article-titlepage-content? elements side)
+ (titlepage-content? elements (if (equal? side 'recto)
+ (article-titlepage-recto-elements)
+ (article-titlepage-verso-elements))))
+
+(define (article-titlepage elements #!optional (side 'recto))
+ (let* ((nodelist (titlepage-nodelist
+ (if (equal? side 'recto)
+ (article-titlepage-recto-elements)
+ (article-titlepage-verso-elements))
+ elements)))
+ (if (article-titlepage-content? elements side)
+ (make sequence
+ (let loop ((nl nodelist) (lastnode (empty-node-list)))
+ (if (node-list-empty? nl)
+ (empty-sosofo)
+ (make sequence
+ (if (or (node-list-empty? lastnode)
+ (not (equal? (gi (node-list-first nl))
+ (gi lastnode))))
+ (article-titlepage-before (node-list-first nl) side)
+ (empty-sosofo))
+ (cond
+ ((equal? (gi (node-list-first nl)) (normalize "abbrev"))
+ (article-titlepage-abbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "abstract"))
+ (article-titlepage-abstract (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "address"))
+ (article-titlepage-address (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "affiliation"))
+ (article-titlepage-affiliation (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "artpagenums"))
+ (article-titlepage-artpagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "author"))
+ (article-titlepage-author (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorblurb"))
+ (article-titlepage-authorblurb (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorgroup"))
+ (article-titlepage-authorgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorinitials"))
+ (article-titlepage-authorinitials (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bibliomisc"))
+ (article-titlepage-bibliomisc (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "biblioset"))
+ (article-titlepage-biblioset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bookbiblio"))
+ (article-titlepage-bookbiblio (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "citetitle"))
+ (article-titlepage-citetitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "collab"))
+ (article-titlepage-collab (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "confgroup"))
+ (article-titlepage-confgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractnum"))
+ (article-titlepage-contractnum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractsponsor"))
+ (article-titlepage-contractsponsor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contrib"))
+ (article-titlepage-contrib (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "copyright"))
+ (article-titlepage-copyright (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpauthor"))
+ (article-titlepage-corpauthor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpname"))
+ (article-titlepage-corpname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "date"))
+ (article-titlepage-date (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "edition"))
+ (article-titlepage-edition (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "editor"))
+ (article-titlepage-editor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "firstname"))
+ (article-titlepage-firstname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "graphic"))
+ (article-titlepage-graphic (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "honorific"))
+ (article-titlepage-honorific (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "indexterm"))
+ (article-titlepage-indexterm (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "invpartnumber"))
+ (article-titlepage-invpartnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "isbn"))
+ (article-titlepage-isbn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issn"))
+ (article-titlepage-issn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issuenum"))
+ (article-titlepage-issuenum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "itermset"))
+ (article-titlepage-itermset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "keywordset"))
+ (article-titlepage-keywordset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "legalnotice"))
+ (article-titlepage-legalnotice (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "lineage"))
+ (article-titlepage-lineage (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "mediaobject"))
+ (article-titlepage-mediaobject (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "modespec"))
+ (article-titlepage-modespec (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "orgname"))
+ (article-titlepage-orgname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othercredit"))
+ (article-titlepage-othercredit (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othername"))
+ (article-titlepage-othername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pagenums"))
+ (article-titlepage-pagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "printhistory"))
+ (article-titlepage-printhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productname"))
+ (article-titlepage-productname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productnumber"))
+ (article-titlepage-productnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubdate"))
+ (article-titlepage-pubdate (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publisher"))
+ (article-titlepage-publisher (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publishername"))
+ (article-titlepage-publishername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubsnumber"))
+ (article-titlepage-pubsnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "releaseinfo"))
+ (article-titlepage-releaseinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "revhistory"))
+ (article-titlepage-revhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesinfo"))
+ (article-titlepage-seriesinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesvolnums"))
+ (article-titlepage-seriesvolnums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subjectset"))
+ (article-titlepage-subjectset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subtitle"))
+ (article-titlepage-subtitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "surname"))
+ (article-titlepage-surname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "title"))
+ (article-titlepage-title (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "titleabbrev"))
+ (article-titlepage-titleabbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "volumenum"))
+ (article-titlepage-volumenum (node-list-first nl) side))
+ (else
+ (article-titlepage-default (node-list-first nl) side)))
+ (loop (node-list-rest nl) (node-list-first nl)))))
+
+ (if (and %generate-article-toc%
+ %generate-article-toc-on-titlepage%
+ (equal? side 'recto))
+ (make display-group
+ (build-toc (current-node)
+ (toc-depth (current-node))))
+ (empty-sosofo)))
+ (empty-sosofo))))
+
+(define (article-titlepage-before node side)
+ (empty-sosofo))
+
+(define (article-titlepage-default node side)
+ (let ((foo (debug (string-append "No article-titlepage-* for " (gi node) "!"))))
+ (empty-sosofo)))
+
+(define (article-titlepage-element node side)
+ (if (equal? side 'recto)
+ (with-mode article-titlepage-recto-mode
+ (process-node-list node))
+ (with-mode article-titlepage-verso-mode
+ (process-node-list node))))
+
+(define (article-titlepage-abbrev node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-abstract node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-address node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-affiliation node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-artpagenums node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-author node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-authorblurb node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-authorgroup node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-authorinitials node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-bibliomisc node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-biblioset node side)
+ (article-titlepage node side))
+(define (article-titlepage-bookbiblio node side)
+ (article-titlepage node side))
+(define (article-titlepage-citetitle node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-collab node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-confgroup node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-contractnum node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-contractsponsor node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-contrib node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-copyright node side)
+ (article-titlepage-element node side))
+
+(define (article-titlepage-corpauthor node side)
+ (if (equal? side 'recto)
+ (book-titlepage-element node side)
+ (if (first-sibling? node)
+ (make paragraph
+ (with-mode book-titlepage-verso-mode
+ (process-node-list
+ (select-elements (children (parent node))
+ (normalize "corpauthor")))))
+ (empty-sosofo))))
+
+(define (article-titlepage-corpname node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-date node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-edition node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-editor node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-firstname node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-graphic node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-honorific node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-indexterm node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-invpartnumber node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-isbn node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-issn node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-issuenum node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-itermset node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-keywordset node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-legalnotice node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-lineage node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-mediaobject node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-modespec node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-orgname node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-othercredit node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-othername node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-pagenums node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-printhistory node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-productname node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-productnumber node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-pubdate node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-publisher node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-publishername node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-pubsnumber node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-releaseinfo node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-revhistory node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-seriesinfo node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-seriesvolnums node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-subjectset node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-subtitle node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-surname node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-title node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-titleabbrev node side)
+ (article-titlepage-element node side))
+(define (article-titlepage-volumenum node side)
+ (article-titlepage-element node side))
+
+(define article-titlepage-recto-style
+ (style
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ font-size: (HSIZE 1)))
+
+(define article-titlepage-verso-style
+ (style
+ font-family-name: %body-font-family%))
+
+(mode article-titlepage-recto-mode
+ (element abbrev
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element abstract
+ (make display-group
+ use: article-titlepage-verso-style ;; EVEN THOUGH IT'S RECTO!
+ quadding: 'start
+ start-indent: (+ (inherited-start-indent) (/ %body-width% 24))
+ end-indent: (+ (inherited-end-indent) (/ %body-width% 24))
+ ($semiformal-object$)))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element address
+ (make display-group
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make display-group
+ use: article-titlepage-recto-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element author
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %article-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element authorblurb
+ (make display-group
+ use: article-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element (authorblurb para)
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element authorgroup
+ (make display-group
+ (process-children)))
+
+ (element authorinitials
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ (make sequence
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %article-title-quadding%
+ keep-with-next?: #t
+ (process-children))
+ ;; This paragraph is a hack to get the spacing right.
+ ;; Authors always have an affiliation paragraph below them, even if
+ ;; it's empty, so corpauthors need one too.
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %article-title-quadding%
+ keep-with-next?: #t
+ (literal "\no-break-space;"))))
+
+ (element corpname
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ (let ((editor-name (author-string)))
+ (make sequence
+ (if (first-sibling?)
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor% 6)
+ quadding: %article-title-quadding%
+ keep-with-next?: #t
+ (literal (gentext-edited-by)))
+ (empty-sosofo))
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %article-title-quadding%
+ keep-with-next?: #t
+ (literal editor-name)))))
+
+ (element firstname
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'center)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element keyword
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: article-titlepage-recto-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: 'start
+ line-spacing: (* 0.8 (inherited-line-spacing))
+ font-size: (* 0.8 (inherited-font-size))
+ (process-children)))
+
+ (element lineage
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element othercredit
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %article-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element othername
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element printhistory
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element publisher
+ (make display-group
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: article-titlepage-recto-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: article-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdescription)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: (HSIZE 4)
+ line-spacing: (* (HSIZE 4) %line-spacing-factor%)
+ space-before: (* (HSIZE 4) %head-before-factor%)
+ quadding: %article-subtitle-quadding%
+ keep-with-next?: #t
+ (process-children-trim)))
+
+ (element surname
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+
+ (element title
+ (make paragraph
+ use: article-titlepage-recto-style
+ font-size: (HSIZE 5)
+ line-spacing: (* (HSIZE 5) %line-spacing-factor%)
+ space-before: (* (HSIZE 5) %head-before-factor%)
+ quadding: %article-title-quadding%
+ keep-with-next?: #t
+ (with-mode title-mode
+ (process-children-trim))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: article-titlepage-recto-style
+ quadding: %article-title-quadding%
+ (process-children)))
+)
+
+(mode article-titlepage-verso-mode
+ (element abbrev
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element abstract ($semiformal-object$))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element address
+ (make display-group
+ use: article-titlepage-verso-style
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element author
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element authorblurb
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element authorgroup
+ (make paragraph
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (process-children-trim))))
+
+ (element authorinitials
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: article-titlepage-verso-style
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ ;; note: article-titlepage-corpauthor takes care of wrapping multiple
+ ;; corpauthors
+ (make sequence
+ (if (first-sibling?)
+ (if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
+ (empty-sosofo)
+ (literal (gentext-by) " "))
+ (literal ", "))
+ (process-children)))
+
+ (element corpname
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ ;; Print the editor name.
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (or #t (not in-group)) ; nevermind, always put out the Edited by
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-edited-by))
+ (literal "\no-break-space;")
+ (literal (author-string))))
+ (make sequence
+ (literal (author-string))))))
+
+ (element firstname
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'start)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: article-titlepage-verso-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: article-titlepage-verso-style
+ font-size: (* (inherited-font-size) 0.8)
+ (process-children-trim)))
+
+ (element lineage
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element othercredit
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element othername
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element printhistory
+ (make display-group
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ (literal (gentext-element-name-space (gi (current-node))))
+ (process-children)))
+
+ (element publisher
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: article-titlepage-verso-style
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (node-list-empty? revnumber)
+ (empty-sosofo)
+ (make paragraph
+ use: article-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (node-list-empty? revdate)
+ (empty-sosofo)
+ (make paragraph
+ use: article-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (node-list-empty? revauthor)
+ (empty-sosofo)
+ (make paragraph
+ use: article-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor)))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: article-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: article-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdescription)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (literal (if (first-sibling?) ": " "; "))
+ (process-children)))
+
+ (element surname
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+ (element title
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (with-mode title-mode
+ (process-children))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: article-titlepage-verso-style
+ (process-children)))
+
+)
+
+;; == Title pages for REFERENCEs ========================================
+
+(define (reference-titlepage-recto-elements)
+ (list (normalize "title")
+ (normalize "subtitle")
+ (normalize "corpauthor")
+ (normalize "authorgroup")
+ (normalize "author")
+ (normalize "editor")))
+
+(define (reference-titlepage-verso-elements)
+ '())
+
+(define (reference-titlepage-content? elements side)
+ (titlepage-content? elements (if (equal? side 'recto)
+ (reference-titlepage-recto-elements)
+ (reference-titlepage-verso-elements))))
+
+(define (reference-titlepage elements #!optional (side 'recto))
+ (let ((nodelist (titlepage-nodelist
+ (if (equal? side 'recto)
+ (reference-titlepage-recto-elements)
+ (reference-titlepage-verso-elements))
+ elements))
+ ;; partintro is a special case...
+ (partintro (node-list-first
+ (node-list-filter-by-gi elements (list (normalize "partintro"))))))
+ (if (reference-titlepage-content? elements side)
+ (make simple-page-sequence
+ page-n-columns: %titlepage-n-columns%
+ input-whitespace-treatment: 'collapse
+ use: default-text-style
+
+ ;; This hack is required for the RTF backend. If an external-graphic
+ ;; is the first thing on the page, RTF doesn't seem to do the right
+ ;; thing (the graphic winds up on the baseline of the first line
+ ;; of the page, left justified). This "one point rule" fixes
+ ;; that problem.
+ (make paragraph
+ line-spacing: 1pt
+ (literal ""))
+
+ (let loop ((nl nodelist) (lastnode (empty-node-list)))
+ (if (node-list-empty? nl)
+ (empty-sosofo)
+ (make sequence
+ (if (or (node-list-empty? lastnode)
+ (not (equal? (gi (node-list-first nl))
+ (gi lastnode))))
+ (reference-titlepage-before (node-list-first nl) side)
+ (empty-sosofo))
+ (cond
+ ((equal? (gi (node-list-first nl)) (normalize "abbrev"))
+ (reference-titlepage-abbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "abstract"))
+ (reference-titlepage-abstract (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "address"))
+ (reference-titlepage-address (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "affiliation"))
+ (reference-titlepage-affiliation (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "artpagenums"))
+ (reference-titlepage-artpagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "author"))
+ (reference-titlepage-author (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorblurb"))
+ (reference-titlepage-authorblurb (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorgroup"))
+ (reference-titlepage-authorgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "authorinitials"))
+ (reference-titlepage-authorinitials (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bibliomisc"))
+ (reference-titlepage-bibliomisc (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "biblioset"))
+ (reference-titlepage-biblioset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "bookbiblio"))
+ (reference-titlepage-bookbiblio (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "citetitle"))
+ (reference-titlepage-citetitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "collab"))
+ (reference-titlepage-collab (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "confgroup"))
+ (reference-titlepage-confgroup (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractnum"))
+ (reference-titlepage-contractnum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contractsponsor"))
+ (reference-titlepage-contractsponsor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "contrib"))
+ (reference-titlepage-contrib (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "copyright"))
+ (reference-titlepage-copyright (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpauthor"))
+ (reference-titlepage-corpauthor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "corpname"))
+ (reference-titlepage-corpname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "date"))
+ (reference-titlepage-date (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "edition"))
+ (reference-titlepage-edition (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "editor"))
+ (reference-titlepage-editor (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "firstname"))
+ (reference-titlepage-firstname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "graphic"))
+ (reference-titlepage-graphic (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "honorific"))
+ (reference-titlepage-honorific (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "indexterm"))
+ (reference-titlepage-indexterm (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "invpartnumber"))
+ (reference-titlepage-invpartnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "isbn"))
+ (reference-titlepage-isbn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issn"))
+ (reference-titlepage-issn (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "issuenum"))
+ (reference-titlepage-issuenum (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "itermset"))
+ (reference-titlepage-itermset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "keywordset"))
+ (reference-titlepage-keywordset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "legalnotice"))
+ (reference-titlepage-legalnotice (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "lineage"))
+ (reference-titlepage-lineage (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "mediaobject"))
+ (reference-titlepage-mediaobject (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "modespec"))
+ (reference-titlepage-modespec (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "orgname"))
+ (reference-titlepage-orgname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othercredit"))
+ (reference-titlepage-othercredit (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "othername"))
+ (reference-titlepage-othername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pagenums"))
+ (reference-titlepage-pagenums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "printhistory"))
+ (reference-titlepage-printhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productname"))
+ (reference-titlepage-productname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "productnumber"))
+ (reference-titlepage-productnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubdate"))
+ (reference-titlepage-pubdate (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publisher"))
+ (reference-titlepage-publisher (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "publishername"))
+ (reference-titlepage-publishername (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "pubsnumber"))
+ (reference-titlepage-pubsnumber (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "releaseinfo"))
+ (reference-titlepage-releaseinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "revhistory"))
+ (reference-titlepage-revhistory (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesinfo"))
+ (reference-titlepage-seriesinfo (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "seriesvolnums"))
+ (reference-titlepage-seriesvolnums (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subjectset"))
+ (reference-titlepage-subjectset (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "subtitle"))
+ (reference-titlepage-subtitle (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "surname"))
+ (reference-titlepage-surname (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "title"))
+ (reference-titlepage-title (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "titleabbrev"))
+ (reference-titlepage-titleabbrev (node-list-first nl) side))
+ ((equal? (gi (node-list-first nl)) (normalize "volumenum"))
+ (reference-titlepage-volumenum (node-list-first nl) side))
+ (else
+ (reference-titlepage-default (node-list-first nl) side)))
+ (loop (node-list-rest nl) (node-list-first nl)))))
+
+ (if (and %generate-reference-toc%
+ %generate-reference-toc-on-titlepage%
+ (equal? side 'recto))
+ (make display-group
+ (build-toc (current-node)
+ (toc-depth (current-node))))
+ (empty-sosofo))
+
+ ;; PartIntro is a special case
+ (if (and (equal? side 'recto)
+ (not (node-list-empty? partintro))
+ %generate-partintro-on-titlepage%)
+ ($process-partintro$ partintro #f)
+ (empty-sosofo)))
+
+ (empty-sosofo))))
+
+(define (reference-titlepage-before node side)
+ (if (equal? side 'recto)
+ (cond
+ ((equal? (gi node) (normalize "corpauthor"))
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;")))
+ ((equal? (gi node) (normalize "authorgroup"))
+ (if (have-sibling? (normalize "corpauthor") node)
+ (empty-sosofo)
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;"))))
+ ((equal? (gi node) (normalize "author"))
+ (if (or (have-sibling? (normalize "corpauthor") node)
+ (have-sibling? (normalize "authorgroup") node))
+ (empty-sosofo)
+ (make paragraph
+ space-after: (* (HSIZE 5) %head-after-factor% 8)
+ (literal "\no-break-space;"))))
+ (else (empty-sosofo)))
+ (empty-sosofo)))
+
+(define (reference-titlepage-default node side)
+ (let ((foo (debug (string-append "No reference-titlepage-* for " (gi node) "!"))))
+ (empty-sosofo)))
+
+(define (reference-titlepage-element node side)
+ (if (equal? side 'recto)
+ (with-mode reference-titlepage-recto-mode
+ (process-node-list node))
+ (with-mode reference-titlepage-verso-mode
+ (process-node-list node))))
+
+(define (reference-titlepage-abbrev node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-abstract node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-address node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-affiliation node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-artpagenums node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-author node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-authorblurb node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-authorgroup node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-authorinitials node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-bibliomisc node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-biblioset node side)
+ (reference-titlepage node side))
+(define (reference-titlepage-bookbiblio node side)
+ (reference-titlepage node side))
+(define (reference-titlepage-citetitle node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-collab node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-confgroup node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-contractnum node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-contractsponsor node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-contrib node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-copyright node side)
+ (reference-titlepage-element node side))
+
+(define (reference-titlepage-corpauthor node side)
+ (if (equal? side 'recto)
+ (book-titlepage-element node side)
+ (if (first-sibling? node)
+ (make paragraph
+ (with-mode book-titlepage-verso-mode
+ (process-node-list
+ (select-elements (children (parent node))
+ (normalize "corpauthor")))))
+ (empty-sosofo))))
+
+(define (reference-titlepage-corpname node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-date node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-edition node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-editor node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-firstname node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-graphic node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-honorific node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-indexterm node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-invpartnumber node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-isbn node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-issn node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-issuenum node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-itermset node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-keywordset node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-legalnotice node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-lineage node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-mediaobject node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-modespec node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-orgname node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-othercredit node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-othername node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-pagenums node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-printhistory node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-productname node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-productnumber node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-pubdate node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-publisher node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-publishername node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-pubsnumber node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-releaseinfo node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-revhistory node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-seriesinfo node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-seriesvolnums node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-subjectset node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-subtitle node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-surname node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-title node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-titleabbrev node side)
+ (reference-titlepage-element node side))
+(define (reference-titlepage-volumenum node side)
+ (reference-titlepage-element node side))
+
+(define reference-titlepage-recto-style
+ (style
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ font-size: (HSIZE 1)))
+
+(define reference-titlepage-verso-style
+ (style
+ font-family-name: %body-font-family%))
+
+(mode reference-titlepage-recto-mode
+ (element abbrev
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element abstract
+ (make display-group
+ use: reference-titlepage-recto-style
+ quadding: 'start
+ ($semiformal-object$)))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element (abstract para)
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element address
+ (make display-group
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make display-group
+ use: reference-titlepage-recto-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element author
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element authorblurb
+ (make display-group
+ use: reference-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element (authorblurb para)
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: 'start
+ (process-children)))
+
+ (element authorgroup
+ (make display-group
+ (process-children)))
+
+ (element authorinitials
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ (make sequence
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (process-children))
+ ;; This paragraph is a hack to get the spacing right.
+ ;; Authors always have an affiliation paragraph below them, even if
+ ;; it's empty, so corpauthors need one too.
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal "\no-break-space;"))))
+
+ (element corpname
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ (let ((editor-name (author-string)))
+ (make sequence
+ (if (first-sibling?)
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: (HSIZE 1)
+ line-spacing: (* (HSIZE 1) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor% 6)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal (gentext-edited-by)))
+ (empty-sosofo))
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-after: (* (HSIZE 2) %head-after-factor% 4)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal editor-name)))))
+
+ (element firstname
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'center)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: reference-titlepage-recto-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: 'start
+ line-spacing: (* 0.8 (inherited-line-spacing))
+ font-size: (* 0.8 (inherited-font-size))
+ (process-children)))
+
+ (element lineage
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element othercredit
+ (let ((author-name (author-string))
+ (author-affil (select-elements (children (current-node))
+ (normalize "affiliation"))))
+ (make sequence
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: (HSIZE 3)
+ line-spacing: (* (HSIZE 3) %line-spacing-factor%)
+ space-before: (* (HSIZE 2) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ (literal author-name))
+ (process-node-list author-affil))))
+
+ (element othername
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element printhistory
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element publisher
+ (make display-group
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: reference-titlepage-recto-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: reference-titlepage-recto-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdescription)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: (HSIZE 4)
+ line-spacing: (* (HSIZE 4) %line-spacing-factor%)
+ space-before: (* (HSIZE 4) %head-before-factor%)
+ quadding: %division-subtitle-quadding%
+ keep-with-next?: #t
+ (process-children-trim)))
+
+ (element surname
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+
+ (element title
+ (let ((ref (ancestor-member (current-node)
+ (list (normalize "reference")))))
+ (make paragraph
+ use: reference-titlepage-recto-style
+ font-size: (HSIZE 5)
+ line-spacing: (* (HSIZE 5) %line-spacing-factor%)
+ space-before: (* (HSIZE 5) %head-before-factor%)
+ quadding: %division-title-quadding%
+ keep-with-next?: #t
+ heading-level: (if %generate-heading-level% 1 0)
+ (literal (element-label ref)
+ (gentext-label-title-sep (gi ref)))
+ (with-mode title-mode
+ (process-children)))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: reference-titlepage-recto-style
+ quadding: %division-title-quadding%
+ (process-children)))
+)
+
+(mode reference-titlepage-verso-mode
+ (element abbrev
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element abstract ($semiformal-object$))
+
+ (element (abstract title) (empty-sosofo))
+
+ (element address
+ (make display-group
+ use: reference-titlepage-verso-style
+ (with-mode titlepage-address-mode
+ ($linespecific-display$ %indent-address-lines% %number-address-lines%))))
+
+ (element affiliation
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element artpagenums
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element author
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element authorblurb
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element authorgroup
+ (make paragraph
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (process-children-trim))))
+
+ (element authorinitials
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element bibliomisc (process-children))
+
+ (element bibliomset (process-children))
+
+ (element collab
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element confgroup
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element contractnum
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element contractsponsor
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element contrib
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element copyright
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (literal (gentext-element-name (current-node)))
+ (literal "\no-break-space;")
+ (literal (dingbat "copyright"))
+ (literal "\no-break-space;")
+ (process-children)))
+
+ (element (copyright year)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling? (current-node)))
+ (literal ", ")
+ (literal " "))))
+
+ (element (copyright holder) ($charseq$))
+
+ (element corpauthor
+ ;; note: reference-titlepage-corpauthor takes care of wrapping multiple
+ ;; corpauthors
+ (make sequence
+ (if (first-sibling?)
+ (if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
+ (empty-sosofo)
+ (literal (gentext-by) " "))
+ (literal ", "))
+ (process-children)))
+
+ (element corpname
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element date
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element edition
+ (make paragraph
+ (process-children)
+ (literal "\no-break-space;")
+ (literal (gentext-element-name-space (gi (current-node))))))
+
+ (element editor
+ ;; Print the editor name.
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (or #t (not in-group)) ; nevermind, always put out the Edited by
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-edited-by))
+ (literal "\no-break-space;")
+ (literal (author-string))))
+ (make sequence
+ (literal (author-string))))))
+
+ (element firstname
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element graphic
+ (let* ((nd (current-node))
+ (fileref (attribute-string "fileref" nd))
+ (entityref (attribute-string "entityref" nd))
+ (format (attribute-string "format" nd))
+ (align (attribute-string "align" nd)))
+ (if (or fileref entityref)
+ (make external-graphic
+ notation-system-id: (if format format "")
+ entity-system-id: (if fileref
+ (graphic-file fileref)
+ (if entityref
+ (entity-generated-system-id entityref)
+ ""))
+ display?: #t
+ display-alignment: 'start)
+ (empty-sosofo))))
+
+ (element honorific
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element isbn
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element issn
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element itermset (empty-sosofo))
+
+ (element invpartnumber
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element issuenum
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element jobtitle
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element keywordset
+ (make paragraph
+ quadding: 'start
+ (make sequence
+ font-weight: 'bold
+ (literal "Keywords: "))
+ (process-children)))
+
+ (element (keyword)
+ (make sequence
+ (process-children)
+ (if (not (last-sibling?))
+ (literal ", ")
+ (literal ""))))
+
+ (element legalnotice
+ (make display-group
+ use: reference-titlepage-verso-style
+ ($semiformal-object$)))
+
+ (element (legalnotice title) (empty-sosofo))
+
+ (element (legalnotice para)
+ (make paragraph
+ use: reference-titlepage-verso-style
+ font-size: (* (inherited-font-size) 0.8)
+ (process-children-trim)))
+
+ (element lineage
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element modespec (empty-sosofo))
+
+ (element orgdiv
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element orgname
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element othercredit
+ ;; Print the author name. Handle the case where there's no AUTHORGROUP
+ (let ((in-group (have-ancestor? (normalize "authorgroup") (current-node))))
+ (if (not in-group)
+ (make paragraph
+ ;; Hack to get the spacing right below the author name line...
+ space-after: (* %bf-size% %line-spacing-factor%)
+ (make sequence
+ (literal (gentext-by))
+ (literal "\no-break-space;")
+ (literal (author-list-string))))
+ (make sequence
+ (literal (author-list-string))))))
+
+ (element othername
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element pagenums
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element printhistory
+ (make display-group
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element productname
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element productnumber
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element pubdate
+ (make paragraph
+ (literal (gentext-element-name-space (gi (current-node))))
+ (process-children)))
+
+ (element publisher
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element publishername
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element pubsnumber
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element releaseinfo
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element revhistory
+ (make sequence
+ (make paragraph
+ use: reference-titlepage-verso-style
+ space-before: (* (HSIZE 3) %head-before-factor%)
+ space-after: (/ (* (HSIZE 1) %head-before-factor%) 2)
+ (literal (gentext-element-name (current-node))))
+ (make table
+ before-row-border: #f
+ (process-children))))
+
+ (element (revhistory revision)
+ (let ((revnumber (select-elements (descendants (current-node))
+ (normalize "revnumber")))
+ (revdate (select-elements (descendants (current-node))
+ (normalize "date")))
+ (revauthor (select-elements (descendants (current-node))
+ (normalize "authorinitials")))
+ (revremark (select-elements (descendants (current-node))
+ (normalize "revremark")))
+ (revdescription (select-elements (descendants (current-node))
+ (normalize "revdescription"))))
+ (make sequence
+ (make table-row
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (if (not (node-list-empty? revnumber))
+ (make paragraph
+ use: reference-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-element-name-space (current-node)))
+ (process-node-list revnumber))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 2
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revdate))
+ (make paragraph
+ use: reference-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdate))
+ (empty-sosofo)))
+ (make table-cell
+ column-number: 3
+ n-columns-spanned: 1
+ n-rows-spanned: 1
+ start-indent: 0pt
+ cell-before-column-margin: (if (equal? (print-backend) 'tex)
+ 6pt
+ 0pt)
+ (if (not (node-list-empty? revauthor))
+ (make paragraph
+ use: reference-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (literal (gentext-revised-by))
+ (process-node-list revauthor))
+ (empty-sosofo))))
+ (make table-row
+ cell-after-row-border: #f
+ (make table-cell
+ column-number: 1
+ n-columns-spanned: 3
+ n-rows-spanned: 1
+ start-indent: 0pt
+ (cond ((not (node-list-empty? revremark))
+ (make paragraph
+ use: reference-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ space-after: (if (last-sibling?)
+ 0pt
+ (/ %block-sep% 2))
+ (process-node-list revremark)))
+ ((not (node-list-empty? revdescription))
+ (make sequence
+ use: reference-titlepage-verso-style
+ font-size: %bf-size%
+ font-weight: 'medium
+ (process-node-list revdescription)))
+ (else (empty-sosofo))))))))
+
+ (element (revision revnumber) (process-children-trim))
+ (element (revision date) (process-children-trim))
+ (element (revision authorinitials) (process-children-trim))
+ (element (revision revremark) (process-children-trim))
+ (element (revision revdescription) (process-children))
+
+ (element seriesvolnums
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element shortaffil
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element subjectset (empty-sosofo))
+
+ (element subtitle
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (literal (if (first-sibling?) ": " "; "))
+ (process-children)))
+
+ (element surname
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+ (element title
+ (let ((ref (ancestor-member (current-node)
+ (list (normalize "reference")))))
+ (make sequence
+ font-family-name: %title-font-family%
+ font-weight: 'bold
+ (literal (element-label ref)
+ (gentext-label-title-sep (gi ref)))
+ (with-mode title-mode
+ (process-children)))))
+
+ (element formalpara ($para-container$))
+ (element (formalpara title) ($runinhead$))
+ (element (formalpara para) (make sequence (process-children)))
+
+ (element titleabbrev (empty-sosofo))
+
+ (element volumenum
+ (make paragraph
+ use: reference-titlepage-verso-style
+ (process-children)))
+
+)