Hi Jorge,

thanks for your suggestion. The reason that made me try :wrap EQUATION
instead of :wrap LaTeX is that the former still produces an output even
with other back-ends, while the latter only produces an output with LaTeX
and nothing with other back-ends.
If org-mode does not recognize math environments and always surrounds sub-
and superscripts with $ signs with no way to stop this, then it essentially
stops people from using numbered equations and still preserving the
capability to export in multiple formats.

Org-mode is great, but I find that this sounds as problematic for people
writing texts including a lot of mathematical expressions.

I guess I will have to dig into filters.

Regards,
Fede


On Fri, Jun 6, 2014 at 4:10 PM, Jorge A. Alfaro-Murillo <
jorge.a.alf...@gmail.com> wrote:

>
> Federico Beffa <be...@ieee.org> writes:
>
> > Hi,
> >
> > I would like to have a mathematical equation typeset in latex and
> > automatically generated by sympy, embedded in an equation environment:
> >
> > #+NAME: mass-energy
> > #+BEGIN_SRC python :results raw :exports results :wrap EQUATION
> > import sympy as sp
> > E, m, c = sp.symbols('E, m, c', real=True, positive=True)
> > E = m*c**2
> > return sp.latex(E)
> > #+END_SRC
> >
> > #+NAME: eq:1
> > #+RESULTS: mass-energy
> > #+BEGIN_EQUATION
> > c^{2} m
> > #+END_EQUATION
> >
> > The problem I'm facing is that despite the fact that the equation is
> > already in a mathematical mode latex environment, it still gets sub-
> > and superscripts surrounded by a $ sign. Here is the generated latex
> > snippet:
> >
> > \begin{equation}
> > \label{eq:1}
> > c$^{\text{2}}$ m
> > \end{equation}
> >
> > Is there a way to teach org-mode not to insert $ signs in equation
> > environments?
> >
> > Thanks,
> > Fede
>
> Hi Federico,
>
> I don't think that Org has a way to know that you want everything inside
> #+BEGIN_EQUATION and #+END_EQUATION to be an equation in LaTeX, if
> instead of EQUATION you write CENTER it does a \begin{center}
> \end{center}. So by default it tries to produce text.
>
> I would change your code to:
>
> #+NAME: mass-energy
> #+BEGIN_SRC python :results raw :exports results :wrap LaTeX
>   import sympy as sp
>   E, m, c = sp.symbols('E, m, c', real=True, positive=True)
>   E = m*c**2
>   return "\\begin{equation}\n" + str(sp.latex(E)) + "\n\\end{equation}\n"
> #+END_SRC
>
> which produces:
>
> #+RESULTS: mass-energy
> #+BEGIN_LaTeX
> \begin{equation}
> c^{2} m
> \end{equation}
> #+END_LaTeX
>
> and gets exported to LaTeX as an equation.
>
> In fact if you use it often, you could make a function in python:
>
> #+NAME: mass-energy
> #+BEGIN_SRC python :results raw :exports results :wrap LaTeX
>   import sympy as sp
>   def org_equation(the_equation):
>       return "\\begin{equation}\n" + str(sp.latex(the_equation)) +
> "\n\\end{equation}\n"
>
>   E, m, c = sp.symbols('E, m, c', real=True, positive=True)
>   E = m*c**2
>   return org_equation(E)
> #+END_SRC
>
> Best,
>
> Jorge.
>
>
>

Reply via email to