]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/framework-tex.scm
* scm/lily.scm (completize-formats): new function
[lilypond.git] / scm / framework-tex.scm
index cc1b4eaa3b9455b0cc028eee5951f987597a57a4..4a2a0b61935f903c0bffd33e22392d20ad619f57 100644 (file)
             (srfi srfi-13)
             (lily))
 
+(define (output-formats)
+  (define formats (ly:output-formats))
+  (set! formats (completize-formats formats))
+  (if (member "ps" formats)
+      (set! formats (cons "dvi" formats))) 
+  (if (member "dvi" formats)
+      (set! formats (cons "tex" formats)))
+
+  formats)
+
+(define framework-tex-module (current-module))
 (define-public (sanitize-tex-string s)
   (if (ly:get-option 'safe)
       (regexp-substitute/global
        "}%\n\\vfill\n"
        "}%\n\\vfill\n\\lilypondpagebreak\n")))
 
-(define-public (output-framework outputter book scopes fields basename )
-  (let* ((paper (ly:paper-book-paper book))
+(define-public (output-framework basename book scopes fields)
+  (let* ((filename (format "~a.tex" basename))
+        (outputter  (ly:make-paper-outputter filename "tex"))
+        (paper (ly:paper-book-paper book))
         (pages (ly:paper-book-pages book))
         (last-page (car (last-pair pages)))
         (with-extents
      (lambda (page)
        (dump-page outputter page (eq? last-page page) with-extents))
      pages)
-    (ly:outputter-dump-string outputter "\\lilypondend\n")))
+    (ly:outputter-dump-string outputter "\\lilypondend\n")
+    (ly:outputter-close outputter)
+    (postprocess-output book framework-tex-module filename
+                       (output-formats))))
 
 (define (dump-line putter line last?)
   (ly:outputter-dump-string
        "}\\interscoreline\n")))
 
 (define-public (output-classic-framework
-               outputter book scopes fields basename)
-  (let* ((paper (ly:paper-book-paper book))
+               basename book scopes fields)
+  (let* ((filename (format "~a.tex" basename))
+        (outputter  (ly:make-paper-outputter filename "tex"))
+        (paper (ly:paper-book-paper book))
         (lines (ly:paper-book-systems book))
         (last-line (car (last-pair lines))))
     (for-each
 
     (for-each
      (lambda (line) (dump-line outputter line (eq? line last-line))) lines)
-    (ly:outputter-dump-string outputter "\\lilypondend\n")))
+    (ly:outputter-dump-string outputter "\\lilypondend\n")
+    (ly:outputter-close outputter)
+    (postprocess-output book framework-tex-module filename
+                       (output-formats))
+    ))
 
 (define-public (output-preview-framework
-               outputter book scopes fields basename )
-  (let* ((paper (ly:paper-book-paper book))
+               basename book scopes fields)
+  (let* ((filename (format "~a.tex" basename))
+        (outputter  (ly:make-paper-outputter filename
+                                             "tex"))
+        (paper (ly:paper-book-paper book))
         (lines (ly:paper-book-systems book))
         (first-notes-index (list-index
                             (lambda (s) (not (ly:paper-system-title? s)))
      (lambda (lst)
        (dump-line outputter lst (not (ly:paper-system-title? lst))))
      (take lines (1+ first-notes-index)))
-    (ly:outputter-dump-string outputter "\\lilypondend\n")))
+    (ly:outputter-dump-string outputter "\\lilypondend\n")
+    (ly:outputter-close outputter)
+    (postprocess-output book framework-tex-module filename
+                       (output-formats))
+
+))
 
 (define-public (convert-to-pdf book name)
   (let* ((defs (ly:paper-book-paper book))