2013-08-01 13 views
10

Generuję dane dla papieru technicznego za pomocą Pythona z matplotlib. Czy istnieje sposób na uwzględnienie cytatu Latex/Bibtex w tekście legendy? Idealnie chciałbym coś podobnego rozwiązania następującego ale nie znalazłem niczego, co działa:Lateksowe cytowanie w matplotlib Legenda

import numpy as np 
import matplotlib as mp 
import matplotlib.pyplot as plt 

x = np.linspace(0., 1., num=100) 
y = x**2 

plt.plot(x, y, label=r'Data \cite{<key>}') 
plt.legend(loc=0) 
plt.show() 
+0

Musisz ręcznie wprowadzić cytat, więc dlaczego nie po prostu go oznaczyć ''Data Ref. [#] "? – wflynny

+0

nas psfrag https://en.wikipedia.org/wiki/PSfag – tacaswell

+0

Używam tego w mojej pracy magisterskiej, a numery cytowań zmieniają się często i ciągłe aktualizowanie danych staje się kłopotliwe. – LWhitson2

Odpowiedz

9

Można to zrobić za pomocą backendu matplotlib PGF dla Pythona. Plik pyton do generowania wykresu jest następujący:

import numpy as np 
import matplotlib as mpl 
mpl.use('pgf') 
import matplotlib.pyplot as plt 

x = np.linspace(0., 1., num=100) 
y = x**2 

plt.plot(x, y, label=r'Data \cite{<key>}') 
plt.legend(loc=0) 
plt.savefig('fig.pgf') 

plik PGF mogą być następnie wykorzystywane w papierze lateksu jako takie:

\documentclass[letterpaper,10pt]{article} 
\usepackage[utf8x]{inputenc} 
\usepackage{pgf} 

\begin{document} 

    \begin{figure} 
    \centering 
    \input{fig.pgf} 
    \caption{Test Figure} 
    \end{figure} 

\end{document} 

W przypadku, gdy plik lateks jest sporządzony, Odniesienie w legenda zostanie zaktualizowana automatycznie.

+1

Nice! Dobrze wiedzieć, że to działa! Myślę, że będę musiał użyć tej sztuczki w przyszłości ... –

Powiązane problemy