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

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

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


Revision 1.13 - (show annotations) (download)
Mon Oct 5 22:00:09 2015 UTC (9 years, 9 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65t
Changes since 1.12: +15 -7 lines
- ask user whether or not to attempt compiling the tex file.

1 function []=write2tex(myFile,myStep,varargin);
2 %object: create/increment/complete/compile a tex file from within matlab
3 %input: myFile is the file name
4 % myStep is the operation to perform on the tex file
5 % 0 create file starting with title page (see myText)
6 % 1 add section or subsection (see myLev)
7 % 2 add a figure plus caption (see myFig)
8 % 3 add a paragraph
9 % 4 finish file
10 % 5 compile (latex x 2 then dvipdf)
11 % 6 remove temporary files (incl. *fig*.ps)
12 %optional myText is a cell array of text lines (for myStep=1 to 2)
13 % myLev is the title level (for myStep=1)
14 % 1=section, 2=subsection (not yet implemented)
15 % myFig is a figure handle (for myStep=2)
16
17 if isempty(myFile);
18 %if no file name, then do nothing
19 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};
33 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
40 if myStep==0;
41 test0=dir(myFile);
42 if ~isempty(test0);
43 test0=input(['you are about to overwrite ' myFile ' !!! \n type 1 to proceed, 0 to stop \n']);
44 else;
45 test0=1;
46 end;
47 if ~test0;
48 return;
49 else;
50 fid=fopen(myFile,'w');
51
52 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;
93
94 %open file and go to last line
95 fid=fopen(myFile,'a+');
96 eval(['load ' myFile(1:end-4) '.mat;']);
97
98 %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)
109 if myStep==2;
110 figure(myFig);
111 drawnow;
112 myFigNumTex=myFigNumTex+1;
113 [dirTex,fileTex,EXT] = fileparts(myFile);
114 %print the very figure
115 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
124 fprintf(fid,'\\frame{ \n');
125 fprintf(fid,['\\frametitle{' mySection '} \n']);
126 fprintf(fid,'\\begin{figure}[tbh] \\centering \n');
127 % fprintf(fid,'\\includegraphics[width=\\textwidth,height=0.9\\textheight]');
128 fprintf(fid,'\\includegraphics[width=0.75\\textwidth]');
129 fprintf(fid,['{' fileTex '_fig' num2str(myFigNumTex) '.' frmt '}\n']);
130 fprintf(fid,'\\caption{');
131 for ii=1:length(myText); fprintf(fid,[myText{ii} '\n']); end;
132 fprintf(fid,'} \\end{figure} \n');
133 fprintf(fid,'} \n\n');
134 end;
135
136 %add a paragraph
137 if myStep==3;
138 for ii=1:length(myText);
139 fprintf(fid,[myText{ii} '\n']);
140 end;
141 end;
142
143 %finish file
144 if myStep==4; fprintf(fid,'\n\n \\end{document} \n\n'); end;
145
146 %close file
147 fprintf(fid,'\n\n');
148 fclose(fid);
149 eval(['save ' myFile(1:end-4) '.mat myFigNumTex mySection;']);
150
151 %compile
152 if myStep==5;
153 fprintf('\nNow we can attempt to compile the tex file from within Matlab. \n');
154 fprintf('If the latex implementation is incomplete then this may fail, and \n');
155 fprintf('user should then abort and compile the tex file from outside Matlab. \n');
156 fprintf('The beamer class is required by in particular. In Matlab, if prompted \n');
157 fprintf(' with a question mark then typing ''quit'' will abort compilation. \n');
158 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;
168 end;
169
170
171 %compile
172 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;
178 nn=strfind(myFile,filesep);
179 if ~isempty(nn);
180 cd(myFile(1:nn(end))); fileTex=myFile(nn(end)+1:end-4);
181 else;
182 fileTex=myFile(1:end-4);
183 end;
184 delete([fileTex '_fig*']);
185 delete([fileTex '.aux']);
186 delete([fileTex '.log']);
187 delete([fileTex '.out']);
188 delete([fileTex '.dvi']);
189 cd(dirOrig);
190 end;

  ViewVC Help
Powered by ViewVC 1.1.22