Hi Ihor,
On 11 Aug 2023, Ihor Radchenko wrote:
Ok. Would you mind adding a commit message, as described in
https://orgmode.org/worg/org-contribute.html#first-patch?
Patch attached. I also attached a test file.
And do I understand correctly that no changes in
https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-lilypond.html
are needed?
Probably not, but I'll check.
--
Jonathan
commit 8916c9ebbefb1b1d448e0e39998f9b9a3b054680
Author: Jonathan Gregory <[email protected]>
Date: Wed Aug 16 09:47:09 2023 -0300
lisp/ob-lilypond.el: Prevent full page results in basic-mode
* ob-lilypond.el (org-babel-lilypond-paper-settings): New variable.
Link: https://list.orgmode.org/87a5w15jur.fsf@localhost/
TINYCHANGE
diff --git a/lisp/ob-lilypond.el b/lisp/ob-lilypond.el
index 9693b89e2..ad8371c5f 100644
--- a/lisp/ob-lilypond.el
+++ b/lisp/ob-lilypond.el
@@ -175,31 +175,51 @@ specific arguments to =org-babel-tangle=."
(if (org-babel-tangle nil "yes" "lilypond")
(org-babel-lilypond-execute-tangled-ly) nil))
+;; https://lilypond.org/doc/v2.24/Documentation/usage/other-programs
+(defvar org-babel-lilypond-paper-settings
+ "#(if (ly:get-option 'use-paper-size-for-page)
+ (begin (ly:set-option 'use-paper-size-for-page #f)
+ (ly:set-option 'tall-page-formats '%s)))
+\\paper {
+ indent=0\\mm
+ tagline=\"\"
+ oddFooterMarkup=##f
+ oddHeaderMarkup=##f
+ bookTitleMarkup=##f
+ scoreTitleMarkup=##f
+}\n"
+ "The paper settings required to generate music fragments.
+They are needed for mixing music and text in basic-mode.")
+
(defun org-babel-lilypond-process-basic (body params)
"Execute a lilypond block in basic mode."
(let* ((out-file (cdr (assq :file params)))
+ (file-type (file-name-extension out-file))
(cmdline (or (cdr (assq :cmdline params))
""))
(in-file (org-babel-temp-file "lilypond-")))
(with-temp-file in-file
- (insert (org-babel-expand-body:generic body params)))
+ (insert
+ (format org-babel-lilypond-paper-settings file-type)
+ (org-babel-expand-body:generic body params)))
(org-babel-eval
(concat
org-babel-lilypond-ly-command
" -dbackend=eps "
"-dno-gs-load-fonts "
"-dinclude-eps-fonts "
- (or (cdr (assoc (file-name-extension out-file)
- '(("pdf" . "--pdf ")
- ("ps" . "--ps ")
- ("png" . "--png "))))
+ (or (assoc-default file-type
+ '(("pdf" . "--pdf ")
+ ("eps" . "--eps ")))
"--png ")
"--output="
(file-name-sans-extension out-file)
" "
cmdline
- in-file) "")) nil)
+ in-file)
+ ""))
+ nil)
(defun org-babel-prep-session:lilypond (_session _params)
"Return an error because LilyPond exporter does not support sessions."
#+title: Test
#+PROPERTY: header-args:lilypond :noweb yes :exports results
#+PROPERTY: header-args:lilypond :prologue (org-babel-ref-resolve "settings[]")
Some text.
#+begin_src lilypond :file myfile.pdf
\score {
\new Staff \relative c' {
\tempo 4 = 160
c4 e g b
c4 b d c
\tempo 4 = 96
d,4 fis a cis
d4 cis e d
}
\layout { }
\midi { }
}
#+end_src
#+results:
[[file:myfile.pdf]]
Click [[file:myfile.midi][here]] to listen to the MIDI output.
#+name: settings
#+begin_src lilypond :exports none
\version "2.24.1"
% More lilypond settings here...
#+end_src