使用matplotlib时,LaTeX方程无法在Google Colaboratory中呈现

fivyi3re  于 2023-05-07  发布在  Go
关注(0)|答案(4)|浏览(114)

如果我从matplotlib website中获取包含乳胶的官方示例:

from matplotlib import rc
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('text', usetex=True)
import numpy as np
import matplotlib.pyplot as plt

# Example data
t = np.arange(0.0, 1.0 + 0.01, 0.01)
s = np.cos(4 * np.pi * t) + 2

plt.rc('text', usetex=True)
plt.rc('font', family='serif')
plt.plot(t, s)

plt.xlabel(r'\textbf{time} (s)')
plt.ylabel(r'\textit{voltage} (mV)',fontsize=16)
plt.title(r"\TeX\ is Number "
          r"$\displaystyle\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$!",
          fontsize=16, color='gray')
# Make room for the ridiculously large title.
plt.subplots_adjust(top=0.8)

plt.savefig('tex_demo')
plt.show()

并尝试在Google Colab笔记本中运行它,它将生成一个大的堆栈跟踪,并在结尾处显示以下消息:

[Errno 2] No such file or directory: 'latex': 'latex'

为什么会发生这种情况,我该如何解决?

我的尝试:

我认为这个错误可能是因为服务VM中缺少latex,所以我尝试在导入matplotlib之前安装texlive:

! sudo apt-get install texlive-latex-recommended

此操作成功完成。然而matplotlib抱怨缺少一些latex *.sty文件,在谷歌搜索后,该文件应该包含在texlive-latex-extra包中。但是在安装额外的软件包时发生了一些错误:

Err:5 http://security.ubuntu.com/ubuntu bionic-updates/main amd64 ruby2.5 amd64 2.5.1-1ubuntu1.1
  404  Not Found [IP: 91.189.88.162 80]
Get:16 http://archive.ubuntu.com/ubuntu bionic/universe amd64 texlive-latex-extra all 2017.20180305-2 [10.6 MB]
Err:13 http://security.ubuntu.com/ubuntu bionic-updates/main amd64 libruby2.5 amd64 2.5.1-1ubuntu1.1
  404  Not Found [IP: 91.189.88.162 80]
Get:17 http://archive.ubuntu.com/ubuntu bionic/universe amd64 texlive-plain-generic all 2017.20180305-2 [23.6 MB]
Fetched 41.5 MB in 4s (11.3 MB/s)

所以我不能完成texlive-latex-extra的安装。我该如何继续?

vnjpjtjt

vnjpjtjt1#

事实上,有一个更简单的解决方案,它需要更少的段落来回答@ v. tralala提出的答案。安装包含所需的.sty文件的ubuntu包就足够了,在本例中是texlive-latex-extradvipng。因此,执行以下安装:

!sudo apt install cm-super dvipng texlive-latex-extra texlive-latex-recommended

要查找包含特定.sty文件的ubuntu软件包,请参阅:https://tex.stackexchange.com/questions/39771/finding-a-ubuntu-package-for-a-sty-file

bis0qfac

bis0qfac2#

起因

基本上,问题是type1cmtype1em在colab环境中没有默认安装matplotlib。更多关于这个问题在这里:https://github.com/matplotlib/matplotlib/issues/17412

解决方案

!apt install texlive-fonts-recommended texlive-fonts-extra cm-super dvipng

type1cmtexlive-fonts-extra的一部分,type1eccm-super的一部分。
所以要在matplotlib中设置latex,你应该在colab notebook中有这个块:

import matplotlib
from matplotlib import rc
import matplotlib.pyplot as plt
%matplotlib inline

rc('text', usetex=True)
matplotlib.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}']
!apt install texlive-fonts-recommended texlive-fonts-extra cm-super dvipng
hgncfbus

hgncfbus3#

所以这是一个非常黑客的解决方案,但我得到了它的工作至少。问题确实出在丢失的texlive软件包上。安装texlive-latex-recommended后,仍然需要一个type1cm.sty文件,matplotlib示例才能工作。由于额外的包不能很容易地安装,我手动安装了type 1cm包。为了实现这一点,我在导入matplotlib之前执行了以下命令:

! sudo apt-get install texlive-latex-recommended #1
! sudo apt-get install dvipng texlive-fonts-recommended #2
! wget http://mirrors.ctan.org/macros/latex/contrib/type1cm.zip #3
! unzip type1cm.zip -d /tmp/type1cm #4
! cd /tmp/type1cm/type1cm/ && sudo latex type1cm.ins  #5
! sudo mkdir /usr/share/texmf/tex/latex/type1cm #6
! sudo cp /tmp/type1cm/type1cm/type1cm.sty /usr/share/texmf/tex/latex/type1cm #7
! sudo texhash #8

这些命令将执行以下操作:
1.最小的texlive安装仍然工作
1.不确定这些包是否有必要,但不会伤害太多
1.从ctan官方下载type1cm软件包
1.解压到/tmp/type 1cm
1.通过在type1cm.ins文件上运行latex命令来安装软件包。请注意,直接提供latex命令的路径不起作用。此外,cdlatex命令必须在同一行中执行(在同一行后面)。符号),否则cd无效
1.在texmf树中为type 1cm packge创建文件夹
1.复制.sty文件在那里
1.更新tex以便它找到新的包

资源

How to install type1cm
Where to place *.sty files in Linux texlive install

2ul0zpep

2ul0zpep4#

我也遇到了同样的问题。我解决了它:sudo apt-get install cm-super dvipng

相关问题