mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-02 21:31:48 +01:00
869 lines
24 KiB
Plaintext
Executable File
869 lines
24 KiB
Plaintext
Executable File
;; $Id$
|
|
;;
|
|
;; This file is part of the Modular DocBook Stylesheet distribution.
|
|
;; See ../README or http://nwalsh.com/docbook/dsssl/
|
|
;;
|
|
|
|
;; ......................... BIBLIOGRAPHY PARAMS .........................
|
|
|
|
;; these should be in dbparam...
|
|
(define %biblsep% ", ")
|
|
(define %biblend% ".")
|
|
|
|
(define %biblioentry-in-entry-order% #t)
|
|
|
|
;; .................... BIBLIOGRAPHY and BIBLIODIV ......................
|
|
|
|
(define (bibliography-content)
|
|
;; Note that the code below works for both the case where the bibliography
|
|
;; has BIBLIODIVs and the case where it doesn't, by the slightly subtle
|
|
;; fact that if it does, then allentries will be (empty-node-list).
|
|
(let* ((allbibcontent (children (current-node)))
|
|
(prebibcontent (node-list-filter-by-not-gi
|
|
allbibcontent
|
|
(list (normalize "biblioentry")
|
|
(normalize "bibliomixed"))))
|
|
(allentries (node-list-filter-by-gi
|
|
allbibcontent
|
|
(list (normalize "biblioentry")
|
|
(normalize "bibliomixed"))))
|
|
(entries (if biblio-filter-used
|
|
(biblio-filter allentries)
|
|
allentries)))
|
|
(make sequence
|
|
(process-node-list prebibcontent)
|
|
(process-node-list entries))))
|
|
|
|
(element (book bibliography)
|
|
(make simple-page-sequence
|
|
page-n-columns: %page-n-columns%
|
|
page-number-restart?: (or %page-number-restart%
|
|
(book-start?)
|
|
(first-chapter?))
|
|
page-number-format: ($page-number-format$)
|
|
use: default-text-style
|
|
left-header: ($left-header$)
|
|
center-header: ($center-header$)
|
|
right-header: ($right-header$)
|
|
left-footer: ($left-footer$)
|
|
center-footer: ($center-footer$)
|
|
right-footer: ($right-footer$)
|
|
start-indent: %body-start-indent%
|
|
input-whitespace-treatment: 'collapse
|
|
quadding: %default-quadding%
|
|
(make sequence
|
|
($component-title$)
|
|
(bibliography-content))
|
|
(make-endnotes)))
|
|
|
|
(element bibliography
|
|
;; A bibliography that's inside something else...
|
|
(let* ((sect (ancestor-member (current-node)
|
|
(append (section-element-list)
|
|
(component-element-list))))
|
|
(hlevel (+ (SECTLEVEL sect) 1))
|
|
(hs (HSIZE (- 4 hlevel))))
|
|
(make sequence
|
|
(make paragraph
|
|
font-family-name: %title-font-family%
|
|
font-weight: (if (< hlevel 5) 'bold 'medium)
|
|
font-posture: (if (< hlevel 5) 'upright 'italic)
|
|
font-size: hs
|
|
line-spacing: (* hs %line-spacing-factor%)
|
|
space-before: (* hs %head-before-factor%)
|
|
space-after: (* hs %head-after-factor%)
|
|
start-indent: (if (or (>= hlevel 3)
|
|
(member (gi) (list (normalize "refsect1")
|
|
(normalize "refsect2")
|
|
(normalize "refsect3"))))
|
|
%body-start-indent%
|
|
0pt)
|
|
first-line-start-indent: 0pt
|
|
quadding: %section-title-quadding%
|
|
keep-with-next?: #t
|
|
heading-level: (if %generate-heading-level% (+ hlevel 1) 0)
|
|
(element-title-sosofo (current-node)))
|
|
(bibliography-content))))
|
|
|
|
(element (bibliography title) (empty-sosofo))
|
|
|
|
(element bibliodiv
|
|
(let* ((allentries (node-list-filter-by-gi (children (current-node))
|
|
(list (normalize "biblioentry")
|
|
(normalize "bibliomixed"))))
|
|
(entries (if biblio-filter-used
|
|
(biblio-filter allentries)
|
|
allentries)))
|
|
(if (and biblio-filter-used (node-list-empty? entries))
|
|
(empty-sosofo)
|
|
(make display-group
|
|
space-before: %block-sep%
|
|
space-after: %block-sep%
|
|
start-indent: %body-start-indent%
|
|
(make sequence
|
|
($section-title$)
|
|
(process-node-list entries))))))
|
|
|
|
(element (bibliodiv title) (empty-sosofo))
|
|
|
|
;; ..................... BIBLIOGRAPHY ENTRIES .........................
|
|
|
|
(define (biblioentry-inline-sep node rest)
|
|
;; Output the character that should separate inline node from rest
|
|
(cond
|
|
((and (equal? (gi node) (normalize "title"))
|
|
(equal? (gi (node-list-first rest)) (normalize "subtitle")))
|
|
(make sequence
|
|
font-posture: 'italic
|
|
(literal ": ")))
|
|
(else
|
|
(literal %biblsep%))))
|
|
|
|
(define (biblioentry-inline-end blocks)
|
|
;; Output the character that should occur at the end of inline
|
|
(literal %biblend%))
|
|
|
|
(define (biblioentry-block-sep node rest)
|
|
;; Output the character that should separate block node from rest
|
|
(empty-sosofo))
|
|
|
|
(define (biblioentry-block-end)
|
|
;; Output the character that should occur at the end of block
|
|
(empty-sosofo))
|
|
|
|
(element biblioentry
|
|
(let* ((expanded-children (expand-children
|
|
(children (current-node))
|
|
(biblioentry-flatten-elements)))
|
|
(all-inline-children (if %biblioentry-in-entry-order%
|
|
(titlepage-gi-list-by-nodelist
|
|
(biblioentry-inline-elements)
|
|
expanded-children)
|
|
(titlepage-gi-list-by-elements
|
|
(biblioentry-inline-elements)
|
|
expanded-children)))
|
|
(block-children (if %biblioentry-in-entry-order%
|
|
(titlepage-gi-list-by-nodelist
|
|
(biblioentry-block-elements)
|
|
expanded-children)
|
|
(titlepage-gi-list-by-elements
|
|
(biblioentry-block-elements)
|
|
expanded-children)))
|
|
(leading-abbrev (if (equal? (normalize "abbrev")
|
|
(gi (node-list-first
|
|
all-inline-children)))
|
|
(node-list-first all-inline-children)
|
|
(empty-node-list)))
|
|
(inline-children (if (node-list-empty? leading-abbrev)
|
|
all-inline-children
|
|
(node-list-rest all-inline-children)))
|
|
(has-leading-abbrev? (not (node-list-empty? leading-abbrev)))
|
|
(xreflabel (if (or has-leading-abbrev? biblio-number)
|
|
#f
|
|
(attribute-string (normalize "xreflabel")))))
|
|
(make display-group
|
|
(make paragraph
|
|
space-before: %para-sep%
|
|
space-after: %para-sep%
|
|
start-indent: (+ (inherited-start-indent) 2pi)
|
|
first-line-start-indent: -2pi
|
|
|
|
(if (or biblio-number xreflabel has-leading-abbrev?)
|
|
(make sequence
|
|
(literal "[")
|
|
|
|
(if biblio-number
|
|
(literal (number->string (bibentry-number (current-node))))
|
|
(empty-sosofo))
|
|
|
|
(if xreflabel
|
|
(literal xreflabel)
|
|
(empty-sosofo))
|
|
|
|
(if has-leading-abbrev?
|
|
(with-mode biblioentry-inline-mode
|
|
(process-node-list leading-abbrev))
|
|
(empty-sosofo))
|
|
|
|
(literal "]\no-break-space;"))
|
|
(empty-sosofo))
|
|
|
|
(let loop ((nl inline-children))
|
|
(if (node-list-empty? nl)
|
|
(empty-sosofo)
|
|
(make sequence
|
|
(with-mode biblioentry-inline-mode
|
|
(process-node-list (node-list-first nl)))
|
|
(if (node-list-empty? (node-list-rest nl))
|
|
(biblioentry-inline-end block-children)
|
|
(biblioentry-inline-sep (node-list-first nl)
|
|
(node-list-rest nl)))
|
|
(loop (node-list-rest nl))))))
|
|
|
|
(make display-group
|
|
start-indent: (+ (inherited-start-indent) 2pi)
|
|
(let loop ((nl block-children))
|
|
(if (node-list-empty? nl)
|
|
(empty-sosofo)
|
|
(make sequence
|
|
(with-mode biblioentry-block-mode
|
|
(process-node-list (node-list-first nl)))
|
|
(if (node-list-empty? (node-list-rest nl))
|
|
(biblioentry-block-end)
|
|
(biblioentry-block-sep (node-list-first nl)
|
|
(node-list-rest nl)))
|
|
(loop (node-list-rest nl)))))))))
|
|
|
|
(mode biblioentry-inline-mode
|
|
(element abbrev
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element affiliation
|
|
(let ((inline-children (node-list-filter-by-not-gi
|
|
(children (current-node))
|
|
(list (normalize "address")))))
|
|
(let loop ((nl inline-children))
|
|
(if (node-list-empty? nl)
|
|
(empty-sosofo)
|
|
(make sequence
|
|
(process-node-list (node-list-first nl))
|
|
(if (node-list-empty? (node-list-rest nl))
|
|
(empty-sosofo)
|
|
(literal ", "))
|
|
(loop (node-list-rest nl)))))))
|
|
|
|
(element artpagenums
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element author
|
|
(literal (author-list-string)))
|
|
|
|
(element authorgroup
|
|
(process-children))
|
|
|
|
(element authorinitials
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element collab
|
|
(let* ((nl (children (current-node)))
|
|
(collabname (node-list-first nl))
|
|
(affil (node-list-rest nl)))
|
|
(make sequence
|
|
(process-node-list collabname)
|
|
(if (node-list-empty? affil)
|
|
(empty-sosofo)
|
|
(let loop ((nl affil))
|
|
(if (node-list-empty? nl)
|
|
(empty-sosofo)
|
|
(make sequence
|
|
(literal ", ")
|
|
(process-node-list (node-list-first nl))
|
|
(loop (node-list-rest nl)))))))))
|
|
|
|
(element (collab collabname)
|
|
(process-children))
|
|
|
|
(element confgroup
|
|
(let ((inline-children (node-list-filter-by-not-gi
|
|
(children (current-node))
|
|
(list (normalize "address")))))
|
|
(let loop ((nl inline-children))
|
|
(if (node-list-empty? nl)
|
|
(empty-sosofo)
|
|
(make sequence
|
|
(process-node-list (node-list-first nl))
|
|
(if (node-list-empty? (node-list-rest nl))
|
|
(empty-sosofo)
|
|
(literal ", "))
|
|
(loop (node-list-rest nl)))))))
|
|
|
|
(element contractnum
|
|
(process-children))
|
|
|
|
(element contractsponsor
|
|
(process-children))
|
|
|
|
(element contrib
|
|
(process-children))
|
|
|
|
(element copyright
|
|
;; Just print the year(s)
|
|
(let ((years (select-elements (children (current-node))
|
|
(normalize "year"))))
|
|
(process-node-list years)))
|
|
|
|
(element (copyright year)
|
|
(make sequence
|
|
(process-children)
|
|
(if (not (last-sibling? (current-node)))
|
|
(literal ", ")
|
|
(empty-sosofo))))
|
|
|
|
(element corpauthor
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element corpname
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element date
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element edition
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element editor
|
|
(make sequence
|
|
(literal (gentext-edited-by))
|
|
(literal " ")
|
|
(literal (author-list-string))))
|
|
|
|
(element firstname
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element honorific
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element invpartnumber
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element isbn
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element issn
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element issuenum
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element lineage
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element orgname
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element othercredit
|
|
(literal (author-list-string)))
|
|
|
|
(element othername
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element pagenums
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element productname
|
|
(make sequence
|
|
($charseq$)
|
|
; this is actually a problem since "trade" is the default value for
|
|
; the class attribute. we can put this back in in DocBook 5.0, when
|
|
; class becomes #IMPLIED
|
|
; (if (equal? (attribute-string "class") (normalize "trade"))
|
|
; (literal "\trade-mark-sign;")
|
|
; (empty-sosofo))
|
|
))
|
|
|
|
(element productnumber
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element pubdate
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element publisher
|
|
(let ((pubname (select-elements (children (current-node))
|
|
(normalize "publishername")))
|
|
(cities (select-elements (descendants (current-node))
|
|
(normalize "city"))))
|
|
(make sequence
|
|
(process-node-list pubname)
|
|
(if (node-list-empty? cities)
|
|
(empty-sosofo)
|
|
(literal ", "))
|
|
(process-node-list cities))))
|
|
|
|
(element publishername
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element (publisher address city)
|
|
(make sequence
|
|
(process-children)
|
|
(if (not (last-sibling? (current-node)))
|
|
(literal ", ")
|
|
(empty-sosofo))))
|
|
|
|
(element pubsnumber
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element releaseinfo
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element seriesvolnums
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element subtitle
|
|
(make sequence
|
|
font-posture: 'italic
|
|
(process-children)))
|
|
|
|
(element surname
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element title
|
|
(make sequence
|
|
font-posture: 'italic
|
|
(process-children)))
|
|
|
|
(element titleabbrev
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element volumenum
|
|
(make sequence
|
|
(process-children)))
|
|
|
|
(element (bibliomixed title)
|
|
(make sequence
|
|
font-posture: 'italic
|
|
(process-children)))
|
|
|
|
|
|
(element (bibliomixed subtitle)
|
|
(make sequence
|
|
font-posture: 'italic
|
|
(process-children)))
|
|
|
|
(element (biblioset title)
|
|
(let ((rel (case-fold-up
|
|
(inherited-attribute-string (normalize "relation")))))
|
|
(cond
|
|
((equal? rel "ARTICLE") (make sequence
|
|
(literal (gentext-start-quote))
|
|
(process-children)
|
|
(literal (gentext-end-quote))))
|
|
(else (make sequence
|
|
font-posture: 'italic
|
|
(process-children))))))
|
|
|
|
(element (bibliomset title)
|
|
(let ((rel (case-fold-up
|
|
(inherited-attribute-string (normalize "relation")))))
|
|
(cond
|
|
((equal? rel "ARTICLE") (make sequence
|
|
(literal (gentext-start-quote))
|
|
(process-children)
|
|
(literal (gentext-end-quote))))
|
|
(else (make sequence
|
|
font-posture: 'italic
|
|
(process-children))))))
|
|
)
|
|
|
|
(mode biblioentry-block-mode
|
|
(element abstract
|
|
(make display-group
|
|
(process-children)))
|
|
|
|
(element (abstract title)
|
|
(make paragraph
|
|
font-weight: 'bold
|
|
(process-children)))
|
|
|
|
(element address
|
|
($linespecific-display$ %indent-address-lines% %number-address-lines%))
|
|
|
|
(element authorblurb
|
|
(make display-group
|
|
(process-children)))
|
|
|
|
(element printhistory
|
|
(make display-group
|
|
(process-children)))
|
|
|
|
(element revhistory
|
|
(make sequence
|
|
(make paragraph
|
|
font-weight: 'bold
|
|
(literal (gentext-element-name (current-node))))
|
|
(make table
|
|
before-row-border: #f
|
|
(make table-column
|
|
column-number: 1
|
|
width: (/ (- %body-width% (inherited-start-indent)) 3))
|
|
(make table-column
|
|
column-number: 2
|
|
width: (/ (- %body-width% (inherited-start-indent)) 3))
|
|
(make table-column
|
|
column-number: 3
|
|
width: (/ (- %body-width% (inherited-start-indent)) 3))
|
|
(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 (node-list-filter-by-gi
|
|
(descendants (current-node))
|
|
(list (normalize "revremark")
|
|
(normalize "revdescription")))))
|
|
(make sequence
|
|
(make table-row
|
|
(make table-cell
|
|
column-number: 1
|
|
n-columns-spanned: 1
|
|
n-rows-spanned: 1
|
|
(if (not (node-list-empty? revnumber))
|
|
(make paragraph
|
|
(make sequence
|
|
(literal (gentext-element-name-space (current-node)))
|
|
(process-node-list revnumber)))
|
|
(empty-sosofo)))
|
|
(make table-cell
|
|
column-number: 2
|
|
n-columns-spanned: 1
|
|
n-rows-spanned: 1
|
|
(if (not (node-list-empty? revdate))
|
|
(make paragraph
|
|
(process-node-list revdate))
|
|
(empty-sosofo)))
|
|
(make table-cell
|
|
column-number: 3
|
|
n-columns-spanned: 1
|
|
n-rows-spanned: 1
|
|
(if (not (node-list-empty? revauthor))
|
|
(make paragraph
|
|
(make sequence
|
|
(literal (gentext-revised-by))
|
|
(process-node-list revauthor)))
|
|
(empty-sosofo))))
|
|
(make table-row
|
|
cell-after-row-border: #f
|
|
(make table-cell
|
|
column-number: 1
|
|
n-columns-spanned: 3
|
|
n-rows-spanned: 1
|
|
(if (not (node-list-empty? revremark))
|
|
(make paragraph
|
|
space-after: %block-sep%
|
|
(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 (revision revdescription) (process-children))
|
|
|
|
(element seriesinfo
|
|
;; This is a nearly biblioentry recursively...
|
|
(let* ((expanded-children (expand-children
|
|
(children (current-node))
|
|
(biblioentry-flatten-elements)))
|
|
(all-inline-children (if %biblioentry-in-entry-order%
|
|
(titlepage-gi-list-by-nodelist
|
|
(biblioentry-inline-elements)
|
|
expanded-children)
|
|
(titlepage-gi-list-by-elements
|
|
(biblioentry-inline-elements)
|
|
expanded-children)))
|
|
(block-children (if %biblioentry-in-entry-order%
|
|
(titlepage-gi-list-by-nodelist
|
|
(biblioentry-block-elements)
|
|
expanded-children)
|
|
(titlepage-gi-list-by-elements
|
|
(biblioentry-block-elements)
|
|
expanded-children)))
|
|
(inline-children all-inline-children))
|
|
(make display-group
|
|
(make paragraph
|
|
space-before: %para-sep%
|
|
space-after: %para-sep%
|
|
start-indent: (+ (inherited-start-indent) 2pi)
|
|
first-line-start-indent: -2pi
|
|
|
|
(let loop ((nl inline-children))
|
|
(if (node-list-empty? nl)
|
|
(empty-sosofo)
|
|
(make sequence
|
|
(with-mode biblioentry-inline-mode
|
|
(process-node-list (node-list-first nl)))
|
|
(if (node-list-empty? (node-list-rest nl))
|
|
(biblioentry-inline-end block-children)
|
|
(biblioentry-inline-sep (node-list-first nl)
|
|
(node-list-rest nl)))
|
|
(loop (node-list-rest nl))))))
|
|
|
|
(make display-group
|
|
start-indent: (+ (inherited-start-indent) 2pi)
|
|
(let loop ((nl block-children))
|
|
(if (node-list-empty? nl)
|
|
(empty-sosofo)
|
|
(make sequence
|
|
(with-mode biblioentry-block-mode
|
|
(process-node-list (node-list-first nl)))
|
|
(if (node-list-empty? (node-list-rest nl))
|
|
(biblioentry-block-end)
|
|
(biblioentry-block-sep (node-list-first nl)
|
|
(node-list-rest nl)))
|
|
(loop (node-list-rest nl)))))))))
|
|
)
|
|
|
|
(element bibliomixed
|
|
(let* ((all-inline-children (children (current-node)))
|
|
(leading-abbrev (if (equal? (normalize "abbrev")
|
|
(gi (node-list-first
|
|
all-inline-children)))
|
|
(node-list-first all-inline-children)
|
|
(empty-node-list)))
|
|
(inline-children (if (node-list-empty? leading-abbrev)
|
|
all-inline-children
|
|
(node-list-rest all-inline-children)))
|
|
(has-leading-abbrev? (not (node-list-empty? leading-abbrev)))
|
|
(xreflabel (if (or has-leading-abbrev? biblio-number)
|
|
#f
|
|
(attribute-string (normalize "xreflabel")))))
|
|
(make paragraph
|
|
space-before: %para-sep%
|
|
space-after: %para-sep%
|
|
start-indent: (+ (inherited-start-indent) 2pi)
|
|
first-line-start-indent: -2pi
|
|
|
|
(if (or biblio-number xreflabel has-leading-abbrev?)
|
|
(make sequence
|
|
(literal "[")
|
|
|
|
(if biblio-number
|
|
(literal (number->string (bibentry-number (current-node))))
|
|
(empty-sosofo))
|
|
|
|
(if xreflabel
|
|
(literal xreflabel)
|
|
(empty-sosofo))
|
|
|
|
(if has-leading-abbrev?
|
|
(with-mode biblioentry-inline-mode
|
|
(process-node-list leading-abbrev))
|
|
(empty-sosofo))
|
|
|
|
(literal "]\no-break-space;"))
|
|
(empty-sosofo))
|
|
|
|
(with-mode biblioentry-inline-mode
|
|
(process-children)))))
|
|
|
|
;; ....................... BIBLIOGRAPHY ELEMENTS .......................
|
|
|
|
;; These are element construction rules for bibliography elements that
|
|
;; may occur outside of a BIBLIOENTRY or BIBLIOMIXED.
|
|
|
|
(element bibliomisc (process-children))
|
|
(element bibliomset (process-children))
|
|
(element biblioset (process-children))
|
|
(element bookbiblio (process-children))
|
|
|
|
(element street ($charseq$))
|
|
(element pob ($charseq$))
|
|
(element postcode ($charseq$))
|
|
(element city ($charseq$))
|
|
(element state ($charseq$))
|
|
(element country ($charseq$))
|
|
(element phone ($charseq$))
|
|
(element fax ($charseq$))
|
|
(element otheraddr ($charseq$))
|
|
(element affiliation ($charseq$))
|
|
(element shortaffil ($charseq$))
|
|
(element jobtitle ($charseq$))
|
|
(element orgdiv ($charseq$))
|
|
(element artpagenums ($charseq$))
|
|
|
|
(element author
|
|
(make sequence
|
|
(literal (author-list-string))))
|
|
|
|
(element authorgroup (process-children))
|
|
|
|
(element collab (process-children))
|
|
(element collabname ($charseq$))
|
|
(element authorinitials ($charseq$))
|
|
(element confgroup (process-children))
|
|
(element confdates ($charseq$))
|
|
(element conftitle ($charseq$))
|
|
(element confnum ($charseq$))
|
|
(element confsponsor ($charseq$))
|
|
(element contractnum ($charseq$))
|
|
(element contractsponsor ($charseq$))
|
|
|
|
(element copyright
|
|
(make paragraph
|
|
(make sequence
|
|
(literal (gentext-element-name (current-node)))
|
|
(literal "\no-break-space;")
|
|
(literal (dingbat "copyright"))
|
|
(literal "\no-break-space;")
|
|
(process-children-trim))))
|
|
|
|
(element year
|
|
(make sequence
|
|
(process-children)
|
|
(if (not (last-sibling? (current-node)))
|
|
(literal ", ")
|
|
(literal " "))))
|
|
|
|
(element holder ($charseq$))
|
|
|
|
(element corpauthor
|
|
(make sequence
|
|
(literal (author-list-string))))
|
|
|
|
(element corpname ($charseq$))
|
|
(element date ($charseq$))
|
|
(element edition ($charseq$))
|
|
(element editor ($charseq$))
|
|
(element isbn ($charseq$))
|
|
(element issn ($charseq$))
|
|
(element invpartnumber ($charseq$))
|
|
(element issuenum ($charseq$))
|
|
|
|
(element legalnotice ($semiformal-object$))
|
|
(element (legalnotice title) (empty-sosofo))
|
|
|
|
(element modespec (empty-sosofo))
|
|
|
|
(element orgname ($charseq$))
|
|
|
|
(element othercredit
|
|
(make sequence
|
|
(literal (author-list-string))))
|
|
|
|
(element pagenums ($charseq$))
|
|
(element contrib ($charseq$))
|
|
|
|
(element firstname ($charseq$))
|
|
(element honorific ($charseq$))
|
|
(element lineage ($charseq$))
|
|
(element othername ($charseq$))
|
|
(element surname ($charseq$))
|
|
|
|
(element printhistory (empty-sosofo))
|
|
|
|
(element productname
|
|
(make sequence
|
|
($charseq$)
|
|
; this is actually a problem since "trade" is the default value for
|
|
; the class attribute. we can put this back in in DocBook 5.0, when
|
|
; class becomes #IMPLIED
|
|
; (if (equal? (attribute-string "class") (normalize "trade"))
|
|
; (literal "\trade-mark-sign;")
|
|
; (empty-sosofo))
|
|
))
|
|
|
|
(element productnumber ($charseq$))
|
|
(element pubdate ($charseq$))
|
|
(element publisher (process-children))
|
|
(element publishername ($charseq$))
|
|
(element pubsnumber ($charseq$))
|
|
(element releaseinfo (empty-sosofo))
|
|
(element revision ($charseq$))
|
|
(element revnumber ($charseq$))
|
|
(element revremark ($charseq$))
|
|
(element revdescription ($block-container$))
|
|
(element seriesvolnums ($charseq$))
|
|
(element volumenum ($charseq$))
|
|
|
|
;; The (element (bookinfo revhistory)) construction rule is in dbinfo.dsl
|
|
;; It calls $book-revhistory$...
|
|
(define ($book-revhistory$)
|
|
(make sequence
|
|
(make paragraph
|
|
use: title-style
|
|
font-family-name: %title-font-family%
|
|
font-weight: 'bold
|
|
space-before: (* (HSIZE 3) %head-before-factor%)
|
|
space-after: (* (HSIZE 1) %head-before-factor%)
|
|
(literal (gentext-element-name (current-node))))
|
|
(make table
|
|
before-row-border: #f
|
|
(process-children))))
|
|
|
|
(element (revhistory revision)
|
|
(let ((revnumber (select-elements (descendants (current-node))
|
|
(normalize "revnumber")))
|
|
(revdate (select-elements (descendants (current-node))
|
|
(normalize "date")))
|
|
(revauthor (select-elements (descendants (current-node))
|
|
(normalize "authorinitials")))
|
|
(revremark (node-list-filter-by-gi
|
|
(descendants (current-node))
|
|
(list (normalize "revremark")
|
|
(normalize "revdescription")))))
|
|
(make sequence
|
|
(make table-row
|
|
(make table-cell
|
|
column-number: 1
|
|
n-columns-spanned: 1
|
|
n-rows-spanned: 1
|
|
(if (not (node-list-empty? revnumber))
|
|
(make paragraph
|
|
(make sequence
|
|
(literal (gentext-element-name-space (current-node)))
|
|
(process-node-list revnumber)))
|
|
(empty-sosofo)))
|
|
(make table-cell
|
|
column-number: 2
|
|
n-columns-spanned: 1
|
|
n-rows-spanned: 1
|
|
(if (not (node-list-empty? revdate))
|
|
(make paragraph
|
|
(process-node-list revdate))
|
|
(empty-sosofo)))
|
|
(make table-cell
|
|
column-number: 3
|
|
n-columns-spanned: 1
|
|
n-rows-spanned: 1
|
|
(if (not (node-list-empty? revauthor))
|
|
(make paragraph
|
|
(make sequence
|
|
(literal (gentext-revised-by))
|
|
(process-node-list revauthor)))
|
|
(empty-sosofo))))
|
|
(make table-row
|
|
cell-after-row-border: #f
|
|
(make table-cell
|
|
column-number: 1
|
|
n-columns-spanned: 3
|
|
n-rows-spanned: 1
|
|
(if (not (node-list-empty? revremark))
|
|
(make paragraph
|
|
space-after: %block-sep%
|
|
(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 (revision revdescription) (process-children))
|