The pretty_print command#

Works similar to the print function, except that it always tries to use a rich output for an object, as specified via the text display preference. If such a rich output is not available, it falls back on the plain text.

EXAMPLES:

sage: pretty_print(1, 2, 3)
1 2 3

sage: pretty_print(x^2 / (x + 1))                                                   # needs sage.symbolic
x^2/(x + 1)

EXAMPLES:

sage: %display ascii_art  # not tested
sage: pretty_print(x^2 / (x + 1))                                                   # needs sage.symbolic
   2
  x
-----
x + 1

EXAMPLES:

Printing a graphics object just prints a string, whereas pretty_print() does not print anything and just shows the graphics instead:

sage: print(plot(sin))                                                              # needs sage.plot sage.symbolic
Graphics object consisting of 1 graphics primitive
sage: pretty_print(plot(sin))                                                       # needs sage.plot sage.symbolic
class sage.repl.rich_output.pretty_print.SequencePrettyPrinter(*args, **kwds)#

Bases: SageObject

Pretty Printer for Multiple Arguments.

INPUT/OUTPUT:

Same as pretty_print(), except that the number of arguments must be >= 2. Otherwise its not a sequence of things to print.

EXAMPLES:

sage: pretty_print(1, 2, 3)   # indirect doctest
1 2 3
sage: from sage.repl.rich_output.pretty_print import SequencePrettyPrinter
sage: SequencePrettyPrinter(1, 2, 3).pretty_print()
1 2 3
is_homogeneous(common_type)#

Return whether the pretty print items are homogeneous

INPUT:

  • common_type – a type.

OUTPUT:

Boolean. Whether all items to be pretty printed are of said type.

EXAMPLES:

sage: from sage.repl.rich_output.pretty_print import SequencePrettyPrinter
sage: seq = SequencePrettyPrinter(1, 2, 3)
sage: seq.is_homogeneous(Integer)
True
sage: seq.is_homogeneous(str)
False
pretty_print()#

Actually do the pretty print.

EXAMPLES:

sage: from sage.repl.rich_output.pretty_print import SequencePrettyPrinter
sage: SequencePrettyPrinter(1, 2, 3).pretty_print()
1 2 3

The keyword arguments are only used the first time graphics output is generated:

sage: seq = SequencePrettyPrinter(Graph(), Graph(), edge_labels=True)       # needs sage.graphs sage.plot
sage: seq.pretty_print()   # does not pass edge_labels to graphics object   # needs sage.graphs sage.plot
sage: seq._concatenate_graphs().show(edge_labels=True)                      # needs sage.graphs sage.plot
Traceback (most recent call last):
...
TypeError: ...matplotlib() got an unexpected keyword argument 'edge_labels'
sage.repl.rich_output.pretty_print.pretty_print(*args, **kwds)#

Pretty print the arguments using rich output if available.

This function is similar to print(), except that a rich output representation such as ascii_art or Latex is printed instead of the string representation.

Note that the output depends on the global display preferences specified via preferences(). If the display preference for text is not specified, Latex output is preferred.

For graphical objects, a graphical output is used.

For certain homogeneous multiple positional arguments, a suitable combined graphical output is generated. In particular, graphs and plots are treated special. Otherwise this function concatenates the textual representations.

INPUT:

  • *args – any number of positional arguments. The objects to pretty print.

  • **kwds – optional keyword arguments that are passed to the rich representation. Examples include:

    • dpi - dots per inch

    • figsize- [width, height] (same for square aspect)

    • axes - (default: True)

    • fontsize - positive integer

    • frame - (default: False) draw a MATLAB-like frame around the image

EXAMPLES:

sage: pretty_print(ZZ)
Integer Ring

sage: pretty_print("Integers = ", ZZ) # trac 11775
'Integers = ' Integer Ring

To typeset LaTeX code as-is, use LatexExpr:

sage: pretty_print(LatexExpr(r"\frac{x^2 + 1}{x - 2}"))
\frac{x^2 + 1}{x - 2}

For text-based backends, the default text display preference is to output plain text which is usually the same as using print():

sage: pretty_print(x^2 / (x + 1))                                               # needs sage.symbolic
x^2/(x + 1)

sage: t = BinaryTrees(3).first()                                                # needs sage.graphs
sage: pretty_print(t)                                                           # needs sage.graphs
[., [., [., .]]]
sage: print(t)                                                                  # needs sage.graphs
[., [., [., .]]]

EXAMPLES:

Changing the text display preference affects the output of this function. The following illustrates a possible use-case:

sage: %display ascii_art  # not tested
sage: for t in BinaryTrees(3)[:3]:                                              # needs sage.graphs
....:     pretty_print(t)
o
 \
  o
   \
    o
o
 \
  o
 /
o
  o
 / \
o   o

sage: pretty_print(x^2 / (x + 1))                                               # needs sage.symbolic
   2
  x
-----
x + 1
sage.repl.rich_output.pretty_print.show(*args, **kwds)#

Alias for pretty_print.

This function is an alias for pretty_print().

INPUT/OUTPUT:

See pretty_print(). Except if the argument is a graph, in which case it is plotted instead.

EXAMPLES:

sage: show(1)
1