⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm_writetex.m

📁 这是一个很适合研究和学习用的电力系统仿真软件
💻 M
字号:
function fm_writetex(Matrix,Header,Cols,Rows,File)
% FM_WRITETEX export PSAT results in LaTeX2e format.
%
% FM_WRITETEX(MATRIX,HEDAER,COLNAMES,ROWNAMES,FILENAME)
%
%    MATRIX     Matrix to write to file
%               Cell array for multiple matrices.
%    HEADER     String of header information.
%               Cell array for multiple header.
%    COLNAMES   (Cell array of strings) Column headers.
%               One cell element per column.
%    ROWNAMES   (Cell array of strings) Row headers.
%               One cell element per row.
%    FILENAME   (string) Name of TeX file.
%               If not specified, contents will be
%               opened in the current selected text
%               viewer.
%
%Author:    Federico Milano
%Date:      15-Sep-2003
%Version:   1.0.0
%
%E-mail:    fmilano@thunderbox.uwaterloo.ca
%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano

global Path

if ~iscell(Matrix)
  Matrix{1,1} = Matrix;
  Header{1,1} = Header;
  Cols{1,1} = Cols;
  Rows{1,1} = Rows;
end

% --------------------------------------------------------------------
% opening text file
% --------------------------------------------------------------------

fm_disp
fm_disp('Writing the report LaTeX2e file...')

[fid,msg] = fopen([Path.data,File], 'wt');
if fid == -1
  fm_disp(msg)
  return
end
path_lf = strrep(Path.data,'\','\\');

% --------------------------------------------------------------------
% writing data
% --------------------------------------------------------------------

nhr = 0;
idx_table = 0;

for i_matrix = 1:length(Matrix)

  m = Matrix{i_matrix};
  colnames = Cols{i_matrix};
  rownames = Rows{i_matrix};
  header = Header{i_matrix};

  if isempty(colnames) & isempty(rownames) & isempty(m)

    % treat header as comment
    if iscell(header)
      for ii = 1:length(header)
	count = fprintf(fid,'%% %s\n',specialchar(header{ii}));
      end
    else
      count = fprintf(fid,'%% %s\n',specialchar(header));
    end

  else % create table

    idx_table = idx_table + 1;

    % print the preamble of the table
    % see Leslie Lamport's LATEX book for details.
    % open the table environment as a floating body
    fprintf(fid, '\\begin{table}[htbp] \n');
    fprintf(fid, ' \\begin{center} \n');

    % Write header
    % ------------------------------------------------------------------

    caption = '';
    if iscell(header)
      for ii = 1:length(header)
	caption = [caption,' ',header{ii}];
      end
    else
      caption = [caption,header];
    end
    caption = specialchar(caption);

    %% include the user-defined or default caption
    fprintf(fid, '  \\caption{%s} \n', caption);
    count = fprintf(fid,'  \\vspace{0.1cm}\n');

    % Write column names
    % ------------------------------------------------------------------

    if nargin > 2 & ~isempty(colnames)
      [nrows,ncolnames] = size(colnames);

      tt =  '|';
      for ii = 1:ncolnames
	tt = [tt,'c|'];
      end
      fprintf(fid, '  \\begin{tabular}{%s} \n', tt);
      fprintf(fid, '   \\hline \n');

      for jj = 1:nrows
	fprintf(fid, '   ');
	for ii = 1:ncolnames-1
	  count = fprintf(fid, '%s & ', specialchar(colnames{jj,ii}));
	end
	count = fprintf(fid, '%s \\\\\n', specialchar(colnames{jj,ncolnames}));
      end
      count = fprintf(fid,'   \\hline \\hline \n');
    end

    % Write data
    % ------------------------------------------------------------------

    if nargin > 3 & ~isempty(rownames)
      [nrownames,ncols] = size(rownames);
      ndata = size(m,2);

      if isempty(colnames)
	tt =  '|';
	for ii = 1:(ncols+ndata)
	  tt = [tt,'c|'];
	end
	fprintf(fid, '  \\begin{tabular}{%s} \n', tt);
	fprintf(fid, '   \\hline \n');
      end

      for ii = 1:nrownames
	fprintf(fid, '   ');
	for jj = 1:ncols
	  count = fprintf(fid, '%s & ', specialchar(rownames{ii,jj}));
	end
	for hh = 1:ndata-1
	  count = fprintf(fid, '$%8.5f$ & ', m(ii,hh));
	end
	count = fprintf(fid, '$%8.5f$ \\\\ \\hline \n', m(ii,ndata));
      end
    end

    %% print the footer of the table environment
    fprintf(fid, '  \\end{tabular} \n');
    %% include the user-defined or default label
    fprintf(fid, '  \\label{%s} \n', ...
	    ['tab:',strrep(File,'.tex',''),'_',num2str(idx_table)]);
    fprintf(fid, ' \\end{center} \n');
    %% close the table environment and return
    fprintf(fid, '\\end{table} \n');

  end
  count = fprintf(fid,'\n');

end

fclose(fid);
fm_disp(['Report of Static Results saved in ',File])

% view file
fm_text(13,[Path.data,File])


% -------------------------------------------------------
% check for special LaTeX2e character
% -------------------------------------------------------

function string = specialchar(string)

string = [lower(strrep(string,'#','\#')),' '];
string = strrep(string,'&','\&');
string = strrep(string,'_','\_');
string = strrep(string,'$','\$');
string = strrep(string,'{','\{');
string = strrep(string,'}','\}');
string = strrep(string,'%','\%');
string = strrep(string,'~','$\sim$');
string(1) = upper(string(1));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -