Import markup into LiveScript

8 次查看(过去 30 天)
If I have some text with LaTeX and other markup like the following,
For a given energy |E|, the *primary* signal is:
$P_E(u,v,\theta) = \exp\left[ -\mu_b(E) L_b(u,v,\theta) - \mu_w(E) L_w(u,v,\theta) \right]$
Is there any way that I can paste it into a LiveScript so that the markup will be interpreted and displayed as intended, in this case as,
For a given energy E, the primary signal is:

采纳的回答

Matt J
Matt J 2025-6-12
编辑:Matt J 2025-6-12
The best workaround I can find is to make a small mfile and embed the marked-up text in comments,
%%
% For a given energy |E|, the *primary* signal is:
%
% $P_E(u,v,\theta) = \exp\left[ -\mu_b(E) L_b(u,v,\theta) - \mu_w(E) L_w(u,v,\theta) \right]$
This will be properly parsed when saved as .mlx, and can then be freely copy-pasted into a larger LiveScript.
  2 个评论
Cris LaPierre
Cris LaPierre 2025-6-12
移动:Cris LaPierre 2025-6-12
Your answer got me thinking about the new Live Code File format introduced in R2025a. This is a plain text file that displays as a live script. This is accomplished using markdown.
Also not a perfect solution, but it works if I do this:
  • Open a text file
  • Paste your text
  • Prepend each line with %[text]
  • At the bottom of the file, add the following
%[appendix]{"version":"1.0"}
%---
%[metadata:view]
% data: {"layout":"onright"}
%---
  • Save your file with the extension *.m
  • Open in the MATLAB editor
For your example, the live code file would look like this in a text editor:
%[text] For a given energy |E|, the *primary* signal is:
%[text] $P\_E(u,v,\\theta) = \\exp\\left\[ -\\mu\_b(E) L\_b(u,v,\\theta) - \\mu\_w(E) L\_w(u,v,\\theta) \\right\]$
%[appendix]{"version":"1.0"}
%---
%[metadata:view]
% data: {"layout":"onright"}
%---
And when opened in the live editor, would look like this
I've attached the file I created.
Cris LaPierre
Cris LaPierre 2025-6-12
移动:Cris LaPierre 2025-6-12
This still doesn't handle the |E| correctly, so your answer still seems best.

请先登录,再进行评论。

更多回答(2 个)

Cris LaPierre
Cris LaPierre 2025-6-12
My experience is that the LaTeX interpreter in MATLAB isn't called unless the closing/ending flag is physically typed. And not all LaTeX is supported in MATLAB. Still, given those caveats, there is a relatively simple way to get the markup you have shared to work.
  • Paste it into a text section in a live script (like what is here in Answers)
  • delete the closing '*' then retype it
  • Delete the closing '$' and retype it.
Here is the result:
For a given energy |E|, the primary signal is:
  2 个评论
Matt J
Matt J 2025-6-12
编辑:Matt J 2025-6-12
Thanks Cris, but manually going through and reasserting all the markup is precisely what I'm trying to avoid. That will be very tedious in larger examples.
Cris LaPierre
Cris LaPierre 2025-6-12
Fair point. I just don't know of another way.

请先登录,再进行评论。


Michael Abboud
Michael Abboud 2025-6-19
Hi Matt, I'm a developer on the MATLAB Editor team. While I don't have a perfect answer for you yet, I’d love to understand your workflow better to help guide future improvements to the Live Editor.
In particular, I'm curious to learn more about:
  • Where is the source content coming from?
  • Is the text already in MATLAB comments, or coming from another tool or format?
  • What would the ideal workflow or behavior look like for you?
From your snippet, the text looks a bit like MATLAB’s Publishing Markup, with |E| for monospace and inline LaTeX. As you already mentioned, saving from script to live script -- or using “Open as Live Script” by right-clicking the Editor tab -- might be your best bets right now.
We’re currently exploring some related areas, and your input could really help inform our designs.
Thanks,
Michael
  1 个评论
Matt J
Matt J 2025-6-19
编辑:Matt J 2025-6-20
In this case, the source content came from ChatGPT. I asked it to render something in a form suitable for LiveScript so that I could paste it in. So, no, the source content would not necessarily begin in comments.
Ideal workflow: Couldn't there be a refresh button in the Live Editor that makes it reparse the markup in the document? Or maybe in a selection within the document?
It is also a bit of nuisance sometimes that $$ and other delimiters have to be added to the text in sequential order for the markup to be parsed correctly. A re-parse button would obviate that, too.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Environment and Settings 的更多信息

产品


版本

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by