2012-02-11 12 views
7

Parece que Matplotlib no encuentra los archivos en el directorio de trabajo actual al ejecutar latex. ¿Alguien sabe dónde se encuentran los archivos?Directorio de trabajo de látex Matplotlib/ruta de búsqueda

El fondo es: Tengo un gran preámbulo que I \input en el látex antes del procesamiento (muchas macros, diversos paquetes de uso, etc.). En un documento independiente, lo hago \input{BigFatHeader.tex}. Entonces, cuando uso matplotlib, trato de ingresar este archivo en el preámbulo. El código Python para hacer esto es

matplotlib.rcParams['text.latex.preamble'].append(r'\input{BigFatHeader.tex}') 

Y puede verificar que ese archivo se encuentra en la cwd - Lo veo cuando me ls, o que pueda hacer os.path.isfile("BigFatHeader.tex") y obtener verdadera. Pero cuando trato de trazar algo con látex, ¡Pitón escupe un gran mensaje de error del proceso de látex, que culmina en ! Error de LaTeX: No se encontró el archivo BigFatHeader.tex. Así que, presumiblemente, cambia a algún otro directorio (no /tmp/; lo he comprobado) para hacer su trabajo. ¿Alguna idea de dónde podría ser esto?

Mi ejemplo de trabajo mínima es:

import matplotlib 
import matplotlib.pyplot as plt 
matplotlib.rcParams['text.latex.preamble'] = r'\input{BigFatHeader.tex}' 
matplotlib.rcParams['text.usetex'] = True 
plt.plot([1,2]) 
plt.savefig('MWE.pdf') 

Dónde BigFatHeader.tex podría ser tan simple como

\usepackage{bm} 
+0

No es que esto ayudó a resolver mi problema, pero en caso de que alguien es curioso, el directorio de trabajo en la instalación resultó ser '~/.matplotlib/tex.cache /'. – Mike

Respuesta

8

estoy teniendo el mismo error en mi Ubuntu Lucid, matplotlib 1.1.0. Hay dos opciones:

dándole una ruta completa:

matplotlib.rcParams['text.latex.preamble'] = r'\input{/home/br/sweethome/temp/BigFatHeader}' 

funciona para mí. Observe que no pone la extensión .tex para que los archivos sean \input. Si no desea codificar el camino, lo puede conseguir usando os.getcwd():

import matplotlib 
import matplotlib.pyplot as plt 
import os 

filename=r'\input{'+os.getcwd()+r'/BigFatHeader}' 

matplotlib.rcParams['text.latex.preamble'] = filename 
matplotlib.rcParams['text.usetex'] = True 
plt.plot([1,2]) 
plt.savefig('MWE.pdf') 

o simplemente leer en su archivo en una cadena de texto y establecer el rcParams con él.

import matplotlib 
import matplotlib.pyplot as plt 

paramstring=r'\usepackage{bm}' 
matplotlib.rcParams['text.latex.preamble'] = paramstring 
matplotlib.rcParams['text.usetex'] = True 
plt.plot([1,2]) 
plt.savefig('MWE.pdf') 
+0

Eso funciona. Tampoco había pensado en leer el archivo en una cadena y agregarlo a la cadena de preámbulo. ¡Gracias! – Mike

Cuestiones relacionadas