Changeset 15505 in project


Ignore:
Timestamp:
08/17/09 04:38:34 (10 years ago)
Author:
Ivan Raikov
Message:

Some fixes to the qwiki LaTeX driver

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/qwiki/trunk/qwiki-sxml.scm

    r15504 r15505  
    4343(import chicken scheme)
    4444
    45 (use posix srfi-1 srfi-13 data-structures regex)
     45(use posix srfi-1 srfi-13 data-structures regex )
    4646(use sxml-transforms doctype uri-generic)
    4747
     
    237237        "\\end{" env-name "}" nl))
    238238
    239 (define (LaTeX-use-package package-name options)
     239(define (LaTeX-use-package package-name . options)
    240240  (list "\\usepackage{" package-name "}"
    241241        (if (pair? options) (list "[" options "]") '())
    242242        nl))
     243
     244(define (LaTeX-label str)
     245  (define (f0 str)
     246    (let* ((cs   (string-split str " "))
     247           (ins  (map (lambda (s)
     248                        (let ((s (string-downcase s)))
     249                          (string-copy s 0 (min 3 (- (string-length s) 1))))) cs)))
     250      (string-concatenate ins)))
     251  (cond ((pair? str)   (string-concatenate (map f0 str)))
     252        (else          (f0 (->string str)))))
    243253
    244254(define (qwiki-LaTeX-transformation-rules content)
     
    300310                   ((4) "subsubsection")
    301311                   (else (error "unsupported section level: " level)))
    302                  "{" head-word elems "}" nl)))
     312                 "{" head-word elems "}"  nl
     313                 (if (= level 1)
     314                     (list "\\label{" (LaTeX-label head-word)  "}")
     315                     (list)) nl)))
    303316
    304317     (TOC . ,(lambda (tag . elems) (list nl "\\tableofcontents{}" nl)))
     
    321334      . ,(lambda (tag href . contents)
    322335           (add-LaTeX-package! 'hyperref "hypertex")
    323            `("\\href{" (href ,href) "}"
    324              "{" ,(if (pair? contents) contents href) "}")))
     336           `((tex "\\hyperref[" ,(LaTeX-label href) "]")
     337             (tex "{")
     338             ,(if (null? contents) href (or contents href))
     339             (tex "}"))))
    325340
    326341     ; Standard typography
     342     (small
     343      . ,(lambda (tag . elems)
     344           (list "{\\small{}" elems "}")))
     345
     346     (strong
     347      . ,(lambda (tag . elems)
     348           (list "{\\rmfamily\\bfseries{}" elems "}")))
     349
     350     (type
     351      . ,(lambda (tag . elems)
     352           (list "{\\ttfamily{}" elems "}")))
     353
    327354     (em
    328355      . ,(lambda (tag . elems)
     
    340367      . ,(lambda (tag)
    341368           (list "\\\\ ")))
     369
     370     (hr . ,(lambda (tag)
     371              (list "\\begin{center}"
     372                    "\\rule{0.8\\textwidth}{0.4pt}"
     373                    "\\end{center}" nl)))
    342374
    343375     (indent
     
    384416       
    385417
    386      (blockquote
    387       . ,(lambda (tag . elems)
    388            (in-LaTeX-env "quote" '() elems)))
    389 
    390      (definition
    391        *macro*
    392        . ,(lambda (_ type . contents)
    393             (in-LaTeX-env "description" '()
    394                         `(type ,@contents))))
    395      
    396418     (special
    397419      *macro*
     
    399421           `(,(string->symbol (string-upcase (symbol->string name))) ,arg)))
    400422
     423     (definition
     424       . ,(lambda (_ type . elems)
     425            (in-LaTeX-env "description" '()
     426               (list "{\\ttfamily{}" elems "}"))))
     427
     428     (blockquote
     429      . ,(lambda (tag . elems)
     430           (in-LaTeX-env "quote" '() elems)))
     431
    401432     (preformatted
    402433      *macro*
     
    404435           `(verbatim ,elems)))
    405436         
    406      (type
    407       *macro*
    408       . ,(lambda (tag . terms)
    409            `("\\begin{texttt}" ,@terms "\\end{texttt}")))
    410 
    411437
    412438     (verbatim  ; set off pieces of code: one or several lines
     
    624650
    625651
    626      (small
    627       . ,(lambda (tag . elems)
    628            (list "{\\small{}" elems "}")))
    629 
    630      (strong
    631       . ,(lambda (tag . elems)
    632            (list "{\\rmfamily\\bfseries{}" elems "}")))
    633 
    634652     (history . ,(lambda (history items) (list)))
    635653     (page-specific-links . ,(lambda _ (list)))
     
    637655     (tex      ; raw tex expression
    638656       *preorder*
    639        . ,(lambda (tag str) str))
     657       . ,(lambda (tag . str) str))
    640658           
    641659     )))
Note: See TracChangeset for help on using the changeset viewer.