| 1 | initial version |
Here is a function to convert the LaTeX string of a matrix into a Sage matrix.
The function includes a bit of documentation with an example.
def matrix_from_latex(mat):
r"""
Return a Sage matrix corresponding to this LaTeX matrix.
Convert the LaTeX string for a matrix with integer entries
into a Sage matrix.
EXAMPLE:
Convert a Sage matrix to LaTeX and back::
sage: a = matrix([[0, 1, 2], [1, 0, 3], [4, -3, 8]])
sage: a
[ 0 1 2]
[ 1 0 3]
[ 4 -3 8]
sage: b = latex(a)
sage: print(b)
\left(\begin{array}{rrr}
0 & 1 & 2 \\
1 & 0 & 3 \\
4 & -3 & 8
\end{array}\right)
sage: c = matrix_from_latex(b)
sage: c
[ 0 1 2]
[ 1 0 3]
[ 4 -3 8]
"""
bits = [r'\left(\begin{array}', r'\end{array}\right)', 'r', '{}']
for b in bits:
mat = mat.replace(b, '')
row = mat.split(r'\\')
return matrix([[ZZ(a) for a in row.split('&')] for row in rows])
| 2 | No.2 Revision |
Here is a function to convert the LaTeX string of a matrix into a Sage matrix.
The function includes a bit of documentation with an example.
def matrix_from_latex(mat):
r"""
Return a Sage matrix corresponding to this LaTeX matrix.
Convert the LaTeX string for a matrix with integer entries
into a Sage matrix.
EXAMPLE:
Convert a Sage matrix to LaTeX and back::
sage: a = matrix([[0, 1, 2], [1, 0, 3], [4, -3, 8]])
sage: a
[ 0 1 2]
[ 1 0 3]
[ 4 -3 8]
sage: b = latex(a)
sage: print(b)
\left(\begin{array}{rrr}
0 & 1 & 2 \\
1 & 0 & 3 \\
4 & -3 & 8
\end{array}\right)
sage: c = matrix_from_latex(b)
sage: c
[ 0 1 2]
[ 1 0 3]
[ 4 -3 8]
"""
bits = [r'\left(\begin{array}', r'\end{array}\right)', 'r', '{}']
for b in bits:
mat = mat.replace(b, '')
row = mat.split(r'\\')
return matrix([[ZZ(a) for a in row.split('&')] for row in rows])
To start directly from a string such as in a comment to the question:
sage: z = r'\left(\begin{array}{rrr}0 & 1 & 2 \\ 1 & 0 & 3 \\ 4 & -3 & 8 \end{array}\right)'
sage: matrix_from_latex(z)
[ 0 1 2]
[ 1 0 3]
[ 4 -3 8]
Note that the function provided above works for matrices with integer entries.
It could be adapted to more general entries.
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.