Mercurial > repos > public > sbplib
diff latexTable.m @ 287:0b1580ed9b8b feature/textTable
latexTable: similar function that produces latex code.
author | Martin Almquist <martin.almquist@it.uu.se> |
---|---|
date | Mon, 12 Sep 2016 14:48:23 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/latexTable.m Mon Sep 12 14:48:23 2016 +0200 @@ -0,0 +1,59 @@ +% data -- cell array of numbers +% leftColstrings -- cell array of strings, for left column +% topRowStrings -- cell array of strings, for top row +% dataFormat -- (optional) format specifier, e.g. '%.2f' +function latexTable(data, leftColStrings, topRowStrings, dataFormat) + + default_arg('dataFormat','%8.2f') + + nRows = length(leftColStrings); + nCols = length(topRowStrings); + [m,n] = size(data); + + if(m ~= nRows || n ~=nCols) + error('Data dimensions must match labels'); + end + + header = { + '\begin{table}[H]' + '\centering' + ['\begin{tabular}{c' repmat('|c',1,nCols) '} &'] + headers(topRowStrings) + '\hline' + }; + + footer = { + '\end{tabular}' + '\caption{DESCRIPTION.}' + '\label{table:LABEL}' + '\end{table}' + }; + + nlc = sprintf('\n'); + dataStr = ''; + for i = 1:nRows + dataStr = [dataStr leftColStrings{i}]; %#ok<AGROW> + for j = 1:nCols + dataStr = [dataStr ' & ' sprintf(dataFormat,data{i,j}) ]; %#ok<AGROW> + end + if(i<nRows) + dataStr = [dataStr ' \\ ' nlc]; %#ok<AGROW> + end + end + + header = strjoin(header', nlc); + footer = strjoin(footer', nlc); + + table = strjoin({header, dataStr, footer}, nlc); + fprintf('%s\n', table); +end + + +function s = headers(strings) + s= [strings{1} ' ']; + nCols = length(strings); + for i = 2:nCols + s = [s '& ' strings{i} ' ']; %#ok<AGROW> + end + s = [s ' \\']; +end \ No newline at end of file