Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
r""" Formatting utilities
This module defines helper functions that are not class methods.
AUTHORS:
- Eric Gourgoulhon, Michal Bejger (2014-2015): initial version - Joris Vankerschaver (2010): for the function :func:`is_atomic()`
"""
#****************************************************************************** # Copyright (C) 2015 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr> # Copyright (C) 2015 Michal Bejger <bejger@camk.edu.pl> # # Distributed under the terms of the GNU General Public License (GPL) # as published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # http://www.gnu.org/licenses/ #******************************************************************************
r""" Helper function to check whether some LaTeX expression is atomic.
Adapted from method :meth:`~sage.tensor.differential_form_element.DifferentialFormFormatter._is_atomic` of class :class:`~sage.tensor.differential_form_element.DifferentialFormFormatter` written by Joris Vankerschaver (2010).
INPUT:
- ``expression`` -- string representing the expression (e.g. LaTeX string)
OUTPUT:
- ``True`` if additive operations are enclosed in parentheses and ``False`` otherwise.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import is_atomic sage: is_atomic("2*x") True sage: is_atomic("2+x") False sage: is_atomic("(2+x)") True
""" raise TypeError("The argument must be a string")
r""" Helper function to check whether some text-formatted expression is atomic in terms of wedge products.
Adapted from method :meth:`~sage.tensor.differential_form_element.DifferentialFormFormatter._is_atomic` of class :class:`~sage.tensor.differential_form_element.DifferentialFormFormatter` written by Joris Vankerschaver (2010).
INPUT:
- ``expression`` -- string representing the text-formatted expression
OUTPUT:
- ``True`` if wedge products are enclosed in parentheses and ``False`` otherwise.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import is_atomic_wedge_txt sage: is_atomic_wedge_txt("a") True sage: is_atomic_wedge_txt(r"a/\b") False sage: is_atomic_wedge_txt(r"(a/\b)") True sage: is_atomic_wedge_txt(r"(a/\b)/\c") False sage: is_atomic_wedge_txt(r"(a/\b/\c)") True
""" raise TypeError("The argument must be a string.")
r""" Helper function to check whether LaTeX-formatted expression is atomic in terms of wedge products.
Adapted from method :meth:`~sage.tensor.differential_form_element.DifferentialFormFormatter._is_atomic` of class :class:`~sage.tensor.differential_form_element.DifferentialFormFormatter` written by Joris Vankerschaver (2010).
INPUT:
- ``expression`` -- string representing the LaTeX expression
OUTPUT:
- ``True`` if wedge products are enclosed in parentheses and ``False`` otherwise.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import is_atomic_wedge_latex sage: is_atomic_wedge_latex(r"a") True sage: is_atomic_wedge_latex(r"a\wedge b") False sage: is_atomic_wedge_latex(r"(a\wedge b)") True sage: is_atomic_wedge_latex(r"(a\wedge b)\wedge c") False sage: is_atomic_wedge_latex(r"((a\wedge b)\wedge c)") True sage: is_atomic_wedge_latex(r"(a\wedge b\wedge c)") True sage: is_atomic_wedge_latex(r"\omega\wedge\theta") False sage: is_atomic_wedge_latex(r"(\omega\wedge\theta)") True sage: is_atomic_wedge_latex(r"\omega\wedge(\theta+a)") False
""" raise TypeError("The argument must be a string.")
r""" Helper function for text-formatted names of results of multiplication or tensor product.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import format_mul_txt sage: format_mul_txt('a', '*', 'b') 'a*b' sage: format_mul_txt('a+b', '*', 'c') '(a+b)*c' sage: format_mul_txt('a', '*', 'b+c') 'a*(b+c)' sage: format_mul_txt('a+b', '*', 'c+d') '(a+b)*(c+d)' sage: format_mul_txt(None, '*', 'b') sage: format_mul_txt('a', '*', None)
"""
r""" Helper function for LaTeX names of results of multiplication or tensor product.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import format_mul_latex sage: format_mul_latex('a', '*', 'b') 'a*b' sage: format_mul_latex('a+b', '*', 'c') '\\left(a+b\\right)*c' sage: format_mul_latex('a', '*', 'b+c') 'a*\\left(b+c\\right)' sage: format_mul_latex('a+b', '*', 'c+d') '\\left(a+b\\right)*\\left(c+d\\right)' sage: format_mul_latex(None, '*', 'b') sage: format_mul_latex('a', '*', None)
"""
r""" Helper function for text-formatted names of results of unary operator.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import format_unop_txt sage: format_unop_txt('-', 'a') '-a' sage: format_unop_txt('-', 'a+b') '-(a+b)' sage: format_unop_txt('-', '(a+b)') '-(a+b)' sage: format_unop_txt('-', None)
""" #!# is_atomic_otimes_txt should be added
r""" Helper function for LaTeX names of results of unary operator.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import format_unop_latex sage: format_unop_latex('-', 'a') '-a' sage: format_unop_latex('-', 'a+b') '-\\left(a+b\\right)' sage: format_unop_latex('-', '(a+b)') '-(a+b)' sage: format_unop_latex('-', None)
""" #!# is_atomic_otimes_latex should be added
r""" Helper class for displaying tensor expansions.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import FormattedExpansion sage: f = FormattedExpansion('v', r'\tilde v') sage: f v sage: latex(f) \tilde v sage: f = FormattedExpansion('x/2', r'\frac{x}{2}') sage: f x/2 sage: latex(f) \frac{x}{2}
""" r""" TESTS::
sage: from sage.tensor.modules.format_utilities import FormattedExpansion sage: f = FormattedExpansion('v', r'\tilde v') sage: f v
"""
r""" Return a string representation of ``self``.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import FormattedExpansion sage: f = FormattedExpansion('v', r'\tilde v') sage: f._repr_() 'v'
"""
r""" Return a LaTeX representation of ``self``.
EXAMPLES::
sage: from sage.tensor.modules.format_utilities import FormattedExpansion sage: f = FormattedExpansion('v', r'\tilde v') sage: f._latex_() '\\tilde v'
""" |