##// END OF EJS Templates
Fixing #1359. We are not using itex mode in sympyprinting....
Brian Granger -
Show More
@@ -1,98 +1,98
1 1 """
2 2 A print function that pretty prints sympy Basic objects.
3 3
4 4 :moduleauthor: Brian Granger
5 5
6 6 Usage
7 7 =====
8 8
9 9 Once the extension is loaded, Sympy Basic objects are automatically
10 10 pretty-printed.
11 11
12 12 """
13 13 #-----------------------------------------------------------------------------
14 14 # Copyright (C) 2008-2011 The IPython Development Team
15 15 #
16 16 # Distributed under the terms of the BSD License. The full license is in
17 17 # the file COPYING, distributed as part of this software.
18 18 #-----------------------------------------------------------------------------
19 19
20 20 #-----------------------------------------------------------------------------
21 21 # Imports
22 22 #-----------------------------------------------------------------------------
23 23
24 24 from IPython.lib.latextools import latex_to_png
25 25 from IPython.testing import decorators as dec
26 26 # use @dec.skipif_not_sympy to skip tests requiring sympy
27 27
28 28 try:
29 29 from sympy import pretty, latex
30 30 except ImportError:
31 31 pass
32 32
33 33
34 34 #-----------------------------------------------------------------------------
35 35 # Definitions of magic functions for use with IPython
36 36 #-----------------------------------------------------------------------------
37 37
38 38 def print_basic_unicode(o, p, cycle):
39 39 """A function to pretty print sympy Basic objects."""
40 40 if cycle:
41 41 return p.text('Basic(...)')
42 42 out = pretty(o, use_unicode=True)
43 43 if '\n' in out:
44 44 p.text(u'\n')
45 45 p.text(out)
46 46
47 47
48 48 def print_png(o):
49 49 """A function to display sympy expression using LaTex -> PNG."""
50 50 s = latex(o, mode='inline')
51 51 # mathtext does not understand certain latex flags, so we try to replace
52 52 # them with suitable subs.
53 53 s = s.replace('\\operatorname','')
54 54 s = s.replace('\\overline', '\\bar')
55 55 png = latex_to_png(s)
56 56 return png
57 57
58 58
59 59 def print_latex(o):
60 60 """A function to generate the latex representation of sympy expressions."""
61 s = latex(o, mode='equation', itex=True)
61 s = latex(o, mode='plain')
62 62 s = s.replace('\\dag','\\dagger')
63 return s
63 return '$$%s$$' % s
64 64
65 65
66 66 _loaded = False
67 67
68 68 def load_ipython_extension(ip):
69 69 """Load the extension in IPython."""
70 70 global _loaded
71 71 if not _loaded:
72 72 plaintext_formatter = ip.display_formatter.formatters['text/plain']
73 73
74 74 for cls in (object, tuple, list, set, frozenset, dict, str):
75 75 plaintext_formatter.for_type(cls, print_basic_unicode)
76 76
77 77 plaintext_formatter.for_type_by_name(
78 78 'sympy.core.basic', 'Basic', print_basic_unicode
79 79 )
80 80 plaintext_formatter.for_type_by_name(
81 81 'sympy.matrices.matrices', 'Matrix', print_basic_unicode
82 82 )
83 83
84 84 png_formatter = ip.display_formatter.formatters['image/png']
85 85
86 86 png_formatter.for_type_by_name(
87 87 'sympy.core.basic', 'Basic', print_png
88 88 )
89 89
90 90 latex_formatter = ip.display_formatter.formatters['text/latex']
91 91 latex_formatter.for_type_by_name(
92 92 'sympy.core.basic', 'Basic', print_latex
93 93 )
94 94 latex_formatter.for_type_by_name(
95 95 'sympy.matrices.matrices', 'Matrix', print_latex
96 96 )
97 97 _loaded = True
98 98
General Comments 0
You need to be logged in to leave comments. Login now