let latex oc ?(cols=10)
string_of_i string_of_j string_of_v m =
let p = Printf.fprintf in
let i_elements = m.mat_i in
let j_elements = m.mat_j in
let ilen = Array.length i_elements in
let jlen = Array.length j_elements in
let f_begin i =
p oc "\\begin{tabular}{|l|";
for k = i to min (i + cols - 1) (ilen - 1) do p oc "r|" done;
p oc "}\n\\hline\n";
for k = i to min (i + cols - 1) (ilen - 1) do
p oc "& %s" (string_of_i i_elements.(k))
done;
p oc "\\\\\n\\hline\n"
in
let f_end () =
p oc "\\end{tabular}\n\n"
in
let rec iter i =
if i < ilen then
(
f_begin i;
for j = 0 to jlen - 1 do
p oc "%s " (string_of_j j_elements.(j)) ;
for k = i to min (i + cols - 1) (ilen - 1) do
p oc "& %s" (string_of_v m.mat_mat.(k).(j))
done;
p oc "\\\\\n\\hline\n";
done;
f_end ();
iter (i + cols)
)
else
()
in
iter 0