blob: 4ea9aef4f6adb1730511fcb166fce0e62768a919 (
plain)
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
|
;; $Id: dbqanda.dsl,v 1.1 2003/03/25 19:53:56 adicarlo Exp $
;;
;; This file is part of the Modular DocBook Stylesheet distribution.
;; See ../README or http://docbook.sourceforge.net/projects/dsssl/
;;
;; ============================== QANDASET ==============================
(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))
(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))))
|