directories for the localization. ($email-footer$) should be revisited later because it still involves both of its style (LI) and content (LD).
		
			
				
	
	
		
			346 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			346 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
<!-- $FreeBSD$ -->
 | 
						|
 | 
						|
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
 | 
						|
<!ENTITY % freebsd.l10n PUBLIC "-//FreeBSD//ENTITIES DocBook Language Specific Entities//EN">
 | 
						|
%freebsd.l10n;
 | 
						|
<!ENTITY % freebsd.l10n-common PUBLIC "-//FreeBSD//ENTITIES DocBook Language Neutral Entities//EN">
 | 
						|
%freebsd.l10n-common;
 | 
						|
 | 
						|
<!ENTITY % output.html  "IGNORE"> 
 | 
						|
<!ENTITY % output.print "IGNORE">
 | 
						|
]>
 | 
						|
 | 
						|
<style-sheet>
 | 
						|
  <style-specification>
 | 
						|
    <style-specification-body>
 | 
						|
 | 
						|
      (declare-flow-object-class formatting-instruction
 | 
						|
        "UNREGISTERED::James Clark//Flow Object Class::formatting-instruction")
 | 
						|
 | 
						|
      (define %section-autolabel%
 | 
						|
        #t)
 | 
						|
 | 
						|
      (define %label-preface-sections%
 | 
						|
        #f)
 | 
						|
 | 
						|
      (define %may-format-variablelist-as-table%
 | 
						|
        #f)
 | 
						|
 | 
						|
      (define %indent-programlisting-lines%
 | 
						|
        #f)
 | 
						|
 | 
						|
      (define %indent-screen-lines%
 | 
						|
        #f)
 | 
						|
 | 
						|
      (define (article-titlepage-recto-elements)
 | 
						|
        (list (normalize "title")
 | 
						|
              (normalize "subtitle")
 | 
						|
              (normalize "corpauthor")
 | 
						|
              (normalize "authorgroup")
 | 
						|
              (normalize "author")
 | 
						|
              (normalize "releaseinfo")
 | 
						|
              (normalize "copyright")
 | 
						|
              (normalize "pubdate")
 | 
						|
              (normalize "revhistory")
 | 
						|
              (normalize "legalnotice")
 | 
						|
              (normalize "abstract")))
 | 
						|
 | 
						|
      (define %admon-graphics%
 | 
						|
        ;; Use graphics in admonitions?
 | 
						|
        #f)
 | 
						|
 | 
						|
      (define %admon-graphics-path%
 | 
						|
        ;; Path to admonition images
 | 
						|
        "./imagelib/admon/")
 | 
						|
 | 
						|
      (define ($admon-graphic$ #!optional (nd (current-node)))
 | 
						|
        ;; Admonition graphic file
 | 
						|
        (string-append %admon-graphics-path% (case-fold-down (gi nd)) ".png"))
 | 
						|
 | 
						|
      (define %show-all-trademark-symbols%
 | 
						|
        ;; Show all the trademark symbols, not just the required
 | 
						|
        ;; symbols.
 | 
						|
        #f)
 | 
						|
 | 
						|
      <!-- Slightly deeper customisations -->
 | 
						|
 | 
						|
      <!-- We would like the author attributions to show up in line
 | 
						|
           with the section they refer to.  Authors who made the same
 | 
						|
           contribution should be listed in a single <authorgroup> and
 | 
						|
           only one of the <author> elements should contain a <contrib>
 | 
						|
           element that describes what the whole authorgroup was
 | 
						|
           responsible for.  For example:
 | 
						|
 | 
						|
           <chapterinfo>
 | 
						|
             <authorgroup>
 | 
						|
               <author>
 | 
						|
                 <firstname>Bob</firstname>
 | 
						|
                 <surname>Jones</surname>
 | 
						|
                 <contrib>Contributed by </contrib>
 | 
						|
               </author>
 | 
						|
               <author>
 | 
						|
                 <firstname>Sarah</firstname>
 | 
						|
                 <surname>Lee</surname>
 | 
						|
               </author>
 | 
						|
             </authorgroup>
 | 
						|
           </chapterinfo>
 | 
						|
 | 
						|
           Would show up as "Contributed by Bob Jones and Sarah Lee".  Each
 | 
						|
           authorgroup shows up as a separate sentence. -->
 | 
						|
 | 
						|
 | 
						|
      (element chapterinfo
 | 
						|
        (process-children))
 | 
						|
      (element sect1info
 | 
						|
        (process-children))
 | 
						|
      (element sect2info
 | 
						|
        (process-children))
 | 
						|
      (element sect3info
 | 
						|
        (process-children))
 | 
						|
      (element sect4info
 | 
						|
        (process-children))
 | 
						|
      (element sect5info
 | 
						|
        (process-children))
 | 
						|
      (element (chapterinfo authorgroup author)
 | 
						|
        (literal (author-list-string)))
 | 
						|
      (element (sect1info authorgroup author)
 | 
						|
        (literal (author-list-string)))
 | 
						|
      (element (sect2info authorgroup author)
 | 
						|
        (literal (author-list-string)))
 | 
						|
      (element (sect3info authorgroup author)
 | 
						|
        (literal (author-list-string)))
 | 
						|
      (element (sect4info authorgroup author)
 | 
						|
        (literal (author-list-string)))
 | 
						|
      (element (sect5info authorgroup author)
 | 
						|
        (literal (author-list-string)))
 | 
						|
 | 
						|
      (define (custom-authorgroup)
 | 
						|
        ($italic-seq$
 | 
						|
          (make sequence
 | 
						|
            (process-node-list (select-elements (descendants (current-node))
 | 
						|
                                  (normalize "contrib")))
 | 
						|
            (process-children)
 | 
						|
            (literal ".  "))))
 | 
						|
 | 
						|
      (element (chapterinfo authorgroup)
 | 
						|
        (custom-authorgroup))
 | 
						|
      (element (sect1info authorgroup)
 | 
						|
        (custom-authorgroup))
 | 
						|
      (element (sect2info authorgroup)
 | 
						|
        (custom-authorgroup))
 | 
						|
      (element (sect3info authorgroup)
 | 
						|
        (custom-authorgroup))
 | 
						|
      (element (sect4info authorgroup)
 | 
						|
        (custom-authorgroup))
 | 
						|
      (element (sect5info authorgroup)
 | 
						|
        (custom-authorgroup))
 | 
						|
 | 
						|
      <!-- I want things marked up with 'sgmltag' eg.,
 | 
						|
 | 
						|
              <para>You can use <sgmltag>para</sgmltag> to indicate
 | 
						|
                paragraphs.</para>
 | 
						|
 | 
						|
           to automatically have the opening and closing braces inserted,
 | 
						|
           and it should be in a mono-spaced font. -->
 | 
						|
 | 
						|
      (element sgmltag ($mono-seq$
 | 
						|
          (make sequence
 | 
						|
            (literal "<")
 | 
						|
            (process-children)
 | 
						|
            (literal ">"))))
 | 
						|
 | 
						|
      <!-- Add double quotes around <errorname> text. -->
 | 
						|
 | 
						|
      (element errorname
 | 
						|
        (make sequence
 | 
						|
          <![ %output.html;  [ (literal "“") ]]>
 | 
						|
          ($mono-seq$ (process-children))
 | 
						|
          <![ %output.html;  [ (literal "”") ]]>
 | 
						|
          ))
 | 
						|
 | 
						|
      <!-- John Fieber's 'instant' translation specification had
 | 
						|
           '<command>' rendered in a mono-space font, and '<application>'
 | 
						|
           rendered in bold.
 | 
						|
 | 
						|
           Norm's stylesheet doesn't do this (although '<command>' is
 | 
						|
           rendered in bold).
 | 
						|
 | 
						|
           Configure the stylesheet to behave more like John's. -->
 | 
						|
 | 
						|
      (element command ($mono-seq$))
 | 
						|
      (element envar ($mono-seq$))
 | 
						|
 | 
						|
      <!-- Warnings and cautions are put in boxed tables to make them stand
 | 
						|
           out. The same effect can be better achieved using CSS or similar,
 | 
						|
           so have them treated the same as <important>, <note>, and <tip>
 | 
						|
      -->
 | 
						|
      (element warning ($admonition$))
 | 
						|
      (element (warning title) (empty-sosofo))
 | 
						|
      (element (warning para) ($admonpara$))
 | 
						|
      (element (warning simpara) ($admonpara$))
 | 
						|
      (element caution ($admonition$))
 | 
						|
      (element (caution title) (empty-sosofo))
 | 
						|
      (element (caution para) ($admonpara$))
 | 
						|
      (element (caution simpara) ($admonpara$))
 | 
						|
 | 
						|
      <!-- Tell the stylesheet about our local customisations -->
 | 
						|
 | 
						|
      (element hostid
 | 
						|
        (if %hyphenation%
 | 
						|
          (urlwrap)
 | 
						|
          ($mono-seq$)))
 | 
						|
      (element username ($mono-seq$))
 | 
						|
      (element groupname ($mono-seq$))
 | 
						|
      (element devicename ($mono-seq$))
 | 
						|
      (element maketarget ($mono-seq$))
 | 
						|
      (element makevar ($mono-seq$))
 | 
						|
 | 
						|
      <!-- Override generate-anchor.  This is used to generate a unique ID for
 | 
						|
           each element that can be linked to.  The element-id function calls
 | 
						|
           this one if there's no ID attribute that it can use.  Normally, we
 | 
						|
           would just use the current element number.  However, if it's a
 | 
						|
           a question then use the question's number, as determined by the
 | 
						|
           question-answer-label function.
 | 
						|
 | 
						|
           This generates anchors of the form "Qx.y.", where x.y is the
 | 
						|
           question label.  This will probably break if question-answer-label
 | 
						|
           is changed to generate something that might be the same for two
 | 
						|
           different questions (for example, if question numbering restarts
 | 
						|
           for each qandaset. -->
 | 
						|
      (define (generate-anchor #!optional (nd (current-node)))
 | 
						|
        (cond
 | 
						|
          ((equal? (gi nd) (normalize "question"))
 | 
						|
            (string-append "Q" (question-answer-label)))
 | 
						|
          (else
 | 
						|
            (string-append "AEN" (number->string (all-element-number nd))))))
 | 
						|
 | 
						|
      (define (xref-biblioentry target)
 | 
						|
        (let* ((abbrev (node-list-first
 | 
						|
                        (node-list-filter-out-pis (children target))))
 | 
						|
               (label  (attribute-string (normalize "xreflabel") target)))
 | 
						|
 | 
						|
          (if biblio-xref-title
 | 
						|
              (let* ((citetitles (select-elements (descendants target)
 | 
						|
                                                  (normalize "citetitle")))
 | 
						|
                     (titles     (select-elements (descendants target)
 | 
						|
                                                  (normalize "title")))
 | 
						|
                     (isbn       (select-elements (descendants target)
 | 
						|
                                                  (normalize "isbn")))
 | 
						|
                     (publisher  (select-elements (descendants target)
 | 
						|
                                                  (normalize "publishername")))
 | 
						|
                     (title      (if (node-list-empty? citetitles)
 | 
						|
                                     (node-list-first titles)
 | 
						|
                                     (node-list-first citetitles))))
 | 
						|
                (with-mode xref-title-mode
 | 
						|
                  (make sequence
 | 
						|
                    (process-node-list title))))
 | 
						|
              (if biblio-number
 | 
						|
                  (make sequence
 | 
						|
                    (literal "[" (number->string (bibentry-number target)) "]"))
 | 
						|
                  (if label
 | 
						|
                      (make sequence
 | 
						|
                        (literal "[" label "]"))
 | 
						|
                      (if (equal? (gi abbrev) (normalize "abbrev"))
 | 
						|
                          (make sequence
 | 
						|
                            (process-node-list abbrev))
 | 
						|
                          (make sequence
 | 
						|
                            (literal "[" (id target) "]"))))))))
 | 
						|
 | 
						|
       <!-- The (create-link) procedure should be used by all FreeBSD
 | 
						|
 	   stylesheets to create links.  It calls (can-link-here) to
 | 
						|
 	   determine whether it's okay to make a link in the current
 | 
						|
 	   position.
 | 
						|
 | 
						|
 	   This check is necessary because links aren't allowed in,
 | 
						|
 	   for example, <question> tags since the latter cause links
 | 
						|
 	   to be created by themselves.  Obviously, nested links lead
 | 
						|
 	   to all kinds of evil.  This normally wouldn't be a problem
 | 
						|
 	   since no one in their right mind will put a <ulink> or
 | 
						|
 	   <link> in a <question>, but it comes up when someone uses,
 | 
						|
 	   say, a man page entity (e.g., &man.ls.1;); the latter may
 | 
						|
 	   cause a link to be created, but its use inside a <question>
 | 
						|
 	   is perfectly legal.
 | 
						|
 | 
						|
 	   The (can-link-here) routine isn't perfect; in fact, it's a
 | 
						|
 	   hack and an ugly one at that.  Ideally, it would detect if
 | 
						|
 	   the currect output would wind up in an <a> tag and return
 | 
						|
 	   #f if that's the case.  Slightly less ideally it would
 | 
						|
 	   check the current mode and return #f if, say, we're
 | 
						|
 	   currently in TOC mode.  Right now, it makes a best guess
 | 
						|
 	   attempt at guessing which tags might cause links to be
 | 
						|
 	   generated.  -->
 | 
						|
      (define (can-link-here)
 | 
						|
 	(cond ((has-ancestor-member? (current-node)
 | 
						|
				     '("TITLE" "QUESTION")) #f)
 | 
						|
 	      (#t #t)))
 | 
						|
 | 
						|
      (define (create-link attrlist target)
 | 
						|
 	(if (can-link-here)
 | 
						|
 	    (make element gi: "A"
 | 
						|
 		  attributes: attrlist
 | 
						|
 		  target)
 | 
						|
	    target))
 | 
						|
 | 
						|
      ;; Standard boolean XNOR (NOT Exclusive OR).
 | 
						|
      (define (xnor x y)
 | 
						|
	(or (and x y)
 | 
						|
	    (and (not x) (not y))))
 | 
						|
 | 
						|
      ;; Standard boolean XOR (Exclusive OR).
 | 
						|
      (define (xor x y)
 | 
						|
	(not (xnor x y)))
 | 
						|
 | 
						|
      ;; Determine if a given node is in a title.
 | 
						|
      (define (is-in-title? node)
 | 
						|
	(has-ancestor-member? node (list (normalize "title"))))
 | 
						|
 | 
						|
      ;; Number of references to a trademark before the current
 | 
						|
      ;; reference in each chunk.  Trademarks in title tags, and
 | 
						|
      ;; trademarks in normal text (actually just text that is not in
 | 
						|
      ;; title tags) are counted separately.
 | 
						|
      (define ($chunk-trademark-number$ trademark)
 | 
						|
	(let* ((trademarks (select-elements
 | 
						|
			    (descendants (chunk-parent trademark))
 | 
						|
			    (normalize "trademark"))))
 | 
						|
	  (let loop ((nl trademarks) (num 1))
 | 
						|
	    (if (node-list-empty? nl)
 | 
						|
		num
 | 
						|
		(if (node-list=? (node-list-first nl) trademark)
 | 
						|
		    num
 | 
						|
		    (if (and (string=? (data trademark)
 | 
						|
				       (data (node-list-first nl)))
 | 
						|
			     (xnor (is-in-title? trademark)
 | 
						|
				   (is-in-title? (node-list-first nl))))
 | 
						|
			(loop (node-list-rest nl) (+ num 1))
 | 
						|
			(loop (node-list-rest nl) num)))))))
 | 
						|
 | 
						|
      ;; Determine if we should show a trademark symbol.  Either in
 | 
						|
      ;; first occurrence in the proper context, if the role
 | 
						|
      ;; attribute is set to force, or if %show-all-trademark-symbols%
 | 
						|
      ;; is set to true.
 | 
						|
      (define (show-tm-symbol? trademark)
 | 
						|
	(or %show-all-trademark-symbols%
 | 
						|
	    (= ($chunk-trademark-number$ trademark) 1)
 | 
						|
	    (equal? (attribute-string (normalize "role") trademark) "force")))
 | 
						|
 | 
						|
	(element (acronym remark)
 | 
						|
	  (let* ((role (attribute-string (normalize "role"))))
 | 
						|
	    (if (not (equal? role "acronym"))
 | 
						|
		($charseq$)
 | 
						|
		(empty-sosofo))))
 | 
						|
 | 
						|
      (define (local-en-label-title-sep)
 | 
						|
        (list
 | 
						|
          (list (normalize "warning")		": ")
 | 
						|
	  (list (normalize "caution")		": ")
 | 
						|
          (list (normalize "chapter")           "  ")
 | 
						|
          (list (normalize "sect1")             "  ")
 | 
						|
          (list (normalize "sect2")             "  ")
 | 
						|
          (list (normalize "sect3")             "  ")
 | 
						|
          (list (normalize "sect4")             "  ")
 | 
						|
          (list (normalize "sect5")             "  ")
 | 
						|
          ))
 | 
						|
 | 
						|
    </style-specification-body>
 | 
						|
  </style-specification>
 | 
						|
</style-sheet>
 |