mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-27 02:11:37 +01:00
206 lines
6.4 KiB
Plaintext
Executable File
206 lines
6.4 KiB
Plaintext
Executable File
;; $Id$
|
|
;;
|
|
;; This file is part of the Modular DocBook Stylesheet distribution.
|
|
;; See ../README or http://www.berkshire.net/~norm/dsssl/
|
|
;;
|
|
|
|
;; ============================== SECTIONS ==============================
|
|
|
|
(define (SECTLEVEL #!optional (sect (current-node)))
|
|
(section-level-by-node #f sect))
|
|
|
|
;; BRIDGEHEAD isn't a proper section, but appears to be a section title
|
|
(element bridgehead
|
|
(let* ((renderas (attribute-string "renderas"))
|
|
;; the apparent section level
|
|
(hlevel
|
|
;; if not real section level, then get the apparent level
|
|
;; from "renderas"
|
|
(if renderas
|
|
(section-level-by-gi #f (normalize renderas))
|
|
;; else use the real level
|
|
(SECTLEVEL)))
|
|
(hs (HSIZE (- 4 hlevel))))
|
|
(make paragraph
|
|
font-family-name: %title-font-family%
|
|
font-weight: (if (< hlevel 5) 'bold 'medium)
|
|
font-posture: (if (< hlevel 5) 'upright 'italic)
|
|
font-size: hs
|
|
line-spacing: (* hs %line-spacing-factor%)
|
|
space-before: (* hs %head-before-factor%)
|
|
space-after: (* hs %head-after-factor%)
|
|
start-indent: (if (< hlevel 3)
|
|
0pt
|
|
%body-start-indent%)
|
|
first-line-start-indent: 0pt
|
|
quadding: %section-title-quadding%
|
|
keep-with-next?: #t
|
|
(process-children))))
|
|
|
|
(define ($section$)
|
|
(if (node-list=? (current-node) (sgml-root-element))
|
|
(make simple-page-sequence
|
|
page-n-columns: %page-n-columns%
|
|
page-number-restart?: (or %page-number-restart%
|
|
(book-start?)
|
|
(first-chapter?))
|
|
page-number-format: ($page-number-format$)
|
|
use: default-text-style
|
|
left-header: ($left-header$)
|
|
center-header: ($center-header$)
|
|
right-header: ($right-header$)
|
|
left-footer: ($left-footer$)
|
|
center-footer: ($center-footer$)
|
|
right-footer: ($right-footer$)
|
|
start-indent: %body-start-indent%
|
|
input-whitespace-treatment: 'collapse
|
|
quadding: %default-quadding%
|
|
(make sequence
|
|
($section-title$)
|
|
(process-children)))
|
|
(make display-group
|
|
space-before: %block-sep%
|
|
space-after: %block-sep%
|
|
start-indent: %body-start-indent%
|
|
(make sequence
|
|
($section-title$)
|
|
(process-children)))))
|
|
|
|
(define ($section-title$)
|
|
(let* ((sect (current-node))
|
|
(info (info-element))
|
|
(exp-children (if (node-list-empty? info)
|
|
(empty-node-list)
|
|
(expand-children (children info)
|
|
(list (normalize "bookbiblio")
|
|
(normalize "bibliomisc")
|
|
(normalize "biblioset")))))
|
|
(parent-titles (select-elements (children sect) (normalize "title")))
|
|
(info-titles (select-elements exp-children (normalize "title")))
|
|
(titles (if (node-list-empty? parent-titles)
|
|
info-titles
|
|
parent-titles))
|
|
(subtitles (select-elements exp-children (normalize "subtitle")))
|
|
(renderas (inherited-attribute-string (normalize "renderas") sect))
|
|
;; the apparent section level
|
|
(hlevel
|
|
;; if not real section level, then get the apparent level
|
|
;; from "renderas"
|
|
(if renderas
|
|
(section-level-by-gi #f (normalize renderas))
|
|
;; else use the real level
|
|
(SECTLEVEL)))
|
|
(hs (HSIZE (- 4 hlevel))))
|
|
(make sequence
|
|
(make paragraph
|
|
font-family-name: %title-font-family%
|
|
font-weight: (if (< hlevel 5) 'bold 'medium)
|
|
font-posture: (if (< hlevel 5) 'upright 'italic)
|
|
font-size: hs
|
|
line-spacing: (* hs %line-spacing-factor%)
|
|
space-before: (* hs %head-before-factor%)
|
|
space-after: (if (node-list-empty? subtitles)
|
|
(* hs %head-after-factor%)
|
|
0pt)
|
|
start-indent: (if (or (>= hlevel 3)
|
|
(member (gi) (list (normalize "refsynopsisdiv")
|
|
(normalize "refsect1")
|
|
(normalize "refsect2")
|
|
(normalize "refsect3"))))
|
|
%body-start-indent%
|
|
0pt)
|
|
first-line-start-indent: 0pt
|
|
quadding: %section-title-quadding%
|
|
keep-with-next?: #t
|
|
heading-level: (if %generate-heading-level% hlevel 0)
|
|
;; SimpleSects are never AUTO numbered...they aren't hierarchical
|
|
(if (string=? (element-label (current-node)) "")
|
|
(empty-sosofo)
|
|
(literal (element-label (current-node))
|
|
(gentext-label-title-sep (gi sect))))
|
|
(element-title-sosofo (current-node)))
|
|
(with-mode section-title-mode
|
|
(process-node-list subtitles))
|
|
($proc-section-info$ info))))
|
|
|
|
(mode section-title-mode
|
|
(element subtitle
|
|
(let* ((sect (parent (parent (current-node)))) ;; parent=>sect*info
|
|
(renderas (inherited-attribute-string "renderas" sect))
|
|
;; the apparent section level
|
|
(hlevel
|
|
;; if not real section level, then get the apparent level
|
|
;; from "renderas"
|
|
(if renderas
|
|
(section-level-by-gi #f (normalize renderas))
|
|
;; else use the real level
|
|
(SECTLEVEL)))
|
|
(hs (HSIZE (- 3 hlevel)))) ;; one smaller than the title...
|
|
(make paragraph
|
|
font-family-name: %title-font-family%
|
|
font-weight: (if (< hlevel 5) 'bold 'medium)
|
|
font-posture: (if (< hlevel 5) 'upright 'italic)
|
|
font-size: hs
|
|
line-spacing: (* hs %line-spacing-factor%)
|
|
space-before: 0pt
|
|
space-after: (* hs %head-after-factor%)
|
|
start-indent:
|
|
(if (< hlevel 3)
|
|
0pt
|
|
%body-start-indent%)
|
|
first-line-start-indent: 0pt
|
|
quadding: %section-subtitle-quadding%
|
|
keep-with-next?: #t
|
|
(process-children))))
|
|
)
|
|
|
|
(define ($proc-section-info$ info)
|
|
(cond ((equal? (gi) (normalize "sect1"))
|
|
($sect1-info$ info))
|
|
((equal? (gi) (normalize "sect2"))
|
|
($sect2-info$ info))
|
|
((equal? (gi) (normalize "sect3"))
|
|
($sect3-info$ info))
|
|
((equal? (gi) (normalize "sect4"))
|
|
($sect4-info$ info))
|
|
((equal? (gi) (normalize "sect5"))
|
|
($sect5-info$ info))
|
|
((equal? (gi) (normalize "section"))
|
|
($section-info$ info))
|
|
((equal? (gi) (normalize "refsect1"))
|
|
($refsect1-info$ info))
|
|
((equal? (gi) (normalize "refsect2"))
|
|
($refsect2-info$ info))
|
|
((equal? (gi) (normalize "refsect3"))
|
|
($refsect3-info$ info))
|
|
(else (empty-sosofo))))
|
|
|
|
(define ($sect1-info$ info) (empty-sosofo))
|
|
(define ($sect2-info$ info) (empty-sosofo))
|
|
(define ($sect3-info$ info) (empty-sosofo))
|
|
(define ($sect4-info$ info) (empty-sosofo))
|
|
(define ($sect5-info$ info) (empty-sosofo))
|
|
(define ($section-info$ info) (empty-sosofo))
|
|
(define ($refsect1-info$ info) (empty-sosofo))
|
|
(define ($refsect2-info$ info) (empty-sosofo))
|
|
(define ($refsect3-info$ info) (empty-sosofo))
|
|
|
|
(element sect1 ($section$))
|
|
(element (sect1 title) (empty-sosofo))
|
|
|
|
(element sect2 ($section$))
|
|
(element (sect2 title) (empty-sosofo))
|
|
|
|
(element sect3 ($section$))
|
|
(element (sect3 title) (empty-sosofo))
|
|
|
|
(element sect4 ($section$))
|
|
(element (sect4 title) (empty-sosofo))
|
|
|
|
(element sect5 ($section$))
|
|
(element (sect5 title) (empty-sosofo))
|
|
|
|
(element simplesect ($section$))
|
|
(element (simplesect title) (empty-sosofo))
|
|
|