diff --git a/sympy/functions/elementary/complexes.py b/sympy/functions/elementary/complexes.py index caa2b781fa12..4bb4fee9ef13 100644 --- a/sympy/functions/elementary/complexes.py +++ b/sympy/functions/elementary/complexes.py @@ -796,7 +796,7 @@ def _latex(self, printer, exp=None, *args): arg = printer._print(self.args[0]) tex = r'%s^{\dagger}' % arg if exp: - tex = r'\left(%s\right)^{%s}' % (tex, printer._print(exp)) + tex = r'\left(%s\right)^{%s}' % (tex, exp) return tex def _pretty(self, printer, *args): diff --git a/sympy/physics/quantum/density.py b/sympy/physics/quantum/density.py index d0f2da8b1df8..786882f34b3c 100644 --- a/sympy/physics/quantum/density.py +++ b/sympy/physics/quantum/density.py @@ -32,7 +32,7 @@ class Density(HermitianOperator): >>> from sympy.physics.quantum.density import Density >>> d = Density([Ket(0), 0.5], [Ket(1),0.5]) >>> d - 'Density'((|0>, 0.5),(|1>, 0.5)) + Density((|0>, 0.5),(|1>, 0.5)) """ @classmethod @@ -137,7 +137,7 @@ def apply_op(self, op): >>> A = Operator('A') >>> d = Density([Ket(0), 0.5], [Ket(1),0.5]) >>> d.apply_op(A) - 'Density'((A*|0>, 0.5),(A*|1>, 0.5)) + Density((A*|0>, 0.5),(A*|1>, 0.5)) """ new_args = [(op*state, prob) for (state, prob) in self.args] @@ -194,7 +194,7 @@ def _represent(self, **options): return represent(self.doit(), **options) def _print_operator_name_latex(self, printer, *args): - return printer._print(r'\rho', *args) + return r'\rho' def _print_operator_name_pretty(self, printer, *args): return prettyForm('\N{GREEK SMALL LETTER RHO}') diff --git a/sympy/physics/quantum/operator.py b/sympy/physics/quantum/operator.py index 8b1e339644c3..306bfee64fde 100644 --- a/sympy/physics/quantum/operator.py +++ b/sympy/physics/quantum/operator.py @@ -109,7 +109,7 @@ def default_args(self): _label_separator = ',' def _print_operator_name(self, printer, *args): - return printer._print(self.__class__.__name__, *args) + return self.__class__.__name__ _print_operator_name_latex = _print_operator_name diff --git a/sympy/physics/quantum/spin.py b/sympy/physics/quantum/spin.py index 1e74e57ad856..f2c2ee9d380a 100644 --- a/sympy/physics/quantum/spin.py +++ b/sympy/physics/quantum/spin.py @@ -1441,15 +1441,16 @@ def _print_label_pretty(self, printer, *args): ) def _print_label_latex(self, printer, *args): - label = [self.j, self.m] + label = [ + printer._print(self.j, *args), + printer._print(self.m, *args) + ] for i, ji in enumerate(self.jn, start=1): - label.append('j_{%d}=%s' % (i, printer._print(ji)) ) + label.append('j_{%d}=%s' % (i, printer._print(ji, *args)) ) for jn, (n1, n2) in zip(self.coupled_jn[:-1], self.coupled_n[:-1]): n = ','.join(str(i) for i in sorted(n1 + n2)) - label.append('j_{%s}=%s' % (n, printer._print(jn)) ) - return self._print_sequence( - label, self._label_separator, printer, *args - ) + label.append('j_{%s}=%s' % (n, printer._print(jn, *args)) ) + return self._label_separator.join(label) @property def jn(self): diff --git a/sympy/physics/vector/printing.py b/sympy/physics/vector/printing.py index fd40ecd636e6..051ef7161b9b 100644 --- a/sympy/physics/vector/printing.py +++ b/sympy/physics/vector/printing.py @@ -70,7 +70,7 @@ def _print_Function(self, expr, exp=None): subs = r"" if exp: - supers += r"^{%s}" % self._print(exp) + supers += r"^{%s}" % exp return r"%s" % (name + supers + subs) else: diff --git a/sympy/printing/latex.py b/sympy/printing/latex.py index 51f356240720..38d2736abd8f 100644 --- a/sympy/printing/latex.py +++ b/sympy/printing/latex.py @@ -967,7 +967,7 @@ def _print_IdentityFunction(self, expr): def _hprint_variadic_function(self, expr, exp=None): args = sorted(expr.args, key=default_sort_key) texargs = [r"%s" % self._print(symbol) for symbol in args] - tex = r"\%s\left(%s\right)" % (self._print((str(expr.func)).lower()), + tex = r"\%s\left(%s\right)" % (str(expr.func).lower(), ", ".join(texargs)) if exp is not None: return r"%s^{%s}" % (tex, exp) @@ -1260,7 +1260,7 @@ def _hprint_BesselBase(self, expr, exp, sym): need_exp = False if exp is not None: if tex.find('^') == -1: - tex = r"%s^{%s}" % (tex, self._print(exp)) + tex = r"%s^{%s}" % (tex, exp) else: need_exp = True @@ -1346,7 +1346,7 @@ def _print_hyper(self, expr, exp=None): self._print(expr.argument)) if exp is not None: - tex = r"{%s}^{%s}" % (tex, self._print(exp)) + tex = r"{%s}^{%s}" % (tex, exp) return tex def _print_meijerg(self, expr, exp=None): @@ -1359,13 +1359,13 @@ def _print_meijerg(self, expr, exp=None): self._print(expr.argument)) if exp is not None: - tex = r"{%s}^{%s}" % (tex, self._print(exp)) + tex = r"{%s}^{%s}" % (tex, exp) return tex def _print_dirichlet_eta(self, expr, exp=None): tex = r"\left(%s\right)" % self._print(expr.args[0]) if exp is not None: - return r"\eta^{%s}%s" % (self._print(exp), tex) + return r"\eta^{%s}%s" % (exp, tex) return r"\eta%s" % tex def _print_zeta(self, expr, exp=None): @@ -1374,7 +1374,7 @@ def _print_zeta(self, expr, exp=None): else: tex = r"\left(%s\right)" % self._print(expr.args[0]) if exp is not None: - return r"\zeta^{%s}%s" % (self._print(exp), tex) + return r"\zeta^{%s}%s" % (exp, tex) return r"\zeta%s" % tex def _print_stieltjes(self, expr, exp=None): @@ -1383,103 +1383,103 @@ def _print_stieltjes(self, expr, exp=None): else: tex = r"_{%s}" % self._print(expr.args[0]) if exp is not None: - return r"\gamma%s^{%s}" % (tex, self._print(exp)) + return r"\gamma%s^{%s}" % (tex, exp) return r"\gamma%s" % tex def _print_lerchphi(self, expr, exp=None): tex = r"\left(%s, %s, %s\right)" % tuple(map(self._print, expr.args)) if exp is None: return r"\Phi%s" % tex - return r"\Phi^{%s}%s" % (self._print(exp), tex) + return r"\Phi^{%s}%s" % (exp, tex) def _print_polylog(self, expr, exp=None): s, z = map(self._print, expr.args) tex = r"\left(%s\right)" % z if exp is None: return r"\operatorname{Li}_{%s}%s" % (s, tex) - return r"\operatorname{Li}_{%s}^{%s}%s" % (s, self._print(exp), tex) + return r"\operatorname{Li}_{%s}^{%s}%s" % (s, exp, tex) def _print_jacobi(self, expr, exp=None): n, a, b, x = map(self._print, expr.args) tex = r"P_{%s}^{\left(%s,%s\right)}\left(%s\right)" % (n, a, b, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_gegenbauer(self, expr, exp=None): n, a, x = map(self._print, expr.args) tex = r"C_{%s}^{\left(%s\right)}\left(%s\right)" % (n, a, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_chebyshevt(self, expr, exp=None): n, x = map(self._print, expr.args) tex = r"T_{%s}\left(%s\right)" % (n, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_chebyshevu(self, expr, exp=None): n, x = map(self._print, expr.args) tex = r"U_{%s}\left(%s\right)" % (n, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_legendre(self, expr, exp=None): n, x = map(self._print, expr.args) tex = r"P_{%s}\left(%s\right)" % (n, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_assoc_legendre(self, expr, exp=None): n, a, x = map(self._print, expr.args) tex = r"P_{%s}^{\left(%s\right)}\left(%s\right)" % (n, a, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_hermite(self, expr, exp=None): n, x = map(self._print, expr.args) tex = r"H_{%s}\left(%s\right)" % (n, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_laguerre(self, expr, exp=None): n, x = map(self._print, expr.args) tex = r"L_{%s}\left(%s\right)" % (n, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_assoc_laguerre(self, expr, exp=None): n, a, x = map(self._print, expr.args) tex = r"L_{%s}^{\left(%s\right)}\left(%s\right)" % (n, a, x) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_Ynm(self, expr, exp=None): n, m, theta, phi = map(self._print, expr.args) tex = r"Y_{%s}^{%s}\left(%s,%s\right)" % (n, m, theta, phi) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def _print_Znm(self, expr, exp=None): n, m, theta, phi = map(self._print, expr.args) tex = r"Z_{%s}^{%s}\left(%s,%s\right)" % (n, m, theta, phi) if exp is not None: - tex = r"\left(" + tex + r"\right)^{%s}" % (self._print(exp)) + tex = r"\left(" + tex + r"\right)^{%s}" % (exp) return tex def __print_mathieu_functions(self, character, args, prime=False, exp=None): a, q, z = map(self._print, args) sup = r"^{\prime}" if prime else "" - exp = "" if not exp else "^{%s}" % self._print(exp) + exp = "" if not exp else "^{%s}" % exp return r"%s%s\left(%s, %s, %s\right)%s" % (character, sup, a, q, z, exp) def _print_mathieuc(self, expr, exp=None): @@ -1626,10 +1626,10 @@ def latexslice(x, dim): if x[2] == 1: del x[2] if x[0] == 0: - x[0] = '' + x[0] = None if x[1] == dim: - x[1] = '' - return ':'.join(map(self._print, x)) + x[1] = None + return ':'.join(self._print(xi) if xi is not None else '' for xi in x) return (self.parenthesize(expr.parent, PRECEDENCE["Atom"], strict=True) + r'\left[' + latexslice(expr.rowslice, expr.parent.rows) + ', ' + latexslice(expr.colslice, expr.parent.cols) + r'\right]') @@ -1683,7 +1683,7 @@ def _print_Mod(self, expr, exp=None): return r'\left(%s\bmod{%s}\right)^{%s}' % \ (self.parenthesize(expr.args[0], PRECEDENCE['Mul'], strict=True), self._print(expr.args[1]), - self._print(exp)) + exp) return r'%s\bmod{%s}' % (self.parenthesize(expr.args[0], PRECEDENCE['Mul'], strict=True), self._print(expr.args[1])) @@ -1880,7 +1880,7 @@ def _print_frac(self, expr, exp=None): return r"\operatorname{frac}{\left(%s\right)}" % self._print(expr.args[0]) else: return r"\operatorname{frac}{\left(%s\right)}^{%s}" % ( - self._print(expr.args[0]), self._print(exp)) + self._print(expr.args[0]), exp) def _print_tuple(self, expr): if self._settings['decimal_separator'] == 'comma': @@ -2004,7 +2004,7 @@ def _print_set(self, s): _print_frozenset = _print_set def _print_Range(self, s): - dots = r'\ldots' + dots = object() if s.has(Symbol): return self._print_Basic(s) @@ -2026,21 +2026,21 @@ def _print_Range(self, s): printset = tuple(s) return (r"\left\{" + - r", ".join(self._print(el) for el in printset) + + r", ".join(self._print(el) if el is not dots else r'\ldots' for el in printset) + r"\right\}") def __print_number_polynomial(self, expr, letter, exp=None): if len(expr.args) == 2: if exp is not None: return r"%s_{%s}^{%s}\left(%s\right)" % (letter, - self._print(expr.args[0]), self._print(exp), + self._print(expr.args[0]), exp, self._print(expr.args[1])) return r"%s_{%s}\left(%s\right)" % (letter, self._print(expr.args[0]), self._print(expr.args[1])) tex = r"%s_{%s}" % (letter, self._print(expr.args[0])) if exp is not None: - tex = r"%s^{%s}" % (tex, self._print(exp)) + tex = r"%s^{%s}" % (tex, exp) return tex def _print_bernoulli(self, expr, exp=None): @@ -2053,7 +2053,7 @@ def _print_bell(self, expr, exp=None): tex2 = r"\left(%s\right)" % r", ".join(self._print(el) for el in expr.args[2]) if exp is not None: - tex = r"%s^{%s}%s" % (tex1, self._print(exp), tex2) + tex = r"%s^{%s}%s" % (tex1, exp, tex2) else: tex = tex1 + tex2 return tex @@ -2066,13 +2066,14 @@ def _print_fibonacci(self, expr, exp=None): def _print_lucas(self, expr, exp=None): tex = r"L_{%s}" % self._print(expr.args[0]) if exp is not None: - tex = r"%s^{%s}" % (tex, self._print(exp)) + tex = r"%s^{%s}" % (tex, exp) return tex def _print_tribonacci(self, expr, exp=None): return self.__print_number_polynomial(expr, "T", exp) def _print_SeqFormula(self, s): + dots = object() if len(s.start.free_symbols) > 0 or len(s.stop.free_symbols) > 0: return r"\left\{%s\right\}_{%s=%s}^{%s}" % ( self._print(s.formula), @@ -2082,16 +2083,16 @@ def _print_SeqFormula(self, s): ) if s.start is S.NegativeInfinity: stop = s.stop - printset = (r'\ldots', s.coeff(stop - 3), s.coeff(stop - 2), + printset = (dots, s.coeff(stop - 3), s.coeff(stop - 2), s.coeff(stop - 1), s.coeff(stop)) elif s.stop is S.Infinity or s.length > 4: printset = s[:4] - printset.append(r'\ldots') + printset.append(dots) else: printset = tuple(s) return (r"\left[" + - r", ".join(self._print(el) for el in printset) + + r", ".join(self._print(el) if el is not dots else r'\ldots' for el in printset) + r"\right]") _print_SeqPer = _print_SeqFormula @@ -2198,7 +2199,7 @@ def _print_Contains(self, e): return r"%s \in %s" % tuple(self._print(a) for a in e.args) def _print_FourierSeries(self, s): - return self._print_Add(s.truncate()) + self._print(r' + \ldots') + return self._print_Add(s.truncate()) + r' + \ldots' def _print_FormalPowerSeries(self, s): return self._print_Add(s.infinite) @@ -2334,7 +2335,7 @@ def _print_euler(self, expr, exp=None): m, x = (expr.args[0], None) if len(expr.args) == 1 else expr.args tex = r"E_{%s}" % self._print(m) if exp is not None: - tex = r"%s^{%s}" % (tex, self._print(exp)) + tex = r"%s^{%s}" % (tex, exp) if x is not None: tex = r"%s\left(%s\right)" % (tex, self._print(x)) return tex @@ -2342,7 +2343,7 @@ def _print_euler(self, expr, exp=None): def _print_catalan(self, expr, exp=None): tex = r"C_{%s}" % self._print(expr.args[0]) if exp is not None: - tex = r"%s^{%s}" % (tex, self._print(exp)) + tex = r"%s^{%s}" % (tex, exp) return tex def _print_UnifiedTransform(self, expr, s, inverse=False): @@ -2543,13 +2544,13 @@ def _print_Tr(self, p): def _print_totient(self, expr, exp=None): if exp is not None: return r'\left(\phi\left(%s\right)\right)^{%s}' % \ - (self._print(expr.args[0]), self._print(exp)) + (self._print(expr.args[0]), exp) return r'\phi\left(%s\right)' % self._print(expr.args[0]) def _print_reduced_totient(self, expr, exp=None): if exp is not None: return r'\left(\lambda\left(%s\right)\right)^{%s}' % \ - (self._print(expr.args[0]), self._print(exp)) + (self._print(expr.args[0]), exp) return r'\lambda\left(%s\right)' % self._print(expr.args[0]) def _print_divisor_sigma(self, expr, exp=None): @@ -2559,7 +2560,7 @@ def _print_divisor_sigma(self, expr, exp=None): else: tex = r"\left(%s\right)" % self._print(expr.args[0]) if exp is not None: - return r"\sigma^{%s}%s" % (self._print(exp), tex) + return r"\sigma^{%s}%s" % (exp, tex) return r"\sigma%s" % tex def _print_udivisor_sigma(self, expr, exp=None): @@ -2569,19 +2570,19 @@ def _print_udivisor_sigma(self, expr, exp=None): else: tex = r"\left(%s\right)" % self._print(expr.args[0]) if exp is not None: - return r"\sigma^*^{%s}%s" % (self._print(exp), tex) + return r"\sigma^*^{%s}%s" % (exp, tex) return r"\sigma^*%s" % tex def _print_primenu(self, expr, exp=None): if exp is not None: return r'\left(\nu\left(%s\right)\right)^{%s}' % \ - (self._print(expr.args[0]), self._print(exp)) + (self._print(expr.args[0]), exp) return r'\nu\left(%s\right)' % self._print(expr.args[0]) def _print_primeomega(self, expr, exp=None): if exp is not None: return r'\left(\Omega\left(%s\right)\right)^{%s}' % \ - (self._print(expr.args[0]), self._print(exp)) + (self._print(expr.args[0]), exp) return r'\Omega\left(%s\right)' % self._print(expr.args[0]) def emptyPrinter(self, expr):