]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/framework-tex.scm
(convert-to-ps): invoke dvips with -t
[lilypond.git] / scm / framework-tex.scm
index 585082c6efbcd796e7e28a9efb4e882aa81c500f..f9b9e454e11f876c9f182b7c1ff19e12b2238dc9 100644 (file)
@@ -63,7 +63,7 @@
      "\\def\\" (tex-font-command font) "{%\n"
      ;; UGH.  Should be handled via alist.
      (if (equal? "Extended-TeX-Font-Encoding---Latin" font-encoding)
-        "  \\fontencoding{T1}\\selectfont"
+        "  \\lilypondfontencoding{T1}"
         "  ")
      "\\lilypond" (tex-font-command font)
      "}\n"
                     "{" (sanitize-tex-string str) "}%\n")))
 
 (define (header bookpaper page-count classic?)
-  (let ((scale (ly:output-def-lookup bookpaper 'outputscale)))
-
+  (let ((scale (ly:output-def-lookup bookpaper 'outputscale))
+       (texpaper (string-append
+                  (ly:output-def-lookup bookpaper 'papersizename)
+                  "paper"))
+       (landscape? (eq? #t (ly:output-def-lookup bookpaper 'landscape)))
+       )
+    
     (string-append
      "% Generated by LilyPond "
      (lilypond-version) "\n"
      (tex-string-def
       "lilypondpaper" 'linewidth
       (ly:number->string (* scale (ly:output-def-lookup bookpaper 'linewidth))))
-
+     "\\def\\lilyponddocumentclassoptions{"
+     texpaper
+     (if  landscape? ",landscape" "")
+      "}%\n"
      (tex-string-def
       "lilypondpaper" 'interscoreline
       (ly:number->string
    "\\lilypondspecial\n"
    "\\lilypondpostscript\n"))
 
-(define (dump-page putter page last?)
+(define (dump-page putter page last? with-extents?)
   (ly:outputter-dump-string
    putter
-   "\\vbox to 0pt{%\n\\leavevmode\n\\lybox{0}{0}{0}{0}{%\n")
+   (format "\\vbox to ~a\\outputscale{%\n\\leavevmode\n\\lybox{0}{0}{0}{0}{%\n"
+          (if with-extents?
+              (- (interval-start (ly:stencil-extent page Y)))
+                      0.0
+              )))
   (ly:outputter-dump-stencil putter page)
   (ly:outputter-dump-string
    putter
   (let* ((bookpaper (ly:paper-book-book-paper book))
         (pages (ly:paper-book-pages book))
         (last-page (car (last-pair pages)))
+        (with-extents
+         (eq? #t (ly:output-def-lookup bookpaper 'dump-extents)))
         )
     (for-each
      (lambda (x)
       (header bookpaper (length pages) #f)
       (define-fonts bookpaper)
       (header-end)))
-    
+    (ly:outputter-dump-string outputter "\\lilypondnopagebreak")
     (for-each
-     (lambda (page) (dump-page outputter page (eq? last-page page)))
+     (lambda (page) (dump-page outputter page (eq? last-page page) with-extents))
      pages)
     (ly:outputter-dump-string outputter "\\lilypondend\n")))
 
 
 (define-public (convert-to-ps book name)
   (let*
-      ((cmd (string-append "dvips -u+ec-mftrace.map -u+lilypond.map -Ppdf "
+      ((bookpaper  (ly:paper-book-book-paper book))
+       (papersize (ly:output-def-lookup bookpaper 'papersizename))
+       (landscape? (eq? #t (ly:output-def-lookup bookpaper 'landscape)))
+       (cmd (string-append "dvips -t " papersize
+                          (if landscape? " -t landscape " " ") 
+                          "  -u+ec-mftrace.map -u+lilypond.map -Ppdf "
                           (basename name ".tex"))))
 
     (display (format #f (_ "Invoking ~S") cmd) (current-error-port))
 
 (define-public (convert-to-dvi book name)
   (let*
-      ((cmd (string-append "latex \\\\nonstopmode \\\\input " name)))
+      ((curr-extra-mem (string->number (regexp-substitute/global #f " *%.*\n?"
+                                                                (ly:kpathsea-expand-variable "$extra_mem_top")
+                                                                'pre "" 'post)))
+       (cmd (string-append "latex \\\\nonstopmode \\\\input " name)))
 
+    (setenv "extra_mem_top" (number->string (max curr-extra-mem 1024000)))
     (newline (current-error-port))
     (display (format #f (_ "Invoking ~S") cmd) (current-error-port))
     (newline (current-error-port))