4
votes

Les équations LaTeX ne s'affichent pas dans Google Colaboratory lors de l'utilisation de matplotlib

Si je prends l'exemple officiel contenant du latex du site Web matplotlib :

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)

et essayez de l'exécuter dans un bloc-notes Google Colab, cela produira un gros stacktrace avec le message suivant à la fin:

! sudo apt-get install texlive-latex-recommended 

Pourquoi cela se produit et comment puis-je résoudre ce problème?

Mes tentatives:
Je pensais que cette erreur pouvait se produire car latex manquait dans la VM de service, alors j'ai essayé d'installer texlive avant d'importer matplotlib avec:

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

Cela se termine avec succès. Cependant matplotlib se plaint d'un fichier latex * .sty manquant qui, après une recherche sur Google, devrait être contenu dans le paquet texlive-latex-extra . Mais lors de l'installation du package supplémentaire, des erreurs se sont produites:

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()

Je ne peux donc pas terminer l'installation de texlive-latex-extra . Comment puis-je procéder?


0 commentaires

3 Réponses :


0
votes

C'est donc une solution très piratée, mais je l'ai fait fonctionner au moins. Le problème était en effet le paquet texlive manquant. Après avoir installé texlive-latex-recommended , il faut encore un fichier type1cm.sty pour que l'exemple matplotlib fonctionne. Étant donné que le package supplémentaire n'a pas pu être installé facilement, j'ai installé manuellement le package type1cm. Pour ce faire, j'ai exécuté les commandes suivantes avant d'importer 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

Ces commandes feront ce qui suit:

  1. installation texlive minimale qui fonctionne toujours
  2. Je ne sais pas si ces packages sont nécessaires, mais cela ne fera pas trop de mal
  3. télécharger officiellement le package type1cm depuis ctan
  4. décompressez dans / tmp / type1cm
  5. installez le package en exécutant la commande latex sur le fichier type1cm.ins . Notez que fournir le chemin directement à la commande latex n'a pas fonctionné. Les commandes cd et latex doivent également être exécutées dans la même ligne (derrière le même symbole!), Sinon le cd n'a aucun effet
  6. créer un dossier pour le paquet type1cm dans l'arborescence texmf
  7. copiez le fichier .sty ici
  8. mettre à jour tex pour qu'il trouve le nouveau package

Ressources :
Comment installer type1cm
Où placer les fichiers * .sty dans l'installation texlive Linux


0 commentaires

2
votes

En fait, il existe une solution plus simple, qui nécessite moins de passages par rapport à la réponse proposée par @ v.tralala. Il suffit en effet d'installer les packages ubuntu contenant les fichiers .sty requis, que dans ce cas sont texlive-latex-extra et dvipng . Faites donc les installations suivantes:

! sudo apt-get install texlive-latex-recommended 
! sudo apt install texlive-latex-extra
! sudo apt install dvipng

Pour trouver un package ubuntu contenant un fichier .sty spécifique, consultez: https://tex.stackexchange.com/questions/39771/finding-a-ubuntu-package-for-a-sty-file


0 commentaires

1
votes

La cause

Fondamentalement, le problème est que type1cm et type1em ne sont pas installés par défaut avec matplotlib dans l'environnement colab. Plus d'informations sur ce problème ici: https://github.com/matplotlib/matplotlib/issues/17412

Solution

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

Le type1cm fait partie de texlive-fonts-extra et type1ec fait partie de cm-super.

Donc, pour configurer latex dans matplotlib, vous devriez avoir ce bloc dans votre notebook colab: p>

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

0 commentaires