2012-02-11 16 views
7

लेटेक्स चलाने पर Matplotlib वर्तमान कार्यशील निर्देशिका में फ़ाइलों को नहीं ढूंढता प्रतीत होता है। क्या किसी को पता है कि यह फाइलों के लिए कहां दिखता है?Matplotlib लेटेक्स कार्यशील निर्देशिका/खोज पथ

पृष्ठभूमि है: मेरे पास प्रसंस्करण से पहले लेटेक्स में \input है (मैक्रोज़, विभिन्न usepackages, आदि) से पहले मुझे एक बड़ा प्रस्ताव है। एक स्टैंडअलोन पेपर में, मैं \input{BigFatHeader.tex} करता हूं। तो जब मैं matplotlib का उपयोग करता हूं, तो मैं इस फ़ाइल को प्रीम्बल में इनपुट करने का प्रयास करता हूं। यह करने के लिए अजगर कोड

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

है और मैं पुष्टि कर सकते हैं कि उस फ़ाइल CWD में है - मैं इसे देख जब मैं ls, या मैं os.path.isfile("BigFatHeader.tex") करते हैं और यह सच है प्राप्त कर सकते हैं। लेकिन जब मैं लेटेक्स का उपयोग करके कुछ साजिश करने की कोशिश करता हूं, तो पाइथन लेटेक्स प्रक्रिया से एक बड़ा त्रुटि संदेश निकालता है, जो में समाप्त होता है! लाटेक्स त्रुटि: फ़ाइल BigFatHeader.tex नहीं मिला। तो संभवतः यह किसी अन्य निर्देशिका में बदल जाता है (/tmp/; मैंने चेक किया) इसके काम करने के लिए। कोई विचार जहां यह हो सकता है?

मेरे कम से कम काम कर रहे उदाहरण है:

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

कहाँ BigFatHeader.tex

\usepackage{bm} 
+0

ऐसा नहीं है कि यह मेरी समस्या का समाधान में मदद मिली है, लेकिन में मामला किसी को उत्सुक है, मेरे स्थापना में काम कर निर्देशिका '~/.matplotlib/tex.cache /' साबित हुआ। – Mike

उत्तर

8

मैं अपने Ubuntu Lucid पर एक ही त्रुटि हो रही है के रूप में सरल हो सकता है, matplotlib 1.1.0। वहाँ दो विकल्प हैं:

यह एक पूर्ण पथ देते: मेरे लिए

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

काम करता है। ध्यान दें कि \input होने के लिए आप .tex एक्सटेंशन नहीं डालते हैं। आप पथ को हार्डकोड नहीं करना चाहते हैं, तो आप यह 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') 

या सिर्फ एक पाठ स्ट्रिंग में अपने आपकी फ़ाइल में पढ़ सकते हैं और इसके साथ rcParams निर्धारित किया है।

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

यह काम करता है। मैंने फ़ाइल को स्ट्रिंग में पढ़ने और इसे प्रीम्बल स्ट्रिंग में जोड़ने का भी सोचा नहीं था। धन्यवाद! – Mike