如何使用 f 字符串打印数学符号(使用乳胶),例如 sigma?

问题描述 投票:0回答:3
x = np.array([5,4,3])
y = np.array([1,2,3])
print(f"{sum(x*y)}, {sum(x**2)}, {sum(y**2)}")
#> 22, 50, 14

我想打印时显示数学符号
\sum{x*y}

但是当我使用f-string时

print(f"$\sum{xy}$ = {sum(x*y)}, $\sum{x^2}$ = {sum(x**2)}, , $\sum{y^2}$ = {sum(y**2)}")

我收到错误:

NameError: name 'xy' is not defined
。 好像 f-string 无法识别乳胶代码。

这里的解决方案是什么?

python printing latex mathjax f-string
3个回答
2
投票

tl;dr:python 无法将 LaTex 打印到终端。

通常,终端只有文本。这意味着无法显示特殊的 LaTeX 图像。

但是,您仍然可以通过某些方式查看 LaTeX(尽管不是通过终端)。

例如,您可以通过终端调用

pdflatex
(假设您已安装)

import os

latex = "Insert Latex Code here"
with open("latex.tex", "w") as file:
    file.write(latex)

os.system("pdflatex latex.tex")

您的 LaTeX 应呈现为名为

latex.pdf

的 pdf

0
投票

如果有人有兴趣生成和显示 OP 所要求的内容,您可以使用 IPython 的

Math
display
函数在 Jupyter Notebook 中很好地显示此表达式。

请注意,我可以在GenAI工具(Gemini)的帮助下成功生成它,并且我直接在引用的部分中放置了一些来自工具的有效注释,如下所示:

  • 导入

    Math
    display
    :我们从
    IPython.display
    导入这些来渲染数学表达式。

  • display(Math(...))
    :用于在笔记本中以格式化方式显示表达式。

  • 原始字符串:表达式字符串被定义为原始字符串(使用

    r"..."
    )以防止反斜杠等特殊字符 会有不同的解释。

  • 双反斜杠:我们使用双反斜杠(

    \\sum
    \\sqrt
    等)来正确转义 LaTeX 命令 f 弦。

from IPython.display import Math, display
import numpy as np
x = np.array([5,4,3])
y = np.array([1,2,3])
print(f"{sum(x*y)}, {sum(x**2)}, {sum(y**2)}")

display(Math(f"$\\sum{{xy}} = {sum(x*y)}, \\sum{{x^2}} = {sum(x^2)}, \\sum{{y^2}} = {sum(y^2)}$"))

img


-3
投票

我不确定我是否正确理解了你的问题,但错误的原因是Python识别了你的乳胶代码中的大括号,并尝试在f字符串中像往常一样对其进行格式化,因此找不到

xy
变量,因为它不存在。

你必须使用双牙套来摆脱乳胶牙套:

print(f"$\sum{{xy}}$ = {sum(x*y)}, and so on...”)
© www.soinside.com 2019 - 2024. All rights reserved.