# LaTeX printer: Integral not surrounded in brackets #10806

Closed
opened this Issue Mar 12, 2016 · 6 comments

Projects
None yet
3 participants
Contributor

### Upabjojr commented Mar 12, 2016

 In [3]: print latex(Integral(z,z)**2) \int z\, dz^{2}  Should be: \left( \int z\, dz\right)^{2}
Member

### gxyd commented Mar 12, 2016

 Thanks for opening this!. I realised this in fredrik-johansson/314#6 .

### skirpichev added a commit to diofant/diofant that referenced this issue Mar 12, 2016

 Add test for sympy/sympy#10806 
 4e0585d 

Contributor

### sampadsaha5 commented Mar 13, 2016

 I am getting this : In [1]: Integral(z,z)**2 Out[1]: 2 ⎛⌠ ⎞ ⎜⎮ z dz⎟ ⎝⌡ ⎠ In [2]: print latex(Integral(z,z)**2) \left(\int z\, dz\right)^{2}  I am not getting an issue.
Member

### gxyd commented Mar 13, 2016

 I get this issue on Python2.7 and Python3.5 (both) with development version of SymPy on jupyter notebook and terminal as well. Can you specify your system details?
Contributor

### Upabjojr commented Mar 13, 2016

Precedence operation here:

Line 148 in 5b3889a

 if precedence(item) <= level:

For Pow it is set to 60, for Integral it's 1000.

The problem is that Integral counts as some kind of single variable element, therefore it gets a precedence value of 1000.

For reference

(Pdb) PRECEDENCE
{'Xor': 10, 'Add': 40, 'Relational': 35, 'Mul': 50, 'Or': 20,
'Lambda': 1, 'And': 30, 'Pow': 60, 'Func': 70, 'Atom': 1000, 'Not': 100}

Another related issue

In [7]: Integral(z+x, z)
Out[7]:
⌠
⎮ (x + z) dz
⌡

In [8]: print latex(_)
\int x + z\, dz


LaTeX expression lacks brackets inside Integral, it should be:

\int (x + z)\, dz
Contributor

### Upabjojr commented Mar 13, 2016

 Maybe Integral should have the same PRECEDENCE as Mul?

### skirpichev added a commit to diofant/diofant that referenced this issue Mar 13, 2016

 Fix latex printing for Integral's with Add 
Added test from sympy/sympy#10806
 539929a 
Contributor

### Upabjojr commented Mar 14, 2016

 Update: this bug has been introduced in SymPy 1.0.

### Upabjojr pushed a commit to Upabjojr/sympy that referenced this issue Mar 14, 2016

 Fix issue sympy#10806 
 0df1a15 

Merged

### Upabjojr added a commit to Upabjojr/sympy that referenced this issue Mar 17, 2016

 Fix issue sympy#10806 
 af17a1e 

### Upabjojr added a commit to Upabjojr/sympy that referenced this issue Mar 26, 2016

 Fix issue sympy#10806 
 8b06281 

### gxyd pushed a commit that referenced this issue Mar 31, 2016

 Merge pull request #10824 from Upabjojr/integral_precedence 
Fix issue #10806
 da8bb0d 

### skirpichev added a commit to skirpichev/diofant that referenced this issue Nov 2, 2016

 Add regression tests & mention closed issues 
    close sympy/sympy#3112 (MrvAsympt was added in diofant#6)
close sympy/sympy#9173 (test was added in 5a510ac)
close sympy/sympy#9808 (fixed in 09e539b)
close sympy/sympy#9341 (fixed in af98a00)
close sympy/sympy#9908 (fixed in cc3fa8d)
close sympy/sympy#6171 (test added in d278031)
close sympy/sympy#9276 (diagnose_imports.py removed in ab8c535)
close sympy/sympy#10201 (fixed in 0d0fc5f)
close sympy/sympy#9057 (test was added in 8290a0c)
close sympy/sympy#11159 (test was added in ffb76cb)
close sympy/sympy#2839 (new AST transformers are used, see diofant#278 and diofant#167)
close sympy/sympy#11081 (see ed01e16 and bb92329)
close sympy/sympy#10974 (see 73fc425)
close sympy/sympy#10806 (test in 539929a)
close sympy/sympy#10801 (test in 2fe3da5)
close sympy/sympy#9549 (test in 88bdefa)
close sympy/sympy#4231 (test was added in fb411d5)
close sympy/sympy#8634 (see 2fcbb58)
close sympy/sympy#8481 (see 1ef20d3)
close sympy/sympy#9956 (fixed in a34735f)
close sympy/sympy#9747 (see e117c60)
close sympy/sympy#7853 (see 3e4fbed)
close sympy/sympy#9634 (see 2be03f5)
close sympy/sympy#8500 (fixed in diofant#104 and finally in diofant#316)
close sympy/sympy#9192 (see 9bf622f)
close sympy/sympy#7130 (see e068fa3)
close sympy/sympy#8514 (see b2d543b)
close sympy/sympy#9334 (see 90de625)
close sympy/sympy#8229 (see 9755b89)
close sympy/sympy#8061 (see 7054f06)
close sympy/sympy#7872 (tested in diofant#6)
close sympy/sympy#3496 (tested in test_log_symbolic)
close sympy/sympy#2929 (see da7db7a)
close sympy/sympy#8203 (oo is not a real, see diofant#36)
close sympy/sympy#7649 (0 is imaginary since diofant#8)
close sympy/sympy#7256 (fixed in c0a4549)
close sympy/sympy#6783 (see cb28d63)
close sympy/sympy#5662 (is_integer issue fixed in 6bfa9f8, there is no is_bounded anymore)
close sympy/sympy#5295 (fixed with diofant#354)
close sympy/sympy#4856 (we now have flake/pep tests)
close sympy/sympy#4555 (flake8 enabled after diofant#214)
close sympy/sympy#5773 (cmp_to_key removed after diofant#164 and c9acbf0)
close sympy/sympy#5484 (see above)

fixes sympy/sympy#8825 (probably via diofant#209)
fixes sympy/sympy#8635
fixes sympy/sympy#8157
fixes sympy/sympy#7872
fixes sympy/sympy#7599
fixes sympy/sympy#6179
fixes sympy/sympy#5415
fixes sympy/sympy#2865
fixes sympy/sympy#5907
fixes sympy/sympy#11722

Closes diofant#347
 74ade76 

### skirpichev added a commit to skirpichev/diofant that referenced this issue Nov 2, 2016

 Add regression tests & mention closed issues 
    close sympy/sympy#3112 (MrvAsympt was added in diofant#6)
close sympy/sympy#9173 (test was added in 5a510ac)
close sympy/sympy#9808 (fixed in 09e539b)
close sympy/sympy#9341 (fixed in af98a00)
close sympy/sympy#9908 (fixed in cc3fa8d)
close sympy/sympy#6171 (test added in d278031)
close sympy/sympy#9276 (diagnose_imports.py removed in ab8c535)
close sympy/sympy#10201 (fixed in 0d0fc5f)
close sympy/sympy#9057 (test was added in 8290a0c)
close sympy/sympy#11159 (test was added in ffb76cb)
close sympy/sympy#2839 (new AST transformers are used, see diofant#278 and diofant#167)
close sympy/sympy#11081 (see ed01e16 and bb92329)
close sympy/sympy#10974 (see 73fc425)
close sympy/sympy#10806 (test in 539929a)
close sympy/sympy#10801 (test in 2fe3da5)
close sympy/sympy#9549 (test in 88bdefa)
close sympy/sympy#4231 (test was added in fb411d5)
close sympy/sympy#8634 (see 2fcbb58)
close sympy/sympy#8481 (see 1ef20d3)
close sympy/sympy#9956 (fixed in a34735f)
close sympy/sympy#9747 (see e117c60)
close sympy/sympy#7853 (see 3e4fbed)
close sympy/sympy#9634 (see 2be03f5)
close sympy/sympy#8500 (fixed in diofant#104 and finally in diofant#316)
close sympy/sympy#9192 (see 9bf622f)
close sympy/sympy#7130 (see e068fa3)
close sympy/sympy#8514 (see b2d543b)
close sympy/sympy#9334 (see 90de625)
close sympy/sympy#8229 (see 9755b89)
close sympy/sympy#8061 (see 7054f06)
close sympy/sympy#7872 (tested in diofant#6)
close sympy/sympy#3496 (tested in test_log_symbolic)
close sympy/sympy#2929 (see da7db7a)
close sympy/sympy#8203 (oo is not a real, see diofant#36)
close sympy/sympy#7649 (0 is imaginary since diofant#8)
close sympy/sympy#7256 (fixed in c0a4549)
close sympy/sympy#6783 (see cb28d63)
close sympy/sympy#5662 (is_integer issue fixed in 6bfa9f8, there is no is_bounded anymore)
close sympy/sympy#5295 (fixed with diofant#354)
close sympy/sympy#4856 (we now have flake/pep tests)
close sympy/sympy#4555 (flake8 enabled after diofant#214)
close sympy/sympy#5773 (cmp_to_key removed after diofant#164 and c9acbf0)
close sympy/sympy#5484 (see above)

fixes sympy/sympy#8825 (probably via diofant#209)
fixes sympy/sympy#8635
fixes sympy/sympy#8157
fixes sympy/sympy#7872
fixes sympy/sympy#7599
fixes sympy/sympy#6179
fixes sympy/sympy#5415
fixes sympy/sympy#2865
fixes sympy/sympy#5907
fixes sympy/sympy#11722

Closes diofant#347
 48c035e