X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fframework-eps.scm;h=9a7036df3682fb08d5bdc68ce544774ffee3fd95;hb=4248f11e51e95dcf14ff67cda43be64c0ea53871;hp=348929c1c49f7cd82a2820e86082bef19c16cea0;hpb=401bfa5ec50ad1592cd701b8dcec21fec54b79ab;p=lilypond.git diff --git a/scm/framework-eps.scm b/scm/framework-eps.scm index 348929c1c4..9a7036df36 100644 --- a/scm/framework-eps.scm +++ b/scm/framework-eps.scm @@ -2,7 +2,7 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; (c) 2004--2005 Han-Wen Nienhuys +;;;; (c) 2004--2006 Han-Wen Nienhuys (define-module (scm framework-eps)) @@ -13,6 +13,8 @@ (ice-9 format) (guile) (scm framework-ps) + (scm paper-system) + (scm page) (scm output-ps) (srfi srfi-1) (srfi srfi-13) @@ -20,6 +22,28 @@ (define framework-eps-module (current-module)) + +(define (widen-left-stencil-edges stencils) + "Change STENCILS to use the union for the left extents in every +stencil, so LaTeX includegraphics doesn't fuck up the alignment." + + (define left + (apply min + (map (lambda (stc) + (interval-start (ly:stencil-extent stc X))) + stencils))) + + (map (lambda (stil) + + (ly:make-stencil + (ly:stencil-expr stil) + (cons + left + (cdr (ly:stencil-extent stil X))) + (ly:stencil-extent stil Y) + )) + stencils)) + (define (dump-stencils-as-EPSes stencils book basename) (define paper (ly:paper-book-paper book)) (define (dump-infinite-stack-EPS stencils) @@ -30,13 +54,15 @@ (if (pair? stencils) (let* ((line (car stencils)) (rest (cdr stencils))) + (dump-stencil-as-EPS - paper - line (format "~a-~a" basename count) - (ly:output-def-lookup paper 'force-eps-font-include)) + paper line (format "~a-~a" basename count) + (ly:get-option 'eps-font-include)) (dump-stencils-as-separate-EPS rest (1+ count))))) - + + + ;; main body (let* ((tex-system-name (format "~a-systems.tex" basename)) (texi-system-name (format "~a-systems.texi" basename)) (tex-system-port (open-output-file tex-system-name)) @@ -44,15 +70,25 @@ (ly:message (_ "Writing ~a...") tex-system-name) (ly:message (_ "Writing ~a...") texi-system-name) + + (set! stencils (widen-left-stencil-edges stencils)) + (dump-stencils-as-separate-EPS stencils 1) (for-each (lambda (c) + (if (< 0 c) + (display (format "\\ifx\\betweenLilyPondSystem \\undefined + \\linebreak +\\else + \\betweenLilyPondSystem{~a} +\\fi +" c) tex-system-port)) (display (format "\\includegraphics{~a-~a.eps}\n" basename (1+ c)) tex-system-port) (display (format "@image{~a-~a}\n" basename (1+ c)) texi-system-port)) (iota (length stencils))) - - (display "@c eof - 'eof' is a Makefile marker; don not remove. " texi-system-port) + + (display "@c eof - 'eof' is a Makefile marker; do not remove. " texi-system-port) (display "% eof - 'eof' is Makefile marker; do not remove. " tex-system-port) (dump-infinite-stack-EPS stencils)) @@ -61,14 +97,16 @@ (define-public (output-classic-framework basename book scopes fields) (output-scopes scopes fields basename) + (dump-stencils-as-EPSes - (map ly:paper-system-stencil (ly:paper-book-systems book)) + (map paper-system-stencil (ly:paper-book-systems book)) book basename)) (define-public (output-framework basename book scopes fields) (output-scopes scopes fields basename) - (dump-stencils-as-EPSes (ly:paper-book-pages book) book basename)) + (dump-stencils-as-EPSes + (map page-stencil (ly:paper-book-pages book)) book basename)) ; redefine to imports from framework-ps