|
1 <!doctype dsssl-specification [ |
|
2 <!entity % decls "(features? & char-repertoire?)"> |
|
3 <!element dsssl-specification O O (%decls;, style-specification+)> |
|
4 <!attlist dsssl-specification |
|
5 dsssl name #fixed dsssl-specification |
|
6 > |
|
7 <!element style-specification - O (%decls;, style*)> |
|
8 <!attlist style-specification |
|
9 dsssl name #fixed style-specification |
|
10 id id #required |
|
11 partial (partial | complete) complete |
|
12 use idrefs #implied |
|
13 > |
|
14 <!element char-repertoire - o empty> |
|
15 <!attlist char-repertoire |
|
16 dsssl name #fixed character-repertoire |
|
17 name cdata #required |
|
18 > |
|
19 <!element features - o (#pcdata)> |
|
20 <!element style - - rcdata> |
|
21 <!attlist style |
|
22 dsssl name #fixed style-specification-body |
|
23 > |
|
24 ]> |
|
25 <dsssl-specification> |
|
26 <style-specification id=common partial> |
|
27 <char-repertoire name="UNREGISTERED::SGML Open//Character Repertoire::ISO/IEC 10646"> |
|
28 <features>table</features> |
|
29 <style> |
|
30 (element quote |
|
31 (sosofo-append |
|
32 (make character |
|
33 char: #\left-double-quotation-mark) |
|
34 (process-children) |
|
35 (make character |
|
36 char: #\right-double-quotation-mark))) |
|
37 |
|
38 (element emph |
|
39 (make sequence |
|
40 font-weight: 'bold)) |
|
41 |
|
42 (define monospace-font-family "iso-monospace") |
|
43 |
|
44 (element code |
|
45 (make sequence |
|
46 font-family: monospace-font-family)) |
|
47 |
|
48 (declare-initial-value writing-mode 'left-to-right) |
|
49 (declare-initial-value font-size 12pt) |
|
50 (declare-initial-value line-spacing 14pt) |
|
51 (declare-initial-value font-family "iso-serif") |
|
52 |
|
53 (define-unit mm .001m) |
|
54 (define-unit in 25.4mm) |
|
55 (define-unit pt (/ 1in 72)) |
|
56 (define-unit pi (/ 1in 6)) |
|
57 |
|
58 (define paragraph-indent 20pt) |
|
59 |
|
60 (element p |
|
61 (make paragraph |
|
62 first-line-start-indent: (if (first-sibling?) |
|
63 0pt |
|
64 paragraph-indent))) |
|
65 |
|
66 (define chapter-title-style |
|
67 (style |
|
68 font-size: 18pt |
|
69 line-spacing: 24pt |
|
70 quadding: 'center)) |
|
71 |
|
72 (element (chapter title) |
|
73 (sosofo-append |
|
74 (make paragraph |
|
75 use: chapter-title-style |
|
76 span: 2 |
|
77 (literal "Chapter " |
|
78 (format-number (child-number) "1"))) |
|
79 (make paragraph |
|
80 use: chapter-title-style |
|
81 span: 2))) |
|
82 |
|
83 (element (section title) |
|
84 (make paragraph |
|
85 quadding: 'start |
|
86 (format-number-list (hierarchical-number '("CHAPTER" "SECTION")) |
|
87 "1" |
|
88 ".") |
|
89 (literal ". ") |
|
90 (process-children))) |
|
91 |
|
92 (define indent-step 60pt) |
|
93 |
|
94 (element ol |
|
95 (make sequence |
|
96 start-indent: (+ (inherited-start-indent) |
|
97 indent-step))) |
|
98 |
|
99 (element li |
|
100 (make paragraph |
|
101 first-line-start-indent: (- indent-step) |
|
102 (make line-field |
|
103 field-width: indent-step |
|
104 field-align: 'start |
|
105 (literal (format-number (child-number) |
|
106 (if (have-ancestor? '("OL" "OL")) |
|
107 "a" |
|
108 "1")))) |
|
109 (process-children))) |
|
110 |
|
111 (element dl |
|
112 (make table |
|
113 table-width: (- (display-size) |
|
114 (inherited-start-indent) |
|
115 (inherited-end-indent)) |
|
116 (make sequence |
|
117 start-indent: 0pt |
|
118 end-indent: 0pt |
|
119 (make table-column |
|
120 column-number: 2 |
|
121 width: (table-unit 1)) |
|
122 (process-children)))) |
|
123 |
|
124 (element dt |
|
125 (make table-cell |
|
126 starts-row?: #t)) |
|
127 |
|
128 (element dd |
|
129 (make table-cell |
|
130 start-indent: 10pt |
|
131 ends-row?: #t)) |
|
132 |
|
133 (element caption |
|
134 (make paragraph)) |
|
135 |
|
136 (element artwork |
|
137 (make external-graphic |
|
138 display?: #t |
|
139 scale: 'to-fit |
|
140 notation-system-id: (notation-generated-system-id |
|
141 (entity-notation |
|
142 (attribute-string "CONTENT"))) |
|
143 system-id: (entity-generated-system-id |
|
144 (attribute-string "CONTENT")))) |
|
145 |
|
146 (element xref |
|
147 (with-mode xref |
|
148 (process-node-list (element-with-id (attribute-string "REFID"))))) |
|
149 |
|
150 </style> |
|
151 </style-specification> |
|
152 <style-specification id=softcopy use=common> |
|
153 <style> |
|
154 |
|
155 (mode xref |
|
156 (element chapter |
|
157 (make link |
|
158 destination: (current-node-address) |
|
159 color: blue-color |
|
160 (process-first-descendant 'title))) |
|
161 (element figure |
|
162 (make multi-mode |
|
163 multi-modes: '(#f popup) |
|
164 principal-mode-simultaneous?: #t |
|
165 (process-first-descendant 'caption) |
|
166 (make vertical-scroll |
|
167 label: 'popup |
|
168 (with-mode #f |
|
169 (process-node-list (current-node))))))) |
|
170 |
|
171 (define rgb |
|
172 (color-space "ISO/IEC 10179:1995//Color Space Family::Device RGB")) |
|
173 |
|
174 (define blue-color (rgb 0 0 1)) |
|
175 |
|
176 (element doc |
|
177 (make vertical-scroll |
|
178 left-margin: 20pt)) |
|
179 |
|
180 (element (doc title) |
|
181 (make paragraph |
|
182 font-size: 28pt |
|
183 line-spacing: 32pt |
|
184 quadding: 'center)) |
|
185 |
|
186 (element note |
|
187 (make multi-mode |
|
188 multi-modes: '(#f expand) |
|
189 (make marginalia |
|
190 marginalia-side: 'start |
|
191 (make character |
|
192 font-name: "UNREGISTERED::SGML Open//Font::Icons" |
|
193 glyph-id: "UNREGISTERED::SGML Open//Glyph::Light bulb icon")) |
|
194 (make vertical-scroll |
|
195 label: 'expand |
|
196 (make paragraph)))) |
|
197 |
|
198 </style> |
|
199 </style-specification> |
|
200 <style-specification id=hardcopy use=common> |
|
201 <features>page multi-column query expression</features> |
|
202 <style> |
|
203 |
|
204 (define chapter-opening-sink 12pi) |
|
205 (define column-measure 20pi) |
|
206 (define column-separation 2pi) |
|
207 (define page-width 210mm) |
|
208 (define page-height 297mm) |
|
209 (define inner-margin 6pi) |
|
210 (define column-depth 54pi) |
|
211 (define top-margin 9pi) ; top of page to top of column |
|
212 (define header-margin 5pi) ; top of page to top of header |
|
213 (define header-line-spacing 12pt) |
|
214 (define footer-line-spacing 12pt) |
|
215 (define folio-margin 5pi) ; from bottom of folio to bottom of page |
|
216 |
|
217 (define page-region-width |
|
218 (+ column-measure column-separation column-measure)) |
|
219 (define footer-height |
|
220 (- page-height top-margin column-depth folio-margin)) |
|
221 (define header-height |
|
222 (- top-margin header-margin)) |
|
223 (define normal-page-region-height |
|
224 (- page-height header-margin folio-margin)) |
|
225 |
|
226 (element (doc title) |
|
227 (sosofo-append |
|
228 (make page-sequence |
|
229 initial-page-models: (list chapter-first-page) |
|
230 (make paragraph |
|
231 font-size: 28pt |
|
232 line-spacing: 32pt |
|
233 quadding: 'center)) |
|
234 (table-of-contents))) |
|
235 |
|
236 (declare-reference-value-type chapter-title) |
|
237 (declare-reference-value-type section-title) |
|
238 |
|
239 (element (chapter title) |
|
240 (sosofo-append |
|
241 (make paragraph |
|
242 use: chapter-title-style |
|
243 span: 2 |
|
244 (literal "Chapter " |
|
245 (format-number (child-number) "1"))) |
|
246 (make paragraph |
|
247 use: chapter-title-style |
|
248 span: 2 |
|
249 chapter-title: (process-children)))) |
|
250 |
|
251 (element (section title) |
|
252 (make paragraph |
|
253 quadding: 'start |
|
254 section-title: (process-children) |
|
255 (format-number-list (hierarchical-number '("CHAPTER" "SECTION")) |
|
256 "1" |
|
257 ".") |
|
258 (literal ". ") |
|
259 (process-children))) |
|
260 |
|
261 (define-page-model chapter-first-page |
|
262 (region |
|
263 (x-origin inner-margin) |
|
264 (y-origin folio-margin) |
|
265 (width page-region-width) |
|
266 (height (- page-height top-margin chapter-opening-sink folio-margin)) |
|
267 (flow #f) |
|
268 (footer |
|
269 (contents-alignment 'end) |
|
270 (height footer-height) |
|
271 (generate (make-page-footer))) |
|
272 (filling-direction 'top-to-bottom))) |
|
273 |
|
274 (define-page-model chapter-recto-page |
|
275 (region |
|
276 (x-origin inner-margin) |
|
277 (y-origin folio-margin) |
|
278 (width page-region-width) |
|
279 (height normal-page-region-height) |
|
280 (header |
|
281 (generate (make paragraph |
|
282 line-spacing: header-line-spacing |
|
283 quadding: 'end |
|
284 font-posture: 'italic |
|
285 (asis-indirect-sosofo |
|
286 (find-reference-value 'section-title)))) |
|
287 (contents-alignment 'start) |
|
288 (height header-height)) |
|
289 (footer |
|
290 (contents-alignment 'end) |
|
291 (height footer-height) |
|
292 (generate (make-page-footer))) |
|
293 (flow #f)) |
|
294 (filling-direction 'top-to-bottom)) |
|
295 |
|
296 (define-page-model chapter-verso-page |
|
297 (region |
|
298 (x-origin (- page-width inner-margin page-region-width)) |
|
299 (y-origin folio-margin) |
|
300 (width page-region-width) |
|
301 (height normal-page-region-height) |
|
302 (header |
|
303 (generate (make paragraph |
|
304 line-spacing: header-line-spacing |
|
305 quadding: 'start |
|
306 font-posture: 'italic |
|
307 (asis-indirect-sosofo |
|
308 (find-reference-value 'chapter-title)))) |
|
309 (contents-alignment start) |
|
310 (height header-height)) |
|
311 (footer |
|
312 (contents-alignment 'end) |
|
313 (height footer-height) |
|
314 (generate (make-page-footer))) |
|
315 (flow #f)) |
|
316 (filling-direction 'top-to-bottom)) |
|
317 |
|
318 (define (find-reference-value type) |
|
319 (first-area-reference-value type |
|
320 default: (last-preceding-area-reference-value |
|
321 type))) |
|
322 |
|
323 (define (make-page-footer) |
|
324 (make paragraph |
|
325 quadding: 'center |
|
326 line-spacing: footer-line-spacing |
|
327 (number-indirect-sosofo (page-number)))) |
|
328 |
|
329 (element chapter |
|
330 (make page-sequence |
|
331 force-first-page: 'front |
|
332 initial-page-models: (list chapter-first-page) |
|
333 repeat-page-models: (list chapter-verso-page |
|
334 chapter-recto-page) |
|
335 blank-back-page-model: chapter-verso-page |
|
336 (make column-set-sequence |
|
337 column-set-model: double-columns))) |
|
338 |
|
339 (define-column-set-model double-columns |
|
340 (column-subset |
|
341 (column |
|
342 (x-origin 0pt) |
|
343 (width column-measure)) |
|
344 (column |
|
345 (x-origin (+ column-measure column-separation)) |
|
346 (width column-measure)) |
|
347 (flow |
|
348 (main body-text) |
|
349 (figure top-float bottom-float) |
|
350 (footnote footnote)))) |
|
351 |
|
352 (element figure |
|
353 (sync (make anchor |
|
354 display?: #t) |
|
355 (make sequence |
|
356 keep: #t |
|
357 label: 'figure |
|
358 span: (if (equal? (attribute-string "SPAN") |
|
359 "SPAN") |
|
360 2 |
|
361 1)) |
|
362 type: 'page |
|
363 max: 1)) |
|
364 |
|
365 (define footnote-font-size 8pt) |
|
366 (define superscript-shift-ems .4) ; ems to shift up superscript for footnote |
|
367 ;; factor by which to multiply font size for superscripts |
|
368 (define superscript-size-factor .6) |
|
369 |
|
370 (element note |
|
371 (let ((footnote-label |
|
372 (literal (format-number (note-number) "1")))) |
|
373 (sync (make sequence |
|
374 font-size: (* (inherited-font-size) |
|
375 superscript-size-factor) |
|
376 placement-offset: (- (* (inherited-font-size) |
|
377 superscript-shift-ems)) |
|
378 footnote-label) |
|
379 (make paragraph |
|
380 label: 'footnote |
|
381 font-size: footnote-font-size |
|
382 footnote-label |
|
383 (literal ". ") |
|
384 (process-children)) |
|
385 type: 'page))) |
|
386 |
|
387 ;; Footnotes are numbered per chapter. |
|
388 |
|
389 (define (note-number) |
|
390 (list-ref (element-number-list '("CHAPTER" "NOTE")) |
|
391 1)) |
|
392 |
|
393 (mode xref |
|
394 (element figure |
|
395 (sosofo-append |
|
396 (literal "Figure " |
|
397 (format-number (element-number) "1")) |
|
398 (literal ", page") |
|
399 (number-indirect-sosofo (page-number)))) |
|
400 (element chapter |
|
401 (sosofo-append |
|
402 (literal "Chapter " |
|
403 (format-number (child-number) "1") |
|
404 ", ") |
|
405 (make sequence |
|
406 font-posture: 'italic |
|
407 (process-first-descendant 'title)) |
|
408 (literal ", page") |
|
409 (number-indirect-sosofo (page-number))))) |
|
410 |
|
411 (define (table-of-contents) |
|
412 (make page-sequence |
|
413 force-first-page: 'front |
|
414 repeat-page-models: (list chapter-first-page) |
|
415 (make sequence |
|
416 (make paragraph |
|
417 use: chapter-title-style |
|
418 (literal "Table of Contents")) |
|
419 (with-mode toc |
|
420 (process-node-list (q-element 'title (tree-root (current-node)))))))) |
|
421 |
|
422 (mode toc |
|
423 (element title |
|
424 (make paragraph |
|
425 (literal (format-number (ancestor-child-number "CHAPTER") "1")) |
|
426 (if (have-ancestor? "SECTION") |
|
427 (literal "." |
|
428 (format-number (ancestor-child-number "SECTION") "1")) |
|
429 (empty-sosofo)) |
|
430 (literal ". ")) |
|
431 (process-children) |
|
432 (make leader (literal ".")) |
|
433 (number-indirect-sosofo (page-number)))) |
|
434 |
|
435 </style> |
|
436 </style-specification> |
|
437 <style-specification id=hardcopy2 use=hardcopy> |
|
438 <style> |
|
439 (element xref |
|
440 (map-constructor (let ((x (current-node))) |
|
441 (lambda() |
|
442 (process-xref x))) |
|
443 (element-with-id (attribute-string "REFID")))) |
|
444 |
|
445 (define (process-xref xref-node) |
|
446 (if (match-element? 'chapter (current-node)) |
|
447 (with-mode xref |
|
448 (process-node-list (current-node))) |
|
449 (sosofo-append |
|
450 (literal "Figure " |
|
451 (format-number (element-number) "1")) |
|
452 (general-indirect-sosofo page-ref-if-different |
|
453 (page-number first-area-of-node: (current-node)) |
|
454 (page-number first-area-of-node: xref-node))))) |
|
455 |
|
456 (define (page-ref-if-different figure-page current-page) |
|
457 (if (equal? figure-page current-page) |
|
458 (empty-sosofo) |
|
459 (literal ", page " |
|
460 (format-number figure-page "1")))) |
|
461 |
|
462 </style> |
|
463 </style-specification> |
|
464 </dsssl-specification> |
|
465 <!-- Keep this comment at the end of the file |
|
466 Local variables: |
|
467 mode: dsssl |
|
468 sgml-indent-step:0 |
|
469 sgml-indent-data:nil |
|
470 End: |
|
471 --> |