Current File : //usr/share/sgml/docbook/dsssl-stylesheets-1.79/print/dbgloss.dsl |
;; $Id: dbgloss.dsl,v 1.4 2003/01/15 08:24:23 adicarlo Exp $
;;
;; This file is part of the Modular DocBook Stylesheet distribution.
;; See ../README or http://docbook.sourceforge.net/projects/dsssl/
;;
;; ========================= GLOSSARY ELEMENTS ==========================
(element glossary ($component$))
(element (article glossary) ($section$)) ;; this is a special case
(element (glossary title) (empty-sosofo))
(element glossdiv ($section$))
(element (glossdiv title) (empty-sosofo))
(element glosslist ($block-container$))
(element glossentry (process-children))
;; a glossentry glossterm
(element (glossentry glossterm) ($lowtitle$ 3 2))
(element (glossdiv glossentry glossterm) ($lowtitle$ 3 3))
(element (glossentry acronym) (empty-sosofo))
(element (glossentry abbrev) (empty-sosofo))
(element glossdef ($indent-para-container$))
(element glosssee ($italic-seq$))
(element (glossentry glosssee)
(let ((otherterm (attribute-string (normalize "otherterm"))))
(make paragraph
space-before: %para-sep%
space-after: %para-sep%
start-indent: (+ (inherited-start-indent) (* (ILSTEP) 2))
quadding: %default-quadding%
($italic-seq$ (literal (gentext-element-name (current-node))
(gentext-label-title-sep (gi))))
(if otherterm
(make link
destination: (node-list-address (element-with-id otherterm))
(with-mode otherterm
(process-element-with-id otherterm)))
(process-children)))))
;; When we hit the first GLOSSSEEALSO, process all of them as a node-list
(element glossseealso
(if (first-sibling?)
(make paragraph
($italic-seq$ (literal (gentext-element-name (current-node))
(gentext-label-title-sep (gi))))
(with-mode glossseealso
(process-node-list
(select-elements (children (parent)) '(glossseealso))))
(literal "."))
(empty-sosofo)))
(mode glossseealso
(element glossseealso
(let ((otherterm (attribute-string (normalize "otherterm"))))
(make sequence
(if (first-sibling?)
(empty-sosofo)
($italic-seq$ (literal ", ")))
(if otherterm ;; but this should be required...
(make link
destination: (node-list-address (element-with-id otherterm))
(with-mode otherterm
(process-element-with-id otherterm)))
(process-children)))))
)
;; This is referenced within the GLOSSSEE and GLOSSSEEALSO element
;; construction expressions. The OTHERTERM attributes on GLOSSSEE and
;; GLOSSSEEALSO (should) refer to GLOSSENTRY elements but we're only
;; interested in the text within the GLOSSTERM. Discard the revision
;; history and the definition from the referenced term.
(mode otherterm
(element glossentry
(process-children))
(element glossterm
(process-children))
(element glossdef
(empty-sosofo))
(element revhistory
(empty-sosofo))
(element glosssee
(empty-sosofo))
(element (glossentry acronym)
(empty-sosofo))
(element (glossentry abbrev)
(empty-sosofo)))
;; an inline gloss term
(element glossterm
(let* ((linkend (attribute-string (normalize "linkend"))))
(if linkend
(make link
destination: (node-list-address (element-with-id linkend))
($italic-seq$))
($italic-seq$))))
;; a first glossterm
(element firstterm
(let* ((linkend (attribute-string (normalize "linkend")))
(sosofo (if linkend
(make link
destination: (node-list-address
(element-with-id linkend))
($italic-seq$))
($italic-seq$))))
(if firstterm-bold
(make sequence
font-weight: 'bold
sosofo)
sosofo)))