+
+(define-public (convert-to-pdf book name)
+ (let* ((defs (ly:paper-book-paper book))
+ (papersizename (ly:output-def-lookup defs 'papersizename)))
+ (postscript->pdf (if (string? papersizename) papersizename "a4")
+ (string-append
+ (basename name ".tex")
+ ".ps"))))
+
+(define-public (convert-to-png book name)
+ (let* ((defs (ly:paper-book-paper book))
+ (resolution (ly:output-def-lookup defs 'pngresolution)))
+ (postscript->png
+ (if (number? resolution)
+ resolution
+ (ly:get-option 'resolution))
+ (string-append (basename name ".tex") ".ps"))))
+
+(define-public (convert-to-ps book name)
+ (let* ((paper (ly:paper-book-paper book))
+ (preview? (string-contains name ".preview"))
+
+ (papersizename (ly:output-def-lookup paper 'papersizename))
+ (landscape? (eq? #t (ly:output-def-lookup paper 'landscape)))
+ (base (basename name ".tex"))
+ (cmd (string-append "dvips "
+ (if preview?
+ "-E "
+ (string-append
+ "-t"
+ ;; careful: papersizename is user-set.
+ (sanitize-command-option papersizename)
+ " "))
+ (if landscape? "-t landscape " "")
+ (if (ly:kpathsea-find-file "lm.map")
+ "-u+lm.map " "")
+ (if (ly:kpathsea-find-file "ecrm10.pfa")
+ "-u+ec-mftrace.map " "")
+ "-u+lilypond.map -Ppdf " ""
+ base)))
+ (let ((ps-name (string-append base ".ps")))
+ (if (access? ps-name W_OK)
+ (delete-file ps-name)))
+ (if (not (ly:get-option 'verbose))
+ (begin
+ (format (current-error-port) (_ "Converting to `~a.ps'...") base)
+ (newline (current-error-port))))
+ (ly:system cmd)))
+
+(define-public (convert-to-dvi book name)
+ (let* ((curr-extra-mem
+ (string->number
+ (regexp-substitute/global
+ #f " *%.*\n?"
+ (ly:kpathsea-expand-variable "$extra_mem_top")
+ 'pre "" 'post)))
+ (base (basename name ".tex"))
+ (cmd (string-append
+ "latex \\\\nonstopmode \\\\input " name)))
+ (setenv "extra_mem_top" (number->string (max curr-extra-mem 1024000)))
+ (let ((dvi-name (string-append base ".dvi")))
+ (if (access? dvi-name W_OK)
+ (delete-file dvi-name)))
+ (if (not (ly:get-option 'verbose))
+ (begin
+ (format (current-error-port) (_ "Converting to `~a.dvi'...") base)
+ (newline (current-error-port))))
+
+ ;; fixme: set in environment?
+ (if (ly:get-option 'safe)
+ (set! cmd (string-append "openout_any=p " cmd)))
+
+ (ly:system cmd)))
+
+(define-public (convert-to-tex book name)
+ #t)