image thumbnail
from DataTable by Paul Mattern
store data in a table format that supports printing in plain text, Latex, HTML, Wiki,...

LatexTablePrinter
classdef LatexTablePrinter < TablePrinterInterface
    properties (SetAccess = protected)
        addhline = false;
        columnspecifier = '';
    end
    methods
        function this = LatexTablePrinter(columnspecifier, addhline)
            if ischar(columnspecifier)
                this.columnspecifier = columnspecifier;
            elseif isnumeric(columnspecifier) % columnspecifier = number of columns
                this.columnspecifier = strcat(repmat('|c', 1, columnspecifier),'|');
            end
            if addhline
                this.addhline = true;
            end
        end
        function printEntry(this, fid, printstring, recwidth, alignmode, colspan, rowspan)
            if colspan == 1
                fprintf(fid,strcat('%', num2str(recwidth), 's'), printstring);
            else
                fprintf(fid,sprintf('\\\\multicolumn{%d}{|c|}{%%s}%%%ds', colspan, max(recwidth-(22+length(str)),0)), str, '');
            end
        end
        function printColumnStartDelimiter(this, fid)
            fprintf(fid, ' ');
        end
        function printColumnCenterDelimiter(this, fid)
            fprintf(fid, ' & ');
        end
        function printColumnEndDelimiter(this, fid)
            if this.addhline
                fprintf(fid,' \\\\\n \\hline\n');
            else
                fprintf(fid,' \\\\\n');
            end
        end
        function printTableHeader(this, fid)
            fprintf(fid,'\\begin{tabular}{%s}\n \\hline\n', this.columnspecifier);
        end
        function printTableEnd(this, fid)
            if this.addhline
                fprintf(fid,'\\end{tabular}\n');
            else
                fprintf(fid,' \\hline\n\\end{tabular}\n');
            end 
        end
        function printEmptyTable(this, fid)
            fprintf(fid, '\n%%     empty table\n');
        end
        function out = canHandleRowspan(this)
            out = false; % not yet
        end
    end
end

Contact us at files@mathworks.com