48

I was writing a very simple script to count ellipsoid area and volume and some other things. I was presenting my output printing it out like this:

print('Dims: {}x{}m\nArea: {}m^2\nVolume: {}m^3'.format(a, round(b,2), P, V))

What, of course, gave this output (with sample data):

Dims: 13.49x2.25m
Area: 302.99m^2
Volume: 90.92m^3

As I wrote earlier, I am using jupyter notebook, so I can use $ operators in markdown cells to create LaTeX formulas.

My question is, is it possible to generate output using Python code in a way that it will be understood as LaTeX formula and printed in such a way, that:

Latex_example

Thanks for all replies.

1

4 Answers 4

48

Use IPython.display's display function with a Math object:

from IPython.display import display, Math
display(Math(r'Dims: {}x{}m \\ Area: {}m^2 \\ Volume: {}m^3'.format(a, round(b,2), P, V)))

Note the use of Latex-style \\ newlines, and the r'' string, which will take the backslashes as literal backslashes and not see them as escape characters.

Found the solution here.

Sign up to request clarification or add additional context in comments.

Comments

18

Here's another solution that let's you include text and math a little easier: Use Markdown with r (so backslashed don't become escape chars) and f string for value insertion.

from IPython.display import display, Markdown

a = 13.49
b = 2.2544223
P = 302.99
V = 90.02

display(Markdown(
   rf"""
Dims: ${a}m \times{b:5.2}m$

Area: ${P}m^2$

Volume: ${V}m^3$
"""))

3 Comments

Watch out for curly latex brackets and f-strings! e.g. rf'Dims: ${13.49}m \times{2.2544:5.2}\sqrt{Hz}$' needs to be rf'Dims: ${13.49}m \times{2.2544:5.2}'r'\sqrt{Hz}$'. :)
Backslashes don't seem to be allowed in f strings at all
@AlexanderWu: Yes, that is true ... in general, but not with the usual grammar in print(rf'...'), "r" for raw string interpretation. Additionally whenMarkdown is invoked using `display(Markdown(rf'... $...$ ... ')) there is no need to escape whatever backslash is in between the dollar signs because they are interpreted literally as part of the Markdown syntax. You can pretty much embed usual Markdown content formatting in there.
2

(don't have enough reputation to comment on the discussion below JMann's answer)

To escape LaTeX curly braces in format strings, you can double up the curly braces. e.g.

rf"NEP $\Nu_{{photon}}$: {calc_nep(T):.3f} $\frac{{W}}{{ \sqrt{{Hz}} }}$."

Comments

0

This can be done with the jupyprint package: https://pypi.org/project/jupyprint/

You could use the following code:

import jupyprint as jp

jp.jupyprint("$\\text{Dims}: 13.49\\times2.25m$")
jp.jupyprint("$\\text{Area}: 302.99m^2$")
jp.jupyprint("$\\text{Volume}: 90.92m^3$")

Here is how it looks.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.