【问题标题】:How to print math symbols (using latex) like sigma with f-strings?如何使用 f 字符串打印数学符号(使用乳胶),如 sigma?
【发布时间】:2021-03-18 23:32:11
【问题描述】:
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-strings 无法识别乳胶代码。

这里有什么解决办法?

【问题讨论】:

  • print 打印到终端。终端不支持乳胶代码,所以print. 也不支持您将不得不在其他地方打印它。此外,乳胶代码似乎使用 {} 在 f 字符串中具有特殊含义
  • 您需要转义花括号才能在 f 字符串中使用它们。
  • 你是对的,f-strings 不能渲染乳胶代码。您可能需要在脚本中使用 GUI 来执行此操作。
  • 数学符号还有其他的使用方法吗?

标签: python printing latex mathjax f-string


【解决方案1】:

我不确定我是否正确理解了您的问题,但错误的原因是 Python 识别出您的乳胶代码中的花括号并尝试在 f-String 中像往常一样对其进行格式化,因此找不到 @987654321 @ 变量,因为它不存在。

你必须使用双括号来转义乳胶括号:

print(f"$\sum{{xy}}$ = {sum(x*y)}, and so on...”)

【讨论】:

  • 试过print(f"$\sum{{xy}}$ = {sum(x*y)}")。得到:$\sum{xy}$ = 22
【解决方案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 文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 2015-04-05
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2019-03-21
    • 2022-12-11
    • 1970-01-01
    相关资源
    最近更新 更多