« HTML + CSS で数式組版 (その8) | トップページ | HTML + CSS で数式組版 (その10) »

2009年3月22日 (日)

HTML + CSS で数式組版 (その9)

CSS の出力にとりかかります。これが、このプログラムの一番のキモになる部分ですね。

(defun gen-css-props (root ast)
  (cond ((atom ast) nil)
        ((atom (car ast))
         (let ((c1 (car ast))
               (c2 (cadr ast))
               (c3 (caddr ast)))
           (cond ((eq c1 'argend) nil)
                 ((eq c1 'frac)
                  (cons
                   (list (make-css-name root c1 c2))
                   (gen-frac-props root c3)))
                 (t (cons
                     (list (make-css-name root c1 c2))
                     (gen-css-props root c3))))))
        (t (append (gen-css-props root (car ast))
                   (gen-css-props root (cdr ast))))))

(defun make-css-name (root c1 c2)
  (format nil ".~A .~A~A" root c1 c2))

(defun gen-frac-props (root ast)
  (append
   (gen-css-props root (car ast))
   (let ((c (cadr ast)))
     (let ((c1 (car c))
           (c2 (cadr c))
           (c3 (caddr c)))
       (cons
        (list
         (make-css-name root c1 c2)
         (list 'border-top "solid 1pt"))
        (gen-css-props root c3))))))

とりあえず、荒くスケッチを作ってみました。

(gen-css-props "math" (parse-string "x =\\frac{a}{b}+ c" 0))
=>
((".math .text1") (".math .text3") (".math .frac8")
 (".math .argbegin9") (".math .text10")
 (".math .argbegin12" (border-top "solid 1pt"))
 (".math .text13") (".math .text15") (".math .text17"))

|

« HTML + CSS で数式組版 (その8) | トップページ | HTML + CSS で数式組版 (その10) »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/80472/28738427

この記事へのトラックバック一覧です: HTML + CSS で数式組版 (その9):

« HTML + CSS で数式組版 (その8) | トップページ | HTML + CSS で数式組版 (その10) »