function str = latexmat(mat, format)
%LATEXMAT Generate LaTeX code for a matrix.
%
%   STR = LATEXMAT(MAT, FORMAT) return the LaTeX code for the matrix MAT, with
%   the given FORMAT.
%
%   See HELP SPRINTF for more details about the FORMAT parameter.

%   Author:      Peter John Acklam
%   Time-stamp:  2003-07-12 22:14:14 +0200
%   E-mail:      pjacklam@online.no
%   URL:         http://home.online.no/~pjacklam

   error(nargchk(2, 2, nargin));

   if ischar(mat)
      error('First argument can not be a string.');
   end

   if ~ischar(format)
      error('Second argument must be a string.');
   end

   [ r, c ] = size(mat);

   newline = sprintf('\n');

   str = [ '\left[ \begin{array}{' ...
               char(abs('c')*ones(1,c)) '}' newline ];

   for i = 1:r
      str = [ str ' ' ];
      for j = 1:c
         t = sprintf(format, real(mat(i,j)));
         if (imag(mat(i,j)) > 0)
            t = [ t '+' sprintf(format, imag(mat(i,j))) 'i' ];
         elseif (imag(mat(i,j)) < 0)
            t = [ t '-' sprintf(format, -imag(mat(i,j))) 'i' ];
         end
         str = [ str ' ' t ];
         if j < c
            str = [ str ' &' ];
         else
            if i < r
               str = [ str ' \\' newline ];
            else
               str = [ str newline ];
            end
         end
      end
   end
   str = [ str '\end{array} \right]' newline ];
