/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_misc/write2tex.m
ViewVC logotype

Diff of /MITgcm_contrib/gael/matlab_class/gcmfaces_misc/write2tex.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1 by gforget, Tue Jun 28 20:58:03 2011 UTC revision 1.13 by gforget, Mon Oct 5 22:00:09 2015 UTC
# Line 2  function []=write2tex(myFile,myStep,vara Line 2  function []=write2tex(myFile,myStep,vara
2  %object:        create/increment/complete/compile a tex file from within matlab  %object:        create/increment/complete/compile a tex file from within matlab
3  %input:         myFile is the file name  %input:         myFile is the file name
4  %               myStep is the operation to perform on the tex file  %               myStep is the operation to perform on the tex file
5  %                       0   create file starting with write2tex.header  %                       0   create file starting with title page (see myText)
6  %(not yet)              1   add title or section page (see myLev)  %                       1   add section or subsection (see myLev)
7  %                       2   add a figure plus caption (see myFig)  %                       2   add a figure plus caption (see myFig)
8  %                       3   add a paragraph  %                       3   add a paragraph
9  %                       4   finish file  %                       4   finish file
10  %                       5   compile and remove temporary files (incl. *fig*.ps)  %                       5   compile (latex x 2 then dvipdf)
11  %                       -5  compile solely  %                       6   remove temporary files (incl. *fig*.ps)
12  %optional       myText is a cell array of text lines (for myStep=1 to 2)  %optional       myText is a cell array of text lines (for myStep=1 to 2)
13  %               myLev is the title level (for myStep=1)  %               myLev is the title level (for myStep=1)
14  %                       0=manuscript title, 1=section, 2=subsection  %                       1=section, 2=subsection (not yet implemented)
15  %               myFig is a figure handle (for myStep=2)  %               myFig is a figure handle (for myStep=2)
16    
17  myText=[]; myLev=[]; myFig=[];  if isempty(myFile);
18  if myStep>0&myStep<4; myText=varargin{1}; end;      %if no file name, then do nothing
19  if myStep==1; myLev=varargin{2};      return;
20    end;
21    if iscell(myFile);
22        %extecute alternative command (myFile{1}) passing rest as arguments  
23        eval([myFile{1} '(myFile{2:end});']);
24        return;
25    end;
26    
27    
28    myText=[]; myLev=[]; myFig=[]; myRdm=[];
29    if myStep<4; myText=varargin{1}; end;
30    if myStep==0; myRdm=varargin{2};
31    elseif myStep==1; myLev=varargin{2};
32  elseif myStep==2; myFig=varargin{2};  elseif myStep==2; myFig=varargin{2};
33  end;  end;
34    
35    %format use for printing out plots :
36    frmt='eps';
37    if ispc; frmt='jpg'; end;
38    
39  %create file starting with write2tex.header  %create file starting with write2tex.header
40  if myStep==0;  if myStep==0;
41      test0=dir(myFile);      test0=dir(myFile);
# Line 31  if myStep==0; Line 47  if myStep==0;
47      if ~test0;      if ~test0;
48          return;          return;
49      else;      else;
50          tmp1=which('write2tex');          fid=fopen(myFile,'w');
51          eval(['!\cp -f ' tmp1(1:end-2) '.header ' myFile ]);  
52      end;          fprintf(fid,'\\documentclass[12pt]{beamer}\n');
53            fprintf(fid,'%%a nice series of examples for the beamer class:\n');
54            fprintf(fid,'%%http://www.informatik.uni-freiburg.de/~frank/ENG/beamer/example/beamer-class-example-en-5.html\n');
55            fprintf(fid,'\\usepackage{multicol}\n');
56    
57            fprintf(fid,'\n');
58            fprintf(fid,'\\newcommand\\Fontvi{\\fontsize{6}{7.2}\\selectfont}\n');
59            fprintf(fid,'\n');
60    
61            fprintf(fid,'\\begin{document} \n\n');
62    
63            fprintf(fid,'\\title{\n');
64            for ii=1:length(myText); fprintf(fid,[myText{ii} '\\\\ \n']); end;
65            fprintf(fid,'}\n\n');
66            fprintf(fid,'\\date{\\today}\n\n');
67            fprintf(fid,'\\frame{\\titlepage}\n\n');
68    
69            fprintf(fid,'\\frame{\n');
70            fprintf(fid,'\\frametitle{Table of contents}\n');
71            fprintf(fid,'\\begin{multicols}{2}\n');
72            fprintf(fid,'\\Fontvi\n');
73            fprintf(fid,'\\tableofcontents\n');
74            fprintf(fid,'\\end{multicols}\n');
75            fprintf(fid,'} \n\n');
76    
77            if ~isempty(myRdm);
78              fprintf(fid,'\\frame{\n');
79              fprintf(fid,'\\section{README}\n');
80              fprintf(fid,'\\Fontvi\n');
81              for pp=1:length(myRdm);
82                fprintf(fid,[myRdm{pp} '\n\n']);
83              end;
84              fprintf(fid,'} \n\n');
85            end;
86    
87            fclose(fid);
88        end;
89        myFigNumTex=0;
90        mySection='';
91        eval(['save ' myFile(1:end-4) '.mat myFigNumTex mySection;']);
92  end;  end;
93    
94  %open file and go to last line  %open file and go to last line
95  fid=fopen(myFile,'a+');  fid=fopen(myFile,'a+');
96    eval(['load ' myFile(1:end-4) '.mat;']);
97    
98  %add title or section page (see myLev)  %add title or section page (see myLev)
99    if myStep==1;
100        mySection=myText;
101        if myLev==1; fprintf(fid,'\\section{\n');
102        else; fprintf(fid,'\\subsection{\n');
103        end;
104        fprintf(fid,mySection);
105        fprintf(fid,'} \n\n');
106    end;
107    
108  %add a figure plus caption (see myFig)  %add a figure plus caption (see myFig)
109  if myStep==2;  if myStep==2;
110      figure(myFig);      figure(myFig);
111      nn=strfind(myFile,'/');      drawnow;
112      if ~isempty(nn);      myFigNumTex=myFigNumTex+1;
113          dirTex=myFile(1:nn); fileTex=myFile(nn+1:end-4);      [dirTex,fileTex,EXT] = fileparts(myFile);
     else;  
         dirTex='./'; fileTex=myFile(1:end-4)  
     end;  
114      %print the very figure      %print the very figure
115      print(myFig,'-depsc',[dirTex fileTex '.fig' num2str(myFig)]);      if strcmp(frmt,'eps');
116          print(myFig,'-depsc',[dirTex fileTex '_fig' num2str(myFigNumTex) '.eps']);
117        elseif strcmp(frmt,'jpg');
118          print(myFig,'-djpeg90',[dirTex fileTex '_fig' num2str(myFigNumTex) '.jpg']);
119        elseif strcmp(frmt,'png');
120          print(myFig,'-dpng',[dirTex fileTex '_fig' num2str(myFigNumTex) '.png']);
121        end
122        close;
123      %add figure to text file      %add figure to text file
124      fprintf(fid,'\\clearpage \n');      fprintf(fid,'\\frame{ \n');
125        fprintf(fid,['\\frametitle{' mySection '} \n']);
126      fprintf(fid,'\\begin{figure}[tbh] \\centering \n');      fprintf(fid,'\\begin{figure}[tbh] \\centering \n');
127  %     fprintf(fid,'\\includegraphics[width=\\textwidth,height=0.9\\textheight]');  %     fprintf(fid,'\\includegraphics[width=\\textwidth,height=0.9\\textheight]');
128      fprintf(fid,'\\includegraphics[width=\\textwidth]');      fprintf(fid,'\\includegraphics[width=0.75\\textwidth]');
129      fprintf(fid,['{' fileTex '.fig' num2str(myFig) '}\n']);      fprintf(fid,['{' fileTex '_fig' num2str(myFigNumTex) '.' frmt '}\n']);
130      fprintf(fid,'\\caption{');      fprintf(fid,'\\caption{');
131      for ii=1:length(myText); fprintf(fid,[myText{ii} '\n']); end;      for ii=1:length(myText); fprintf(fid,[myText{ii} '\n']); end;
132      fprintf(fid,'} \\end{figure} \n');      fprintf(fid,'} \\end{figure} \n');
133      fprintf(fid,'\\clearpage \n\n');      fprintf(fid,'} \n\n');
134  end;  end;
135    
136  %add a paragraph  %add a paragraph
# Line 77  if myStep==4; fprintf(fid,'\n\n \\end{do Line 146  if myStep==4; fprintf(fid,'\n\n \\end{do
146  %close file  %close file
147  fprintf(fid,'\n\n');  fprintf(fid,'\n\n');
148  fclose(fid);  fclose(fid);
149    eval(['save ' myFile(1:end-4) '.mat myFigNumTex mySection;']);
150    
151  %compile  %compile
152  if myStep==5|myStep==-5;  if myStep==5;
153      dirOrig=pwd;      fprintf('\nNow we can attempt to compile the tex file from within Matlab. \n');
154      nn=strfind(myFile,'/');      fprintf('If the latex implementation is incomplete then this may fail, and \n');
155      if ~isempty(nn);      fprintf('user should then abort and compile the tex file from outside Matlab. \n');
156          cd(myFile(1:nn)); fileTex=myFile(nn+1:end-4);      fprintf('The beamer class is required by in particular. In Matlab, if prompted \n');
157      else;      fprintf(' with a question mark then typing ''quit'' will abort compilation. \n');
158          fileTex=myFile(1:end-4);      test0=input('\n type 1 to proceed or 0 to skip this attempt\n');
159        if test0;
160          dirOrig=pwd;
161          [PATHSTR,fileTex,EXT] = fileparts(myFile);
162          cd(PATHSTR);
163          system(['latex ' fileTex]);
164          system(['latex ' fileTex]);
165          system(['dvipdf ' fileTex]);
166          cd(dirOrig);
167      end;      end;
     eval(['!latex ' fileTex]);  
     eval(['!latex ' fileTex]);  
     eval(['!dvipdf ' fileTex]);  
     cd(dirOrig);  
168  end;  end;
169    
170    
171  %compile  %compile
172  if myStep==5;  if myStep==6&ispc;
173        fprintf('warning : compiling tex to pdf is bypassed on PCs\n');
174    end;
175    
176    if myStep==6&~ispc;
177      dirOrig=pwd;      dirOrig=pwd;
178      nn=strfind(myFile,'/');      nn=strfind(myFile,filesep);
179      if ~isempty(nn);      if ~isempty(nn);
180          cd(myFile(1:nn)); fileTex=myFile(nn+1:end-4);          cd(myFile(1:nn(end))); fileTex=myFile(nn(end)+1:end-4);
181      else;      else;
182          fileTex=myFile(1:end-4);          fileTex=myFile(1:end-4);
183      end;      end;
184      eval(['!\rm -f ' fileTex '.fig*']);      delete([fileTex '_fig*']);
185      eval(['!\rm -f ' fileTex '.aux']);      delete([fileTex '.aux']);
186      eval(['!\rm -f ' fileTex '.log']);      delete([fileTex '.log']);
187      eval(['!\rm -f ' fileTex '.out']);      delete([fileTex '.out']);
188      eval(['!\rm -f ' fileTex '.dvi']);      delete([fileTex '.dvi']);
189      cd(dirOrig);      cd(dirOrig);
190  end;  end;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.22