2011-05-20 9 views
10

私は私のmatplotlibプロットにTeXの注釈をレンダリングするために以下の行を持っている:それは完璧に動作しますが、私の最初のnitpickはVが単位であるということであるTeXのレンダリング、中括弧、および文字列

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import rc 

rc('text', usetex=True) 
rc('font', family='serif') 

voltage = 220 

notes = r"\noindent $V_2 = {0:.5} V$".format(voltage) 

plt.annotate(notes, xy=(5,5), xytext=(7,7)) 
plt.show() 

したがって、(イタリック体の)数学モードではなく、テキストモードでなければなりません。

notes = r"\noindent $V_2 = {0:.5} \text{V}$".format(voltage) 

{中括弧}構文をフォーマットするPythonの文字列の所有しているため、エラーが発生します。私は、次の文字列を試してみてください。上記の行では、{0:.5}のみが正しいです。 {V}は見知らぬ人として扱われます。たとえば、

s1 = "Hello" 
s2 = "World!" 
print "Some string {0} {1}".format(s1, s2) 

は、Some string Hello World!とする必要があります。

は、どのように私はTeXの{中括弧}はPythonの{中括弧}に干渉しないことを確認していますか?

答えて

15

r"\noindent $V_2 = {0:.5} \text{{V}}$".format(voltage) 

ところで、あなたも

\text V 

を書くことができます最高は

ですユニットが実際にテキストシンボルではないため、3210

です。

5

あなたダブルカーリーブレースそれら:あなたは文字通り扱われることを括弧を倍増する必要があり

>>> print '{{asd}} {0}'.format('foo') 
{asd} foo 
関連する問題