def _print_Derivative(self, deriv): # XXX use U('PARTIAL DIFFERENTIAL') here ? syms = list(deriv.symbols) syms.reverse() x = None for sym in syms: S = self._print(sym) dS= prettyForm(*S.left('d')) if x is None: x = dS else: x = prettyForm(*x.right(' ')) x = prettyForm(*x.right(dS)) f = prettyForm(binding=prettyForm.FUNC, *self._print(deriv.expr).parens()) pform = prettyForm('d') if len(syms) > 1: pform = pform ** prettyForm(str(len(deriv.symbols))) pform = prettyForm(*pform.below(stringPict.LINE, x)) pform.baseline = pform.baseline + 1 pform = prettyForm(*stringPict.next(pform, f)) return pform
def _print_Derivative(self, deriv): # XXX use U('PARTIAL DIFFERENTIAL') here ? syms = list(deriv.symbols) syms.reverse() x = None for sym in syms: S = self._print(sym) dS = prettyForm(*S.left('d')) if x is None: x = dS else: x = prettyForm(*x.right(' ')) x = prettyForm(*x.right(dS)) f = prettyForm(binding=prettyForm.FUNC, *self._print(deriv.expr).parens()) pform = prettyForm('d') if len(syms) > 1: pform = pform**prettyForm(str(len(deriv.symbols))) pform = prettyForm(*pform.below(stringPict.LINE, x)) pform.baseline = pform.baseline + 1 pform = prettyForm(*stringPict.next(pform, f)) return pform
def _print_Integral(self, integral): f = integral.function # Add parentheses if a sum and create pretty form for argument prettyF = self._print(f) # XXX generalize parents if f.is_Add: prettyF = prettyForm(*prettyF.parens()) # dx dy dz ... arg = prettyF for x,ab in integral.limits: prettyArg = self._print(x) # XXX qparens (parens if needs-parens) if prettyArg.width() > 1: prettyArg = prettyForm(*prettyArg.parens()) arg = prettyForm(*arg.right(' d', prettyArg)) # \int \int \int ... firstterm = True S = None for x,ab in integral.limits: # Create bar based on the height of the argument h = arg.height() H = h+2 # XXX hack! ascii_mode = not pretty_use_unicode() if ascii_mode: H += 2 vint= vobj('int', H) # Construct the pretty form with the integral sign and the argument pform = prettyForm(vint) #pform.baseline = pform.height()//2 # vcenter pform.baseline = arg.baseline + (H-h)//2 # covering the whole argument if ab is not None: # Create pretty forms for endpoints, if definite integral prettyA = self._print(ab[0]) prettyB = self._print(ab[1]) if ascii_mode: # XXX hack # Add spacing so that endpoint can more easily be # identified with the correct integral sign spc = max(1, 3 - prettyB.width()) prettyB = prettyForm(*prettyB.left(' ' * spc)) spc = max(1, 4 - prettyA.width()) prettyA = prettyForm(*prettyA.right(' ' * spc)) pform = prettyForm(*pform.above(prettyB)) pform = prettyForm(*pform.below(prettyA)) #if ascii_mode: # XXX hack # # too much vspace beetween \int and argument # # but I left it as is # pform = prettyForm(*pform.right(' ')) if not ascii_mode: # XXX hack pform = prettyForm(*pform.right(' ')) if firstterm: S = pform # first term firstterm = False else: S = prettyForm(*S.left(pform)) pform = prettyForm(*arg.left(S)) return pform
def _print_Integral(self, integral): f = integral.function # Add parentheses if a sum and create pretty form for argument prettyF = self._print(f) # XXX generalize parents if f.is_Add: prettyF = prettyForm(*prettyF.parens()) # dx dy dz ... arg = prettyF for x, ab in integral.limits: prettyArg = self._print(x) # XXX qparens (parens if needs-parens) if prettyArg.width() > 1: prettyArg = prettyForm(*prettyArg.parens()) arg = prettyForm(*arg.right(' d', prettyArg)) # \int \int \int ... firstterm = True S = None for x, ab in integral.limits: # Create bar based on the height of the argument h = arg.height() H = h + 2 # XXX hack! ascii_mode = not pretty_use_unicode() if ascii_mode: H += 2 vint = vobj('int', H) # Construct the pretty form with the integral sign and the argument pform = prettyForm(vint) #pform.baseline = pform.height()//2 # vcenter pform.baseline = arg.baseline + ( H - h) // 2 # covering the whole argument if ab is not None: # Create pretty forms for endpoints, if definite integral prettyA = self._print(ab[0]) prettyB = self._print(ab[1]) if ascii_mode: # XXX hack # Add spacing so that endpoint can more easily be # identified with the correct integral sign spc = max(1, 3 - prettyB.width()) prettyB = prettyForm(*prettyB.left(' ' * spc)) spc = max(1, 4 - prettyA.width()) prettyA = prettyForm(*prettyA.right(' ' * spc)) pform = prettyForm(*pform.above(prettyB)) pform = prettyForm(*pform.below(prettyA)) #if ascii_mode: # XXX hack # # too much vspace beetween \int and argument # # but I left it as is # pform = prettyForm(*pform.right(' ')) if not ascii_mode: # XXX hack pform = prettyForm(*pform.right(' ')) if firstterm: S = pform # first term firstterm = False else: S = prettyForm(*S.left(pform)) pform = prettyForm(*arg.left(S)) return pform