📄 stylesheet.dsl
字号:
0pt) keep-with-next?: #t (process-children)))(define %varlistentry-indent% 2em)(element (varlistentry listitem) (make sequence start-indent: (+ (inherited-start-indent) %varlistentry-indent%) (process-children)));; Whitespace fixes for itemizedlists and orderedlists(define (process-listitem-content) (if (absolute-first-sibling?) (make sequence (process-children-trim)) (next-match)));; Default stylesheets format simplelists as tables. This spells;; trouble for Jade. So we just format them as plain lines.(define %simplelist-indent% 1em)(define (my-simplelist-vert members) (make display-group space-before: %para-sep% space-after: %para-sep% start-indent: (+ %simplelist-indent% (inherited-start-indent)) (process-children)))(element simplelist (let ((type (attribute-string (normalize "type"))) (cols (if (attribute-string (normalize "columns")) (if (> (string->number (attribute-string (normalize "columns"))) 0) (string->number (attribute-string (normalize "columns"))) 1) 1)) (members (select-elements (children (current-node)) (normalize "member")))) (cond ((equal? type (normalize "inline")) (if (equal? (gi (parent (current-node))) (normalize "para")) (process-children) (make paragraph space-before: %para-sep% space-after: %para-sep% start-indent: (inherited-start-indent)))) ((equal? type (normalize "vert")) (my-simplelist-vert members)) ((equal? type (normalize "horiz")) (simplelist-table 'row cols members))))) (element member (let ((type (inherited-attribute-string (normalize "type")))) (cond ((equal? type (normalize "inline")) (make sequence (process-children) (if (not (last-sibling?)) (literal ", ") (literal "")))) ((equal? type (normalize "vert")) (make paragraph space-before: 0pt space-after: 0pt)) ((equal? type (normalize "horiz")) (make paragraph quadding: 'start (process-children))))));; Jadetex doesn't handle links to the content of tables, so;; indexterms that point to table entries will go nowhere. We fix;; this by pointing the index entry to the table itself instead, which;; should be equally useful in practice.(define (find-parent-table nd) (let ((table (ancestor-member nd ($table-element-list$)))) (if (node-list-empty? table) nd table))) ;; (The function below overrides the one in print/dbindex.dsl.)(define (indexentry-link nd) (let* ((id (attribute-string (normalize "role") nd)) (prelim-target (find-indexterm id)) (target (find-parent-table prelim-target)) (preferred (not (node-list-empty? (select-elements (children (current-node)) (normalize "emphasis"))))) (sosofo (if (node-list-empty? target) (literal "?") (make link destination: (node-list-address target) (with-mode toc-page-number-mode (process-node-list target)))))) (if preferred (make sequence font-weight: 'bold sosofo) sosofo)));; By default, the part and reference title pages get wrong page;; numbers: The first title page gets roman numerals carried over from;; preface/toc -- we want arabic numerals. We also need to make sure;; that page-number-restart is set of #f explicitly, because otherwise;; it will carry over from the previous component, which is not good.;;;; (This looks worse than it is. It's copied from print/dbttlpg.dsl;; and common/dbcommon.dsl and modified in minor detail.)(define (first-part?) (let* ((book (ancestor (normalize "book"))) (nd (ancestor-member (current-node) (append (component-element-list) (division-element-list)))) (bookch (children book))) (let loop ((nl bookch)) (if (node-list-empty? nl) #f (if (equal? (gi (node-list-first nl)) (normalize "part")) (if (node-list=? (node-list-first nl) nd) #t #f) (loop (node-list-rest nl)))))))(define (first-reference?) (let* ((book (ancestor (normalize "book"))) (nd (ancestor-member (current-node) (append (component-element-list) (division-element-list)))) (bookch (children book))) (let loop ((nl bookch)) (if (node-list-empty? nl) #f (if (equal? (gi (node-list-first nl)) (normalize "reference")) (if (node-list=? (node-list-first nl) nd) #t #f) (loop (node-list-rest nl)))))))(define (part-titlepage elements #!optional (side 'recto)) (let ((nodelist (titlepage-nodelist (if (equal? side 'recto) (reference-titlepage-recto-elements) (reference-titlepage-verso-elements)) elements)) ;; partintro is a special case... (partintro (node-list-first (node-list-filter-by-gi elements (list (normalize "partintro")))))) (if (part-titlepage-content? elements side) (make simple-page-sequence page-n-columns: %titlepage-n-columns% ;; Make sure that page number format is correct. page-number-format: ($page-number-format$) ;; Make sure that the page number is set to 1 if this is the ;; first part in the book page-number-restart?: (first-part?) input-whitespace-treatment: 'collapse use: default-text-style ;; This hack is required for the RTF backend. If an external-graphic ;; is the first thing on the page, RTF doesn't seem to do the right ;; thing (the graphic winds up on the baseline of the first line ;; of the page, left justified). This "one point rule" fixes ;; that problem. (make paragraph line-spacing: 1pt (literal "")) (let loop ((nl nodelist) (lastnode (empty-node-list))) (if (node-list-empty? nl) (empty-sosofo) (make sequence (if (or (node-list-empty? lastnode) (not (equal? (gi (node-list-first nl)) (gi lastnode)))) (part-titlepage-before (node-list-first nl) side) (empty-sosofo)) (cond ((equal? (gi (node-list-first nl)) (normalize "subtitle")) (part-titlepage-subtitle (node-list-first nl) side)) ((equal? (gi (node-list-first nl)) (normalize "title")) (part-titlepage-title (node-list-first nl) side)) (else (part-titlepage-default (node-list-first nl) side))) (loop (node-list-rest nl) (node-list-first nl))))) (if (and %generate-part-toc% %generate-part-toc-on-titlepage% (equal? side 'recto)) (make display-group (build-toc (current-node) (toc-depth (current-node)))) (empty-sosofo)) ;; PartIntro is a special case (if (and (equal? side 'recto) (not (node-list-empty? partintro)) %generate-partintro-on-titlepage%) ($process-partintro$ partintro #f) (empty-sosofo))) (empty-sosofo))))(define (reference-titlepage elements #!optional (side 'recto)) (let ((nodelist (titlepage-nodelist (if (equal? side 'recto) (reference-titlepage-recto-elements) (reference-titlepage-verso-elements)) elements)) ;; partintro is a special case... (partintro (node-list-first (node-list-filter-by-gi elements (list (normalize "partintro")))))) (if (reference-titlepage-content? elements side) (make simple-page-sequence page-n-columns: %titlepage-n-columns% ;; Make sure that page number format is correct. page-number-format: ($page-number-format$) ;; Make sure that the page number is set to 1 if this is the ;; first part in the book page-number-restart?: (first-reference?) input-whitespace-treatment: 'collapse use: default-text-style ;; This hack is required for the RTF backend. If an external-graphic ;; is the first thing on the page, RTF doesn't seem to do the right ;; thing (the graphic winds up on the baseline of the first line ;; of the page, left justified). This "one point rule" fixes ;; that problem. (make paragraph line-spacing: 1pt (literal "")) (let loop ((nl nodelist) (lastnode (empty-node-list))) (if (node-list-empty? nl) (empty-sosofo) (make sequence (if (or (node-list-empty? lastnode) (not (equal? (gi (node-list-first nl)) (gi lastnode)))) (reference-titlepage-before (node-list-first nl) side) (empty-sosofo)) (cond ((equal? (gi (node-list-first nl)) (normalize "author")) (reference-titlepage-author (node-list-first nl) side)) ((equal? (gi (node-list-first nl)) (normalize "authorgroup")) (reference-titlepage-authorgroup (node-list-first nl) side)) ((equal? (gi (node-list-first nl)) (normalize "corpauthor")) (reference-titlepage-corpauthor (node-list-first nl) side)) ((equal? (gi (node-list-first nl)) (normalize "editor")) (reference-titlepage-editor (node-list-first nl) side)) ((equal? (gi (node-list-first nl)) (normalize "subtitle")) (reference-titlepage-subtitle (node-list-first nl) side)) ((equal? (gi (node-list-first nl)) (normalize "title")) (reference-titlepage-title (node-list-first nl) side)) (else (reference-titlepage-default (node-list-first nl) side))) (loop (node-list-rest nl) (node-list-first nl))))) (if (and %generate-reference-toc% %generate-reference-toc-on-titlepage% (equal? side 'recto)) (make display-group (build-toc (current-node) (toc-depth (current-node)))) (empty-sosofo)) ;; PartIntro is a special case (if (and (equal? side 'recto) (not (node-list-empty? partintro)) %generate-partintro-on-titlepage%) ($process-partintro$ partintro #f) (empty-sosofo))) (empty-sosofo))))]]> <!-- %output-print --><!-- Plain text output customization ............................... --><!--This is used for making the INSTALL file and others. We customize theHTML stylesheets to be suitable for dumping plain text (via Netscape,Lynx, or similar).--><![ %output-text; [(define %section-autolabel% #f)(define %chapter-autolabel% #f)(define $generate-chapter-toc$ (lambda () #f));; For text output, produce "ASCII markup" for emphasis and such.(define ($asterix-seq$ #!optional (sosofo (process-children))) (make sequence (literal "*") sosofo (literal "*"))) (define ($dquote-seq$ #!optional (sosofo (process-children))) (make sequence (literal (gentext-start-quote)) sosofo (literal (gentext-end-quote)))) (element (para command) ($dquote-seq$))(element (para emphasis) ($asterix-seq$))(element (para filename) ($dquote-seq$))(element (para option) ($dquote-seq$))(element (para replaceable) ($dquote-seq$))(element (para userinput) ($dquote-seq$))]]> <!-- %output-text --> </style-specification-body> </style-specification> <external-specification id="docbook" document="dbstyle"></style-sheet>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -