]> git.donarmstrong.com Git - lilypond.git/blob - scm/framework-texstr.scm
Merge branch 'master' of ssh://jomand@git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / scm / framework-texstr.scm
1 ;;;; framework-tex.scm --
2 ;;;;
3 ;;;;  source file of the GNU LilyPond music typesetter
4 ;;;;
5 ;;;; (c) 2004--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
6
7 (define-module (scm framework-texstr)
8   #:export (output-framework-tex        
9             output-classic-framework-tex))
10
11 (use-modules (ice-9 regex)
12              (scm paper-system)
13              (ice-9 string-fun)
14              (guile)
15              (srfi srfi-1)
16              (srfi srfi-13)
17              (lily))
18
19 (define format ergonomic-simple-format)
20
21 (define (header filename)
22   (format  "% header
23 \\input{lilypond-tex-metrics}
24 \\documentclass{article}
25 \\lilyglobalscale{1.0}
26 \\lilymetricsfile{~a.textmetrics}
27 \\begin{document}
28 " filename))
29
30 (define (footer)
31   "
32 \\end{document}
33 ")
34
35 (define-public (output-classic-framework basename book scopes fields)
36   (let* ((filename (format #f "~a.texstr" basename))
37          (outputter (ly:make-paper-outputter
38                      (open-file filename "wb")
39                      (ly:get-option 'backend)))
40          (paper (ly:paper-book-paper book))
41          (lines (ly:paper-book-systems book)))
42     (ly:outputter-dump-string outputter (header basename))
43     (for-each
44      (lambda (system)
45        (ly:outputter-dump-stencil outputter (paper-system-stencil system)))
46      lines)
47     (ly:outputter-dump-string outputter (footer))))
48
49 (define-public (output-framework basename book scopes fields )
50   (let* ((filename (format #f "~a.texstr" basename))
51          (outputter
52           (ly:make-paper-outputter
53            (open-file filename "wb")
54            (ly:get-option 'backend)))
55          (paper (ly:paper-book-paper book))
56          (pages (ly:paper-book-pages book)))
57     (ly:outputter-dump-string outputter (header basename))
58     (for-each
59      (lambda (page)
60        (ly:outputter-dump-stencil outputter page))
61      pages)
62     (ly:outputter-dump-string outputter (footer))))
63
64 (define-public (convert-to-ps . args) #t)
65 (define-public (convert-to-pdf . args) #t)
66 (define-public (convert-to-png . args) #t)
67 (define-public (convert-to-dvi . args) #t)
68 (define-public (convert-to-tex . args) #t)