<!doctype style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!-- System Font Name -->
<!entity mincho PUBLIC "JIS TR X 0013-1998//TEXT Font Name - Mincho//EN"
-- 明朝系のシステムフォント名 -->
<!entity gothic PUBLIC "JIS TR X 0013-1998//TEXT Font Name - Gothic//EN"
-- ゴシック系のシステムフォント名 -->
<!-- System Dependant Paramaters for the LOGO & Mark -->
<!entity jis.logo PUBLIC "JIS TR X 0013-1998//TEXT Name - JIS Logo//EN">
<!entity jis.not PUBLIC "JIS TR X 0013-1998//TEXT Notation Name - JIS Logo//EN">
<!entity jis.xsz PUBLIC "JIS TR X 0013-1998//TEXT X Size - JIS Logo//EN">
<!entity jis.ysz PUBLIC "JIS TR X 0013-1998//TEXT Y Size - JIS Logo//EN">
<!entity jtr.logo PUBLIC "JIS TR X 0013-1998//TEXT Name - JTR Logo//EN">
<!entity jtr.not PUBLIC "JIS TR X 0013-1998//TEXT Notation Name - JTR Logo//EN">
<!entity jtr.xsz PUBLIC "JIS TR X 0013-1998//TEXT X Size - JTR Logo//EN">
<!entity jtr.ysz PUBLIC "JIS TR X 0013-1998//TEXT Y Size - JTR Logo//EN">
<!entity jcm.logo PUBLIC "JIS TR X 0013-1998//TEXT Name - JIS Mark Commidity//EN">
<!entity jcm.not PUBLIC "JIS TR X 0013-1998//TEXT Notation Name - JIS Mark Commidity//EN">
<!entity jcm.xsz PUBLIC "JIS TR X 0013-1998//TEXT X Size - JIS Mark Commidity//EN">
<!entity jcm.ysz PUBLIC "JIS TR X 0013-1998//TEXT Y Size - JIS Mark Commidity//EN">
<!entity jpr.logo PUBLIC "JIS TR X 0013-1998//TEXT Name - JIS Mark Process//EN">
<!entity jpr.not PUBLIC "JIS TR X 0013-1998//TEXT Notation Name - JIS Mark Process//EN">
<!entity jpr.xsz PUBLIC "JIS TR X 0013-1998//TEXT X Size - JIS Mark Process//EN">
<!entity jpr.ysz PUBLIC "JIS TR X 0013-1998//TEXT Y Size - JIS Mark Process//EN">
<!-- Specific to this DSSSL Specification -->
<!entity contact SYSTEM "contact.txt">
<!entity revision SYSTEM "revision.txt">
]>
<![ IGNORE [
;
; Debug Flag & Procedures (Only for Jade)
;
(define debug-flag 1)
(define debug
(if (= debug-flag 1)
(external-procedure "UNREGISTERED::James Clark//Procedure::debug")
(lambda (x) x) ))
(define (print-context #!optional (node (current-node)))
(if (= debug-flag 1)
(let loop ((current node) (name (debug "== current element context ==")))
(cond
((node-list-empty? current) node)
(else
(loop (parent current) (debug (gi current))) )))
node ))
]]>
;
; defining Non-Standard UNIT Name
;
(define-unit q 0.25mm)
;
; Standard procedures that are not implemented in Jade 1.1.1
;
(define (caar ll)
(car (car ll)) )
(define (cadr ll)
(car (cdr ll)) )
(define (cdar ll)
(cdr (car ll)) )
(define (cddr ll)
(cdr (cdr ll)) )
(define (assoc obj alist)
(cond
((null? alist) #f)
((not (pair? (car alist))) (error "alist shall be a list of pairs"))
((equal? obj (caar alist)) (car alist))
(else (assoc obj (cdr alist))) ))
(define (ancestors snl)
(node-list-reverse
(let body ((nd snl))
(cond
((node-list-empty? nd) (empty-node-list))
(else
(node-list (parent nd) (body (parent nd))) )))))
(define (first-descendant spec #!optional (nd (current-node)))
(let ((nds (select-elements (descendants nd) spec)))
(if nds
(case (node-list-count nds)
((0) (empty-node-list))
((1) nds)
(else (node-list-first nds)) )
(empty-node-list) )))
(define (node-list-count nlst)
(let loop ((nl nlst))
(cond
((node-list-empty? nl) 0)
(else (+ 1 (loop (node-list-rest nl)))) )))
(define (node-list-last nlst)
(let loop ((nl nlst) (prev (car nlst)))
(cond
((node-list-empty? nl) prev)
(else (loop (node-list-rest nl) (car nl))) )))
(define (string->list str)
(let loop ((len (string-length str))
(pos 0))
(cond
((= pos len) '())
(else
(cons (string-ref str pos)
(loop len (+ pos 1)) )))))
(define (list->string lst)
(let loop ((ll lst))
(cond
((null? ll) "")
(else
(string-append
(string (car ll))
(loop (cdr ll)) )))))
;
; Utilility Procedures
;
(define (ascii-char? c)
(case c
((#\space #\exclamation-mark #\quotation-mark #\number-sign
#\dollar-sign #\percent-sign #\ampersand #\apostrophe
#\left-parenthesis #\right-parenthesis #\asterisk #\plus-sign
#\comma #\hyphen-minus #\full-stop #\solidus
#\digit-zero #\digit-one #\digit-two #\digit-three #\digit-four
#\digit-five #\digit-six #\digit-seven #\digit-eight #\digit-nine
#\colon #\semicolon #\less-than-sign #\equals-sign
#\greater-than-sign #\question-mark #\commercial-at
#\latin-capital-letter-a #\latin-capital-letter-b
#\latin-capital-letter-c #\latin-capital-letter-d
#\latin-capital-letter-e #\latin-capital-letter-f
#\latin-capital-letter-g #\latin-capital-letter-h
#\latin-capital-letter-i #\latin-capital-letter-j
#\latin-capital-letter-k #\latin-capital-letter-l
#\latin-capital-letter-m #\latin-capital-letter-n
#\latin-capital-letter-o #\latin-capital-letter-p
#\latin-capital-letter-q #\latin-capital-letter-r
#\latin-capital-letter-s #\latin-capital-letter-t
#\latin-capital-letter-u #\latin-capital-letter-v
#\latin-capital-letter-w #\latin-capital-letter-x
#\latin-capital-letter-y #\latin-capital-letter-z
#\left-square-bracket #\reverse-solidus #\right-square-bracket
#\circumflex-accent #\low-line #\grave-accent
#\latin-small-letter-a #\latin-small-letter-b
#\latin-small-letter-c #\latin-small-letter-d
#\latin-small-letter-e #\latin-small-letter-f
#\latin-small-letter-g #\latin-small-letter-h
#\latin-small-letter-i #\latin-small-letter-j
#\latin-small-letter-k #\latin-small-letter-l
#\latin-small-letter-m #\latin-small-letter-n
#\latin-small-letter-o #\latin-small-letter-p
#\latin-small-letter-q #\latin-small-letter-r
#\latin-small-letter-s #\latin-small-letter-t
#\latin-small-letter-u #\latin-small-letter-v
#\latin-small-letter-w #\latin-small-letter-x
#\latin-small-letter-y #\latin-small-letter-z
#\left-curly-bracket #\vertical-line
#\right-curly-bracket #\tilde) #t)
(else #f) ))
(define (node-at-location lst #!optional (nd (current-node)))
(let loop ((root (ancestor (car lst) nd))
(ll (cdr lst)))
(cond
((not root) (empty-node-list))
((null? ll) root)
((not (node-list-empty? (select-elements (children root) (car ll))))
(loop (select-elements (children root) (car ll)) (cdr ll)))
(else (empty-node-list)) )))
(define (process-node-at-location lst #!optional (nd (current-node)))
(process-node-list (node-at-location lst nd)) )
(define (attribute-string+default name default #!optional (nd (current-node)))
(cond
((attribute-string name nd))
(else default) ))
(define (string->quantity s)
(let loop ((pos 0) (val 0) (unit ""))
(cond
((>= pos (string-length s))
(case unit
(("CM" "cm") (* val 1cm))
(("MM" "mm") (* val 1mm))
(("IN" "in") (* val 1in))
(("PT" "pt") (* val 1pt))
(("PICA" "pica") (* val 1pica))
(("Q" "q") (* val 0.25mm)) )) ; fool proof
((or (equal? (string-ref s pos) #\0)
(equal? (string-ref s pos) #\1)
(equal? (string-ref s pos) #\2)
(equal? (string-ref s pos) #\3)
(equal? (string-ref s pos) #\4)
(equal? (string-ref s pos) #\5)
(equal? (string-ref s pos) #\6)
(equal? (string-ref s pos) #\7)
(equal? (string-ref s pos) #\8)
(equal? (string-ref s pos) #\9))
(loop (+ pos 1) (+ (* val 10) (string->number (substring s pos (+ pos 1)))) unit))
(else
(loop (+ pos 1) val (string-append unit (substring s pos (+ pos 1))))) )))
(define (character-spacing str spaces)
(let loop ((cl (string->list str)))
(cond
((null? cl) "")
((= 1 (length cl)) (string (car cl)))
(else
(string-append (string (car cl)) spaces (loop (cdr cl)) )))))
(define (expand-to-fit str)
(let ((len (string-length str)))
(cond
((> len 10) str)
((> len 7) (character-spacing str "\space;\space;"))
((> len 5) (character-spacing str " "))
((> len 3) (character-spacing str "\space;\space; "))
((> len 1) (character-spacing str " ")) )))
(define (normalize-number-list lst)
(cond
((null? lst) '())
(else
(case (car lst)
((#\0 #\U-FF10) (cons #\0 (normalize-number-list (cdr lst))))
((#\1 #\U-FF11) (cons #\1 (normalize-number-list (cdr lst))))
((#\2 #\U-FF12) (cons #\2 (normalize-number-list (cdr lst))))
((#\3 #\U-FF13) (cons #\3 (normalize-number-list (cdr lst))))
((#\4 #\U-FF14) (cons #\4 (normalize-number-list (cdr lst))))
((#\5 #\U-FF15) (cons #\5 (normalize-number-list (cdr lst))))
((#\6 #\U-FF16) (cons #\6 (normalize-number-list (cdr lst))))
((#\7 #\U-FF17) (cons #\7 (normalize-number-list (cdr lst))))
((#\8 #\U-FF18) (cons #\8 (normalize-number-list (cdr lst))))
((#\9 #\U-FF19) (cons #\9 (normalize-number-list (cdr lst))))
(else (normalize-number-list (cdr lst))) ))))
(define (normalize-number str def)
(let* ((lst (string->list str))
(rlst (normalize-number-list lst)))
(if (null? rlst)
def
(list->string rlst) )))
;
; JIS-DTD Specific Procedures
;
; JIS Logo/JIS Mark Related procedures
(define logo-info-alist
`(("JIS"
(("UNSPECIFIED"
((name "&jis.logo;")
(notation "&jis.not;")
(x-size ,(string->quantity "&jis.xsz;"))
(y-size ,(string->quantity "&jis.ysz;")) ))
("COMMIDITY"
((name "&jcm.logo;")
(notation "&jcm.not;")
(x-size ,(string->quantity "&jcm.xsz;"))
(y-size ,(string->quantity "&jcm.ysz;")) ))
("PROCESS"
((name "&jpr.logo;")
(notation "&jpr.not;")
(x-size ,(string->quantity "&jpr.xsz;"))
(y-size ,(string->quantity "&jpr.ysz;")) ))))
("JTR"
(("UNSPECIFIED"
((name "&jtr.logo;")
(notation "&jtr.not;")
(x-size ,(string->quantity "&jtr.xsz;"))
(y-size ,(string->quantity "&jtr.ysz;")) ))))))
(define (logo-info status mark)
(cadr (assoc mark (cadr (assoc status logo-info-alist)))) )
(define (logo-info-field symbol info)
(cadr (assoc symbol info)) )
(define (doc-status)
(let ((stand (node-at-location '("standjis" "standard"))))
(if (node-list-empty? stand)
#f
(attribute-string+default "STATUS" "JIS" stand) )))
(define (publication-status)
(case (doc-status)
(("JIS" "jis") "JIS")
(("JTR" "jtr") "TR")
(else "JIS") ))
(define (mark-status)
(attribute-string
"JISmark"
(select-elements (children (ancestor "standjis")) "standard" ) ))
(define (make-logo)
(let ((info (logo-info (doc-status) (mark-status))))
(make paragraph
keep: 'page
line-spacing: (* (logo-info-field 'y-size info) 1.2)
(make external-graphic
scale: 'max-uniform
max-width: (logo-info-field 'x-size info)
max-height: (logo-info-field 'y-size info)
display-alignment: 'start
break-after-priority: 100
notation-system-id: (logo-info-field 'notation info)
entity-system-id: (logo-info-field 'name info) ))))
; UDC Related Procedures
(define (query-udc)
(node-at-location
'("standjis" "frontm" "titlep" "pubinfo" "udc") ))
(define (udc-data)
(let ((udc (query-udc)))
(if (node-list-empty? udc)
""
(data udc) )))
(define (udc-header-string)
(string-append "UDC\space;" (udc-data)) )
(define (new-style?)
(not (node-list-empty? (query-udc))) )
(define (format-type level)
(if (new-style?)
(case level
((1) "a")
((2) "1")
((3) "i")
((4) "A")
((5) "1")
((6) "I") )
(case level
((1) "1")
((2) "a")
((3) "i")
((4) "1")
((5) "A")
((6) "I") )))
;
; default specifications
;
(define default-paragraph-style
(style
;
; initial values for paragraph
;
; lines: wrap ; default
; asis-truncate-char: #f ; default
; asis-wrap-char: #f ; default
; asis-wrap-indent: #f ; default
; first-line-align: #f ; default
; alignment-point-offset: 50 ; default
ignore-record-end?: #t
expand-tabs?: 8
; line-spacing: default-line-spacing
; line-spacing-priority: 0 ; default
; min-pre-line-spacing: #f ; default
; min-post-line-spacing: #f ; default
; min-leading: #f ; default
first-line-start-indent: text-size
; last-line-end-indent: 0pt ; default
; hyphenation-char: #\- ; default
; hyphenation-ladder-count: 2 ; default
; hyphenation-remain-char-count: 2 ; default
; hyphenation-push-char-count: 2 ; default
; hyphenation-keep: page ; default
; hyphenation-exceptions: '() ; default
; line-breaking-method: #f ; default
; line-composition-method: #f ; default
; implicit-bidi-method: #f ; default
; glyph-alignment-mode: font ; default
font-family-name: text-font-family-name
; font-weight: medium ; default
; font-posture: upright ; default
; font-structure: solid ; default
; font-proportionate-width: medium ; default
; font-name: #f ; default
font-size: text-size
; numbered-lines: #f ; default
; line-number: #f ; default
line-number-side: 'start
line-number-sep: text-size
quadding: 'start
; last-line-quadding: relative ; default
; last-line-justify-limit: 0pt ; default
; justify-glyph-space-max-add: 0pt ; default
; justify-glyph-space-max-remove: 0pt ; default
hanging-punct?: #t
; widow-count: 2 ; default
; orphan-count: 2 ; default
language: 'JA
country: 'JP
; position-prefereence: #f ; default
; writing-mode: 'left-to-right ; default
; start-indent: 0pt ; default
; end-indent: 0pt ; default
; span: 1 ; default
; spapn-weak?: #f ; default
; keep-with-previous?: #f ; default
; keep-with-next?: #f ; default
; break-before: #f ; default
; break-after: #f ; default
; keep: #f ; default
; may-violate-keep-before?: #f ; default
; may-violate-keep-after: #f ; default
))
(define default-character-style
;
; initial values for character
;
(style
; char: ; special defaulting mechanism
; char-map: #f ; default
; glyph-id: #f ; default
; glyph-subst-table: #f ; default
; glyph-subst-method: #f ; default
; glyph-reorder-method: #f ; default
; writing-mode: 'left-to-right ; default
font-family-name: text-font-family-name ; default
; font-weight: medium ; default
; font-posture: upright ; default
; math-font-posture: upright ; default
; font-sturucture: solid ; default
; font-proportionate-width: medium ; default
; font-name: #f ; default
font-size: text-size
; stretch-factor: 1 ; default
; hyphenate?: #f ; default
; hyphenation-method: #f ; default
; kern?: #f ; default
; kern-mode: normal ; default
; ligature?: #f ; default
; allowed-ligatures: '() ; default
; space: ; special defaulting mechanism
; input-tab?: ; special defaulting mechanism
; input-whitespace-treatment: preserve ; default
; input-whitespace?: ; special defaulting mechanism
; punct?: ; special defaulting mechanism
; break-before-priority: ; special defaulting mechanism
; break-after-priority: ; special defaulting mechanism
; drop-after-line-break?: ; special defaulting mechanism
; drop-unless-before-line-break?: ; special defaulting mechanism
; math-class: ; special defaulting mechanism
; script: ; special defaulting mechanism
; position-point-shift: 0pt ; default
language: 'JA
country: 'JP
; color: ; special defaulting mechanism
; inhibit-line-breaks?: #f ; default
))
(define default-style
(merge-style default-paragraph-style default-character-style))
;
; default creation
;
(default (empty-sosofo))
;
; default paragraph creating procedure
;
(define (make-default-paragraph)
(make paragraph
space-before: text-size
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children) ))
;
; Style Paramaters
;
;
; font-names & font-sizes
;
(define jtitle-font gothic-font)
(define jtitle-size 24q)
(define jtitle-spacing (* 1.5 jtitle-size))
(define jptitle-font gothic-font)
(define jptitle-size 24q)
(define jptitle-spacing (* 1.5 jptitle-size))
(define body-title-font gothic-font)
(define body-title-size 20q)
(define body-title-spacing (* 1.5 body-title-size))
(define body-isnum-font gothic-font)
(define body-isnum-size 17q)
(define body-isnum-quadding 'end)
(define body-isnum-spacing (* 1.5 body-title-size))
(define text-font mincho-font)
(define text-size 13q)
(define text-spacing (* 2 text-size))
(define default-size 13q)
(define default-line-spacing (* text-size 2))
(define header-size 13q)
(define verso-title-p-note-size 10q)
(define smaller-size 9q)
(define mincho-font "&mincho;")
(define gothic-font "&gothic;")
(define title-font-family-name gothic-font)
(define text-font-family-name mincho-font)
(define section-space (display-space 10mm min: 10mm max: 20mm priority: 100))
;
; Spacing for lines
;
(define paragraph-line-spacing default-line-spacing)
;
; Spacing for Titles
;
; この手続きは、見出しの行数、見出しのサイズ、前後の空きの比を引数にとり、
; 前後の空きの量を計算する。
;
(define (title-spacing lines title-size ratio pri)
(display-space
(* (- (* lines paragraph-line-spacing) title-size) ratio)
priority: pri ))
(define h0t-space-before
(title-spacing 2.5 text-size (/ 3 4) 100) )
(define h0t-space-after
(title-spacing 2.5 text-size (/ 1 4) 100) )
(define h1t-space-before
(title-spacing 1.5 text-size (/ 2) 100) )
(define h1t-space-after
(title-spacing 1.5 text-size (/ 2) 100) )
(define h2t-space-before
(title-spacing 1.5 text-size (/ 2) 90) )
(define h2t-space-after
(title-spacing 1.5 text-size (/ 2) 90) )
(define h3t-space-before
(title-spacing 1.5 text-size (/ 2) 80) )
(define h3t-space-after
(title-spacing 1.5 text-size (/ 2) 80) )
(define h4t-space-before
(title-spacing 1.5 text-size (/ 2) 70) )
(define h4t-space-after
(title-spacing 1.5 text-size (/ 2) 70) )
(define h5t-space-before
(title-spacing 1.5 text-size (/ 2) 60) )
(define h5t-space-after
(title-spacing 1.5 text-size (/ 2) 60) )
(define h6t-space-before
(title-spacing 1.5 text-size (/ 2) 50) )
(define h6t-space-after
(title-spacing 1.5 text-size (/ 2) 50) )
(define a4p-page-style
(style
page-width: 210mm ; A4
page-height: 297mm ; A4
left-margin: 20mm
right-margin: 20mm
top-margin: 27mm
bottom-margin: 32mm
header-margin: 24mm
footer-margin: 32mm
writing-mode: 'left-to-right)
)
(define h1t-style
(style
font-family-name: gothic-font
font-name: gothic-font
font-size: text-size
line-spacing: default-line-spacing
first-line-start-indent: 0pt
use: default-paragraph-style ))
(define h2t-style
(style
font-family-name: gothic-font
font-name: gothic-font
font-size: text-size
line-spacing: default-line-spacing
first-line-start-indent: 0pt
use: default-paragraph-style ))
(define h3t-style
(style
font-family-name: gothic-font
font-name: gothic-font
font-size: text-size
line-spacing: default-line-spacing
first-line-start-indent: 0pt
use: default-paragraph-style ))
(define h4t-style
(style
font-family-name: gothic-font
font-name: gothic-font
line-spacing: default-line-spacing
first-line-start-indent: 0pt
use: default-paragraph-style ))
(define h5t-style
(style
font-family-name: gothic-font
font-name: gothic-font
line-spacing: default-line-spacing
first-line-start-indent: 0pt
use: default-paragraph-style ))
(define h6t-style
(style
font-family-name: gothic-font
font-name: gothic-font
line-spacing: default-line-spacing
first-line-start-indent: 0pt
use: default-paragraph-style ))
;
; SGML document root
;
(root
(make display-group
use: default-style
(process-children) ))
;
; <![ IGNORE [
; <!ENTITY % doctype "standjis" -- 文書型名 -->
;
; <!ELEMENT %doctype; O O (bibinfo*,%fm.d;,genwarn?,body,
; %annxs;,index*,backm?)
; -(%main.ex;) +(%ix;|%i.float;|revmark) >
; ]]>
(element standjis
(make display-group
(process-children)
(with-mode back-title
(process-node-list (select-elements (children (current-node)) "frontm")) )))
;
; <![ IGNORE [
; <!ELEMENT bibinfo - O (titles,edition,version?,language,refnums,
; sourceod?,notes?,endorsmt?,developc,replaces*,
; replaced*,abstract?,classifn*,keyword*,relstd*,
; prodinfo?,otherprm*,othertxt*) -(%i.float)
; -- bibliographic information -->
; ]]>
;
; ISO版の書誌情報なので無視する。
;
; (element (standjis bibinfo) (empty-sosofo))
;
; <![ IGNORE [
; <!ENTITY % fm.d "standard*, frontm*" -- 前書き類 -->
;
; <!ELEMENT standard - O EMPTY -- 書誌属性記述要素 -->
; <!ATTLIST standard
; status (JIS|DJIS|JTR|DJTR|AMS|DAMS|AMT|DAMT) #REQUIRED
; -- 規格種別及び作成段階
; JIS 日本工業規格 (Japanese Industrial Standard)
; DJIS JIS規格原案 (Draft JIS)
; JTR JIS標準情報 (JIS Technical Report)
; DJTR JIS標準情報原案 (Draft JIS Technical Report)
; AMS 規格追補 (Amendment (Standard))
; DAMS 規格追補原案 (Draft Amendment (Standard))
; AMT 技術報告追補 (Amendment (Technical Report))
; DAMT 技術報告追補原案 (Draft Amendment (Technical Report))
; --
; TRtype (1|2|3) #IMPLIED -- 標準情報のタイプ --
; notes CDATA #IMPLIED -- 追認、その他 --
; trnstype (JSPEC|TABST|TFULL) #REQUIRED
; -- 翻訳タイプ
; JSPEC JIS独自規格 (JIS specific)
; TABST 要訳規格 (abstract only translation)
; TFULL 全訳規格 (full text translation)
; --
; JISmark (commidity|process|unspecified) unspecified
; -- JISマーク種別
; commidity 指定商品に関する規格
; process 指定加工技術に関する規格
; unspecified その他の規格
; --
; >
; ]]>
;
;(element standard (empty-sosofo))
;
; <![ IGNORE [
; <!ELEMENT frontm -- 前書き --
; - O (titlep, toc?,
; jforeword?, foreword?, intro?)>
; ]]>
;
(element frontm
(make display-group
(process-matching-children 'titlep)
(process-matching-children 'toc)
(process-matching-children 'intro) ))
;
; <![ IGNORE [
; <!ELEMENT titlep -- 題目ページ --
; - O (refnum,
; jtitle, jptitle?, etitle, eptitle?,
; pubinfo)>
; ]]>
;
(element titlep
(make simple-page-sequence
right-header: (literal (udc-header-string))
use: a4p-page-style
(make-logo)
(process-matching-children 'jtitle)
(process-matching-children 'jptitle)
(process-matching-children 'refnum)
(process-matching-children 'pubinfo) ))
;
; <![ IGNORE [
; <!ELEMENT jtitle - O (tline+) -- 主題 (日本語) -->
; <!ELEMENT jptitle - O (tline+) -- 部題 (日本語) -->
; <!ELEMENT etitle - O (tline+) -- 主題 (英語) -->
; <!ELEMENT eptitle - O (tline+) -- 部題 (英語) -->
; ]]>
;
(define jtitle-style
(style
font-family-name: gothic-font
font-name: gothic-font
font-size: jtitle-size
line-spacing: jtitle-spacing
quadding: 'center
use: default-paragraph-style ))
(element jtitle
(make paragraph
space-before: (display-space 30mm max: 30mm min: 20mm priority: 100)
keep: 'page
keep-with-previous?: #t
use: jtitle-style
(process-children) ))
(define jptitle-style
(style
font-family-name: gothic-font
font-name: gothic-font
font-size: jptitle-size
line-spacing: jptitle-spacing
quadding: 'center
use: default-paragraph-style ))
(element jptitle
(make paragraph
keep: 'page
keep-with-previous?: #t
use: jptitle-style
(process-children)))
(define tline-style
(style
widow-count: 0
orphan-count: 0 ))
(element tline
(make paragraph
keep-with-previous?: #t
space-before: 0pt
space-after: 0pt
keep: 'page
keep-with-previous?: #t
(literal (expand-to-fit (data (current-node))) )))
; (element etitle (empty-sosofo))
; (element eptitle (empty-sosofo))
(define header-refnum-style
(style
font-size: header-size
quadding: 'end
use: default-paragraph-style ))
(mode header
(element refnum
(make paragraph
use: header-refnum-style
(process-children) ))
(element jisnum
(make sequence
(process-matching-children "divsym")
(literal "\space;")
(process-matching-children "divnum")
(literal "\colon;")
(process-matching-children "pubyear") ))
(element divsym (process-children))
(element divnum (process-children))
(element pubyear (process-children))
(element isnum
(make sequence
(literal "\space;\left-parenthesis")
(process-children-trim)
(literal "\right-parenthesis") ))
)
(define pubinfo-style
(style
font-name: gothic-font
font-size: 9pt
quadding: 'center
use: default-paragraph-style ))
(define (make-document-date)
(cond
((not (node-list-empty? (first-descendant "ablsdate")))
(process-matching-children 'ablsdate) )
((not (node-list-empty? (first-descendant "confdate")))
(process-matching-children 'confdate) )
(else (empty-sosofo)) ))
(define (jisnum-space-amount) default-line-spacing)
(define (isnum-space-amount)
(if (node-list-empty?
(node-at-location
'("standjis" "frontm" "titlep" "refnum" "isnum")))
0mm
isnum-spacing))
(define (jtitle-space-amount)
(* jtitle-spacing
(node-list-count
(children
(node-at-location
'("standjis" "frontm" "titlep" "jtitle") )))))
(define (jptitle-space-amount)
(* jptitle-spacing
(node-list-count
(children
(node-at-location
'("standjis" "frontm" "titlep" "jptitle") )))))
(define (document-title-spacing)
(- 80mm
(jisnum-space-amount)
(isnum-space-amount)
(jtitle-space-amount)
(jptitle-space-amount) ))
(define (make-document-date-2)
(cond
((not (node-list-empty? (first-descendant "revdate")))
(process-matching-children 'revdate) )
(else
(process-matching-children 'estdate) )))
(define title-fixed-style
(style
font-family-name: mincho-font
font-size: 17q
quadding: 'center ))
(define (make-document-date-paragaraph)
(make paragraph
keep: 'page
(make-document-date) ))
(define (make-discuss-body-paragraph)
(make paragraph
keep-with-previous?: #t
space-before: (display-space 10mm priority: 90)
use: title-fixed-style
(literal "日本工業標準調査会 審議")) )
(define (make-publication-body-paragraph)
(make paragraph
space-before: (display-space 10mm priority: 90)
keep-with-previous?: #t
(literal "\left-parenthesis;")
(literal "日本規格協会\space;発行\right-parenthesis;") ))
(define (make-title-page-lower-fixed)
(make display-group
space-before: (display-space 10mm priority: 90)
space-after: (display-space 10mm priority: 90)
keep-with-previous?: #t
use: title-fixed-style
(make-discuss-body-paragraph)
(make-publication-body-paragraph) ))
(define (make-title-page-lower-texts)
(make paragraph
keep: 'page
keep-with-previous?: #t
space-before:
(display-space (document-title-spacing) min: 20mm priority: 100)
(make-document-date-2)
(make-title-page-lower-fixed) ))
(define (make-verso-title-page)
(make simple-page-sequence
use: a4p-page-style
(with-mode verso-title-page
(process-node-list
(node-at-location '("standjis" "frontm" "titlep" "pubinfo")) ))))
(element pubinfo
(make display-group
use: pubinfo-style
(make-document-date-paragaraph)
(make-title-page-lower-texts)
(make-verso-title-page) ))
(element estdate
(make paragraph
keep-with-previous?: #t
(with-mode gengou1 (process-children))
(literal " 制定") ))
(element revdate
(make paragraph
keep-with-previous?: #t
(literal "\left-parenthesis;")
(with-mode gengou1 (process-children))
(literal " 改正")
(literal "\right-parenthesis;") ))
(element confdate
(make paragraph
keep-with-previous?: #t
(literal "\left-parenthesis;")
(with-mode gengou1 (process-children))
(literal " 確認")
(literal "\right-parenthesis;") ))
(element ablsdate
(make paragraph
keep-with-previous?: #t
(process-children)
(literal "\left-parenthesis;")
(literal " 廃止")
(literal "\right-parenthesis;") ))
;(element divch (empty-sosofo))
(element udc (process-children))
;
; <![ IGNORE [
; <!ELEMENT pubinfo -- 出版情報 --
; - O (minister,
; estdate, (revdate | confdate)*,
; ablsdate?, fanndate,
; drftbody, authcomm, divch, price,
; (udc|ics), kwset?)>
; <!ELEMENT minister - O (#PCDATA) -- 主務大臣 (minister in charge) -->
; <!ELEMENT estdate - O (date) -- 制定日付 (date of establishment) -->
; <!ELEMENT revdate - O (date) -- 改正日付 (date of revision) -->
; <!ELEMENT confdate - O (date) -- 確認日付 (date of confermation) -->
; <!ELEMENT ablsdate - O (date) -- 廃止日付 (date of abolishment) -->
; <!ELEMENT fanndate - O (date) -- 官報公示日付
; (date of formal announcement) -->
; <!ELEMENT drftbody - O (#PCDATA) -- 原案作成協力者 (drafting body) -->
; <!ELEMENT authcomm - O (#PCDATA) -- 審議部会 (authorization committee) --
; >
; <!ELEMENT divch - O (#PCDATA) -- 担当部署 (division in charge) -->
; <!ELEMENT price - O (#PCDATA) -- 価格(円) -->
; <!ELEMENT udc - O (#PCDATA) -- UDC番号 -->
; <!ELEMENT ics - O (#PCDATA) -- ICS番号 -->
; <!ELEMENT kwset - O (kw+) -- キーワード集合 -->
; <!ELEMENT kw O O (#PCDATA) -- キーワード -->
; ]]>
;
(define verso-title-p-note-style
(style
font-family-name: mincho-font
font-size: verso-title-p-note-size
line-spacing: (* 2 verso-title-p-note-size)
use: default-paragraph-style ))
(define (make-contact-paragraph)
(make paragraph
first-line-start-indent: verso-title-p-note-size
start-indent: verso-title-p-note-size
keep: 'page
keep-with-previous?: #t
use: verso-title-p-note-style
(literal "&contact;") ))
(define (make-revision-paragraph)
(make paragraph
first-line-start-indent: verso-title-p-note-size
start-indent: verso-title-p-note-size
keep: 'page
keep-with-previous?: #t
use: verso-title-p-note-style
(literal "&revision;") ))
(define (make-standard-notice)
(make display-group
use: verso-title-p-note-style
(make-contact-paragraph)
(make-revision-paragraph) ))
(mode gengou2
(default (empty-sosofo))
(element date
(literal
(date-to-gengou2
(string->number
(normalize-number (data (first-descendant "YEAR")) "1"))
(string->number
(normalize-number (data (first-descendant "MONTH")) "1"))
(string->number
(normalize-number (data (first-descendant "DAY")) "1")) )))
)
(define (make-pubinfo-rule)
(make display-group
(make paragraph
space-before: (display-space 170mm min: 100mm priority: 100)
space-after: (display-space 10mm min: 10mm priority: 100)
use: verso-title-p-note-style
(literal " "))
(make rule
orientation: 'horizontal
length: 90mm
line-thickness: 1pt
break-before-priority: 100
break-after-priority: 100
space-after: (display-space 10mm priority: 100)
display-alignment: 'center )))
(mode verso-title-page
(default (empty-sosofo))
(element pubinfo
(make sequence
(make-pubinfo-rule)
(process-matching-children 'minister)
(process-matching-children 'fanndate)
(process-matching-children 'drftbody)
(process-matching-children 'authcomm)
(make-standard-notice) ))
(element minister
(make paragraph
keep-with-previous?: #t
use: verso-title-p-note-style
(literal "主務大臣\colon;\space;")
(process-children)
(process-node-at-location
'("standjis" "frontm" "titlep" "pubinfo" "estdate") )
(process-node-at-location
'("standjis" "frontm" "titlep" "pubinfo" "revdate") )
(process-node-at-location
'("standjis" "frontm" "titlep" "pubinfo" "confdate") )
(process-node-at-location
'("standjis" "frontm" "titlep" "pubinfo" "ablsdate") ) ))
(element estdate
(make sequence
use: verso-title-p-note-style
(literal " 制定\colon;\space;")
(with-mode gengou2 (process-children) )))
(element revdate
(make sequence
use: verso-title-p-note-style
(literal " 改定\colon;\space;")
(with-mode gengou2 (process-children) )))
(element confdate
(make sequence
use: verso-title-p-note-style
(literal " 確認\colon;\space;")
(with-mode gengou2 (process-children) )))
(element ablsdate
(make sequence
use: verso-title-p-note-style
(literal " 廃止\colon;\space;")
(with-mode gengou2 (process-children) )))
(element fanndate
(make paragraph
keep-with-previous?: #t
use: verso-title-p-note-style
(literal "官報公示\colon;\space;")
(with-mode gengou2 (process-children) )))
(element drftbody
(make paragraph
keep-with-previous?: #t
use: verso-title-p-note-style
(literal "原案作成協力者\colon;\space;")
(process-children) ))
(element authcomm
(make paragraph
keep-with-previous?: #t
use: verso-title-p-note-style
(literal "審議部会\colon;\space;")
(process-children) ))
)
;
; <![ IGNORE [
; <!ELEMENT genwarn - - (p,(%s.zz;)*) -- General Warning -->
; ]]>
;
(element genwarn (empty-sosofo))
;
; <![ IGNORE [
; <!ELEMENT body - O ((gensec,section*)|(scopesec,section*)|
; (scope, conf?, refs?, defs?, (symabb|syms)?,
; h1*)) >
; ]]>
;
(define (title-lines #!optional (nd (current-node)))
(let loop ((ndl (children nd)))
(cond
((node-list-empty? ndl) (literal ""))
(else
(make sequence
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
font-size: 14pt
quadding: 'center
line-spacing: (* text-size 2)
use: default-paragraph-style
(literal (expand-to-fit (data (node-list-first ndl)))) )
(loop (node-list-rest ndl)) )))))
(define body-title-style
(style
font-family-name: gothic-font
font-name: gothic-font
font-size: body-title-size
quadding: 'end
line-spacing: body-title-spacing
use: default-paragraph-style ))
(define (make-body-jis-paragraph)
(make paragraph
space-before: (display-space text-size priority: 10)
end-indent: (* text-size 10)
use: body-title-style
(literal " 日 本 工 業 規 格 ")
(literal (publication-status)) ))
(define (make-body-jisnum)
(make paragraph
start-indent: (* text-size 4)
end-indent: (* text-size 6)
(process-matching-children "jisnum") ))
(define body-isnum-style
(style
font-family-name: body-isnum-font
font-size: body-isnum-size
quadding: body-isnum-quadding
line-spacing: body-isnum-spacing
use: default-paragraph-style) )
(define (make-body-isnum)
(make paragraph
start-indent: (* text-size 4)
end-indent: (* text-size 4)
use: body-isnum-style
(process-matching-children "isnum") ))
(define (make-body-jisnum-paragraph)
(make paragraph
use: body-title-style
(make sequence
(process-matching-children "divsym")
(literal "\space;")
(process-matching-children "divnum") )
(make sequence
font-size: 13q
(literal "\colon;")
(process-matching-children "pubyear") )))
(define (make-body-isnum-paragraph)
(make paragraph
use: body-title-style
(literal "\left-parenthesis")
(process-children-trim)
(literal "\right-parenthesis") ))
(mode bodytitle
(element refnum
(make display-group
(make-body-jis-paragraph)
(make-body-jisnum)
(make-body-isnum) ))
(element jisnum (make-body-jisnum-paragraph))
(element divsym (process-children-trim))
(element divnum (process-children-trim))
(element pubyear (process-children-trim))
(element isnum (make-body-isnum-paragraph))
(element jtitle
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
font-size: 24q
quadding: 'center
start-indent: (* text-size 4)
end-indent: (* text-size 4)
line-spacing: (* text-size 2)
space-before: (display-space (* text-size 2) priority: 10)
use: default-paragraph-style
(title-lines (current-node)) ))
(element etitle
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
font-size: 24q
quadding: 'center
start-indent: (* text-size 4)
end-indent: (* text-size 4)
line-spacing: (* text-size 2)
space-before: (display-space (* text-size 2) priority: 10)
space-after:
(if (node-list-empty?
(node-at-location '("standjis" "frontm" "titlep" "eptitle")))
(display-space (* text-size 4) priority: 10)
0pt)
use: default-paragraph-style
(title-lines (current-node)) ))
(element jptitle
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
font-size: 24q
quadding: 'center
start-indent: (* text-size 4)
end-indent: (* text-size 4)
line-spacing: (* text-size 2)
use: default-paragraph-style
(title-lines (current-node)) ))
(element eptitle
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
font-size: 24q
quadding: 'center
start-indent: (* text-size 4)
end-indent: (* text-size 4)
line-spacing: (* text-size 2)
space-after: (display-space (* text-size 4) priority: 10)
use: default-paragraph-style
(title-lines (current-node)) ))
)
(element body
(make simple-page-sequence
right-header:
(with-mode
header
(process-node-list
(node-at-location
'("standjis" "frontm" "titlep" "refnum") )))
center-footer:
(make sequence
font-name: gothic-font
font-size: header-size
quadding: 'center
(literal "\hyphen-minus;\space;")
(page-number-sosofo)
; (literal
; (number->string
; (- (page-number)
; (- (page-number
; first-area-of-node:
; (node-at-location '("standjis" "body")))
; 1) )))
(literal "\space;\hyphen-minus;") )
use: a4p-page-style
(with-mode bodytitle
(process-node-list
(node-list
(node-at-location '("standjis" "frontm" "titlep" "refnum"))
(node-at-location '("standjis" "frontm" "titlep" "jtitle"))
(node-at-location '("standjis" "frontm" "titlep" "jptitle"))
(node-at-location '("standjis" "frontm" "titlep" "etitle"))
(node-at-location '("standjis" "frontm" "titlep" "eptitle")) )))
(process-node-list
(node-at-location '("standjis" "frontm" "jforeword")) )
(process-children) ))
(element jforeword
(make paragraph
first-line-start-indent: 0pt
line-spacing: (* text-size 2)
space-before: h1t-space-before
space-after: h1t-space-after
keep-with-next?: #t
use: default-paragraph-style
(make sequence
line-spacing: (* text-size 2)
font-family-name: gothic-font
font-name: gothic-font
font-size: text-size
line-spacing: (* text-size 1.2)
use: default-paragraph-style
(literal "序文 ") )
(process-children) ))
(element (jforeword p)
(if (absolute-first-sibling?)
(process-children)
(make-default-paragraph) ))
(element intro
(make display-group
(make paragraph
line-spacing: (* text-size 2)
font-family-name: gothic-font
font-name: gothic-font
font-size: text-size
space-before: h1t-space-before
space-after: h1t-space-after
line-spacing: (* text-size 1.2)
keep-with-next?: #t
use: default-paragraph-style
(literal "導入") )
(make paragraph
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children) )))
;
; Section Level Elements
;
(define (internals nd)
(cond
((string=? "gensec" (gi nd))
(node-list-length (children nd)) )
(else 1) ))
(define (map+ ll)
(let loop ((lst ll))
(cond
((null? lst) 0)
(else (+ (car lst) (loop (cdr lst)))) )))
(define (section-number #!optional (nl (current-node)))
(case (gi nl)
(("GENSEC" "SCOPESEC" "SCOPE" "CONF" "REFS" "DEFS" "SYMABB" "SYMS")
(string-append
(number->string
(map+
(element-number-list
'("GENSEC" "SCOPESEC" "SCOPE" "CONF" "REFS" "DEFS" "SYMABB" "SYMS"))))
"\full-stop;") )
(("JFOREWORD") "")
(("ANNEXN") "")
(("ANNEXI") "")
(("TUTORIAL") "")
(("H1")
(if (or (not (node-list-empty? (ancestor "ANNEXI" nl)))
(not (node-list-empty? (ancestor "ANNEXN" nl)))
(not (node-list-empty? (ancestor "TUTORIAL" nl))) )
(string-append
(number->string (child-number nl)) "\full-stop;")
(string-append
(number->string
(map+
(element-number-list
'("GENSEC" "SCOPESEC" "SCOPE" "CONF" "REFS" "DEFS" "H1"))))
"\full-stop;" )))
(("H2")
(string-append (section-number (ancestor "H1" nl))
(number->string (child-number nl))))
(("H3")
(string-append
(section-number (ancestor "H2" nl))
"\full-stop;"
(number->string (child-number nl))))
(("H4")
(string-append
(section-number (ancestor "H3" nl))
"\full-stop;"
(number->string (child-number nl))))
(("H5")
(string-append
(section-number (ancestor "H4" nl))
"\full-stop;"
(number->string (child-number nl))))
(("H6")
(string-append
(section-number (ancestor "H5" nl))
"\full-stop;"
(number->string (child-number nl))))
(("H1T") (section-number (parent)))
(("H2T") (section-number (parent)))
(("H3T") (section-number (parent)))
(("H4T") (section-number (parent)))
(("H5T") (section-number (parent)))
(("H6T") (section-number (parent))) ))
;
; <![ IGNORE [
; <!ELEMENT gensec - O (scope, conf?, refs?, defs?,
; (symabb|syms)?,h1*) >
; ]]>
;
(element gensec (process-children))
;
; <![ IGNORE [
; <!ELEMENT scopesec - O ((%s.zz;)*) -- section with only scope -->
; ]]>
;
(element scopesec
(make display-group
(make paragraph
space-before: h1t-space-before
space-after: h1t-space-after
keep-with-next?: #t
use: h1t-style
(literal (section-number))
(literal
(cond
((attribute-string "stitle"))
(else "\space;適用範囲") ))
(process-children) )))
;
; <![ IGNORE [
; <!ELEMENT (annexn|annexi) - O (h0t, (%s.zz;)*, (h1*|p1*)) >
; ]]>
;
(define (annex-heading #!optional (nd (current-node)))
(string-append
"付属書"
(format-number
(+ 1 (node-list-count (select-elements (preced (current-node)) "ANNEXN"))
(node-list-count (select-elements (preced (current-node)) "ANNEXI")) )
"A")))
(element annexn
(make paragraph
break-before: 'page
font-family-name: gothic-font
font-name: gothic-font
font-size: 20q
line-spacing: (* 20q 1.2)
first-line-start-indent: 0pt
quadding: 'center
space-before: (display-space text-size priority: 10)
use: default-paragraph-style
(literal (annex-heading))
(literal ":(規定) ")
(process-children) ))
(element annexi
(make paragraph
break-before: 'page
font-family-name: gothic-font
font-name: gothic-font
font-size: 20q
line-spacing: (* 20q 1.2)
first-line-start-indent: 0pt
quadding: 'center
space-before: (display-space text-size priority: 10)
use: default-paragraph-style
(literal (annex-heading))
(literal ":(参考) ")
(process-children) ))
(element (annexn h0t) (process-children))
(element (annexi h0t) (process-children))
;
; <![ IGNORE [
; <!ENTITY % bd.d "scope|conf|symabb|syms" -- Body elements-->
;
; <!ELEMENT (%bd.d;) - O ((%s.zz;)*, (h2*|p2*))
; -- Clauses with fix title -->
; ]]>
;
(element scope
(make display-group
(make paragraph
keep-with-next?: #t
use: h1t-style
(literal (section-number))
(literal
(cond
((attribute-string "stitle"))
(else "\space;適用範囲") ))
(process-children) )))
(element (scope p)
(if (first-sibling?)
(make sequence
font-family-name: mincho-font
(literal " ")
(process-children) )
(make paragraph
use: default-paragraph-style
(process-children) )))
(element conf
(make display-group
(make paragraph
keep-with-next?: #t
use: h1t-style
(literal (section-number))
(literal
(cond
((attribute-string "stitle"))
(else "\space;適合性") ))
(process-children) )))
(element (conf p)
(if (first-sibling?)
(make sequence
font-family-name: mincho-font
use: default-paragraph-style
(process-children))
(make paragraph
use: default-paragraph-style
(process-children)) ))
(element symabb
(make display-group
(make paragraph
keep-with-next?: #t
use: h1t-style
(literal (section-number))
(literal
(cond
((attribute-string "stitle"))
(else "略語") ))
(process-children) )))
(element (symabb p)
(if (first-sibling?)
(make sequence
font-family-name: mincho-font
use: default-paragraph-style
(literal " ")
(process-children))
(make paragraph
use: default-paragraph-style
(process-children)) ))
(element syms
(make display-group
(make paragraph
keep-with-next?: #t
use: h1t-style
(literal (section-number))
(literal
(cond
((attribute-string "stitle"))
(else "記号") ))
(process-children) )))
(element (syms p)
(if (first-sibling?)
(make sequence
font-family-name: mincho-font
use: default-paragraph-style
(literal " ")
(process-children))
(make paragraph
use: default-paragraph-style
(process-children)) ))
;
; <![ IGNORE [
; <!ELEMENT refs - O (reflist) -- normative references -->
; <!ELEMENT reflist O O ((refref,reftit?)+) -- list of references -->
; <!ELEMENT refref - O (#PCDATA|note)* -(%i.float) -- reference -->
; <!ELEMENT reftit - O (%m.ph;) -(refref) -- title of reference -->
; ]]>
;
(element refs
(make display-group
(make paragraph
keep-with-next?: #t
use: h1t-style
(literal (section-number))
(literal
(cond
((attribute-string "stitle"))
(else "\space;引用規格") ))
(process-children) )))
(element (refs p)
(if (first-sibling?)
(make sequence
font-family-name: mincho-font
use: default-paragraph-style
(literal " ")
(process-children))
(make paragraph
use: default-paragraph-style
(process-children)) ))
(element reflist (process-children))
(element refref
(make paragraph
use: default-paragraph-style
(process-children)))
(element (refref note)
(make paragraph
use: default-paragraph-style
(make sequence
font-family-name: gothic-font
font-name: gothic-font
(literal "備考 "))
(process-children) ))
(element reftit
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
use: default-paragraph-style
(process-children)))
;
; <![ IGNORE [
; <!ELEMENT defs - O (defref*,dl?) -- definitions -->
; <!ELEMENT defref - O (#PCDATA) -(%i.float) -- reference -->
; ]]>
;
(element defs
(make display-group
(make paragraph
keep-with-next?: #t
use: h1t-style
(literal (section-number))
(literal
(cond
((attribute-string "stitle"))
(else "\space;定義") ))
(process-children) )))
(element (defs p)
(if (first-sibling?)
(make sequence
font-family-name: mincho-font
use: default-paragraph-style
(literal " ")
(process-children))
(make paragraph
use: default-paragraph-style
(process-children)) ))
(element defref
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
line-spacing: default-line-spacing
use: default-paragraph-style
(process-children)))
;
; <![ IGNORE [
; <!ELEMENT section - O (h0t, (%s.zz;)*, h1*) -- Section -->
; ]]>
;
(element section (process-children))
;
; <![ IGNORE [
; <!ELEMENT h1 - O (h1t, (%s.zz;)*, (h2*|p2*)) -- Clause -->
;
; <!ELEMENT h2 - O (h2t, (%s.zz;)*, (h3*|p3*)) -- Subclause -->
; <!ELEMENT h3 - O (h3t, (%s.zz;)*, (h4*|p4*)) -- S.s.clause -->
; <!ELEMENT h4 - O (h4t, (%s.zz;)*, (h5*|p5*)) -- ...clause -->
; <!ELEMENT h5 - O (h5t, (%s.zz;)*, (h6*|p6*)) -- ...clause -->
; <!ELEMENT h6 - O (h6t, (%s.zz;)*) -- ...clause -->
; <!ELEMENT (h0t|h1t|h2t|h3t|h4t|h5t|h6t)
; O O %m.ph; -(fig|tab|%ix;) -- Clause titles -->
; ]]>
;
(define (format-number-list num-list)
(cond
((null? num-list) "")
(else
(string-append
(number->string (car num-list))
"."
(format-number-list (cdr num-list)) ))))
(element h0t
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
font-size: text-size
space-before: h0t-space-before
space-after: h0t-space-after
quadding: 'center
keep-with-next?: #t
first-line-start-indent: 0pt
use: default-paragraph-style
(process-children)))
;
; (define (my-number dom nmlist)
; (node-list-length
; (let body ((d dom) (nml nmlist))
; (cond
; ((null? nml) (empty-node-list))
; (else
; (node-list
; (select-elements
; (preced (descendants (ancestor d))) (car nml))
; (body d (cdr nml)) ))))))
(element h1
(make paragraph
use: h1t-style
(literal (section-number))
(literal "\space;")
(process-children) ))
(element h1t
(make sequence
use: h1t-style
(process-children) ))
(element (h1 p)
(cond
((and (first-sibling?)
(= 0 (node-list-length (children (node-at-location '("h1" "h1t"))))))
(make sequence
use: default-paragraph-style
(process-children) ))
(else
(make paragraph
use: default-paragraph-style
(process-children) ))))
(element h2
(make paragraph
space-before: h2t-space-before
space-after: h2t-space-after
use: h2t-style
(literal (section-number))
(literal "\space;")
(process-children) ))
(element h2t
(make sequence
use: h2t-style
(process-children) ))
(element (h2 p)
(cond
((and (first-sibling?)
(= 0 (node-list-length (children (node-at-location '("h2" "h2t"))))))
(make sequence
use: default-paragraph-style
(process-children) ))
(else
(make paragraph
use: default-paragraph-style
(process-children) ))))
(element h3
(make paragraph
space-before: h3t-space-before
space-after: h3t-space-after
keep-with-next?: #t
use: h3t-style
(literal (section-number))
(literal "\space;")
(process-children) ))
(element h3t
(make sequence
use: h3t-style
(process-children) ))
(element (h3 p)
(cond
((and (first-sibling?)
(= 0 (node-list-length (children (node-at-location '("h3" "h3t"))))))
(make sequence
use: default-paragraph-style
(process-children) ))
(else
(make paragraph
use: default-paragraph-style
(process-children) ))))
(element h4
(make paragraph
space-before: h4t-space-before
space-after: h4t-space-after
keep-with-next?: #t
use: h4t-style
(literal (section-number))
(literal "\space;")
(process-children) ))
(element h4t
(make sequence
use: h4t-style
(process-children) ))
(element (h4 p)
(cond
((and (first-sibling?)
(= 0 (node-list-length (children (node-at-location '("h4" "h4t"))))))
(make sequence
use: default-paragraph-style
(process-children) ))
(else
(make paragraph
use: default-paragraph-style
(process-children) ))))
(element h5
(make paragraph
space-before: h5t-space-before
space-after: h5t-space-after
keep-with-next?: #t
use: h5t-style
(literal (section-number))
(literal "\space;")
(process-children) ))
(element h5t
(make sequence
use: h5t-style
(process-children) ))
(element (h5 p)
(cond
((and (first-sibling?)
(= 0 (node-list-length (children (node-at-location '("h5" "h5t"))))))
(make sequence
use: default-paragraph-style
(process-children) ))
(else
(make paragraph
use: default-paragraph-style
(process-children) ))))
(element h6
(make paragraph
space-before: h6t-space-before
space-after: h6t-space-after
keep-with-next?: #t
use: h6t-style
(literal (section-number))
(literal "\space;")
(process-children) ))
(element h6t
(make sequence
use: h6t-style
(process-children) ))
(element (h6 p)
(cond
((and (first-sibling?)
(= 0 (node-list-length (children (node-at-location '("h6" "h6t"))))))
(make sequence
use: default-paragraph-style
(process-children) ))
(else
(make paragraph
use: default-paragraph-style
(process-children) ))))
;
; <![ IGNORE [
; <!ELEMENT p1 - O (p, (%s.zz;)*, (h2*|p2*)) -- Clause -->
; <!ELEMENT p2 - O (p, (%s.zz;)*, (h3*|p3*)) -- Subclause -->
; <!ELEMENT p3 - O (p, (%s.zz;)*, (h4*|p4*)) -- Subsubclause -->
; <!ELEMENT p4 - O (p, (%s.zz;)*, (h5*|p5*)) -- ...clause -->
; <!ELEMENT p5 - O (p, (%s.zz;)*, (h6*|p6*)) -- ...clause -->
; <!ELEMENT p6 - O (p, (%s.zz;)*) -- ...clause -->
; ]]>
;
(element p1
(make paragraph
space-before: text-size
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children)))
(element p2
(make paragraph
space-before: text-size
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children)))
(element p3
(make paragraph
space-before: text-size
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children)))
(element p4
(make paragraph
space-before: text-size
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children)))
(element p5
(make paragraph
space-before: text-size
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children)))
(element p6
(make paragraph
space-before: text-size
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children)))
;
; <![ IGNORE [
; <!ELEMENT (p|lp) O O ((%m.p1;|%m.p2;)*) -- Paragraphs -->
; ]]>
;
(element p (make-default-paragraph))
(element lp
(make paragraph
space-before: text-size
line-spacing: (* text-size 2)
use: default-paragraph-style
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT tutorial - O ((%s.zz)*, h1*, drftcom*) -- 解説 -->
; <!ELEMENT drftcom - - (c-name, cm-list) -- 原案作成委員会 -->
; <!ELEMENT c-name - O (#PCDATA) -- 委員会名 -->
; <!ELEMENT cm-list - - (c-mem*) -- 委員リスト -->
; <!ELEMENT c-mem - O (cm-name, cm-org) -- 委員 -->
; <!ELEMENT cm-name - O (#PCDATA) -- 委員氏名 -->
; <!ELEMENT cm-org - O (#PCDATA) -- 委員所属 -->
; ]]>
;
(element backm (process-children))
(mode tutorial-title
(default (empty-sosofo))
(element frontm (process-children))
(element titlep
(make paragraph
break-before: 'page
font-family-name: gothic-font
font-name: gothic-font
font-size: 20q
line-spacing: (* 20q 2)
first-line-start-indent: 0pt
space-before: (display-space text-size priority: 10)
start-indent: (* text-size 4)
end-indent: (* text-size 4)
quadding: 'center
use: default-paragraph-style
(process-matching-children 'refnum)
(process-matching-children 'jtitle)
(process-matching-children 'jptitle) ))
(element refnum (process-children))
(element jisnum
(make paragraph
(make sequence
font-size: 20q
(literal (publication-status))
(literal "\space;")
(process-matching-children 'divsym)
(literal "\space;")
(process-matching-children 'divnum) )
(make sequence
font-size: 13q
(literal "\colon;")
(process-matching-children 'pubyear) )))
(element divsym (process-children-trim))
(element divnum (process-children-trim))
(element pubyear (process-children-trim))
(element isnum
(make paragraph
font-family-name: gothic-font
font-size: 20q
(literal "\left-parenthesis;")
(process-children-trim)
(literal "\right-parenthesis;") ))
(element jtitle (process-children))
(element jptitle (process-children))
(element (jtitle tline)
(if (and
(absolute-last-sibling?)
(node-list-empty?
(node-at-location '("standjis" "frontm" "titlep" "jptitle")) ))
(make paragraph
(process-children)
(literal " 解説") )
(make paragraph
(process-children) )))
(element (jptitle tline)
(if (absolute-last-sibling?)
(make paragraph
(process-children)
(literal " 解説") )
(make paragraph
(process-children) )))
)
(element tutorial
(sosofo-append
(with-mode tutorial-title
(process-node-list
(node-at-location '("standjis" "frontm")) ))
(process-children) ))
(element drftcom (process-children))
(element c-name
(make paragraph
quadding: 'center
use: default-paragraph-style
space-before: text-size
space-after: text-size
(process-children)
(literal " 構成表") ))
(define (string-width str)
(let loop ((lst (string->list str)))
(cond
((null? lst) 0)
((ascii-char? (car lst))
(+ 1 (loop (cdr lst))) )
(else
(+ 2 (loop (cdr lst))) ))))
(define (inline-space-char n)
(cond
((<= n 0) "")
(else
(string-append " " (inline-space-char (- n 1))) )))
(element cm-list
(make paragraph
start-indent: 30mm
use: default-paragraph-style
(literal "氏名")
(literal (inline-space-char (- 20 (string-width "氏名"))))
(literal "所属")
(process-children) ))
(element c-mem
(let* ((role (attribute-string "ROLE"))
(tag (if role (string-append role " ") "")) )
(make paragraph
start-indent: (- 30mm (* (/ text-size 2) (string-width tag)) )
use: default-paragraph-style
(literal tag)
(process-children) )))
(element cm-name
(let ((name (data (current-node))))
(make sequence
(literal name)
(literal (inline-space-char (- 20 (string-width name)))) )))
(element cm-org (process-children))
;
; <![ IGNORE [
; <!ELEMENT hrule - O EMPTY -- horizontal rule -->
; ]]>
;
(element hrule
(make rule
orientation: 'horizontal
break-before-priority: 100
break-after-priority: 100
space-before: (/ (- text-size 1pt) 2)
space-after: (/ (- text-size 1pt) 2) ))
(mode back-title
(default (empty-sosofo))
(element frontm
(make simple-page-sequence
use: a4p-page-style
(make paragraph
font-family-name: gothic-font
font-size: 14pt
line-spacing: (* 1.2 14pt)
quadding: 'center
space-before: 20mm
use: default-paragraph-style
(literal "JAPANESE INDUSTRIAL STANDARD"))
(process-children)
(make paragraph
font-family-name: gothic-font
font-size: 14pt
line-spacing: (* 1.2 14pt)
keep: 'page
keep-with-previous?: #t
quadding: 'center
space-before: 5mm
use: default-paragraph-style
(literal "Investigated by") )
(make paragraph
font-family-name: gothic-font
font-size: 14pt
line-spacing: (* 1.2 14pt)
keep: 'page
keep-with-previous?: #t
quadding: 'center
space-before: 5mm
use: default-paragraph-style
(literal "Japanese Industrial Standards Commitee") )
(make rule
orientation: 'horizontal
length: 90mm
line-thickness: 1pt
quadding: 'center
break-before-priority: 100
break-after-priority: 100
space-before: (display-space 10mm priority: 100)
space-after: (display-space 10mm priority: 100)
keep: 'page
keep-with-previous?: #t
display-alignment: 'center )
(make paragraph
font-family-name: gothic-font
font-size: 10.5pt
line-spacing: 12pt
keep: 'page
keep-with-previous?: #t
quadding: 'center
space-before: 5mm
use: default-paragraph-style
(literal "Published by"))
(make paragraph
font-family-name: gothic-font
font-size: 10.5pt
line-spacing: 12pt
keep: 'page
keep-with-previous?: #t
quadding: 'center
space-before: 5mm
use: default-paragraph-style
(literal "Japanese Standards Association"))
(process-node-list (first-descendant "price"))
(if (not (node-list-empty? (first-descendant "ics")))
(make display-group
(make rule
orientation: 'horizontal
length: 180mm
line-thickness: 1pt
quadding: 'center
keep: 'page
keep-with-previous?: #t
break-before-priority: 100
break-after-priority: 100
space-before: 10mm
space-after: (display-space 10mm priority: 100)
display-alignment: 'center )
(process-node-list (first-descendant "ics"))
(process-node-list (first-descendant "kwset"))
(make paragraph
font-family-name: gothic-font
font-size: 10.5pt
line-spacing: 12pt
keep: 'page
keep-with-previous?: #t
quadding: 'start
use: default-paragraph-style
(literal
(string-append
"Reference number\colon;\space;JIS\space;"
(data (first-descendant "divsym"))
"\space;"
(data (first-descendant "divnum"))
"\colon;"
(data (first-descendant "pubyear"))
"(J)") )))
(empty-sosofo) )))
(element titlep
(make display-group
(process-matching-children "etitle")
(process-matching-children "eptitle")
(process-matching-children "refnum")
(if (node-list-empty? (first-descendant "revdate"))
(process-node-list (first-descendant "estdate"))
(process-node-list (first-descendant "revdate")) )))
(element etitle
(make paragraph
font-family-name: gothic-font
font-size: 24pt
line-spacing: (* 1.2 24pt)
keep: 'page
keep-with-previous?: #t
space-before: 25mm
quadding: 'center
use: default-paragraph-style
(process-children) ))
(element tline
(make paragraph
keep-with-previous?: #t
widow-count: 0
orphan-count: 0
(process-children) ))
(element eptitle
(make paragraph
font-family-name: gothic-font
font-size: 24pt
line-spacing: (* 1.2 24pt)
keep: 'page
keep-with-previous?: #t
quadding: 'center
use: default-paragraph-style
(process-children) ))
(element refnum (process-children))
(element jisnum
(make paragraph
font-family-name: gothic-font
font-size: 18pt
line-spacing: (* 1.2 18pt)
keep: 'page
keep-with-previous?: #t
quadding: 'center
space-before: 20mm
use: default-paragraph-style
(literal "JIS\space;")
(process-matching-children "divsym")
(literal "\space;")
(process-matching-children "divnum")
(make sequence
font-family-name: mincho-font
font-size: 10.5pt
(literal "\colon;")
(process-matching-children "pubyear") )
(process-matching-children "isnum") ))
(element divsym (process-children))
(element divnum (process-children))
(element pubyear (process-children))
(element isnum
(make paragraph
font-family-name: gothic-font
font-size: 18pt
line-spacing: (* 1.2 18pt)
quadding: 'center
use: default-paragraph-style
(literal "\left-parenthesis;")
(process-children)
(literal "\right-parenthesis;") ))
(element estdate
(make paragraph
font-family-name: gothic-font
font-size: 10.5pt
line-spacing: 12pt
quadding: 'center
space-before: 20mm
use: default-paragraph-style
(literal "Established ")
(if (new-style?)
(make sequence
(process-node-list (first-descendant "year"))
(literal "\hyphen-minus;")
(process-node-list (first-descendant "month"))
(literal "\hyphen-minus;")
(process-node-list (first-descendant "day")) )
(make sequence
(process-node-list (first-descendant "month"))
(literal "\space;")
(process-node-list (first-descendant "day"))
(literal "\comma;\space;")
(process-node-list (first-descendant "year")) ))))
(element revdate
(make paragraph
font-family-name: gothic-font
font-size: 10.5pt
line-spacing: 12pt
quadding: 'center
space-before: 15mm
use: default-paragraph-style
(literal "Revised ")
(if (node-list-empty?
(node-at-location
'("standjis" "frontm" "titlep" "pubinfo" "ics")) )
(make sequence
(process-node-list (first-descendant "month"))
(literal "\space;")
(process-node-list (first-descendant "day"))
(literal "\comma;\space;")
(process-node-list (first-descendant "year")) )
(make sequence
(process-node-list (first-descendant "year"))
(literal "\hyphen-minus;")
(process-node-list (first-descendant "month"))
(literal "\hyphen-minus;")
(process-node-list (first-descendant "day")) ))))
(element year (process-children))
(element month
(literal
(if (node-list-empty?
(node-at-location
'("standjis" "frontm" "titlep" "pubinfo" "ics")) )
(case (data (current-node))
(("1" "1") "Jan.")
(("2" "2") "Feb.")
(("3" "3") "Mar.")
(("4" "4") "Apr.")
(("5" "5") "May")
(("6" "6") "Jun.")
(("7" "7") "Jul.")
(("8" "8") "Aug.")
(("9" "9") "Sep.")
(("10" "10") "Oct.")
(("11" "11") "Nov.")
(("12" "12") "Dec.")
(else "Jan.") )
(case (data (current-node))
(("1" "1") "01")
(("2" "2") "02")
(("3" "3") "03")
(("4" "4") "04")
(("5" "5") "05")
(("6" "6") "06")
(("7" "7") "07")
(("8" "8") "08")
(("9" "9") "09")
(("10" "10") "10")
(("11" "11") "11")
(("12" "12") "12")
(else "01") ))))
(element day (process-children))
(element price
(make paragraph
font-family-name: gothic-font
font-size: 10.5pt
line-spacing: 12pt
quadding: 'end
space-before: 5mm
use: default-paragraph-style
(literal "価格\colon;\space本体")
(process-children)
(literal "円\left-parenthesis;税別\right-parenthesis;") ))
(element ics
(make paragraph
font-size: 10.5pt
line-spacing: 12pt
quadding: 'start
use: default-paragraph-style
(make sequence
font-family-name: gothic-font
(literal "ICS\space;") )
(make sequence
font-family-name: mincho-font
(process-children) )))
(element kwset
(make paragraph
font-size: 10.5pt
line-spacing: 12pt
quadding: 'start
use: default-paragraph-style
(make sequence
font-family-name: gothic-font
(literal "Descriptors\space;") )
(make sequence
font-family-name: mincho-font
(process-node-list (first-descendant "kw"))
(process-children) )))
(element kw
(make sequence
(literal "\comma;")
(process-children) ))
)
;
; <![ IGNORE [
; <!ELEMENT date O O (year, month, day) -- 日付 -->
; <!ELEMENT year O O (#PCDATA) -- 年(西暦)-->
; <!ELEMENT month O O (#PCDATA) -- 月 -->
; <!ELEMENT day O O (#PCDATA) -- 日 -->
; ]]>
;
(define (date-to-gengou1 year month day)
(cond
((<= year 1988)
(string-append
"昭和\space;"
(number->string (- year 1925)) "\space;年\space;"
(number->string month) "\space;月\space;"
(number->string day) "\space;日" ))
((= year 1989)
(if (and (= month 1) (< day 8))
(string-append
"昭和\space;"
(number->string (- year 1925)) "\space;年\space;"
(number->string month) "\space;月\space;"
(number->string day) "\space;日")
(string-append
"平成\space;"
(number->string (- year 1988)) "\space;年\space;"
(number->string month) "\space;月\space;"
(number->string day) "\space;日")))
(else
(string-append
"平成\space;"
(number->string (- year 1988)) "\space;年\space;"
(number->string month) "\space;月\space;"
(number->string day) "\space;日"))))
(define (date-to-gengou2 year month day)
(cond
((<= year 1988)
(string-append
"昭和\space;"
(number->string (- year 1925)) "\full-stop;"
(number->string month) "\full-stop;"
(number->string day) "\full-stop;" ))
((= year 1989)
(if (and (= month 1) (< day 8))
(string-append
"昭和\space;"
(number->string (- year 1925)) "\full-stop;"
(number->string month) "\full-stop;"
(number->string day) "\full-stop;")
(string-append
"平成\space;"
(number->string (- year 1987)) "\full-stop;"
(number->string month) "\full-stop;"
(number->string day) "\full-stop;")))
(else
(string-append
"平成\space;"
(number->string (- year 1987)) "年"
(number->string month) "月"
(number->string day) "日"))))
(element date (process-children))
(element year
(make sequence
(process-children)
(literal "年") ))
(element month
(make sequence
(process-children)
(literal "月") ))
(element day
(make sequence
(process-children)
(literal "日") ))
;
; <![ IGNORE [
; <!ELEMENT refnum - O (jisnum, isnum?) -- 参照番号 -->
; <!ELEMENT jisnum - O (divsym, divnum, pubyear) -- JIS規格番号 -->
; <!ELEMENT divsym - O (#PCDATA) -- 部門記号 -->
; <!ELEMENT divnum - O (#PCDATA) -- 部門内番号 -->
; <!ELEMENT isnum - O (#PCDATA) -- 対応国際規格の番号 -->
; ]]>
;
(element refnum
(make paragraph
font-name: gothic-font
font-size: 20q
keep: 'page
keep-with-previous?: #t
quadding: 'center
space-before: (display-space 42pt priority: 100)
space-after: (display-space 14pt priority: 100)
use: default-paragraph-style
(process-matching-children 'jisnum)
(process-matching-children 'isnum) ))
(define isnum-spacing default-line-spacing)
(element isnum
(make paragraph
space-before: (display-space 14pt priority: 90)
(literal "\left-parenthesis;")
(make sequence
font-size: 12pt
(process-children))
(literal "\right-parenthesis;") ))
(element jisnum
(make paragraph
(make sequence
(literal (publication-status))
(literal "\space;")
(process-matching-children 'divsym)
(literal " ")
(process-matching-children 'divnum)
(make sequence
font-size: 7pt
(literal ":")
(process-matching-children 'pubyear) ))))
(element divsym (process-children))
(element divnum (process-children))
(mode gengou1
(default (empty-sosofo))
(element date
(literal
(date-to-gengou1
(string->number
(normalize-number (data (first-descendant "YEAR")) "1"))
(string->number
(normalize-number (data (first-descendant "MONTH")) "1"))
(string->number
(normalize-number (data (first-descendant "DAY")) "1")) )))
)
(element pubyear
(with-mode gengou1 (process-children)))
;
; <![ IGNORE [
; <!ELEMENT dl - - (((dt+, (dd|ddg))|(dth,dl))*) >
; <!ELEMENT dt - O %m.ph; -- Definition term -->
; <!ELEMENT dth - O %m.ph; -- Definition term head-->
; <!ELEMENT dd - O %m.pseq; -- Definition description -->
; <!ELEMENT ddg - O (dd+) -- Definition description group -->
; ]]>
;
(element dl (process-children))
(element dt
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
line-spacing: (* text-size 1.2)
keep-with-next?: #t
use: default-paragraph-style
(literal "\left-parenthesis;")
(literal
(format-number
(child-number)
(format-type
(node-list-length (ancestor-recursive "dl" (current-node))) )))
(literal "\right-parenthesis;\space;")
(process-children)))
(define (ancestor-recursive name #!optional (start (current-node)))
(let loop ((nl (empty-node-list))
(nd start) )
(cond
((node-list-empty? (ancestor name nd)) nl)
(else
(loop (node-list (ancestor name nd) nl) (ancestor name nd)) ))))
(define (count-nesting-level start)
(+ (node-list-length (ancestor-recursive (gi start) start)) 1))
(element dd
(make paragraph
start-indent: (* text-size (count-nesting-level (current-node)))
space-after: (display-space text-size priority: 100)
line-spacing: (* text-size 1.2)
keep-with-next?: #t
use: default-paragraph-style
(process-children)))
(element (dd p)
(make paragraph
start-indent: (* text-size (count-nesting-level (current-node)))
line-spacing: (* text-size 1.2)
use: default-paragraph-style
(process-children)))
(element ddg (process-children))
(element dth
(make paragraph
start-indent: (inline-space
(* text-size (count-nesting-level (current-node))) )
line-spacing: (* text-size 1.2)
use: default-paragraph-style
(process-children)))
;
; <![ IGNORE [
; <!ELEMENT artwork - O EMPTY >
; <!ATTLIST artwork name ENTITY #REQUIRED
; place (inline|line) line
; height CDATA #IMPLIED >
; ]]>
;
(element artwork
(make external-graphic
display?:
(case (attribute-string "place")
(("inline") #f)
(else #t) )
scale: 'max-uniform
max-height:
(if (attribute-string "height")
(string->quantity (attribute-string "height"))
72pt)
entity-system-id: (attribute-string "name")
display-alignment: 'center
position-point-x: 0pt
position-point-y:
(if (attribute-string "height")
(/ (string->quantity (attribute-string "height")) 2)
36pt)
escapement-direction: 'left-to-right
break-before-priority: 10
break-after-priority: 10
space-before: (display-space 10mm min: 5mm max: 20mm priority: 100)
space-after: (display-space 20mm min: 10mm max: 40mm priority: 100) ))
;
; <![ IGNORE [
; <!ELEMENT syml - - ((sym, desc)*) -- Symbols list -->
; <!ELEMENT sym - O (#PCDATA|(%p.zz.ph;)|artwork)*
; -- Symbol or abbreviation -->
; <!ELEMENT desc - O %m.pseq; -- Symbol description -->
; ]]>
;
(element syml (process-children))
(element sym
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
use: default-paragraph-style
(process-matching-children "sym") ))
(element (syml desc)
(make paragraph
use: default-paragraph-style
(process-matching-children "desc") ))
;
; <![ IGNORE [
; <!ELEMENT varl - - ((var, desc)*) -- Variables list-->
; <!ELEMENT var - O %m.ph; -- Symbol or abbreviation -->
; ]]>
;
(element varl (process-children))
(element var
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
use: default-paragraph-style
(process-matching-children "sym") ))
(element (varl desc)
(make paragraph
use: default-paragraph-style
(process-matching-children "desc") ))
;
; <![ IGNORE [
; <!ENTITY % ps.ul.d1 "ol|ul|sl" -- Unit-item lists (1) -->
; <!ENTITY % ps.ul.d2 "nl" -- Unit-item lists (2) -->
; <!ENTITY % ps.ul.d "%ps.ul.d1;|%ps.ul.d2" -- Unit-item lists -->
;
; <!ELEMENT (%ps.ul.d;) - - (li*) -- Unit item lists -->
; ]]>
;
; ol: ordered-list - 項目番号を振る。
; ul: unordered-list - 各項目に項目のレベルに応じたマークをいれる。
; sl: simple-list - olと同じに扱う。
; nl: note-list - 属性typeによって、タイトルをつけた。
;
;
; Level Marks of the List(UL)
;
(define level-marks '("-" "*" "+" "=" "@" "#" ))
(define (nearest-ancestor lst #!optional (nd (current-node)))
(let loop ((current (parent nd)))
(cond
((node-list-empty? current) #f)
((let lst-loop ((rest lst))
(cond
((null? rest) #f)
((string=? (car rest) (gi current)) current)
(else
(lst-loop (cdr rest)) ))))
(else (loop (parent current))) )))
(define (li-heading #!optional (nd (current-node)))
(let* ((nl (nearest-ancestor '("OL" "SL" "UL" "NL")))
(type (if nl (gi nl) #f)))
(case type
((#f) (error "Tree-structure corrupted"))
(("OL" "SL")
(string-append (format-item-heading) "\right-parenthesis;" ))
(("NL") (note-heading))
(("UL") (level-mark "li" level-marks (current-node)))
(else
(node-list-error "unknown list type" nl) ))))
(element ol (process-children))
(element ul (process-children))
(element sl (process-children))
(element nl (process-children))
;
; <![ IGNORE [
; <!ELEMENT li - O %m.pseq; -- List item -->
; ]]>
;
(define (format-item-heading #!optional (nd (current-node)))
(let ((level (node-list-length (ancestor-recursive "li"))))
(format-number
(child-number)
(format-type (+ level 1)) )))
(element (ol li)
(let ((level (node-list-length (ancestor-recursive "li"))))
(make paragraph
first-line-start-indent:
(- text-size (* (/ text-size 2) (string-length (li-heading))))
start-indent:
(+ (* (/ text-size 2) (string-length (li-heading)))
(* text-size
(+ 1 (node-list-length (ancestor-recursive "li" (current-node)))))
(- (* (/ text-size 2) (string-length (li-heading))))
text-size)
; (+ (* (/ text-size 2) (string-length (li-heading)))
; (* text-size
; (+ 1 (node-list-length (ancestor-recursive "li" (current-node)))) ))
; (+ (* text-size 2 (+ level 1 )) (* text-size 2))
use: default-paragraph-style
(make sequence
font-family-name: gothic-font
(literal (li-heading)))
(process-children) )))
(element (nl li)
(let* ((str (li-heading))
(heading
(string-append
str (number->string (child-number)) ))
(indent (* (/ text-size 2) (string-length str))) )
(make paragraph
use: default-paragraph-style
first-line-start-indent: (note-first-line-start-indent indent)
start-indent: (note-start-indent indent)
(make sequence
font-family-name: gothic-font
font-name: gothic-font
(literal heading))
(process-children-trim) )))
(element (sl li)
(make paragraph
use: default-paragraph-style
first-line-start-indent:
(- text-size (* (/ text-size 2) (string-length (li-heading))))
start-indent:
(+ (* (/ text-size 2) (string-length (li-heading)))
(* text-size
(+ 1 (node-list-length (ancestor-recursive "li" (current-node)))) ))
(make sequence
font-family-name: gothic-font
font-name: gothic-font
(literal (li-heading)))
(process-children) ))
(define (level-mark name lst nd)
(list-ref lst (node-list-length (ancestor-recursive name nd))) )
(element li
(make paragraph
first-line-start-indent:
(- text-size (* (/ text-size 2) (string-length (li-heading))))
start-indent:
(+ (* (/ text-size 2) (string-length (li-heading)))
(* text-size
(+ 1 (node-list-length (ancestor-recursive "li" (current-node)))) ))
line-spacing: (* text-size 1.2)
space-before: 0pt
space-after: 0pt
use: default-paragraph-style
(literal (li-heading))
(process-children) ))
(element (li p)
(if (absolute-first-sibling?)
(make sequence
(literal " ")
(process-children))
(make paragraph
start-indent:
(+ (* (/ text-size 2) (string-length (li-heading)))
(* text-size
(+ 1 (node-list-length (ancestor-recursive "li" (current-node)))) ))
(process-children) )))
;
; <![ IGNORE [
; <!ELEMENT (note|caution|warning) - - (p,(%s.zz;)*) -- Notes -->
; ]]>
;
(define (count-notes type #!optional (nd (ancestor "standjis" (current-node))))
(let loop ((nds (descendants nd))
(counter 0)
(type-str (if type type "NORM")))
(cond
((node-list-empty? nds) counter)
((not (gi (node-list-first nds)))
(loop (node-list-rest nds) counter type-str))
((string=? (gi (node-list-first nds)) "NOTE")
(cond
((equal? nd (node-list-first nds)) counter)
((string=?
(attribute-string+default
"TYPE" "NORM" (node-list-first nds)) type-str)
(loop (node-list-rest nds) (+ 1 counter) type-str) )
(else
(loop (node-list-rest nds) counter type-str) )))
((and (string=? (gi (node-list-first nds)) "LI")
(ancestor "nl"))
(cond
((equal? nd (node-list-first nds)) counter)
((string=?
(attribute-string+default
"TYPE" "NORM" (node-list-first nds)) type-str)
(loop (node-list-rest nds) (+ 1 counter) type-str))
(else
(loop (node-list-rest nds) counter type-str) )))
((string=? (gi (node-list-first nds)) "FN")
(cond
((string=?
(attribute-string+default
"TYPE" "COM" (node-list-first nds)) type-str)
(loop (node-list-rest nds) (+ 1 counter) type-str) )
(else
(loop (node-list-rest nds) counter type-str) )))
(else
(loop (node-list-rest nds) counter type-str) ))))
;(define (note-heading #!optional (nd (current-node)))
; (string-append
; (case (attribute-string "TYPE" nd)
; (("NORM") "備考")
; (("INFO") "参考")
; (("COM") "注")
; (else "備考") )
; (number->string (count-notes (attribute-string "TYPE"))) ))
(define (note-heading #!optional (nd (current-node)))
(case (attribute-string "TYPE" nd)
(("NORM") "備考")
(("INFO") "参考")
(("COM") "注")
(else "備考") ))
(define (note-first-line-start-indent indent)
(- indent) )
(define (note-start-indent indent)
(+ (inherited-start-indent) (actual-font-size) indent) )
(element note
(let* ((str (note-heading))
(heading (string-append str " "))
(indent (* (/ text-size 2) (string-length str))) )
(make paragraph
font-family-name: mincho-font
first-line-start-indent: (note-first-line-start-indent indent)
start-indent: (note-start-indent indent)
use: default-paragraph-style
(make sequence
font-family-name: gothic-font
(literal heading))
(process-children) )))
(element (note p) (process-children))
(element caution
(make sequence
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
use: default-paragraph-style
(literal "注意")
(literal ": ") )
(process-children) ))
(element (caution p) (process-children))
(element warning
(make sequence
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
use: default-paragraph-style
(literal "警告")
(literal ": ") )
(process-children) ))
(element (warning p) (process-children))
;
; <![ IGNORE [
; <!ELEMENT lines O O %m.pseq; -- Line elements -->
; ]]>
;
(element lines
(make line-field
field-width: (- 210mm 20mm 20mm)
field-align: 'start
writing-mode: 'left-to-right
inhibit-line-breaks?: #t
break-before-priority: 100
break-after-priority: 100
use: default-paragraph-style
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT lq - - %m.pseq; -(%i.float;) -- Long quotation -->
; ]]>
;
(element lq
(make paragraph
first-line-start-indent:
(if (string=? "p" (gi (parent)))
(* text-size (- 1))
0pt)
start-indent: (* 4 text-size (count-nesting-level (current-node)))
end-indent: (* 4 text-size (count-nesting-level (current-node)))
font-size: smaller-size
line-spacing: (* smaller-size 1.2)
use: default-paragraph-style
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT q - - %m.ph; -- Quotation -->
; ]]>
;
(element q
(make sequence
(literal "'")
(process-children)
(literal "'") ))
;
; <![ IGNORE [
; <!ELEMENT xmps - - (xmp+) -- Examples -->
; <!ELEMENT xmp - - %m.pseq; -(%i.float;) -- Example -->
; ]]>
;
(define (xmp-heading #!optional (nd (current-node)))
(string-append
"例"
(number->string (element-number)) ))
(element xmps (process-children))
(element xmp
(make paragraph
font-family-name: gothic-font
font-name: gothic-font
line-spacing: (* text-size 1.2)
start-indent: (* text-size (count-nesting-level (current-node)))
end-indent: (* text-size (count-nesting-level (current-node)))
lines: 'asis-wrap
inline-space-space: (* text-size 0.6)
expand-tabs?: 8
(literal "\left-square-bracket;")
(literal (xmp-heading))
(literal "\right-square-bracket;")
(make rule
orientation: 'escapement
length: 170mm
line-thickness: 1pt
break-before-priority: 100
break-after-priority: 0
display-alignment: 'start )
(process-children)
(make rule
orientation: 'escapement
length: 170mm
line-thickness: 1pt
break-before-priority: 0
break-after-priority: 100
display-alignment: 'start ) ))
;
; <![ IGNORE [
; <!ELEMENT extref - - (refref,reftit?,refspec?,%EHyTime;)
; -- external reference -->
; <!ELEMENT refspec - O (#PCDATA) -- specific part referred to -->
; ]]>
;
(element extref
(make sequence
(process-matching-children "refref")
(literal "(")
(process-matching-children "reftit")
(process-matching-children "refspec")
(literal ")") ))
(element (extref refref) (process-children))
(element (extref refspec)(process-children))
;
; <![ IGNORE [
; <!ELEMENT flmat - - %m.ph; -- Foreign language material -->
; ]]>
;
; jadeは、現状ではchar-upcaseをサポートしない。したがって、SGML解析系
; がupper-case変換すると仮定する。
;
(element flmat
(make sequence
language: (attribute-string "langcode")
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT cptr - - %m.ph; -- Computer example -->
; ]]>
;
(element cptr
(make paragraph
font-name: "Courier"
font-size: 9pt
first-line-start-indent: 0pt
start-indent: (* text-size (+ 1 (count-nesting-level (current-node))))
lines: 'asis-wrap
asis-wrap-indent:
(+ (* text-size (+ 1 (count-nesting-level (current-node))))
(* text-size 2) )
use: default-paragraph-style
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT syn - - ((synt,synd)+) --(SGML) syntax productions-->
; <!ELEMENT synt - O (#PCDATA) -- term -->
; <!ELEMENT synd - O ((sv|sk|sd|sdr|stv|stc|#PCDATA)*)
; -- definition -->
; ]]>
;
(element syn
(make paragraph
first-line-start-indent: (* text-size (- 4))
start-indent: (* text-size 8)
end-indent: (* text-size 4)
line-spacing: (* text-size 1.2)
space-after: (display-space text-size priority: 5)
use: default-paragraph-style
(process-children) ))
(element synt
(make sequence
font-family-name: "Times Roman"
font-weight: 'medium
font-posture: 'upright
(make paragraph-break
space-before: (* text-size 1.2) )
(literal "[")
(literal (number->string (element-number)))
(literal "] ")
(process-children)
(literal " = ") ))
(element synd
(make sequence
font-family-name: "Times Roman"
font-weight: 'medium
font-posture: 'upright
use: default-paragraph-style
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT sv - O (#PCDATA) -- variable -->
; <!ELEMENT sk - O (#PCDATA) -- literal -->
; <!ELEMENT sd - O (#PCDATA) -- syntax delimiter -->
; <!ELEMENT sdr - O (#PCDATA) -- syntax delimiter role -->
; <!ELEMENT stv - O (#PCDATA) -- syntax terminal, variable -->
; <!ELEMENT stc - O (#PCDATA) -- syntax terminal, constant -->
; ]]>
;
(element sv
(make sequence
font-family-name: "Times Roman"
font-posture: 'italic
(process-children) ))
(element sk
(make sequence
font-family-name: "Courier"
(process-children) ))
(element sd
(make sequence
font-family-name: "Times Roman"
font-weight: 'bold
(process-children) ))
(element sdr
(make sequence
font-family-name: "Times Roman"
font-weight: 'bold
font-posture: 'italic
(process-children) ))
(element stv
(make sequence
font-family-name: "Helvetica"
font-weight: 'bold
font-posture: 'oblique
(process-children) ))
(element stc
(make sequence
font-family-name: "Helvetica"
font-weight: 'bold
(process-children) ))
;
; <![ IGNORE [
; <!ENTITY % p.em.ph "hp1|hp2|hp3|hp4|hp0|cit" -- Emphasized phrases -->
; <!ELEMENT (%p.em.ph;) - - %m.ph; -- Emphasized phrases -->
; ]]>
;
;
; 強調のためのパラメータ
;
(define under-line-thickness 1pt)
(define over-line-thickness 1pt)
(define through-line-thickness 1pt)
(define under-score-spaces #t)
(define over-score-spaces #t)
(define through-score-spaces #t)
(define hp0-type "under")
(define hp0-font mincho-font)
(define hp0-posture 'upright)
(define hp0-structure 'solid)
(define hp0-weight 'medium)
(define hp0-before "")
(define hp0-after "")
(define hp1-type "sequence")
(define hp1-font gothic-font)
(define hp1-posture 'upright)
(define hp1-structure 'solid)
(define hp1-weight 'medium)
(define hp1-before "")
(define hp1-after "")
(define hp2-type "sequence")
(define hp2-font mincho-font)
(define hp2-posture 'italic)
(define hp2-structure 'solid)
(define hp2-weight 'medium)
(define hp2-before "")
(define hp2-after "")
(define hp3-type "under")
(define hp3-font gothic-font)
(define hp3-posture 'upright)
(define hp3-structure 'solid)
(define hp3-weight 'medium)
(define hp3-before "")
(define hp3-after "")
(define hp4-type "under")
(define hp4-font gothic-font)
(define hp4-posture 'italic)
(define hp4-structure 'solid)
(define hp4-weight 'medium)
(define hp4-before "")
(define hp4-after "")
(define cit-type "sequence")
(define cit-font mincho-font)
(define cit-posture 'italic)
(define cit-structure 'solid)
(define cit-weight 'medium)
(define cit-before "“")
(define cit-after "”")
;
; 強調0のためのスタイル定義
;
(define hp0-style
(style
font-family-name: hp0-font ; フォントファミリ
font-weight: hp0-weight ; フォントの重み
font-posture: hp0-posture ; フォントの姿勢
font-structure: hp0-structure ; フォント構造
))
<!--
強調1のためのスタイル定義
-->
(define hp1-style
(style
font-family-name: hp1-font ; フォントファミリ
font-weight: hp1-weight ; フォントの重み
font-posture: hp1-posture ; フォントの姿勢
font-structure: hp1-structure ; フォント構造
))
;
; 強調2のためのスタイル定義
;
(define hp2-style
(style
font-family-name: hp2-font ; フォントファミリ
font-weight: hp2-weight ; フォントの重み
font-posture: hp2-posture ; フォントの姿勢
font-structure: hp2-structure ; フォントの構造
))
;
; 強調3のためのスタイル定義
;
(define hp3-style
(style
font-family-name: hp3-font ; フォントファミリ
font-weight: hp3-weight ; フォントの重み
font-posture: hp3-posture ; フォントの姿勢
font-structure: hp3-structure ; フォントの構造
))
;
; 強調4のためのスタイル定義
;
(define hp4-style
(style
font-family-name: hp4-font ; フォントファミリ
font-weight: hp4-weight ; フォントの重み
font-posture: hp4-posture ; フォントの姿勢
font-structure: hp4-structure ; フォントの構造
))
;
; Citのためのスタイル定義
;
(define cit-style
(style
font-family-name: cit-font ; フォントファミリ
font-weight: cit-weight ; フォントの重み
font-posture: cit-posture ; フォントの姿勢
font-structure: cit-structure ; フォントの構造
))
;
; 手続きmake-score-or-hp:
; 指定に従って、流し込みオブジェクトscore又は流し込みオブジェクトsequenceを生成する。
;
(define (make-score-or-hp type stl)
(case type
(("under") ; typeの値が"under"の場合
(make score ; 流し込みオブジェクトscoreを生成する
type: 'after ; scoreの型はアンダーライン
line-thickness: under-line-thickness ; アンダーラインの太さ
score-spaces?: under-score-spaces ; 空白にアンダーラインを引くか?
use: stl ; 指定されたスタイルの利用
(process-children) ; 子要素の処理結果を子とする
))
(("over") ; typeの値が"over"の場合
(make score ; 流し込みオブジェクトscoreを生成する
type: 'before ; scoreの型はオーバーライン
line-thickness: over-line-thickness ; オーバーラインの太さ
score-spaces?: over-score-spaces ; 空白にアンダーラインを引くか?
use: stl ; 指定されたスタイルの利用
(process-children) ; 子要素の処理結果を子とする
))
(("through") ; typeの値が"through"の場合
(make score ; 流し込みオブジェクトscoreを生成する
type: 'through ; scoreの型は抹消線
line-thickness: through-line-thickness ; 抹消線の太さ
score-spaces?: through-score-spaces ; 空白にアンダーラインを引くか?
use: stl ; 指定されたスタイルの利用
(process-children) ; 子要素の処理結果を子とする
))
(else ; typeの値が上記以外の場合
(make sequence ; 流し込みオブジェクトsequenceを生成する
use: stl ; 指定されたスタイルの利用
(process-children) ; 子要素の処理結果を子とする
))))
;
; make-emph: 強調した流し込みオブジェクトを生成する手続き
;
(define (make-emph type stl #!key (before "") (after ""))
(if (and (= 0 (string-length before)) (= 0 (string-length after)))
(make-score-or-hp type stl)
(make sequence
use: stl
(literal before)
(make-score-or-hp type stl)
(literal after) )))
;
; 要素hp1に関する規則
;
(element hp1
(make-emph hp1-type hp1-style before: hp1-before after: hp1-after))
;
; 要素hp2に関する規則
;
(element hp2
(make-emph hp2-type hp2-style before: hp2-before after: hp2-after))
;
; 要素hp3に関する規則
;
(element hp3
(make-emph hp3-type hp3-style before: hp3-before after: hp3-after))
;
; 要素hp4に関する規則
;
(element hp4
(make-emph hp4-type hp2-style before: hp4-before after: hp4-after))
;
; 要素citに関する規則
;
(element cit
(make-emph cit-type cit-style before: cit-before after: cit-after))
;
; <![ IGNORE [
; <!-- Includable Subelements -->
; <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) -->
; <!ELEMENT fig - - (figbody, (figcap, figdesc?)?) -(%i.float;) >
; <!ELEMENT figbody O O (figcomm?,(%s.zz;)*) -- Figure body -->
; <!ELEMENT figcomm - O %m.ph; -- Figure comment -->
; <!ELEMENT figcap - O %m.ph; -- Figure caption -->
; <!ELEMENT figdesc - O %m.pseq; -- Figure description -->
; ]]>
;
(define (fig-heading #!optional (nd (current-node)))
(string-append
"図"
(number->string (element-number nd)) ))
(define (figcap-heading #!optional (nd (current-node)))
(string-append
"図"
(number->string (element-number (parent))) ))
(element fig
(make display-group
space-before: default-line-spacing
space-after: default-line-spacing
(process-children)))
(element figbody (process-children))
(element figcap
(if (= (node-list-length (children (current-node))) 0)
(empty-sosofo)
(make paragraph
start-indent: (* text-size 4)
end-indent: (* text-size 4)
quadding: 'center
use: default-paragraph-style
(literal (fig-heading))
(literal "\colon;\space;")
(process-children) )))
(element figdesc
(make paragraph
start-indent: (* text-size 4)
end-indent: (* text-size 4)
use: default-paragraph-style
(process-children)))
(define fn-heading-font gothic-font)
(define fn-heading-weight 'medium)
(define fn-heading-posture 'upright)
(define fn-heading-structure 'solid)
(define fn-heading-style
(style
font-family-name: fn-heading-font ; フォントファミリ
font-weight: fn-heading-weight ; フォントの重み
font-posture: fn-heading-posture ; フォントの姿勢
font-structure: fn-heading-structure ; フォント構造
))
(define (fn-heading #!optional (nd (current-node)))
(string-append
"注"
(count-notes "COM") ))
(element fn
(make paragraph
start-indent: (* text-size 2)
use: default-paragraph-style
(make sequence
use: fn-heading-style
(literal (fn-heading))
(literal "\colon; "))
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT form - - ((%s.zz;|fillin)*) -- Form -->
; <!ELEMENT fillin - - (item?,unit?,subitem*)
; -- Question to fill in -->
; <!ELEMENT item - O (%m.ph;) -(fillin) -- item in fillin -->
; <!ELEMENT unit - O (%m.ph;) -(fillin) -- unit of item -->
; <!ELEMENT subitem - O (%m.ph;) -(fillin) -- subitem in fillin -->
; ]]>
;
(element form (process-children))
(element fillin
(make paragraph
start-indent: (* text-size (count-nesting-level (current-node)))
end-indent: (* text-size (count-nesting-level (current-node)))
use: default-paragraph-style
(process-children)
(make line-field
field-width: 50mm
field-align: 'start
writing-mode: 'left-to-right
inhibit-line-breaks?: #t
break-before-priority: 0
break-after-priority: 100
use: default-paragraph-style
inline-space-space: (inline-space 50mm min: 40mm max: 50mm)
(literal "[ ]") )))
(element (fillin item)
(make sequence
font-family-name: gothic-font
font-name: gothic-font
(process-children) ))
(element (fillin unit)
(make sequence
font-family-name: gothic-font
font-name: gothic-font
(literal "(")
(process-children)
(literal ")") ))
(element (fillin subitem) (process-children))
;
; <![ IGNORE [
; <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) -->
; <!ELEMENT compexp - - ((comp,exp)+) --Explanation of components-->
; <!ELEMENT comp - O (#PCDATA) -- Component -->
; <!ELEMENT exp - O %m.pseq; -- Explanation -->
; ]]>
;
(element compexp
(make paragraph
start-indent: (* text-size 4)
end-indent: (* text-size 4)
use: default-paragraph-style
(process-children) ))
(element comp
(make line-field
field-width: 50mm
field-align: 'start
writing-mode: 'left-to-right
break-before-priority: 100
break-after-priority: 0
escapement-space-after: (inline-space text-size min: text-size max: (* text-size 4))
use: default-paragraph-style
(literal "\bullet")
(process-children) ))
(element (comexp exp)
(make line-field
field-width: 100mm
field-align: 'start
writing-mode: 'left-to-right
break-before-priority: 0
break-after-priority: 100
use: default-paragraph-style
(process-children) ))
;
; <![ IGNORE [
; <!-- ELEMENTS MIN CONTENT (EXCEPTIONS) -->
; <!ELEMENT alterns - - ((cond?,altern?)+) -- alternatives -->
; <!ELEMENT cond - O %m.pseq; -- condition for alternative -->
; <!ELEMENT altern - O %m.pseq; -- text of alternative -->
; <!ATTLIST cond id ID #IMPLIED
; label CDATA #IMPLIED >
; <!ATTLIST altern refid IDREF #IMPLIED >
; ]]>
;
(element alterns
(make paragraph
start-indent: (* text-size 4)
end-indent: (* text-size 4)
use: default-paragraph-style
(process-children) ))
(element "cond"
(make line-field
field-width: 50mm
field-align: 'start
writing-mode: 'left-to-right
break-before-priority: 100
break-after-priority: 0
escapement-space-after: (inline-space text-size min: text-size max: (* text-size 4))
use: default-paragraph-style
(literal "・")
(process-children) ))
(element altern
(make line-field
field-width: 100mm
field-align: 'start
writing-mode: 'left-to-right
break-before-priority: 0
break-after-priority: 100
use: default-paragraph-style
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT tab - - (tabcap?, tabdesc?, tabcomm?, tabmat,
; (%s.zz;)*) -(%i.float;) >
; <!ATTLIST tab id ID #IMPLIED
; width CDATA page
; place (top|fixed|bottom) top
; align (left|center|right) center
; type (tab|chart|table|form|listing)
; tab
; number CDATA #IMPLIED >
; ]]>
;
(define (table-heading #!optional (nd (current-node)))
(string-append
"表"
(number->string (element-number)) ))
(element tab
(make display-group
keep: 'page
position-preference:
(case (attribute-string "place")
(("TOP" "top") 'top)
(("BOTTOM" "bottom") 'bottom)
(else #f) )
display-alignment:
(case (attribute-string "align")
(("LEFT" "left") 'start)
(("CENTER""center") 'center)
(("RIGHT" "right") 'end) )
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT tabcap - O %m.ph; -- Table caption -->
; <!ELEMENT tabdesc - O %m.pseq; -- Table description -->
; <!ELEMENT tabcomm - O %m.ph; -- Table comment -->
; ]]>
;
(element tabcap
(make paragraph
font-size: smaller-size
start-indent: (* text-size 4)
end-indent: (* text-size 4)
quadding: 'center
keep-with-next?: #t
space-before: (display-space text-size priority: 100)
space-before: (display-space 0pt priority: 100)
use: default-paragraph-style
(literal (table-heading))
(literal ": ")
(process-children)))
(element tabdesc
(make paragraph
font-size: smaller-size
start-indent: (* text-size 4)
end-indent: (* text-size 4)
keep-with-next?: #t
use: default-paragraph-style
(process-children) ))
(element tabcomm
(make paragraph
font-size: smaller-size
start-indent: (* text-size 4)
end-indent: (* text-size 4)
keep-with-next?: #t
use: default-paragraph-style
(literal "注: ")
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT tabmat - - (tabhead?, tabfoot?, tabbody)
; -(%i.float;|tabmat) -- Table matter -->
; <!ATTLIST tabmat rotate (0|90|180|270) 0
; width CDATA #IMPLIED
; compact (compact) #IMPLIED
; pointsz (6|7|8|9|10|11|12|14|16|18|20) %tab.pz;
; trules CDATA "T B L R"
; domains NMTOKENS none
; -- attributes specifying defaults for lower levels --
; gridx CDATA "*"
; gridy CDATA "*"
; arrange CDATA "none"
; rrules CDATA "T B L R"
; crules CDATA "T B L R"
; cvalign (T|C|B) "T"
; caligns CDATA "L"
; calignps CDATA "-"
; >
; ]]>
;
(element tabmat
(make table
line-thickness: 2pt
table-border: #t
space-before: (display-space text-size priority: 50)
space-after: (display-space text-size priority: 100)
font-size:
(if (attribute-string "pointsz")
(* 1pt (string->number (attribute-string "pointsz")))
smaller-size)
(make table-part
(process-children) )))
;
; <![ IGNORE [
; <!ELEMENT (tabhead|tabfoot) - O (arow) -- header/footer -->
;
; <!ATTLIST tabhead headhi (0|1|2|3) %tab.hhi;
; >
; ]]>
;
(element tabhead
(make sequence
font-size: (if (attribute-string "pointsz")
(* 1pt (string->number (attribute-string "pointsz")))
smaller-size)
label: 'header
(process-children) ))
(element tabfoot
(make sequence
font-size: (if (attribute-string "pointsz")
(* 1pt (string->number (attribute-string "pointsz")))
smaller-size)
label: 'footer
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT tabbody - O (arow+) --Body of tabular material -->
;
; <!ATTLIST tabbody -- brules CDATA "T B L R" --
; -- attributes specifying defaults for lower levels --
; gridx CDATA #IMPLIED
; gridy CDATA #IMPLIED
; arrange CDATA #IMPLIED
; rrules CDATA #IMPLIED
; crules CDATA #IMPLIED
; cvalign (T|C|B) #IMPLIED
; caligns CDATA #IMPLIED
; calignps CDATA #IMPLIED
; >
; ]]>
;
(element tabbody
(make sequence
font-size: (if (attribute-string "pointsz")
(* 1pt (string->number (attribute-string "pointsz")))
smaller-size)
table-border: #t
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT arow - O (c+) -- Arranged row -->
;
; <!ATTLIST arow pointsz (6|7|8|9|10|11|12|14|16|18|20) #IMPLIED
; split (yes|no) no
; gridx CDATA #IMPLIED
; gridy CDATA #IMPLIED
; arrange CDATA #IMPLIED
; rrules CDATA #IMPLIED
; -- attributes specifying defaults for lower levels --
; crules CDATA #IMPLIED
; cvalign (T|C|B) #IMPLIED
; caligns CDATA #IMPLIED
; calignps CDATA #IMPLIED
; >
; ]]>
;
(element arow
(make table-row
font-size: (if (attribute-string "pointsz")
(* 1pt (string->number (attribute-string "pointsz")))
smaller-size)
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT c - O (sc+) -- Table matter cell -->
;
; <!ATTLIST c nr NUTOKEN #IMPLIED
; pointsz (6|7|8|9|10|11|12|14|16|18|20) #IMPLIED
; type (head|body) body
; rotate (0|90|180|270) 0
; crules CDATA #IMPLIED
; cvalign (T|C|B) #IMPLIED
; calign CDATA #IMPLIED
; calignp CDATA #IMPLIED
; domain NMTOKEN "none"
; >
; ]]>
;
(element c
(make table-cell
font-size: (if (attribute-string "pointsz")
(* 1pt (string->number (attribute-string "pointsz")))
smaller-size)
cell-before-row-margin: (/ (inherited-font-size) 2)
cell-after-row-margin: (/ (inherited-font-size) 2)
cell-before-column-margin: (/ (inherited-font-size) 2)
cell-after-column-margin: (/ (inherited-font-size) 2)
cell-row-alignment: 'start
line-thickness: 1pt
cell-before-row-border: #t
cell-after-row-border: #t
cell-before-column-border: #t
cell-after-column-border: #t
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT sc O O (#PCDATA|hrule|%s.zz;|%p.zz.ph;)* +(tn)
; --Table matter sub-cell -->
; ]]>
;
(element sc (process-children))
;
; <![ IGNORE [
; <!ELEMENT tn - - %m.pseq; -- Tablenote -->
;
; <!ATTLIST tn id ID #IMPLIED>
; ]]>
;
(element tn
(make paragraph
font-size: (* 0.7 (inherited-font-size))
start-indent: (* 0.7 (inherited-font-size))
use: default-paragraph-style
(literal "注")
(process-children) ))
;
; <![ IGNORE [
; <!ELEMENT toc - O EMPTY -- 目次(自動生成) -->
; <!ATTLIST toc level NUMBER 1
; levela NUMBER #IMPLIED>
; ]]>
;
(define toc-entries-list '(
("JFOREWORD" "GENSEC" "SCOPESEC" "SCOPE" "CONF" "REFS" "DEFS" "SYMABB" "SYMS"
"ANNEXN" "ANNEXI" "TUTORIAL")
("H1")
("H2")
("H3")
("H4")
("H5")
("H6") ))
(define (toc-entries
#!optional
(n (case (gi (current-node))
(("ANNEXN" "ANNEXI" "TUTORIAL")
(string->number
(attribute-string+default
"LEVELA"
"3"
(node-at-location '("standjis" "frontm" "toc")) )))
(else
(string->number
(attribute-string+default
"LEVEL"
"3"
(node-at-location '("STANDJIS" "FRONTM" "TOC")) ))))))
(cond
((<= n 0) '())
(else (append (list-ref toc-entries-list n) (toc-entries (- n 1)))) ))
(define (toc-entry entry-string #!optional (nd (current-node)))
(make display-group
(make paragraph
start-indent: (* text-size 4)
first-line-start-indent: (* text-size 2)
quadding: 'start
use: h2t-style
(let ((number (section-number nd)))
(if (> (string-length number) 0)
(literal (string-append number "\space;"))
(empty-sosofo) ))
(literal entry-string)
(make leader (literal "\full-stop;"))
;; Works Only on Jade !!!
(current-node-page-number-sosofo) )
(apply process-matching-children (toc-entries) )))
(define (title-string)
(data
(select-elements (children (current-node))
(string-append (gi (current-node)) "T") )))
(mode making-toc
(default (empty-sosofo))
(element standjis (process-children))
(element frontm (process-children))
(element body (process-children))
(element backm (process-children))
(element JFOREWORD (toc-entry "序文"))
(element INTRO (toc-entry "導入"))
(element SCOPESEC (toc-entry "適用範囲"))
(element SCOPE (toc-entry "適用範囲"))
(element CONF (toc-entry "適合性"))
(element REFS (toc-entry "参照規格"))
(element DEFS (toc-entry "定義"))
(element SYMABB (toc-entry "略語"))
(element SYMS (toc-entry "記号"))
(element H1 (toc-entry (title-string)))
(element H2 (toc-entry (title-string)))
(element H3 (toc-entry (title-string)))
(element H4 (toc-entry (title-string)))
(element H5 (toc-entry (title-string)))
(element H6 (toc-entry (title-string)))
(element ANNEXN
(toc-entry
(string-append (annex-heading) "\colon;" "(規定)" )))
(element ANNEXI
(toc-entry
(string-append (annex-heading) "\colon;" "(参考)" )))
(element TUTORIAL (toc-entry "解説"))
)
(element toc
(make display-group
(make paragraph
break-before: 'page
font-family-name: gothic-font
font-posture: 'upright
font-size: text-size
line-spacing: default-line-spacing
start-indent: 0pt
quadding: 'start
keep-with-next?: #t
(literal "目次") )
(with-mode making-toc
(process-node-at-location '("standjis")) )))
<![ IGNORE [
<!ENTITY % p.rf.ph "hdref|figref|tabref|rtref|atref"
-- Reference phrases -->
<!ENTITY % p.rf.d "fnref|noteref|liref|iref|bibref|tnref|dfref|xmpref"
-- References (empty) -->
<!ELEMENT (%p.rf.ph;) - O %m.ph; -- Reference phrases -->
<!ELEMENT (%p.rf.d;) - O EMPTY -- Generated references -->
<!ATTLIST (%p.rf.ph;) refid %idrefs #CONREF
initial (uc|lc) lc
boolean (and|or) and
page (yes|no) no >
]]>
(mode refs
(default (empty-sosofo))
(element SECTION (literal (section-number)))
(element GENSEC (literal (section-number)))
(element SCOPESEC (literal (section-number)))
(element SCOPE (literal (section-number)))
(element CONF (literal (section-number)))
(element SYMABB (literal (section-number)))
(element SYMS (literal (section-number)))
(element REFS (literal (section-number)))
(element DEFS (literal (section-number)))
(element H1 (literal (section-number)))
(element H2 (literal (section-number)))
(element H3 (literal (section-number)))
(element H4 (literal (section-number)))
(element H5 (literal (section-number)))
(element H6 (literal (section-number)))
(element P1
(literal
(section-number (node-list-last (select-elements (preced (current-node)) "H1"))) ))
(element P2
(literal (section-number (ancestor "H1"))) )
(element P3
(literal (section-number (ancestor "H2"))) )
(element P4
(literal (section-number (ancestor "H3"))) )
(element P5
(literal (section-number (ancestor "H4"))) )
(element P6
(literal (section-number (ancestor "H5"))) )
(element ANNEXN (literal (annex-heading)))
(element ANNEXI (literal (annex-heading)))
(element fig (literal (fig-heading (current-node))))
(element tab (literal (table-heading)))
(element fn (literal (fn-heading)) )
(element note (literal (note-heading)))
(element li (literal (li-heading)))
(element dt (process-children))
(element dth (process-children))
(element (dt p) (process-children))
(element (dth p) (process-children))
(element xmp (xmp-heading))
)
(define hdref-font mincho-font)
(define hdref-weight 'medium)
(define hdref-posture 'italic)
(define hdref-structure 'solid)
(define hdref-style
(style
font-family-name: hdref-font
font-weight: hdref-weight
font-posture: hdref-posture
font-structure: hdref-structure
))
(element hdref
(make sequence
use: hdref-style
(with-mode refs
(process-node-list
(element-with-id (attribute-string "refid")) ))))
(define figref-font gothic-font)
(define figref-weight 'medium)
(define figref-posture 'upright)
(define figref-structure 'solid)
(define figref-style
(style
font-family-name: figref-font
font-weight: figref-weight
font-posture: figref-posture
font-structure: figref-structure
))
(element figref
(make sequence
use: figref-style
(with-mode refs
(process-node-list
(element-with-id (attribute-string "refid")) ))))
(define tabref-font mincho-font)
(define tabref-weight 'medium)
(define tabref-posture 'italic)
(define tabref-structure 'solid)
(define tabref-style
(style
font-family-name: tabref-font
font-weight: tabref-weight
font-posture: tabref-posture
font-structure: tabref-structure
))
(element tabref
(make sequence
use: tabref-style
(with-mode refs
(process-node-list
(element-with-id (attribute-string "refid")) ))))
(define fnref-font mincho-font)
(define fnref-weight 'medium)
(define fnref-posture 'italic)
(define fnref-structure 'solid)
(define fnref-style
(style
font-family-name: fnref-font
font-weight: fnref-weight
font-posture: fnref-posture
font-structure: fnref-structure
))
(element fnref
(make sequence
use: fnref-style
(with-mode refs
(process-node-list
(element-with-id (attribute-string "refid")) ))))
(define noteref-font mincho-font)
(define noteref-weight 'medium)
(define noteref-posture 'italic)
(define noteref-structure 'solid)
(define noteref-style
(style
font-family-name: noteref-font
font-weight: noteref-weight
font-posture: noteref-posture
font-structure: noteref-structure
))
(element noteref
(make sequence
use: noteref-style
(with-mode refs
(process-node-list
(element-with-id (attribute-string "refid")) ))))
(define tnref-font mincho-font)
(define tnref-weight 'medium)
(define tnref-posture 'italic)
(define tnref-structure 'solid)
(define tnref-style
(style
font-family-name: tnref-font
font-weight: tnref-weight
font-posture: tnref-posture
font-structure: tnref-structure
))
(element tnref
(make sequence
use: tnref-style
(with-mode refs
(process-node-list
(element-with-id (attribute-string "refid")) ))))
(define liref-font mincho-font)
(define liref-weight 'medium)
(define liref-posture 'italic)
(define liref-structure 'solid)
(define liref-style
(style
font-family-name: liref-font
font-weight: liref-weight
font-posture: liref-posture
font-structure: liref-structure
))
(element liref
(make sequence
use: liref-style
(with-mode refs
(process-node-list
(element-with-id (attribute-string "refid")) ))))
(define xmpref-font mincho-font)
(define xmpref-weight 'medium)
(define xmpref-posture 'italic)
(define xmpref-structure 'solid)
(define xmpref-style
(style
font-family-name: xmpref-font
font-weight: xmpref-weight
font-posture: xmpref-posture
font-structure: xmpref-structure
))
(element xmpref
(make sequence
use: xmpref-style
(with-mode refs
(process-node-list
(element-with-id (attribute-string "refid")) ))))