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
但是当我使用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 无法识别乳胶代码。
这里的解决方案是什么?
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
如果有人有兴趣生成和显示 OP 所要求的内容,您可以使用 IPython 的
Math
和 display
函数在 Jupyter Notebook 中很好地显示此表达式。
请注意,我可以在GenAI工具(Gemini)的帮助下成功生成它,并且我直接在引用的部分中放置了一些来自工具的有效注释,如下所示:
导入
和Math
:我们从display
导入这些来渲染数学表达式。IPython.display
:用于在笔记本中以格式化方式显示表达式。display(Math(...))
原始字符串:表达式字符串被定义为原始字符串(使用
)以防止反斜杠等特殊字符 会有不同的解释。r"..."
双反斜杠:我们使用双反斜杠(
、\\sum
等)来正确转义 LaTeX 命令 f 弦。\\sqrt
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)}$"))
我不确定我是否正确理解了你的问题,但错误的原因是Python识别了你的乳胶代码中的大括号,并尝试在f字符串中像往常一样对其进行格式化,因此找不到
xy
变量,因为它不存在。
你必须使用双牙套来摆脱乳胶牙套:
print(f"$\sum{{xy}}$ = {sum(x*y)}, and so on...”)