From f03c981fc09c2bf6fb68603ff40c3c28dcdfd2df Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Wed, 7 Apr 2010 15:51:04 -0400 Subject: [PATCH 1/3] babel: return string results from octave as strings Thanks to Darlan Cavalcante --- contrib/babel/lisp/langs/org-babel-matlab.el | 4 ++++ contrib/babel/lisp/langs/org-babel-octave.el | 25 +++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/contrib/babel/lisp/langs/org-babel-matlab.el b/contrib/babel/lisp/langs/org-babel-matlab.el index eceb3f2f1..d82e3600d 100644 --- a/contrib/babel/lisp/langs/org-babel-matlab.el +++ b/contrib/babel/lisp/langs/org-babel-matlab.el @@ -48,6 +48,10 @@ (defvar org-babel-matlab-shell-command "matlab -nosplash" "Shell command to use to run matlab as an external process.") +(defvar org-babel-matlab-wrapper-method + "%s +save -ascii %s ans") + (defun org-babel-execute:matlab (body params) "Execute a block of matlab code with org-babel." (org-babel-execute:octave body params 'matlab)) diff --git a/contrib/babel/lisp/langs/org-babel-octave.el b/contrib/babel/lisp/langs/org-babel-octave.el index 8d004f26e..13b72f73f 100644 --- a/contrib/babel/lisp/langs/org-babel-octave.el +++ b/contrib/babel/lisp/langs/org-babel-octave.el @@ -100,9 +100,9 @@ then create. Return the initialized session." (rename-buffer (if (bufferp session) (buffer-name session) (if (stringp session) session (buffer-name)))) (current-buffer)))))) - (defvar org-babel-octave-wrapper-method +(defvar org-babel-octave-wrapper-method "%s -save -ascii %s ans") +save -text %s ans") (defvar org-babel-octave-eoe-indicator "\'org_babel_eoe\'") @@ -130,12 +130,13 @@ value of the last statement in BODY, as elisp." (let* ((tmp-file (make-temp-file "org-babel-results-")) exit-code (stderr (with-temp-buffer - (insert (format org-babel-octave-wrapper-method body tmp-file)) + (insert (format (if matlabp org-babel-matlab-wrapper-method org-babel-octave-wrapper-method) + body tmp-file)) (setq exit-code (org-babel-shell-command-on-region (point-min) (point-max) cmd nil 'replace (current-buffer))) (buffer-string)))) (if (> exit-code 0) (org-babel-error-notify exit-code stderr)) - (org-babel-import-elisp-from-file (org-babel-maybe-remote-file tmp-file)))))))) + (org-babel-octave-import-elisp-from-file (org-babel-maybe-remote-file tmp-file)))))))) (defun org-babel-octave-evaluate-session (session body result-type &optional matlabp) (let* ((tmp-file (make-temp-file "org-babel-results-")) @@ -148,13 +149,14 @@ value of the last statement in BODY, as elisp." (value (mapconcat #'org-babel-chomp - (list (format org-babel-octave-wrapper-method body tmp-file) org-babel-octave-eoe-indicator) "\n")))) + (list (format (if matlabp org-babel-matlab-wrapper-method org-babel-octave-wrapper-method) + body tmp-file) org-babel-octave-eoe-indicator) "\n")))) (raw (org-babel-comint-with-output session (if matlabp org-babel-octave-eoe-indicator org-babel-octave-eoe-output) t (insert full-body) (comint-send-input nil t))) results) (case result-type (value - (org-babel-import-elisp-from-file (org-babel-maybe-remote-file tmp-file))) + (org-babel-octave-import-elisp-from-file (org-babel-maybe-remote-file tmp-file))) (output (progn (setq results @@ -166,6 +168,17 @@ value of the last statement in BODY, as elisp." (mapcar #'org-babel-trim raw))))))) (mapconcat #'identity (reverse results) "\n")))))) +(defun org-babel-octave-import-elisp-from-file (file-name) + "Import data written to file by octave. +This removes initial blank and comment lines and then calls +`org-babel-import-elisp-from-file'." + (let ((temp-file (make-temp-file "org-babel-results-"))) + (with-temp-file temp-file + (insert-file-contents file-name) + (re-search-forward "^[ \t]*[^# \t]" nil t) + (delete-region (point-min) (point-at-bol))) + (org-babel-import-elisp-from-file temp-file))) + (defun org-babel-octave-read-string (string) "Strip \\\"s from around octave string" (if (string-match "^\"\\([^\000]+\\)\"$" string) From e48b8bf5773048f513721099173a1ea4d38240a6 Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Wed, 7 Apr 2010 18:44:58 -0400 Subject: [PATCH 2/3] babel: return string results from matlab as strings Thanks to Bob Jansen --- contrib/babel/lisp/langs/org-babel-matlab.el | 4 ---- contrib/babel/lisp/langs/org-babel-octave.el | 21 +++++++++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/contrib/babel/lisp/langs/org-babel-matlab.el b/contrib/babel/lisp/langs/org-babel-matlab.el index d82e3600d..eceb3f2f1 100644 --- a/contrib/babel/lisp/langs/org-babel-matlab.el +++ b/contrib/babel/lisp/langs/org-babel-matlab.el @@ -48,10 +48,6 @@ (defvar org-babel-matlab-shell-command "matlab -nosplash" "Shell command to use to run matlab as an external process.") -(defvar org-babel-matlab-wrapper-method - "%s -save -ascii %s ans") - (defun org-babel-execute:matlab (body params) "Execute a block of matlab code with org-babel." (org-babel-execute:octave body params 'matlab)) diff --git a/contrib/babel/lisp/langs/org-babel-octave.el b/contrib/babel/lisp/langs/org-babel-octave.el index 13b72f73f..48d81f94d 100644 --- a/contrib/babel/lisp/langs/org-babel-octave.el +++ b/contrib/babel/lisp/langs/org-babel-octave.el @@ -102,7 +102,14 @@ then create. Return the initialized session." (defvar org-babel-octave-wrapper-method "%s -save -text %s ans") +if ischar(ans) + fid = fopen('%s', 'w') + fprintf(fid, ans) + fprintf(fid, '\\n') + fclose(fid) +else + save -ascii %s ans +end") (defvar org-babel-octave-eoe-indicator "\'org_babel_eoe\'") @@ -130,8 +137,7 @@ value of the last statement in BODY, as elisp." (let* ((tmp-file (make-temp-file "org-babel-results-")) exit-code (stderr (with-temp-buffer - (insert (format (if matlabp org-babel-matlab-wrapper-method org-babel-octave-wrapper-method) - body tmp-file)) + (insert (format org-babel-octave-wrapper-method body tmp-file tmp-file)) (setq exit-code (org-babel-shell-command-on-region (point-min) (point-max) cmd nil 'replace (current-buffer))) (buffer-string)))) @@ -149,8 +155,7 @@ value of the last statement in BODY, as elisp." (value (mapconcat #'org-babel-chomp - (list (format (if matlabp org-babel-matlab-wrapper-method org-babel-octave-wrapper-method) - body tmp-file) org-babel-octave-eoe-indicator) "\n")))) + (list (format org-babel-octave-wrapper-method body tmp-file tmp-file) org-babel-octave-eoe-indicator) "\n")))) (raw (org-babel-comint-with-output session (if matlabp org-babel-octave-eoe-indicator org-babel-octave-eoe-output) t (insert full-body) (comint-send-input nil t))) results) @@ -172,11 +177,13 @@ value of the last statement in BODY, as elisp." "Import data written to file by octave. This removes initial blank and comment lines and then calls `org-babel-import-elisp-from-file'." - (let ((temp-file (make-temp-file "org-babel-results-"))) + (let ((temp-file (make-temp-file "org-babel-results-")) beg end) (with-temp-file temp-file (insert-file-contents file-name) (re-search-forward "^[ \t]*[^# \t]" nil t) - (delete-region (point-min) (point-at-bol))) + (if (< (setq beg (point-min)) + (setq end (point-at-bol))) + (delete-region beg end))) (org-babel-import-elisp-from-file temp-file))) (defun org-babel-octave-read-string (string) From caaf755192774653c921dc4e40efd30edad305fa Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Wed, 7 Apr 2010 22:43:37 -0600 Subject: [PATCH 3/3] babel: org-babel-latex adjusts to the new org latex setup --- contrib/babel/lisp/langs/org-babel-latex.el | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/contrib/babel/lisp/langs/org-babel-latex.el b/contrib/babel/lisp/langs/org-babel-latex.el index 85ec2bc73..14bace1c3 100644 --- a/contrib/babel/lisp/langs/org-babel-latex.el +++ b/contrib/babel/lisp/langs/org-babel-latex.el @@ -81,16 +81,13 @@ called by `org-babel-execute-src-block'." (defun org-babel-latex-body-to-tex-file (tex-file body &optional height width) "Extracted from `org-create-formula-image' in org.el." (with-temp-file tex-file - (insert org-format-latex-header - (if org-export-latex-packages-alist - (concat "\n" - (mapconcat (lambda(p) - (if (equal "" (car p)) - (format "\\usepackage{%s}" (cadr p)) - (format "\\usepackage[%s]{%s}" - (car p) (cadr p)))) - org-export-latex-packages-alist "\n")) - "") + (insert (org-splice-latex-header + org-format-latex-header + (remove-if + (lambda (el) (and (listp el) (string= "hyperref" (cadr el)))) + org-export-latex-default-packages-alist) + org-export-latex-packages-alist + org-format-latex-header-extra) (if height (concat "\n" (format "\\pdfpageheight %s" height)) "") (if width (concat "\n" (format "\\pdfpagewidth %s" width)) "") (if org-format-latex-header-extra