;; $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))) )