* workflow, matlab+latex in org file @ 2016-07-11 12:32 Uwe Brauer 2016-07-11 14:05 ` John Kitchin 0 siblings, 1 reply; 29+ messages in thread From: Uwe Brauer @ 2016-07-11 12:32 UTC (permalink / raw) To: emacs-orgmode Hello I want in a org file, to include matlab code and run it (that I know how to do) Then I want certain results, which are symbolic variables, expressed in latex, we I achieve using matlab's latex command. Like #+begin_src matlab :results output clear all syms e p R g w K K2 phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)] jac=jacobian(phi,[e,p]) ltxjac=latex(jac) #+end_src This result should of course also be included in the orgfile. But then I want to export the org file to latex, such that only the results, which have been converted to latex are exported and all the matlab command should be ignored, that is in that case: ltxjac but nicely surrounded by say $. Anybody has an idea how to do this efficiently? thanks regards Uwe Brauer ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2016-07-11 12:32 workflow, matlab+latex in org file Uwe Brauer @ 2016-07-11 14:05 ` John Kitchin 2016-07-11 14:11 ` Uwe Brauer 0 siblings, 1 reply; 29+ messages in thread From: John Kitchin @ 2016-07-11 14:05 UTC (permalink / raw) To: Uwe Brauer; +Cc: emacs-orgmode Here is an example using sympy. I think you will have to wrap the matlab output in $$ yourself if that is what you want. Otherwise, the :exports header below specifies to only export the results, and the :results header wraps the output in a latex environment. #+BEGIN_SRC python :results output latex :exports results from sympy import Integral, sqrt, symbols, latex x = symbols('x') print(latex(Integral(sqrt(1/x), x), mode='equation')) #+END_SRC #+RESULTS: #+BEGIN_LaTeX \begin{equation}\int \sqrt{\frac{1}{x}}\, dx\end{equation} #+END_LaTeX Uwe Brauer writes: > Hello > > I want in a org file, to include matlab code and run it (that I know how > to do) > > Then I want certain results, which are symbolic variables, expressed in > latex, we I achieve using matlab's latex command. > > Like > #+begin_src matlab :results output > clear all > syms e p R g w K K2 > phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)] > > jac=jacobian(phi,[e,p]) > ltxjac=latex(jac) > #+end_src > > > This result should of course also be included in the orgfile. > > But then I want to export the org file to latex, such that only the > results, which have been converted to latex are exported and all the > matlab command should be ignored, that is in that case: > ltxjac but nicely surrounded by say $. > > Anybody has an idea how to do this efficiently? > > thanks > > regards > > > > Uwe Brauer -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2016-07-11 14:05 ` John Kitchin @ 2016-07-11 14:11 ` Uwe Brauer 2016-07-11 15:55 ` John Kitchin 0 siblings, 1 reply; 29+ messages in thread From: Uwe Brauer @ 2016-07-11 14:11 UTC (permalink / raw) To: emacs-orgmode >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > Here is an example using sympy. I think you will have to wrap the matlab > output in $$ yourself if that is what you want. Right. Using your example I obtain: ,---- | | | < M A T L A B (R) > | Copyright 1984-2010 The MathWorks, Inc. | Version 7.10.0.499 (R2010a) 32-bit (glnx86) | February 5, 2010 | | | To get started, type one of these: helpwin, helpdesk, or demo. | For product information, visit www.mathworks.com. | | >> >> >> >> >> >> | ltxjac = | | \left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, \left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + 1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + 1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e + p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} \end{array}\right) | | >> `---- That is not perfect but much better than the original solutions, thanks Uwe ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2016-07-11 14:11 ` Uwe Brauer @ 2016-07-11 15:55 ` John Kitchin 2016-07-11 16:12 ` Uwe Brauer ` (2 more replies) 0 siblings, 3 replies; 29+ messages in thread From: John Kitchin @ 2016-07-11 15:55 UTC (permalink / raw) To: Uwe Brauer; +Cc: emacs-orgmode You might consider the alternative, no-frills approach below. I defined a new execute function that strips the header and >> out of the output. It won't support any kind of session or header variables, but if you don't use those it might work for you. #+BEGIN_SRC emacs-lisp (defun org-babel-execute:matlab (body params) (interactive "P") (let* ((current-file (buffer-file-name)) (code (org-element-property :value (org-element-context))) (result-params (cdr (assoc :result-params params))) m-file md5-hash) (with-temp-buffer (insert code) (setq md5-hash (md5 (buffer-string)) mbuffer (format "*m-%s*" md5-hash) m-file (format "m-%s.m" md5-hash))) ;; create the file to run (with-temp-file m-file (insert code)) (let ((results (shell-command-to-string (concat "/Applications/MATLAB_R2013a.app/bin/matlab " "-nodesktop -nojvm -nosplash -nodisplay <" m-file)))) (delete-file m-file) (when results ;; strip out >> (setq results (replace-regexp-in-string ">> " "" results)) ;; remove first 10 lines that are the header. (setq results (mapconcat 'identity (nthcdr 10 (split-string results "\n")) "\n"))) (org-babel-result-cond result-params results)))) #+END_SRC #+begin_src matlab :results output latex clear all; syms e p R g w K K2; phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; jac=jacobian(phi,[e,p]); ltxjac=latex(jac); disp(ltxjac) #+end_src #+RESULTS: #+BEGIN_LaTeX \left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, \left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + 1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + 1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e + p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} \end{array}\right) #+END_LaTeX Uwe Brauer writes: >>>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > > > Here is an example using sympy. I think you will have to wrap the matlab > > output in $$ yourself if that is what you want. > > Right. Using your example I obtain: > ,---- > | > | > | < M A T L A B (R) > > | Copyright 1984-2010 The MathWorks, Inc. > | Version 7.10.0.499 (R2010a) 32-bit (glnx86) > | February 5, 2010 > | > | > | To get started, type one of these: helpwin, helpdesk, or demo. > | For product information, visit www.mathworks.com. > | > | >> >> >> >> >> >> > | ltxjac = > | > | \left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, \left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + 1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + 1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e + p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} \end{array}\right) > | > | >> > `---- > > That is not perfect but much better than the original solutions, thanks > > Uwe -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2016-07-11 15:55 ` John Kitchin @ 2016-07-11 16:12 ` Uwe Brauer 2017-03-10 16:08 ` Uwe Brauer [not found] ` <5e1e71e3698e415ca51a0b9e3cab5dac@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> 2 siblings, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2016-07-11 16:12 UTC (permalink / raw) To: emacs-orgmode >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > You might consider the alternative, no-frills approach below. I defined > a new execute function that strips the header and >> out of the output. > It won't support any kind of session or header variables, but if you > don't use those it might work for you. Great, I had to modify your call of the matlab bin, but then it works like charm, thanks very much. Maybe to add it to the org-addons somewhere? Uwe ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2016-07-11 15:55 ` John Kitchin 2016-07-11 16:12 ` Uwe Brauer @ 2017-03-10 16:08 ` Uwe Brauer 2017-03-10 17:51 ` Scott Randby [not found] ` <5e1e71e3698e415ca51a0b9e3cab5dac@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> 2 siblings, 1 reply; 29+ messages in thread From: Uwe Brauer @ 2017-03-10 16:08 UTC (permalink / raw) To: John Kitchin; +Cc: Uwe Brauer, emacs-orgmode >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: Hi John, Quite some time ago you send me this code of yours. It somehow disappeared in my mail and only by now I tried it out, great, really Only one question I copied your code in a org file, executed the src sections and obtained: > #+begin_src matlab :results output latex > clear all; > syms e p R g w K K2; > phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; > jac=jacobian(phi,[e,p]); > ltxjac=latex(jac); > disp(ltxjac) > #+end_src > #+RESULTS: > #+BEGIN_LaTeX > \left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + > e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, > \left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + > p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, > \left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + > 1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + > 1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + > p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e + > p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + > p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} > \end{array}\right) > #+END_LaTeX How do I suppose to continue now? Because if I export this to a latex file the latex equations are not exported! I admit that I only use org files this way export them to latex and continue working. What do I miss? Thanks Uwe Your mail: >You might consider the alternative, no-frills approach below. I defined >a new execute function that strips the header and >> out of the output. >It won't support any kind of session or header variables, but if you >don't use those it might work for you. > >#+BEGIN_SRC emacs-lisp >(defun org-babel-execute:matlab (body params) > (interactive "P") > (let* ((current-file (buffer-file-name)) > (code (org-element-property :value (org-element-context))) > (result-params (cdr (assoc :result-params params))) > m-file > md5-hash) > > > (with-temp-buffer > (insert code) > (setq md5-hash (md5 (buffer-string)) > mbuffer (format "*m-%s*" md5-hash) > m-file (format "m-%s.m" md5-hash))) > > ;; create the file to run > (with-temp-file m-file > (insert code)) > > (let ((results (shell-command-to-string > (concat > "/Applications/MATLAB_R2013a.app/bin/matlab " > "-nodesktop -nojvm -nosplash -nodisplay <" > m-file)))) > (delete-file m-file) > (when results > ;; strip out >> > (setq results (replace-regexp-in-string ">> " "" results)) > ;; remove first 10 lines that are the header. > (setq results (mapconcat 'identity > (nthcdr 10 (split-string results "\n")) > "\n"))) > (org-babel-result-cond result-params > results)))) >#+END_SRC > >#+begin_src matlab :results output latex >clear all; >syms e p R g w K K2; >phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; > >jac=jacobian(phi,[e,p]); >ltxjac=latex(jac); >disp(ltxjac) >#+end_src > >#+RESULTS: >#+BEGIN_LaTeX > >\left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + >e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, >\left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + >p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, >\left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + >1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + >1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + >p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e + >p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + >p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} >\end{array}\right) >#+END_LaTeX > > > >Uwe Brauer writes: > >[+] >>>>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: >> >> > Here is an example using sympy. I think you will have to wrap the matlab >> > output in $$ yourself if that is what you want. >> >> Right. Using your example I obtain: >> ,---- >> | >> | >> | < M A T L A B (R) > >> | Copyright 1984-2010 The MathWorks, Inc. >> | Version 7.10.0.499 (R2010a) 32-bit (glnx86) >> | February 5, 2010 >> | >> | >> | To get started, type one of these: helpwin, helpdesk, or demo. >> | For product information, visit www.mathworks.com. >> | >> | >> >> >> >> >> >> >> | ltxjac = >> | >> | \left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + >> | e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, >> | \left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + >> | p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, >> | \left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + >> | 1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + >> | 1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + >> | p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e >> | + p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + >> | p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} >> | \end{array}\right) >> | >> | >> >> `---- >> >> That is not perfect but much better than the original solutions, thanks >> >> Uwe > > >-- >Professor John Kitchin >Doherty Hall A207F >Department of Chemical Engineering >Carnegie Mellon University >Pittsburgh, PA 15213 >412-268-7803 >@johnkitchin >http://kitchingroup.cheme.cmu.edu > ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-10 16:08 ` Uwe Brauer @ 2017-03-10 17:51 ` Scott Randby 2017-03-10 21:15 ` Uwe Brauer 0 siblings, 1 reply; 29+ messages in thread From: Scott Randby @ 2017-03-10 17:51 UTC (permalink / raw) To: Uwe Brauer, emacs-orgmode On 03/10/2017 11:08 AM, Uwe Brauer wrote: >>>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > > Hi John, > > Quite some time ago you send me this code of yours. It somehow > disappeared in my mail and only by now I tried it out, great, really > > Only one question > I copied your code in a org file, executed the src sections and > obtained: > > > > #+begin_src matlab :results output latex > > clear all; > > syms e p R g w K K2; > > phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; > > > jac=jacobian(phi,[e,p]); > > ltxjac=latex(jac); > > disp(ltxjac) > > #+end_src > > > #+RESULTS: > > #+BEGIN_LaTeX > > > \left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + > > e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, > > \left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + > > p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, > > \left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + > > 1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + > > 1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + > > p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e + > > p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + > > p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} > > \end{array}\right) > > #+END_LaTeX > > How do I suppose to continue now? Because if I export this to a latex > file the latex equations are not exported! I admit that I only use org > files this way export them to latex and continue working. You need to change "#+BEGIN_LaTeX" to "#+begin_export latex" and "#+END_LaTeX" to "#+end_export" for Org 9.0 and above. Scott Randby > > What do I miss? > > Thanks > > Uwe > > Your mail: > >> You might consider the alternative, no-frills approach below. I defined >> a new execute function that strips the header and >> out of the output. >> It won't support any kind of session or header variables, but if you >> don't use those it might work for you. >> >> #+BEGIN_SRC emacs-lisp >> (defun org-babel-execute:matlab (body params) >> (interactive "P") >> (let* ((current-file (buffer-file-name)) >> (code (org-element-property :value (org-element-context))) >> (result-params (cdr (assoc :result-params params))) >> m-file >> md5-hash) >> >> >> (with-temp-buffer >> (insert code) >> (setq md5-hash (md5 (buffer-string)) >> mbuffer (format "*m-%s*" md5-hash) >> m-file (format "m-%s.m" md5-hash))) >> >> ;; create the file to run >> (with-temp-file m-file >> (insert code)) >> >> (let ((results (shell-command-to-string >> (concat >> "/Applications/MATLAB_R2013a.app/bin/matlab " >> "-nodesktop -nojvm -nosplash -nodisplay <" >> m-file)))) >> (delete-file m-file) >> (when results >> ;; strip out >> >> (setq results (replace-regexp-in-string ">> " "" results)) >> ;; remove first 10 lines that are the header. >> (setq results (mapconcat 'identity >> (nthcdr 10 (split-string results "\n")) >> "\n"))) >> (org-babel-result-cond result-params >> results)))) >> #+END_SRC >> >> #+begin_src matlab :results output latex >> clear all; >> syms e p R g w K K2; >> phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; >> >> jac=jacobian(phi,[e,p]); >> ltxjac=latex(jac); >> disp(ltxjac) >> #+end_src >> >> #+RESULTS: >> #+BEGIN_LaTeX >> >> \left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + >> e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, >> \left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + >> p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, >> \left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + >> 1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + >> 1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + >> p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e + >> p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + >> p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} >> \end{array}\right) >> #+END_LaTeX >> >> >> >> Uwe Brauer writes: >> >> [+] >>>>>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: >>> >>> > Here is an example using sympy. I think you will have to wrap the matlab >>> > output in $$ yourself if that is what you want. >>> >>> Right. Using your example I obtain: >>> ,---- >>> | >>> | >>> | < M A T L A B (R) > >>> | Copyright 1984-2010 The MathWorks, Inc. >>> | Version 7.10.0.499 (R2010a) 32-bit (glnx86) >>> | February 5, 2010 >>> | >>> | >>> | To get started, type one of these: helpwin, helpdesk, or demo. >>> | For product information, visit www.mathworks.com. >>> | >>> | >> >> >> >> >> >> >>> | ltxjac = >>> | >>> | \left(\begin{array}{cc} {\left(\left(e + p\right)\, R^2 + >>> | e\right)}^{\frac{g}{2} - \frac{3}{2}}\, \left(R^2 + 1\right)\, >>> | \left(\frac{g}{2} - \frac{1}{2}\right) & R^2\, {\left(\left(e + >>> | p\right)\, R^2 + e\right)}^{\frac{g}{2} - \frac{3}{2}}\, >>> | \left(\frac{g}{2} - \frac{1}{2}\right)\\ \frac{R\, \sqrt{R^2 + >>> | 1}}{\left(e + p\right)\, R^2 + e} - \frac{R\, {\left(R^2 + >>> | 1\right)}^{\frac{3}{2}}\, \left(e + p\right)}{{\left(\left(e + >>> | p\right)\, R^2 + e\right)}^2} & \frac{R\, \sqrt{R^2 + 1}}{\left(e >>> | + p\right)\, R^2 + e} - \frac{R^3\, \sqrt{R^2 + 1}\, \left(e + >>> | p\right)}{{\left(\left(e + p\right)\, R^2 + e\right)}^2} >>> | \end{array}\right) >>> | >>> | >> >>> `---- >>> >>> That is not perfect but much better than the original solutions, thanks >>> >>> Uwe >> >> >> -- >> Professor John Kitchin >> Doherty Hall A207F >> Department of Chemical Engineering >> Carnegie Mellon University >> Pittsburgh, PA 15213 >> 412-268-7803 >> @johnkitchin >> http://kitchingroup.cheme.cmu.edu >> > > ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-10 17:51 ` Scott Randby @ 2017-03-10 21:15 ` Uwe Brauer 2017-03-10 21:56 ` John Kitchin 2017-03-11 23:50 ` workflow, matlab+latex in org file Scott Randby 0 siblings, 2 replies; 29+ messages in thread From: Uwe Brauer @ 2017-03-10 21:15 UTC (permalink / raw) To: emacs-orgmode > On 03/10/2017 11:08 AM, Uwe Brauer wrote: > You need to change "#+BEGIN_LaTeX" to "#+begin_export latex" and > "#+END_LaTeX" to "#+end_export" for Org 9.0 and above. Thanks, very much, I never understand what is the benefit of those changes which break backward compatibility (or forward compatibility) ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-10 21:15 ` Uwe Brauer @ 2017-03-10 21:56 ` John Kitchin 2017-03-10 22:50 ` Uwe Brauer 2017-03-11 23:50 ` workflow, matlab+latex in org file Scott Randby 1 sibling, 1 reply; 29+ messages in thread From: John Kitchin @ 2017-03-10 21:56 UTC (permalink / raw) To: emacs-orgmode@gnu.org [-- Attachment #1: Type: text/plain, Size: 778 bytes --] I get the right wrapper around the results block in the org-file. I did have to add :exports results to the header to get it to export though. John ----------------------------------- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu On Fri, Mar 10, 2017 at 4:15 PM, Uwe Brauer <oub@mat.ucm.es> wrote: > > > On 03/10/2017 11:08 AM, Uwe Brauer wrote: > > > You need to change "#+BEGIN_LaTeX" to "#+begin_export latex" and > > "#+END_LaTeX" to "#+end_export" for Org 9.0 and above. > > Thanks, very much, I never understand what is the benefit of those > changes which break backward compatibility (or forward compatibility) > > > [-- Attachment #2: Type: text/html, Size: 1477 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-10 21:56 ` John Kitchin @ 2017-03-10 22:50 ` Uwe Brauer 2017-03-10 23:17 ` SOLVED (was: workflow, matlab+latex in org file) Uwe Brauer 0 siblings, 1 reply; 29+ messages in thread From: Uwe Brauer @ 2017-03-10 22:50 UTC (permalink / raw) To: emacs-orgmode >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > I get the right wrapper around the results block in the org-file. I did > have to add :exports results > to the header to get it to export though. Thanks ok the whole message you sent me I can now copy into a org file and export it to latex, very nice. However I just realized that I don't understand the logic of what you sent to me. So it looks like #+BEGIN_SRC emacs-lisp (defun org-babel-execute:matlab (body params) (interactive "P") (let* ((current-file (buffer-file-name)) (code (org-element-property :value (org-element-context))) (result-params (cdr (assoc :result-params params))) m-file md5-hash) (with-temp-buffer (insert code) (setq md5-hash (md5 (buffer-string)) mbuffer (format "*m-%s*" md5-hash) m-file (format "m-%s.m" md5-hash))) ;; create the file to run (with-temp-file m-file (insert code)) (let ((results (shell-command-to-string (concat "/Applications/MATLAB_R2013a.app/bin/matlab " "-nodesktop -nojvm -nosplash -nodisplay <" m-file)))) (delete-file m-file) (when results ;; strip out >> (setq results (replace-regexp-in-string ">> " "" results)) ;; remove first 10 lines that are the header. (setq results (mapconcat 'identity (nthcdr 10 (split-string results "\n")) "\n"))) (org-babel-result-cond result-params results)))) #+END_SRC That lisp function uses a m-file, but which one? When I run the lisp code in my org file (changing the path to my matlab installations path) I obtain #+RESULTS: : org-babel-execute:matlab But not what you have sent to me and I copied below namely #+begin_src matlab :results output latex clear all; syms e p R g w K K2; phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; jac=jacobian(phi,[e,p]); ltxjac=latex(jac); disp(ltxjac) #+end_src which I presume is your output of the lisp function? I am sorry but I am more confused than ever. I even see that I cannot (after I have executed your lisp function) execute anymore the following #+begin_src matlab :results output t=[-3 -2 1 4 6] y=[2 0 3 1 4] cs = spline(t,[0 y 0 ]) [b,c,l,k,d]= unmkpp(cs) #+end_src I tested it several times. I restart emacs open an org mode with the above matlab instructions and I can execute matlab. Then I execute your lisp code and I cannot run matlab anymore in an org buffer. What is wrong here? Uwe ^ permalink raw reply [flat|nested] 29+ messages in thread
* SOLVED (was: workflow, matlab+latex in org file) 2017-03-10 22:50 ` Uwe Brauer @ 2017-03-10 23:17 ` Uwe Brauer 0 siblings, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2017-03-10 23:17 UTC (permalink / raw) To: emacs-orgmode >>> "Uwe" == Uwe Brauer <oub@mat.ucm.es> writes: >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: >> I get the right wrapper around the results block in the org-file. I did >> have to add :exports results >> to the header to get it to export though. > Thanks ok the whole message you sent me I can now copy into a org file > and export it to latex, very nice. > However I just realized that I don't understand the logic of what you > sent to me. So it looks like Sorry my fault, when I had to modify your function, I made a mistake I understand your code, I think. ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-10 21:15 ` Uwe Brauer 2017-03-10 21:56 ` John Kitchin @ 2017-03-11 23:50 ` Scott Randby 1 sibling, 0 replies; 29+ messages in thread From: Scott Randby @ 2017-03-11 23:50 UTC (permalink / raw) To: emacs-orgmode On 03/10/2017 04:15 PM, Uwe Brauer wrote: > > > On 03/10/2017 11:08 AM, Uwe Brauer wrote: > > > You need to change "#+BEGIN_LaTeX" to "#+begin_export latex" and > > "#+END_LaTeX" to "#+end_export" for Org 9.0 and above. > > Thanks, very much, I never understand what is the benefit of those > changes which break backward compatibility (or forward compatibility) I agree that breaking backward compatibility is a problem, but I support this change because font locking of LaTeX code (and others) now works well. There is a function in the CHANGES document (http://orgmode.org/Changes.html) called org-repair-export-blocks that works really well. I added the function to my customizations file and run it whenever I need to modify and export an older file. Scott > > > . > ^ permalink raw reply [flat|nested] 29+ messages in thread
[parent not found: <5e1e71e3698e415ca51a0b9e3cab5dac@HE1PR01MB1898.eurprd01.prod.exchangelabs.com>]
* Re: workflow, matlab+latex in org file [not found] ` <5e1e71e3698e415ca51a0b9e3cab5dac@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> @ 2017-03-10 18:03 ` Eric S Fraga 2017-03-10 21:18 ` Uwe Brauer ` (2 more replies) 0 siblings, 3 replies; 29+ messages in thread From: Eric S Fraga @ 2017-03-10 18:03 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 942 bytes --] On Friday, 10 Mar 2017 at 16:08, Uwe Brauer wrote: >>>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > > Hi John, > > Quite some time ago you send me this code of yours. It somehow > disappeared in my mail and only by now I tried it out, great, really > > Only one question > I copied your code in a org file, executed the src sections and > obtained: > > > > #+begin_src matlab :results output latex [...] > How do I suppose to continue now? Because if I export this to a latex > file the latex equations are not exported! I admit that I only use org > files this way export them to latex and continue working. You may need to add ":exports results" to the src line. Also, you should also modify the code to wrap the output in an equation environment: disp('\begin{equation}') disp(ltxjac) disp('\end{equation}') this works for me then. -- Eric S Fraga (GnuPG: 0xC89193D8FFFCF67D) [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 194 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-10 18:03 ` Eric S Fraga @ 2017-03-10 21:18 ` Uwe Brauer 2017-03-11 8:04 ` Uwe Brauer [not found] ` <cf7ef1dfa1cf455bbaf63ab5fbdf18e5@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> 2 siblings, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2017-03-10 21:18 UTC (permalink / raw) To: emacs-orgmode > On Friday, 10 Mar 2017 at 16:08, Uwe Brauer wrote: > [...] > You may need to add ":exports results" to the src line. > Also, you should also modify the code to wrap the output in an equation > environment: > disp('\begin{equation}') > disp(ltxjac) > disp('\end{equation}') > this works for me then. Thanks I want to dig more into that especially when it comes to the output of non symbolic variables (which is the default) to format those expressions seems harder to me. ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-10 18:03 ` Eric S Fraga 2017-03-10 21:18 ` Uwe Brauer @ 2017-03-11 8:04 ` Uwe Brauer 2017-03-11 13:23 ` John Kitchin [not found] ` <cf7ef1dfa1cf455bbaf63ab5fbdf18e5@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> 2 siblings, 1 reply; 29+ messages in thread From: Uwe Brauer @ 2017-03-11 8:04 UTC (permalink / raw) To: emacs-orgmode > On Friday, 10 Mar 2017 at 16:08, Uwe Brauer wrote: > [...] > You may need to add ":exports results" to the src line. > Also, you should also modify the code to wrap the output in an equation > environment: > disp('\begin{equation}') > disp(ltxjac) > disp('\end{equation}') I played a bit more around, and John's code is a great help but the matlab output for non symbolic variables is just awful As in #+begin_src matlab :results output clear all; x=[ 1 2 2 3 4] #+end_src #+RESULTS: : : x = : : 1 2 2 3 4 : Does anybody know how to get a better formatted output, to get rid of the empty lines and newline? best would be a org-table? org-table-convert-region results in | : 1 2 2 3 4 | Uwe Brauer ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-11 8:04 ` Uwe Brauer @ 2017-03-11 13:23 ` John Kitchin 2017-03-11 14:16 ` Uwe Brauer 2017-10-20 11:03 ` workflow, matlab+latex in org file Uwe Brauer 0 siblings, 2 replies; 29+ messages in thread From: John Kitchin @ 2017-03-11 13:23 UTC (permalink / raw) To: Uwe Brauer; +Cc: emacs-orgmode You might dig around in ob-octave to see how it works. It should be able to Matlab (and on Linux/Mac I believe it might). On Windows, it has been broken for a long time due to the lack of a proper shell (maybe that can be adapted in win10 though). I vaguely recall making that matlab function to try it out on Windows some years ago. There is a Jupyter Matlab kernel now. https://github.com/Calysto/matlab_kernel I was able to use this (and installing the kernel, and making sure a matlab is on the path): #+BEGIN_SRC emacs-lisp (add-to-list 'org-src-lang-modes '("matlab" . matlab)) ;; set default headers for convenience (setq org-babel-default-header-args:matlab '((:results . "output replace") (:session . "matlab") (:kernel . "matlab") (:exports . "code") (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no"))) (defalias 'org-babel-execute:matlab 'org-babel-execute:ipython) (defalias 'org-babel-prep-session:matlab 'org-babel-prep-session:ipython) (defalias 'org-babel-matlab-initiate-session 'org-babel-ipython-initiate-session) #+END_SRC #+RESULTS: : org-babel-matlab-initiate-session To enable this: #+BEGIN_SRC matlab :results output org drawer x = [1, 2, 3, 4, 5]; fprintf('|%d', x) #+END_SRC #+RESULTS: :RESULTS: | 1 | 2 | 3 | 4 | 5 | :END: It is not much better output wise without the fprintf, but that seems to be a feature of Matlab's output. I think Eric is probably right, you will have use fprintf to get what you want. I am not a big matlab user these days, so I do not have a sense for how usable the kernel is. It does run in a session, which is a big improvement over the other one I wrote. Uwe Brauer writes: > > On Friday, 10 Mar 2017 at 16:08, Uwe Brauer wrote: > > > [...] > > > > You may need to add ":exports results" to the src line. > > > Also, you should also modify the code to wrap the output in an equation > > environment: > > > disp('\begin{equation}') > > disp(ltxjac) > > disp('\end{equation}') > > > I played a bit more around, and John's code is a great help but the > matlab output for non symbolic variables is just awful > > As in > #+begin_src matlab :results output > clear all; > x=[ 1 2 2 3 4] > #+end_src > > #+RESULTS: > : > : x = > : > : 1 2 2 3 4 > : > > Does anybody know how to get a better formatted output, to get rid of > the empty lines and newline? best would be a org-table? > > org-table-convert-region results in > > | : 1 2 2 3 4 | > > Uwe Brauer -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-11 13:23 ` John Kitchin @ 2017-03-11 14:16 ` Uwe Brauer 2017-03-11 14:22 ` John Kitchin 2017-10-20 11:03 ` workflow, matlab+latex in org file Uwe Brauer 1 sibling, 1 reply; 29+ messages in thread From: Uwe Brauer @ 2017-03-11 14:16 UTC (permalink / raw) To: emacs-orgmode > You might dig around in ob-octave to see how it works. It should be able > to Matlab (and on Linux/Mac I believe it might). On Windows, it has been > broken for a long time due to the lack of a proper shell (maybe that can > be adapted in win10 though). > I vaguely recall making that matlab function to try it out on Windows > some years ago. > There is a Jupyter Matlab kernel now. > https://github.com/Calysto/matlab_kernel Thanks for pinting it out to me. Couldn't install it so far ImportError: No module named pathlib when trying directly to use >python -m matlab_kernel install Or ould not find a version that satisfies the requirement backports.tempfile (from matlab-kernel) (from versions: 1.0rc1, 1.0rc1) Cleaning up... No distributions matching the version for backports.tempfile (from matlab-kernel) Storing debug log for failure in /home/oub/.pip/pip.log Have to write the author. The output using your code and Eric's suggestion is ok but I am curious to see what the kernel is supposed to do better. Uwe > I was able to use this (and installing the kernel, and making sure a > matlab is on the path): > #+BEGIN_SRC emacs-lisp > (add-to-list 'org-src-lang-modes '("matlab" . matlab)) > ;; set default headers for convenience > (setq org-babel-default-header-args:matlab > '((:results . "output replace") > (:session . "matlab") > (:kernel . "matlab") > (:exports . "code") > (:cache . "no") > (:noweb . "no") > (:hlines . "no") > (:tangle . "no"))) > (defalias 'org-babel-execute:matlab 'org-babel-execute:ipython) > (defalias 'org-babel-prep-session:matlab 'org-babel-prep-session:ipython) > (defalias 'org-babel-matlab-initiate-session 'org-babel-ipython-initiate-session) > #+END_SRC > #+RESULTS: > : org-babel-matlab-initiate-session > To enable this: > #+BEGIN_SRC matlab :results output org drawer > x = [1, 2, 3, 4, 5]; > fprintf('|%d', x) > #+END_SRC > #+RESULTS: > :RESULTS: > | 1 | 2 | 3 | 4 | 5 | > :END: > It is not much better output wise without the fprintf, but that seems to > be a feature of Matlab's output. I think Eric is probably right, you > will have use fprintf to get what you want. > I am not a big matlab user these days, so I do not have a sense for how > usable the kernel is. It does run in a session, which is a big > improvement over the other one I wrote. > Uwe Brauer writes: ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-11 14:16 ` Uwe Brauer @ 2017-03-11 14:22 ` John Kitchin 2017-03-11 14:54 ` Uwe Brauer 2017-03-11 16:50 ` Uwe Brauer 0 siblings, 2 replies; 29+ messages in thread From: John Kitchin @ 2017-03-11 14:22 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 3095 bytes --] The kernel provides a "session" so matlab stays alive and doesn't have to restart on every block. The kernel might require python3. On Sat, Mar 11, 2017 at 9:20 AM Uwe Brauer <oub@mat.ucm.es> wrote: > > > You might dig around in ob-octave to see how it works. It should be > able > > to Matlab (and on Linux/Mac I believe it might). On Windows, it has > been > > broken for a long time due to the lack of a proper shell (maybe that > can > > be adapted in win10 though). > > > I vaguely recall making that matlab function to try it out on Windows > > some years ago. > > > There is a Jupyter Matlab kernel now. > > https://github.com/Calysto/matlab_kernel > > > Thanks for pinting it out to me. Couldn't install it so far > ImportError: No module named pathlib > when trying directly to use >python -m matlab_kernel install > > Or ould not find a version that satisfies the requirement > backports.tempfile (from matlab-kernel) (from versions: 1.0rc1, 1.0rc1) > Cleaning up... > No distributions matching the version for backports.tempfile (from > matlab-kernel) > Storing debug log for failure in /home/oub/.pip/pip.log > > Have to write the author. > > The output using your code and Eric's suggestion is ok but I am curious > to see what the kernel is supposed to do better. > > Uwe > > I was able to use this (and installing the kernel, and making sure a > > matlab is on the path): > > > #+BEGIN_SRC emacs-lisp > > (add-to-list 'org-src-lang-modes '("matlab" . matlab)) > > > ;; set default headers for convenience > > (setq org-babel-default-header-args:matlab > > '((:results . "output replace") > > (:session . "matlab") > > (:kernel . "matlab") > > (:exports . "code") > > (:cache . "no") > > (:noweb . "no") > > (:hlines . "no") > > (:tangle . "no"))) > > > (defalias 'org-babel-execute:matlab 'org-babel-execute:ipython) > > (defalias 'org-babel-prep-session:matlab > 'org-babel-prep-session:ipython) > > (defalias 'org-babel-matlab-initiate-session > 'org-babel-ipython-initiate-session) > > #+END_SRC > > > > #+RESULTS: > > : org-babel-matlab-initiate-session > > > To enable this: > > > #+BEGIN_SRC matlab :results output org drawer > > x = [1, 2, 3, 4, 5]; > > fprintf('|%d', x) > > #+END_SRC > > > #+RESULTS: > > :RESULTS: > > | 1 | 2 | 3 | 4 | 5 | > > :END: > > > It is not much better output wise without the fprintf, but that seems > to > > be a feature of Matlab's output. I think Eric is probably right, you > > will have use fprintf to get what you want. > > > I am not a big matlab user these days, so I do not have a sense for > how > > usable the kernel is. It does run in a session, which is a big > > improvement over the other one I wrote. > > > Uwe Brauer writes: > > > > -- John ----------------------------------- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu [-- Attachment #2: Type: text/html, Size: 5733 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-11 14:22 ` John Kitchin @ 2017-03-11 14:54 ` Uwe Brauer 2017-03-11 16:50 ` Uwe Brauer 1 sibling, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2017-03-11 14:54 UTC (permalink / raw) To: emacs-orgmode > The kernel provides a "session" so matlab stays alive and doesn't have to > restart on every block. Ah ok like the matlab shell as in emacs matlab mode. It seems that I got it to work, there was a python lib conflict but the author released just a new version solving the problem. > The kernel might require python3. Seems ok in 2.7, but I am not sure that it is running, I just evaluated the lisp code you sent me, I can't see any difference so maybe something is not right. Uwe ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-11 14:22 ` John Kitchin 2017-03-11 14:54 ` Uwe Brauer @ 2017-03-11 16:50 ` Uwe Brauer 2017-03-11 16:53 ` John Kitchin 1 sibling, 1 reply; 29+ messages in thread From: Uwe Brauer @ 2017-03-11 16:50 UTC (permalink / raw) To: emacs-orgmode >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > The kernel provides a "session" so matlab stays alive and doesn't have to > restart on every block. > The kernel might require python3. Although I think I installed the kernel, I am not sure about the code you sent me, namely (defalias 'org-babel-execute:matlab 'org-babel-execute:ipython) (defalias 'org-babel-prep-session:matlab 'org-babel-prep-session:ipython) (defalias 'org-babel-matlab-initiate-session 'org-babel-ipython-initiate-session) These ipython functions where are they supposed to be defined? BTW where do you tell the kernel about the matlab executables? Uwe ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-11 16:50 ` Uwe Brauer @ 2017-03-11 16:53 ` John Kitchin 2017-03-12 15:24 ` matlab-shell-run-command (was: workflow, matlab+latex in org file) Uwe Brauer 0 siblings, 1 reply; 29+ messages in thread From: John Kitchin @ 2017-03-11 16:53 UTC (permalink / raw) To: emacs-orgmode@gnu.org [-- Attachment #1: Type: text/plain, Size: 1262 bytes --] You can put them into an elisp src block to try it out. They have to go in an init file to be permanent. I just made a symlink to the matlab executable on my path. The ipython functions are defined in ob-ipython, https://github.com/gregsexton/ob-ipython I think. John ----------------------------------- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu On Sat, Mar 11, 2017 at 11:50 AM, Uwe Brauer <oub@mat.ucm.es> wrote: > >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > > > The kernel provides a "session" so matlab stays alive and doesn't > have to > > restart on every block. > > > The kernel might require python3. > > Although I think I installed the kernel, I am not sure about the code > you sent me, namely > > (defalias 'org-babel-execute:matlab 'org-babel-execute:ipython) > (defalias 'org-babel-prep-session:matlab 'org-babel-prep-session:ipython) > (defalias 'org-babel-matlab-initiate-session 'org-babel-ipython-initiate- > session) > > These ipython functions where are they supposed to be defined? > > BTW where do you tell the kernel about the matlab executables? > > Uwe > > > [-- Attachment #2: Type: text/html, Size: 2226 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* matlab-shell-run-command (was: workflow, matlab+latex in org file) 2017-03-11 16:53 ` John Kitchin @ 2017-03-12 15:24 ` Uwe Brauer 0 siblings, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2017-03-12 15:24 UTC (permalink / raw) To: emacs-orgmode >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: > You can put them into an elisp src block to try it out. They have to go in > an init file to be permanent. I just made a symlink to the matlab > executable on my path. > The ipython functions are defined in ob-ipython, > https://github.com/gregsexton/ob-ipython I think. I just found out that it will not work for me since the matlab-kernel will need the python support of matlab, which requires version 2016 o later. And indeed the most annoying issue of executing matlab in an org buffer using the babel interface was the fact that it was slow since every time matlab needs to be restarted. Now that matlab-kernel thing seems to resolve the issue. However it needs a very recent version of matlab. Therefore my proposal: there exists already a matlab-shell written in lisp written by Eric Ludlam and others which does not require a restart of matlab for every call. Couldn't your code (defun org-babel-execute:matlab (body params) trying to use matlab-shell-run-command or matlab-shell-run-region? I don't understand enough of either function to try to modify it. Regards Uwe ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-11 13:23 ` John Kitchin 2017-03-11 14:16 ` Uwe Brauer @ 2017-10-20 11:03 ` Uwe Brauer 2017-10-20 11:54 ` Uwe Brauer 1 sibling, 1 reply; 29+ messages in thread From: Uwe Brauer @ 2017-10-20 11:03 UTC (permalink / raw) To: emacs-orgmode >>> "John" == John Kitchin <jkitchin@andrew.cmu.edu> writes: This message is from July, but meanwhile I upgraded to Ubuntu 16.04 matlab 2016b which includes the python engine/kernel and finally I installed the Jupiter matlab kernel via pip, however I tried to follow your recommendations below: > You might dig around in ob-octave to see how it works. It should be able > to Matlab (and on Linux/Mac I believe it might). On Windows, it has been > broken for a long time due to the lack of a proper shell (maybe that can > be adapted in win10 though). > I vaguely recall making that matlab function to try it out on Windows > some years ago. > There is a Jupyter Matlab kernel now. > https://github.com/Calyro/matlab_kernel > I was able to use this (and installing the kernel, and making sure a > matlab is on the path): > #+BEGIN_SRC emacs-lisp > (add-to-list 'org-src-lang-modes '("matlab" . matlab)) > ;; set default headers for convenience > (setq org-babel-default-header-args:matlab > '((:results . "output replace") > (:session . "matlab") > (:kernel . "matlab") > (:exports . "code") > (:cache . "no") > (:noweb . "no") > (:hlines . "no") > (:tangle . "no"))) > (defalias 'org-babel-execute:matlab 'org-babel-execute:ipython) > (defalias 'org-babel-prep-session:matlab 'org-babel-prep-session:ipython) > (defalias 'org-babel-matlab-initiate-session 'org-babel-ipython-initiate-session) > #+END_SRC > #+RESULTS: > : org-babel-matlab-initiate-session That I obtain > To enable this: > #+BEGIN_SRC matlab :results output org drawer > x = [1, 2, 3, 4, 5]; > fprintf('|%d', x) > #+END_SRC Here I obtain the following error: Debugger entered--Lisp error: (void-function org-babel-execute:matlab) org-babel-execute:matlab("x = [1, 2, 3, 4, 5];\nfprintf('|%d', x)" ((:colname-names) (:rowname-names) (:result-params "replace" "output" "drawer") (:result-type . output) (:results . "replace output drawer") (:exports . "code") (:session . "matlab") (:kernel . "matlab") (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no"))) org-babel-execute-src-block(nil ("matlab" "x = [1, 2, 3, 4, 5];\nfprintf('|%d', x)" ((:colname-names) (:rowname-names) (:result-params "drawer" "output" "replace") (:result-type . output) (:results . "drawer output replace") (:exports . "code") (:tangle . "no") (:hlines . "no") (:noweb . "no") (:cache . "no") (:kernel . "matlab") (:session . "matlab")) "" nil 671 "(ref:%s)")) org-ctrl-c-ctrl-c(nil) funcall-interactively(org-ctrl-c-ctrl-c nil) call-interactively(org-ctrl-c-ctrl-c nil nil) command-execute(org-ctrl-c-ctrl-c) What is the problem? Which package do I miss, ipython is installed in /usr/local/bin Thanks Uwe Brauer ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-10-20 11:03 ` workflow, matlab+latex in org file Uwe Brauer @ 2017-10-20 11:54 ` Uwe Brauer 0 siblings, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2017-10-20 11:54 UTC (permalink / raw) To: emacs-orgmode > Here I obtain the following error: > Debugger entered--Lisp error: (void-function org-babel-execute:matlab) > org-babel-execute:matlab("x = [1, 2, 3, 4, 5];\nfprintf('|%d', x)" > ((:colname-names) (:rowname-names) (:result-params "replace" "output" > "drawer") (:result-type . output) (:results . "replace output drawer") > (:exports . "code") (:session . "matlab") (:kernel . "matlab") (:cache > . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no"))) > org-babel-execute-src-block(nil ("matlab" "x = [1, 2, 3, 4, > 5];\nfprintf('|%d', x)" ((:colname-names) (:rowname-names) > (:result-params "drawer" "output" "replace") (:result-type . output) > (:results . "drawer output replace") (:exports . "code") (:tangle . > "no") (:hlines . "no") (:noweb . "no") (:cache . "no") (:kernel . > "matlab") (:session . "matlab")) "" nil 671 "(ref:%s)")) > org-ctrl-c-ctrl-c(nil) funcall-interactively(org-ctrl-c-ctrl-c nil) > call-interactively(org-ctrl-c-ctrl-c nil nil) > command-execute(org-ctrl-c-ctrl-c) Ok, I did not had ob-ipython installed. Now I did but obtain a different error Debugger entered--Lisp error: (error "There was a fatal error trying to process the request. See *ob-ipython-debug*") signal(error ("There was a fatal error trying to process the request. See *ob-ipython-debug*")) error("There was a fatal error trying to process the request. See *ob-ipython-debug*") ob-ipython--dump-error("Traceback (most recent call last):\n File \"/home/oub/.emacs.d/elpa/ob-ipython-20171008.1733/client.py\", line 60, in <module>\n c = create_client(args.conn_file)\n File \"/home/oub/.emacs.d/elpa/ob-ipython-20171008.1733/client.py\", line 43, in create_client\n cf = find_connection_file('emacs-' + name)\n File \"/usr/local/lib/python2.7/dist-packages/jupyter_client/connect.py\", line 212, in find_connection_file\n raise IOError(\"Could not find %r in %r\" % (filename, path))\nIOError: Could not find 'emacs-matlab' in ['.', '/run/user/1000/jupyter']\n") ob-ipython--execute-request("x = [1, 2, 3, 4, 5];\nfprintf('|%d', x)" "matlab") ob-ipython--execute-sync("x = [1, 2, 3, 4, 5];\nfprintf('|%d', x)" ((:colname-names) (:rowname-names) (:result-params "replace" "output" "drawer") (:result-type . output) (:results . "replace output drawer") (:exports . "code") (:session . "matlab") (:kernel . "matlab") (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no"))) org-babel-execute:matlab("x = [1, 2, 3, 4, 5];\nfprintf('|%d', x)" ((:colname-names) (:rowname-names) (:result-params "replace" "output" "drawer") (:result-type . output) (:results . "replace output drawer") (:exports . "code") (:session . "matlab") (:kernel . "matlab") (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no"))) org-babel-execute-src-block(nil ("matlab" "x = [1, 2, 3, 4, 5];\nfprintf('|%d', x)" ((:colname-names) (:rowname-names) (:result-params "drawer" "output" "replace") (:result-type . output) (:results . "drawer output replace") (:exports . "code") (:tangle . "no") (:hlines . "no") (:noweb . "no") (:cache . "no") (:kernel . "matlab") (:session . "matlab")) "" nil 671 "(ref:%s)")) org-ctrl-c-ctrl-c(nil) funcall-interactively(org-ctrl-c-ctrl-c nil) call-interactively(org-ctrl-c-ctrl-c nil nil) command-execute(org-ctrl-c-ctrl-c) ^ permalink raw reply [flat|nested] 29+ messages in thread
[parent not found: <cf7ef1dfa1cf455bbaf63ab5fbdf18e5@HE1PR01MB1898.eurprd01.prod.exchangelabs.com>]
* Re: workflow, matlab+latex in org file [not found] ` <cf7ef1dfa1cf455bbaf63ab5fbdf18e5@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> @ 2017-03-11 10:37 ` Eric S Fraga 2017-03-11 14:12 ` Uwe Brauer 0 siblings, 1 reply; 29+ messages in thread From: Eric S Fraga @ 2017-03-11 10:37 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 499 bytes --] On Saturday, 11 Mar 2017 at 08:04, Uwe Brauer wrote: > Does anybody know how to get a better formatted output, to get rid of > the empty lines and newline? best would be a org-table? Instead of relying on MATLAB's default output, you can generate formatted output using fprintf [1]. Footnotes: [1] https://uk.mathworks.com/matlabcentral/newsreader/view_thread/44148?requestedDomain=www.mathworks.com -- : Eric S Fraga (0xFFFCF67D), Emacs 26.0.50.1, Org release_9.0.4-242-g2c27b8 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 194 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2017-03-11 10:37 ` Eric S Fraga @ 2017-03-11 14:12 ` Uwe Brauer 0 siblings, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2017-03-11 14:12 UTC (permalink / raw) To: emacs-orgmode >>> "Eric" == Eric S Fraga <e.fraga@ucl.ac.uk> writes: > On Saturday, 11 Mar 2017 at 08:04, Uwe Brauer wrote: >> Does anybody know how to get a better formatted output, to get rid of >> the empty lines and newline? best would be a org-table? > Instead of relying on MATLAB's default output, you can generate > formatted output using fprintf [1]. Ah, great, but it only works for vectors x = [1, 2, 3, 4, 5] fprintf('|%d', x) For matrices it has to be sprintf %% A=[1 2 3; 4 5 6; 7 8 9] sprintf('|%d |%d |%d|\n',A') ^ permalink raw reply [flat|nested] 29+ messages in thread
[parent not found: <m2eg709w4s.fsf@gmail.com>]
* Re: workflow, matlab+latex in org file [not found] <m2eg709w4s.fsf@gmail.com> @ 2016-07-11 13:55 ` Uwe Brauer 0 siblings, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2016-07-11 13:55 UTC (permalink / raw) To: Ken Mankoff; +Cc: emacs-orgmode >>> "Ken" == Ken Mankoff <mankoff@gmail.com> writes: > I can't execute your code, Why not > but what does ":results output latex" show? > And what if you add the ";" to each line so it is not printed, except > the last, which is perhaps explicitly printed? You are right! Thanks. So I tried #+begin_src matlab :results output latex clear all syms e p R g w K K2; phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; jac=jacobian(phi,[e,p]); ltxjac=latex(jac) #+end_src Problem is when I export that to a latex file, the exporter always uses the verbatim environment, but this is not what I want, I want directly the result of ltxjac=latex(jac) interpreted as latex not as source code. ^ permalink raw reply [flat|nested] 29+ messages in thread
[parent not found: <c0b96d809e4b41529f81beaa685a9fd0@HE1PR01MB1898.eurprd01.prod.exchangelabs.com>]
* Re: workflow, matlab+latex in org file [not found] <c0b96d809e4b41529f81beaa685a9fd0@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> @ 2016-07-11 16:42 ` Eric S Fraga 2016-07-12 12:44 ` Uwe Brauer 0 siblings, 1 reply; 29+ messages in thread From: Eric S Fraga @ 2016-07-11 16:42 UTC (permalink / raw) To: emacs-orgmode On Monday, 11 Jul 2016 at 12:32, Uwe Brauer wrote: > Hello > > I want in a org file, to include matlab code and run it (that I know how > to do) > > Then I want certain results, which are symbolic variables, expressed in > latex, we I achieve using matlab's latex command. > > Like > > #+begin_src matlab :results output > clear all > syms e p R g w K K2 > phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)] > > jac=jacobian(phi,[e,p]) > ltxjac=latex(jac) > #+end_src A bit of a kludge but, if you don't want to modify the ob-matlab code, you can explicitly generate LaTeX into a file and use it directly: --8<---------------cut here---------------start------------->8--- #+begin_src octave :exports none :results output clear all pkg load symbolic syms e p R g w K K2; phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; jac=jacobian(phi,[e,p]); ltxjac = latex(jac); fid = fopen("jacobian.tex","w"); fprintf(fid, "%s\n", ltxjac); fclose(fid); ltxjac #+end_src \begin{equation} \input{jacobian} \end{equation} --8<---------------cut here---------------end--------------->8--- I don't have MATLAB so have tested with octave instead... -- : Eric S Fraga (0xFFFCF67D), Emacs 25.0.94.1, Org release_8.3.4-869-gf2c421 ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: workflow, matlab+latex in org file 2016-07-11 16:42 ` Eric S Fraga @ 2016-07-12 12:44 ` Uwe Brauer 0 siblings, 0 replies; 29+ messages in thread From: Uwe Brauer @ 2016-07-12 12:44 UTC (permalink / raw) To: emacs-orgmode >>> "Eric" == Eric S Fraga <e.fraga@ucl.ac.uk> writes: > On Monday, 11 Jul 2016 at 12:32, Uwe Brauer wrote: >> Hello >> >> I want in a org file, to include matlab code and run it (that I know how >> to do) >> >> Then I want certain results, which are symbolic variables, expressed in >> latex, we I achieve using matlab's latex command. >> >> Like >> >> #+begin_src matlab :results output >> clear all >> syms e p R g w K K2 >> phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)] >> >> jac=jacobian(phi,[e,p]) >> ltxjac=latex(jac) >> #+end_src > A bit of a kludge but, if you don't want to modify the ob-matlab code, > you can explicitly generate LaTeX into a file and use it directly: > #+begin_src octave :exports none :results output > clear all > pkg load symbolic > syms e p R g w K K2; > phi=[(e + (e+p)*R^2)^((g-1)/2);((e+p)*R*sqrt(1+R^2))/(e+(e+p)*R^2)]; > jac=jacobian(phi,[e,p]); > ltxjac = latex(jac); > fid = fopen("jacobian.tex","w"); > fprintf(fid, "%s\n", ltxjac); > fclose(fid); > ltxjac > #+end_src > \begin{equation} > \input{jacobian} > \end{equation} Thanks, that is a solution but a bit cumbersome because of the additional latex file. John sent me a hack which seems a bit more flexible. Uwe > I don't have MATLAB so have tested with octave instead... ^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2017-10-20 11:54 UTC | newest] Thread overview: 29+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-07-11 12:32 workflow, matlab+latex in org file Uwe Brauer 2016-07-11 14:05 ` John Kitchin 2016-07-11 14:11 ` Uwe Brauer 2016-07-11 15:55 ` John Kitchin 2016-07-11 16:12 ` Uwe Brauer 2017-03-10 16:08 ` Uwe Brauer 2017-03-10 17:51 ` Scott Randby 2017-03-10 21:15 ` Uwe Brauer 2017-03-10 21:56 ` John Kitchin 2017-03-10 22:50 ` Uwe Brauer 2017-03-10 23:17 ` SOLVED (was: workflow, matlab+latex in org file) Uwe Brauer 2017-03-11 23:50 ` workflow, matlab+latex in org file Scott Randby [not found] ` <5e1e71e3698e415ca51a0b9e3cab5dac@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> 2017-03-10 18:03 ` Eric S Fraga 2017-03-10 21:18 ` Uwe Brauer 2017-03-11 8:04 ` Uwe Brauer 2017-03-11 13:23 ` John Kitchin 2017-03-11 14:16 ` Uwe Brauer 2017-03-11 14:22 ` John Kitchin 2017-03-11 14:54 ` Uwe Brauer 2017-03-11 16:50 ` Uwe Brauer 2017-03-11 16:53 ` John Kitchin 2017-03-12 15:24 ` matlab-shell-run-command (was: workflow, matlab+latex in org file) Uwe Brauer 2017-10-20 11:03 ` workflow, matlab+latex in org file Uwe Brauer 2017-10-20 11:54 ` Uwe Brauer [not found] ` <cf7ef1dfa1cf455bbaf63ab5fbdf18e5@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> 2017-03-11 10:37 ` Eric S Fraga 2017-03-11 14:12 ` Uwe Brauer [not found] <m2eg709w4s.fsf@gmail.com> 2016-07-11 13:55 ` Uwe Brauer [not found] <c0b96d809e4b41529f81beaa685a9fd0@HE1PR01MB1898.eurprd01.prod.exchangelabs.com> 2016-07-11 16:42 ` Eric S Fraga 2016-07-12 12:44 ` Uwe Brauer
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).