;; $Id: dbttlpg.dsl,v 1.10 2004/10/10 11:55:10 petere78 Exp $
;;
;; This file is part of the Modular DocBook Stylesheet distribution.
;; See ../README or http://docbook.sourceforge.net/projects/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))))
(define (titlepage-recto-legalnotice #!optional (node (current-node)))
(let ((notices (select-elements
(children (parent node))
(normalize "legalnotice")))
(copyrights (select-elements
(children (parent node))
(normalize "copyright"))))
(if (and %generate-legalnotice-link%
(not nochunks))
;; Divert the contents of legal to another file. It will be xref'd
;; from the Copyright.
(if (first-sibling? node)
(make sequence
(make entity
system-id: (html-entity-file
($legalnotice-link-file$ node))
(html-doctype)
(make element gi: "HTML"
(make element gi: "HEAD"
($standard-html-header$))
(make element gi: "BODY"
attributes: %body-attr%
(header-navigation node)
($semiformal-object$)
(with-mode legal-notice-link-mode
(process-node-list (node-list-rest notices)))
(footer-navigation node))))
(if (node-list-empty? copyrights)
(make element gi: "A"
attributes: (list
(list "HREF"
($legalnotice-link-file$
node)))
(literal (gentext-element-name node)))
(empty-sosofo)))
(empty-sosofo))
($semiformal-object$))))
(define (titlepage-recto-copyright #!optional (node (current-node)))
(let ((years (select-elements (descendants node)
(normalize "year")))
(holders (select-elements (descendants node)
(normalize "holder")))
(legalnotice (select-elements (children (parent node))
(normalize "legalnotice"))))
(make element gi: "P"
attributes: (list
(list "CLASS" (gi)))
(if (and %generate-legalnotice-link%
(not nochunks)
(not (node-list-empty? legalnotice)))
(make sequence
(make element gi: "A"
attributes: (list
(list "HREF"
($legalnotice-link-file$
(node-list-first legalnotice))))
(literal (gentext-element-name (gi node))))
(literal " ")
(dingbat-sosofo "copyright")
(literal " ")
(process-node-list years)
(literal " ")
(process-node-list holders))
(make sequence
(literal (gentext-element-name (gi node)))
(literal " ")
(dingbat-sosofo "copyright")
(literal " ")
(process-node-list years)
(literal " ")
(process-node-list holders))))))
;; == 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")
(normalize "copyright")
(normalize "legalnotice")))
(define (set-titlepage-verso-elements) '())
(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)))
(if (set-titlepage-content? elements side)
(make element gi: "DIV"
attributes: '(("CLASS" "TITLEPAGE"))
(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-recto-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-recto-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-modespec (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)))))
(set-titlepage-separator side))
(empty-sosofo))))
(define (set-titlepage-separator side)
(empty-sosofo))
(define (set-titlepage-before node side)
(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-recto-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 element gi: "P"
attributes: (list (list "CLASS" (gi node)))
(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-recto-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))
(mode set-titlepage-recto-mode
(element para
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element abstract
(make element gi: "DIV"
($semiformal-object$)))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(element author
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal author-name)))
(process-node-list author-affil))))
(element authorblurb
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element authorgroup
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(process-children))))
(element copyright
(titlepage-recto-copyright))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element edition
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make entity-ref name: "nbsp")
(literal (gentext-element-name-space (gi (current-node))))))
(element editor
(let ((editor-name (author-string)))
(make sequence
(if (first-sibling?)
(make element gi: "H4"
attributes: (list (list "CLASS" "EDITEDBY"))
(literal (gentext-edited-by)))
(empty-sosofo))
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(literal editor-name)))))
(element graphic
(let* ((nd (current-node))
(fileref (attribute-string (normalize "fileref") nd))
(entattr (attribute-string (normalize "entityref") nd))
(entityref (if entattr
(entity-system-id entattr)
#f))
(format (attribute-string (normalize "format")))
(align (attribute-string (normalize "align")))
(attr (append
(if align
(list (list "ALIGN" align))
'())
(if entityref
(list (list "SRC" (graphic-file entityref)))
(list (list "SRC" (graphic-file fileref))))
(list (list "ALT" ""))
)))
(if (or fileref entityref)
(make empty-element gi: "IMG"
attributes: attr)
(empty-sosofo))))
(element legalnotice
(titlepage-recto-legalnotice))
(element (legalnotice title) (empty-sosofo))
(element pubdate
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element publisher
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element publishername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubsnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element releaseinfo
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 subtitle
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(process-children-trim)))
(element title
(make element gi: "H1"
attributes: (list (list "CLASS" (gi)))
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(with-mode title-mode
(process-children-trim)))))
(element (formalpara title) ($runinhead$))
)
(mode set-titlepage-verso-mode
(element abstract ($semiformal-object$))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))))
(element authorgroup
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(process-children-trim)))
(element copyright
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name (current-node)))
(make entity-ref name: "nbsp")
(dingbat-sosofo "copyright")
(make entity-ref name: "nbsp")
(process-children)))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(literal " "))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make sequence
(if (first-sibling?)
(if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
(empty-sosofo)
(literal (gentext-by) " "))
(literal ", "))
(process-children)))
(element edition
(make element gi: "P"
(process-children)
(make entity-ref name: "nbsp")
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(make sequence
(literal (gentext-edited-by))
(make entity-ref name: "nbsp")
(literal (author-string))))
(literal (author-string)))))
(element legalnotice
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
($semiformal-object$)))
(element (legalnotice title) (empty-sosofo))
(element pubdate
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name-space (gi (current-node))))
(process-children)))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 subtitle
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element title
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(with-mode title-mode
(process-children))))
(element (formalpara title) ($runinhead$))
)
;; == 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")
(normalize "copyright")
(normalize "abstract")
(normalize "legalnotice")))
(define (book-titlepage-verso-elements) '())
(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)))
(if (book-titlepage-content? elements side)
(make element gi: "DIV"
attributes: '(("CLASS" "TITLEPAGE"))
(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-recto-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-recto-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)))))
(book-titlepage-separator side))
(empty-sosofo))))
(define (book-titlepage-separator side)
(if (equal? side 'recto)
(make empty-element gi: "HR")
(empty-sosofo)))
(define (book-titlepage-before node side)
(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-recto-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 element gi: "P"
attributes: (list (list "CLASS" (gi node)))
(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-recto-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))
(mode titlepage-address-mode
(default (process-children))
(element email
($code-seq$
(make sequence
(literal "<")
(make element gi: "A"
attributes: (list (list "HREF"
(string-append "mailto:"
(data (current-node)))))
(process-children))
(literal ">")))))
(mode book-titlepage-recto-mode
(element abbrev
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element abstract
(make element gi: "DIV"
($semiformal-object$)))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(element affiliation
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element artpagenums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element author
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal author-name)))
(process-node-list author-affil))))
(element authorblurb
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element authorgroup
(process-children))
(element authorinitials
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element bibliomisc (process-children))
(element bibliomset (process-children))
(element collab
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element confgroup
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contractnum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contractsponsor
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contrib
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element copyright
(titlepage-recto-copyright))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element corpname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element date
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element edition
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make entity-ref name: "nbsp")
(literal (gentext-element-name-space (gi (current-node))))))
(element editor
(let ((editor-name (author-string)))
(make sequence
(if (first-sibling?)
(make element gi: "H4"
attributes: (list (list "CLASS" "EDITEDBY"))
(literal (gentext-edited-by)))
(empty-sosofo))
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(literal editor-name)))))
(element firstname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element graphic
(let* ((nd (current-node))
(fileref (attribute-string (normalize "fileref") nd))
(entattr (attribute-string (normalize "entityref") nd))
(entityref (if entattr
(entity-system-id entattr)
#f))
(format (attribute-string (normalize "format")))
(align (attribute-string (normalize "align")))
(attr (append
(if align
(list (list "ALIGN" align))
'())
(if entityref
(list (list "SRC" (graphic-file entityref)))
(list (list "SRC" (graphic-file fileref))))
(list (list "ALT" ""))
)))
(if (or fileref entityref)
(make empty-element gi: "IMG"
attributes: attr)
(empty-sosofo))))
(element honorific
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element isbn
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element issn
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element itermset (empty-sosofo))
(element invpartnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element issuenum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element jobtitle
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element keywordset (empty-sosofo))
(element legalnotice
(titlepage-recto-legalnotice))
(element (legalnotice title) (empty-sosofo))
(element lineage
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element modespec (empty-sosofo))
(element orgdiv
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element orgname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element othercredit
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal author-name)))
(process-node-list author-affil))))
(element othername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pagenums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element printhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element productname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element productnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubdate
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element publisher
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element publishername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubsnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element releaseinfo
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 seriesvolnums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element shortaffil
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element subjectset (empty-sosofo))
(element subtitle
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(process-children-trim)))
(element surname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element title
(make element gi: "H1"
attributes: (list (list "CLASS" (gi)))
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(with-mode title-mode
(process-children-trim)))))
(element (formalpara title) ($runinhead$))
(element titleabbrev (empty-sosofo))
(element volumenum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
)
(mode book-titlepage-verso-mode
(element abbrev
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element abstract
(make element gi: "DIV"
($semiformal-object$)))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(element affiliation
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element artpagenums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))))
(element authorblurb
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element authorgroup
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(process-children-trim)))
(element authorinitials
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element bibliomisc (process-children))
(element bibliomset (process-children))
(element collab
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element confgroup
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contractnum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contractsponsor
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contrib
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element copyright
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name (current-node)))
(make entity-ref name: "nbsp")
(dingbat-sosofo "copyright")
(make entity-ref name: "nbsp")
(process-children)))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(literal " "))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make sequence
(if (first-sibling?)
(if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
(empty-sosofo)
(literal (gentext-by) " "))
(literal ", "))
(process-children)))
(element corpname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element date
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element edition
(make element gi: "P"
(process-children)
(make entity-ref name: "nbsp")
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(make sequence
(literal (gentext-edited-by))
(make entity-ref name: "nbsp")
(literal (author-string))))
(literal (author-string)))))
(element firstname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element graphic
(let* ((nd (current-node))
(fileref (attribute-string (normalize "fileref") nd))
(entattr (attribute-string (normalize "entityref") nd))
(entityref (if entattr
(entity-system-id entattr)
#f))
(format (attribute-string (normalize "format")))
(align (attribute-string (normalize "align")))
(attr (append
(if align
(list (list "ALIGN" align))
'())
(if entityref
(list (list "SRC" (graphic-file entityref)))
(list (list "SRC" (graphic-file fileref))))
(list (list "ALT" ""))
)))
(if (or fileref entityref)
(make empty-element gi: "IMG"
attributes: attr)
(empty-sosofo))))
(element honorific
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element isbn
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element issn
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element itermset (empty-sosofo))
(element invpartnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element issuenum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element jobtitle
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element keywordset (empty-sosofo))
(element legalnotice
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
($semiformal-object$)))
(element (legalnotice title) (empty-sosofo))
(element lineage
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element modespec (empty-sosofo))
(element orgdiv
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element orgname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element othercredit
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal author-name)))
(process-node-list author-affil))))
(element othername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pagenums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element printhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element productname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element productnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubdate
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name-space (gi (current-node))))
(process-children)))
(element publisher
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element publishername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubsnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element releaseinfo
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 seriesvolnums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element shortaffil
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element subjectset (empty-sosofo))
(element subtitle
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element surname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element title
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(with-mode title-mode
(process-children))))
(element (formalpara title) ($runinhead$))
(element titleabbrev (empty-sosofo))
(element volumenum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
)
(mode legal-notice-link-mode
(element legalnotice
($semiformal-object$)))
;; == 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 element gi: "DIV"
attributes: '(("CLASS" "TITLEPAGE"))
(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-recto-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-recto-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)))))
;; PartIntro is a special case
(if (and (equal? side 'recto)
(not (node-list-empty? partintro))
%generate-partintro-on-titlepage%)
($process-partintro$ partintro)
(empty-sosofo))
(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))
(part-titlepage-separator side))
(empty-sosofo))))
(define (part-titlepage-separator side)
(empty-sosofo))
(define (part-titlepage-before node side)
(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-recto-copyright node side)
(part-titlepage-element node side))
(define (part-titlepage-corpauthor node side)
(part-titlepage-element node side))
(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-recto-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-partintro 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))
(mode part-titlepage-recto-mode
(element para
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element abstract
(make element gi: "DIV"
($semiformal-object$)))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(element author
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal author-name)))
(process-node-list author-affil))))
(element authorblurb
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element authorgroup
(process-children))
(element copyright
(titlepage-recto-copyright))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element edition
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make entity-ref name: "nbsp")
(literal (gentext-element-name-space (gi (current-node))))))
(element editor
(let ((editor-name (author-string)))
(make sequence
(if (first-sibling?)
(make element gi: "H4"
attributes: (list (list "CLASS" "EDITEDBY"))
(literal (gentext-edited-by)))
(empty-sosofo))
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(literal editor-name)))))
(element graphic
(let* ((nd (current-node))
(fileref (attribute-string (normalize "fileref") nd))
(entattr (attribute-string (normalize "entityref") nd))
(entityref (if entattr
(entity-system-id entattr)
#f))
(format (attribute-string (normalize "format")))
(align (attribute-string (normalize "align")))
(attr (append
(if align
(list (list "ALIGN" align))
'())
(if entityref
(list (list "SRC" (graphic-file entityref)))
(list (list "SRC" (graphic-file fileref))))
(list (list "ALT" ""))
)))
(if (or fileref entityref)
(make empty-element gi: "IMG"
attributes: attr)
(empty-sosofo))))
(element legalnotice
(titlepage-recto-legalnotice))
(element (legalnotice title) (empty-sosofo))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 subtitle
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(process-children-trim)))
(element title
(let ((division (ancestor-member (current-node) (division-element-list))))
(make element gi: "H1"
attributes: (list (list "CLASS" (gi)))
(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 title) ($runinhead$))
)
(mode part-titlepage-verso-mode
(element abstract ($semiformal-object$))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))))
(element authorgroup
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(process-children-trim)))
(element copyright
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name (current-node)))
(make entity-ref name: "nbsp")
(dingbat-sosofo "copyright")
(make entity-ref name: "nbsp")
(process-children)))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(literal " "))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make sequence
(if (first-sibling?)
(if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
(empty-sosofo)
(literal (gentext-by) " "))
(literal ", "))
(process-children)))
(element edition
(make element gi: "P"
(process-children)
(make entity-ref name: "nbsp")
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(make sequence
(literal (gentext-edited-by))
(make entity-ref name: "nbsp")
(literal (author-string))))
(literal (author-string)))))
(element legalnotice
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
($semiformal-object$)))
(element (legalnotice title) (empty-sosofo))
(element pubdate
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name-space (gi (current-node))))
(process-children)))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 subtitle
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element title
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(with-mode title-mode
(process-children))))
(element (formalpara title) ($runinhead$))
)
;; == 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 element gi: "DIV"
attributes: '(("CLASS" "TITLEPAGE"))
(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-recto-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-recto-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)))))
(article-titlepage-separator side))
(empty-sosofo))))
(define (article-titlepage-separator side)
(make empty-element gi: "HR"))
(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-recto-copyright node side)
(article-titlepage-element node side))
(define (article-titlepage-corpauthor node side)
(article-titlepage-element node side))
(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-recto-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-partintro 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))
(mode article-titlepage-recto-mode
(element abbrev
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element abstract
(make element gi: "DIV"
($semiformal-object$)))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(element affiliation
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element artpagenums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element author
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(literal author-name)))
(process-node-list author-affil))))
(element authorblurb
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element authorgroup
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(process-children)))
(element authorinitials
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element bibliomisc (process-children))
(element bibliomset (process-children))
(element collab
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element confgroup
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contractnum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contractsponsor
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contrib
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element copyright
(titlepage-recto-copyright))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element corpname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element date
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element edition
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make entity-ref name: "nbsp")
(literal (gentext-element-name-space (gi (current-node))))))
(element editor
(let ((editor-name (author-string)))
(make sequence
(if (first-sibling?)
(make element gi: "H4"
attributes: (list (list "CLASS" "EDITEDBY"))
(literal (gentext-edited-by)))
(empty-sosofo))
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(literal editor-name)))))
(element firstname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element graphic
(let* ((nd (current-node))
(fileref (attribute-string (normalize "fileref") nd))
(entattr (attribute-string (normalize "entityref") nd))
(entityref (if entattr
(entity-system-id entattr)
#f))
(format (attribute-string (normalize "format")))
(align (attribute-string (normalize "align")))
(attr (append
(if align
(list (list "ALIGN" align))
'())
(if entityref
(list (list "SRC" (graphic-file entityref)))
(list (list "SRC" (graphic-file fileref))))
(list (list "ALT" ""))
)))
(if (or fileref entityref)
(make empty-element gi: "IMG"
attributes: attr)
(empty-sosofo))))
(element honorific
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element isbn
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element issn
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element itermset (empty-sosofo))
(element invpartnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element issuenum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element jobtitle
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element keywordset (empty-sosofo))
(element legalnotice
(titlepage-recto-legalnotice))
(element (legalnotice title) (empty-sosofo))
(element lineage
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element modespec (empty-sosofo))
(element orgdiv
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element orgname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element othercredit
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal author-name)))
(process-node-list author-affil))))
(element othername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pagenums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element printhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element productname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element productnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubdate
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element publisher
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element publishername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubsnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element releaseinfo
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 seriesvolnums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element shortaffil
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element subjectset (empty-sosofo))
(element subtitle
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(process-children-trim)))
(element surname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element title
(make element gi: "H1"
attributes: (list (list "CLASS" (gi)))
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(with-mode title-mode
(process-children-trim)))))
(element (formalpara title) ($runinhead$))
(element titleabbrev
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element volumenum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
)
(mode article-titlepage-verso-mode
(element abbrev
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element abstract
(make element gi: "DIV"
($semiformal-object$)))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(element affiliation
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element artpagenums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))))
(element authorblurb
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element authorgroup
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(process-children-trim)))
(element authorinitials
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element bibliomisc (process-children))
(element bibliomset (process-children))
(element collab
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element confgroup
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contractnum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contractsponsor
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element contrib
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element copyright
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name (current-node)))
(make entity-ref name: "nbsp")
(dingbat-sosofo "copyright")
(make entity-ref name: "nbsp")
(process-children)))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(literal " "))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make sequence
(if (first-sibling?)
(if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
(empty-sosofo)
(literal (gentext-by) " "))
(literal ", "))
(process-children)))
(element corpname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element date
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element edition
(make element gi: "P"
(process-children)
(make entity-ref name: "nbsp")
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(make sequence
(literal (gentext-edited-by))
(make entity-ref name: "nbsp")
(literal (author-string))))
(literal (author-string)))))
(element firstname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element graphic
(let* ((nd (current-node))
(fileref (attribute-string (normalize "fileref") nd))
(entattr (attribute-string (normalize "entityref") nd))
(entityref (if entattr
(entity-system-id entattr)
#f))
(format (attribute-string (normalize "format")))
(align (attribute-string (normalize "align")))
(attr (append
(if align
(list (list "ALIGN" align))
'())
(if entityref
(list (list "SRC" (graphic-file entityref)))
(list (list "SRC" (graphic-file fileref))))
(list (list "ALT" ""))
)))
(if (or fileref entityref)
(make empty-element gi: "IMG"
attributes: attr)
(empty-sosofo))))
(element honorific
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element isbn
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element issn
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element itermset (empty-sosofo))
(element invpartnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element issuenum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element jobtitle
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element keywordset (empty-sosofo))
(element legalnotice
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
($semiformal-object$)))
(element (legalnotice title) (empty-sosofo))
(element lineage
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element modespec (empty-sosofo))
(element orgdiv
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element orgname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element othercredit
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal author-name)))
(process-node-list author-affil))))
(element othername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pagenums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element printhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element productname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element productnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubdate
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name-space (gi (current-node))))
(process-children)))
(element publisher
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element publishername
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element pubsnumber
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element releaseinfo
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 seriesvolnums
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element shortaffil
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element subjectset (empty-sosofo))
(element subtitle
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element surname
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element title
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(with-mode title-mode
(process-children))))
(element (formalpara title) ($runinhead$))
(element titleabbrev
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
(element volumenum
(make element gi: "SPAN"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make empty-element gi: "BR")))
)
;; == 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 element gi: "DIV"
attributes: '(("CLASS" "TITLEPAGE"))
(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-recto-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-recto-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)))))
;; PartIntro is a special case
(if (and (equal? side 'recto)
(not (node-list-empty? partintro))
%generate-partintro-on-titlepage%)
($process-partintro$ partintro)
(empty-sosofo))
(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))
(reference-titlepage-separator side))
(empty-sosofo))))
(define (reference-titlepage-separator side)
(empty-sosofo))
(define (reference-titlepage-before node side)
(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-recto-copyright node side)
(reference-titlepage-element node side))
(define (reference-titlepage-corpauthor node side)
(reference-titlepage-element node side))
(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-recto-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))
(mode reference-titlepage-recto-mode
(element para
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element abstract
(make element gi: "DIV"
($semiformal-object$)))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(element author
(let ((author-name (author-string))
(author-affil (select-elements (children (current-node))
(normalize "affiliation"))))
(make sequence
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal author-name)))
(process-node-list author-affil))))
(element authorblurb
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element authorgroup
(process-children))
(element copyright
(titlepage-recto-copyright))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element edition
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(process-children)
(make entity-ref name: "nbsp")
(literal (gentext-element-name-space (gi (current-node))))))
(element editor
(let ((editor-name (author-string)))
(make sequence
(if (first-sibling?)
(make element gi: "H4"
attributes: (list (list "CLASS" "EDITEDBY"))
(literal (gentext-edited-by)))
(empty-sosofo))
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(literal editor-name)))))
(element graphic
(let* ((nd (current-node))
(fileref (attribute-string (normalize "fileref") nd))
(entattr (attribute-string (normalize "entityref") nd))
(entityref (if entattr
(entity-system-id entattr)
#f))
(format (attribute-string (normalize "format")))
(align (attribute-string (normalize "align")))
(attr (append
(if align
(list (list "ALIGN" align))
'())
(if entityref
(list (list "SRC" (graphic-file entityref)))
(list (list "SRC" (graphic-file fileref))))
(list (list "ALT" ""))
)))
(if (or fileref entityref)
(make empty-element gi: "IMG"
attributes: attr)
(empty-sosofo))))
(element legalnotice
(titlepage-recto-legalnotice))
(element (legalnotice title) (empty-sosofo))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 subtitle
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(process-children-trim)))
(element title
(let ((ref (ancestor-member (current-node)
(list (normalize "reference")))))
(make element gi: "H1"
attributes: (list (list "CLASS" (gi)))
(literal (element-label ref)
(gentext-label-title-sep (gi ref)))
(with-mode title-mode
(process-children)))))
(element (formalpara title) ($runinhead$))
)
(mode reference-titlepage-verso-mode
(element abstract ($semiformal-object$))
(element (abstract title) (empty-sosofo))
(element address
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(with-mode titlepage-address-mode
($linespecific-display$ %indent-address-lines% %number-address-lines%))))
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))
(make sequence
(make element gi: "A"
attributes: (list (list "NAME" (element-id)))
(empty-sosofo))
(literal (author-list-string))))))
(element authorgroup
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-by))
(make entity-ref name: "nbsp")
(process-children-trim)))
(element copyright
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name (current-node)))
(make entity-ref name: "nbsp")
(dingbat-sosofo "copyright")
(make entity-ref name: "nbsp")
(process-children)))
(element (copyright year)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(literal " "))))
(element (copyright holder)
(make sequence
(process-children)
(if (not (last-sibling? (current-node)))
(literal ", ")
(empty-sosofo))))
(element corpauthor
(make sequence
(if (first-sibling?)
(if (equal? (gi (parent (current-node))) (normalize "authorgroup"))
(empty-sosofo)
(literal (gentext-by) " "))
(literal ", "))
(process-children)))
(element edition
(make element gi: "P"
(process-children)
(make entity-ref name: "nbsp")
(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 element gi: "P"
attributes: (list (list "CLASS" (gi)))
(make sequence
(literal (gentext-edited-by))
(make entity-ref name: "nbsp")
(literal (author-string))))
(literal (author-string)))))
(element legalnotice
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
($semiformal-object$)))
(element (legalnotice title) (empty-sosofo))
(element pubdate
(make element gi: "P"
attributes: (list (list "CLASS" (gi)))
(literal (gentext-element-name-space (gi (current-node))))
(process-children)))
(element revhistory
(make element gi: "DIV"
attributes: (list (list "CLASS" (gi)))
(make element gi: "TABLE"
attributes: (list
(list "WIDTH" ($table-width$))
(list "BORDER" "0"))
(make sequence
(make element gi: "TR"
(make element gi: "TH"
attributes: '(("ALIGN" "LEFT")
("VALIGN" "TOP")
("COLSPAN" "3"))
(make element gi: "B"
(literal (gentext-element-name
(gi (current-node)))))))
(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"))))
(make sequence
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revnumber))
(make sequence
(literal (gentext-element-name-space
(gi (current-node))))
(process-node-list revnumber))
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revdate))
(process-node-list revdate)
(empty-sosofo)))
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT"))
(if (not (node-list-empty? revauthor))
(make sequence
(literal (gentext-revised-by))
(process-node-list revauthor))
(empty-sosofo))))
(make element gi: "TR"
(make element gi: "TD"
attributes: (list
(list "ALIGN" "LEFT")
(list "COLSPAN" "3"))
(if (not (node-list-empty? revremark))
(process-node-list revremark)
(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 subtitle
(make element gi: "H3"
attributes: (list (list "CLASS" (gi)))
(process-children)))
(element title
(make element gi: "H2"
attributes: (list (list "CLASS" (gi)))
(with-mode title-mode
(process-children))))
(element (formalpara title) ($runinhead$))
)