0

我试图在matplotlib中使用自定义LaTeX前导码,但它会引发

ValueError:密钥text.latex.preamble:无法将['\\usepackage{siunitx}'…]转换为str

出于某种原因\被转换为\\,但我不明白为什么。我使用的是Pythonv.3.11.5和Matplotlibv.3.7.2。

这是MWE(灵感来自这个帖子):

将matplotlib.pyplot导入为plt从matplotlib导入rcParamsrcParams['text.usetex']=真rcParams['text.lext.pramble']=[r“\usepackage{siunitx}”,#我需要竖直\微符号,但您需要。。。r'\sisetup{detect-all}',#。。。这将强制siunitx实际使用您的字体r“\usepackage{helvet}”,#在此处设置普通字体r“\usepackage{sansmath}”,#加载sansmath,以便math->helvetr'\sansmash'#<-棘手!--必须告诉tex使用!]图,ax=plt.subplots()图show()

1个答案1

重置为默认值
1
+50

在此处输入图像描述

rc参数需要一个字符串。下面我用换行符连接了字符串列表中的元素。

将matplotlib.pyplot导入为plt从matplotlib导入rcParamsrcParams['text.usetex']=真rcParams['text.latex.preamble']=“\n”.jjoin([r“\usepackage{siunitx}”,#我需要竖直\微符号,但您需要。。。r'\sisetup{detect-all}',#。。。这将强制siunitx实际使用您的字体])图,ax=plt.subplots()plt.xlabel(r'$a=\SI{12}{\kg}$')图show()

请注意\千克是SIUnitx定义的宏。


另外,我省略了一些尚未安装的软件包。

4
  • 谢谢!因此,自从我从另一个帖子中复制命令以来,马特普洛特利布改变了'text.latex.preamble'作品? 评论 6月24日8:44
  • @mapf我不知道,但它现在是如何工作的,在您收到的错误消息中可以清楚地看到ValueError:密钥text.latex.preamble:无法将['\\usepackage{siunitx}'…]转换为str. 评论 6月24日8:47
  • 1
    @mapf我快速浏览了一下,根据对这个主题的不同回答判断,2015年至2017年间似乎发生了变化。不要把我的话当定论… 评论 6月24日8:57
  • 我明白了,谢谢,不用担心! 评论 6月24日9:04

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.