1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
|
;; $Id: db31.dsl,v 1.1 2002/07/20 15:34:39 goba Exp $
;;
;; This file is part of the Modular DocBook Stylesheet distribution.
;; See ../README or http://nwalsh.com/docbook/dsssl/
;;
;; This module implements support for elements introduced in DocBook 3.1.
;; When DocBook 3.1 is officially released, these rules will get folded
;; into more appropriate modules.
;; ======================================================================
;; MediaObject and friends...
(define preferred-mediaobject-notations
(list "EPS" "PS" "JPG" "JPEG" "PNG" "linespecific"))
(define preferred-mediaobject-extensions
(list "eps" "ps" "jpg" "jpeg" "png"))
(define acceptable-mediaobject-notations
(list "GIF" "GIF87a" "GIF89a" "BMP" "WMF"))
(define acceptable-mediaobject-extensions
(list "gif" "bmp" "wmf"))
(element mediaobject
(make paragraph
($mediaobject$)))
(element inlinemediaobject
(make sequence
($mediaobject$)))
(element mediaobjectco
(error "MediaObjectCO is not supported yet."))
(element imageobjectco
(error "ImageObjectCO is not supported yet."))
(element objectinfo
(empty-sosofo))
(element videoobject
(process-children))
(element videodata
(empty-sosofo))
(element audioobject
(process-children))
(element audiodata
(empty-sosofo))
(element imageobject
(process-children))
(element imagedata
(if (have-ancestor? (normalize "mediaobject"))
($img$ (current-node) #t)
($img$ (current-node) #f)))
(element textobject
(make display-group
(process-children)))
(element caption
(process-children))
;; ======================================================================
;; InformalFigure
(element informalfigure
($informal-object$ %informalfigure-rules% %informalfigure-rules%))
;; ======================================================================
;; Colophon
(element colophon
($component$))
;; ======================================================================
;; section
;; sectioninfo
(element section ($section$))
(element (section title) (empty-sosofo))
;; ======================================================================
;; QandASet and friends
(define (qanda-defaultlabel)
(normalize "number"))
(element qandaset
(let ((title (select-elements (children (current-node))
(normalize "title"))))
(make display-group
(process-node-list title)
(process-qanda))))
(element (qandaset title)
(let* ((enclsect (ancestor-member (current-node)
(list (normalize "section")
(normalize "simplesect")
(normalize "sect5")
(normalize "sect4")
(normalize "sect3")
(normalize "sect2")
(normalize "sect1")
(normalize "refsect3")
(normalize "refsect2")
(normalize "refsect1"))))
(sectlvl (SECTLEVEL enclsect))
(hs (HSIZE (- 4 (+ sectlvl 1)))))
(make paragraph
font-family-name: %title-font-family%
font-weight: (if (< sectlvl 5) 'bold 'medium)
font-posture: (if (< sectlvl 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: %body-start-indent%
first-line-start-indent: 0pt
quadding: %section-title-quadding%
keep-with-next?: #t
(process-children))))
(element qandadiv
(let ((title (select-elements (children (current-node))
(normalize "title"))))
(make sequence
(process-node-list title)
(make display-group
start-indent: (+ (inherited-start-indent) 2pi)
(process-qanda)))))
(element (qandadiv title)
(let* ((hnr (hierarchical-number-recursive (normalize "qandadiv")
(current-node)))
(number (let loop ((numlist hnr) (number "") (sep ""))
(if (null? numlist)
number
(loop (cdr numlist)
(string-append number
sep
(number->string (car numlist)))
".")))))
(make paragraph
font-weight: 'bold
space-after: %block-sep%
(literal number ". ")
(process-children))))
(define (process-qanda #!optional (node (current-node)))
(let* ((preamble (node-list-filter-by-not-gi
(children node)
(list (normalize "title")
(normalize "qandadiv")
(normalize "qandaentry"))))
(divs (node-list-filter-by-gi (children node)
(list (normalize "qandadiv"))))
(entries (node-list-filter-by-gi (children node)
(list (normalize "qandaentry"))))
(inhlabel (inherited-attribute-string (normalize "defaultlabel")))
(deflabel (if inhlabel inhlabel (qanda-defaultlabel))))
(make sequence
(process-node-list preamble)
(process-node-list divs)
(process-node-list entries))))
(element qandaentry
(process-children))
;; space-after on quanda answer is excessive; keep with next should be
;; upstream
;; Adam Di Carlo, adam@onshore.com
(element question
(let* ((chlist (children (current-node)))
(firstch (node-list-first chlist))
(restch (node-list-rest chlist))
(label (question-answer-label (current-node))))
(make sequence
(make paragraph
space-after: (/ %para-sep% 2)
keep-with-next?: #t
(make sequence
(make sequence
font-weight: 'bold
(if (string=? label "")
(empty-sosofo)
(literal label " ")))
(process-node-list (children firstch)))
(process-node-list restch)))))
(element answer
(let* ((chlist (children (current-node)))
(firstch (node-list-first chlist))
(restch (node-list-rest chlist))
(label (question-answer-label (current-node))))
(make display-group
space-after: %block-sep%
(make paragraph
(make sequence
(make sequence
font-weight: 'bold
(if (string=? label "")
(empty-sosofo)
(literal label " ")))
(process-node-list (children firstch))))
(process-node-list restch))))
;; ======================================================================
;; constant
(element constant
($mono-seq$))
;; ======================================================================
;; varname
(element varname
($mono-seq$))
|