From: martinoidar <mar...@gm...> - 2024-04-25 20:07:35
|
On 25.04.2024 21:55, martinoidar wrote: > > On 23.04.2024 15:33, Uwe Brauer wrote: >>>>> "m" == martinoidar <mar...@gm...> writes: >> Hi >> >> I decided to start a new thread, since I made some progress and it seems >> there are at least two ways to execute matlab from an org buffer and >> insert the result back into that buffer. >> >> 1. Using the python engine matlab ships (I am not describing the >> setup now) >> Disadvantage >> a. Not all matlab releases support all ptyhon versions. For >> example ptyhon 3.5 is only supported till 2019a >> >> b. It takes some time for the python engine to start >> >> Advantage >> >> a. The format of the result is very nice. >> >> 2. Using the matlab-shell itself (thanks @Martin for pointing this >> out) >> Test Configuration: >> >> a. Start emacs -Q >> >> b. Load the following file >> >> --8<---------------cut here---------------start------------->8--- >> (setq load-path (cons (expand-file-name >> "~/emacs/site-lisp/packages/src/Matlab/HG-Git/matlab-sf-hg") load-path)) >> (load-file "/home/oub/emacs/init/custom-init-faces.el") >> (require 'company-matlab-shell) >> (require 'org) >> (require 'gdb-mi) >> (autoload 'matlab-mode "matlab" "Enter Matlab mode." t) >> (setq auto-mode-alist (cons '("\\.m\\'" . matlab-mode) auto-mode-alist)) >> (autoload 'matlab-shell "matlab" "Interactive Matlab mode." t) >> (org-babel-do-load-languages >> 'org-babel-load-languages '( >> (C . t) ; enable processing C, C++, and >> D source blocks >> (matlab . t) >> ;;(perl . t) >> (octave . t) >> (org . t) >> (python . t) >> (plantuml . t) >> (shell . t) >> )) >> >> (setq org-babel-default-header-args:matlab >> '((:results . "output") (:session . "*MATLAB*"))) >> >> --8<---------------cut here---------------end--------------->8--- >> >> And load ob-octave-fix.el >> https://github.com/karthink/.emacs.d/blob/master/plugins/ob-octave-fix.el >> >> Then the following code can be executed in a org buffer >> >> #+begin_src matlab :results output latex :exports results :eval >> never-export :wrap latex >> clear all >> x = [1, 2, 3, 4, 5]; >> disp(sprintf('|%d', x)) >> #+end_src >> >> #+RESULTS: >> #+begin_latex >> x = [1, 2, 3, 4, 5]; >> disp(sprintf('|%d', x)) >> |1|2|3|4|5 >> #+end_latex >> >> >> #+begin_src matlab :results output latex :exports results :eval >> never-export :wrap latex >> clear all >> x = [1, 2, 3, 4, 5]; >> disp(sprintf('|%d', x)) >> #+end_src >> >> #+RESULTS: >> #+begin_latex >> |1|2|3|4|5 >> #+end_latex >> >> That already indicates that the formatting needs care, moreover >> =fprintf= is not supported >> #+begin_src matlab :results output latex :exports results :eval >> never-export :wrap latex >> clear all >> x = [1, 2, 3, 4, 5] ; >> fprintf('|%d', x) >> #+end_src >> >> #+RESULTS: >> #+begin_latex >> #+end_latex >> >> So I need to investigate this a bit more. >> >> In summary: the second solution works surprisingly well and is faster >> than the python solution, but the formatting seems to me more restricted >> as in the python case. >> >> Any comments? >> >> Has anybody tried this out? >> >> @John you talked about such feature in the past. >> >> Can you confirm this behavior? >> >> Regards >> >> Uwe > > > Hi Uwe, > > My comments on the topic have grown to such a size that I decided it's > better to make a post from them. > > Please have a look here: > > https://cissic.github.io/posts/latex-output-from-matlab-octave-source-blocks/ > > > Regards, > > M > Update: I've just noticed that not everything is properly rendered in markdown form. Here's a pdf version of the document: https://github.com/cissic/temp-aux-repo/blob/main/2024-04-25-latex-output-from-matlab-octave-source-blocks.pdf |