1 | function laprint(figno,filename,varargin) |
---|
2 | %LAPRINT prints a figure for inclusion in LaTeX documents. |
---|
3 | % LaPrint creates an eps-file and a tex-file. The tex-file contains |
---|
4 | % the annotation of the figure such as titles, labels and texts. The |
---|
5 | % eps-file contains the non-text part of the figure as well as the |
---|
6 | % position of the text-objects. The packages 'graphicx' (or 'epsfig') |
---|
7 | % and 'psfrag' (and possibly ''color'') are required for the LaTeX |
---|
8 | % run. A postscript driver like 'dvips' is required for printing. |
---|
9 | % |
---|
10 | % Usage: >> laprint |
---|
11 | % |
---|
12 | % This opens a graphical user interface window, to control the |
---|
13 | % various settings. It includes a help facility. Just try it. |
---|
14 | % |
---|
15 | % As an alternative to the GUI you can call laprint from the command |
---|
16 | % line with various extra input arguments. These arguments are |
---|
17 | % explained in the help window of the GUI, which can be also be |
---|
18 | % opened using the command |
---|
19 | % >> laprint helpwindow |
---|
20 | % |
---|
21 | % There is an Users Guide available at |
---|
22 | % http://www.uni-kassel.de/fb16/rat/matlab/laprint/laprintdoc.ps |
---|
23 | |
---|
24 | % (c) Arno Linnemann. All rights reserved. |
---|
25 | % The author of this program assumes no responsibility for any errors |
---|
26 | % or omissions. In no event shall he be liable for damages arising out of |
---|
27 | % any use of the software. Redistribution of the unchanged file is allowed. |
---|
28 | % Distribution of changed versions is allowed provided the file is renamed |
---|
29 | % and the source and authorship of the original version is acknowledged in |
---|
30 | % the modified file. |
---|
31 | |
---|
32 | % Please report bugs, suggestions and comments to: |
---|
33 | % Arno Linnemann |
---|
34 | % Control and Automation |
---|
35 | % Department of Electrical and Computer Engineering |
---|
36 | % University of Kassel |
---|
37 | % 34109 Kassel |
---|
38 | % Germany |
---|
39 | % mailto:linnemann@uni-kassel.de |
---|
40 | |
---|
41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
42 | %%%% |
---|
43 | %%%% Initialize |
---|
44 | %%%% |
---|
45 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
46 | |
---|
47 | laprintident = '3.16 (13.9.2004)'; |
---|
48 | vers = version; |
---|
49 | vers = eval(vers(1:3)); |
---|
50 | if vers < 6.1 |
---|
51 | error('Sorry. Matlab 6.1 or above is required.') |
---|
52 | end |
---|
53 | |
---|
54 | hf=131; |
---|
55 | hhf=132; |
---|
56 | |
---|
57 | % no output |
---|
58 | if nargout |
---|
59 | error('No output argument, please.') |
---|
60 | end |
---|
61 | |
---|
62 | inter=get(0,'defaulttextinterpreter'); |
---|
63 | if ~strcmp(inter,'none') |
---|
64 | warning('LaPrint:general',['It is recommended to switch off the '... |
---|
65 | 'text interpreter\nbefore creating a figure to be saved '... |
---|
66 | 'with LaPrint. Use the command\n',... |
---|
67 | ' >> set(0,''defaulttextinterpreter'',''none'').']) |
---|
68 | end |
---|
69 | |
---|
70 | if nargin==0 |
---|
71 | |
---|
72 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
73 | %%%% |
---|
74 | %%%% GUI |
---|
75 | %%%% |
---|
76 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
77 | |
---|
78 | try |
---|
79 | delete(hf) |
---|
80 | end |
---|
81 | try |
---|
82 | delete(hhf) |
---|
83 | end |
---|
84 | |
---|
85 | %--------------------------------- |
---|
86 | % open window |
---|
87 | %--------------------------------- |
---|
88 | |
---|
89 | hf = figure(hf); |
---|
90 | clf reset; |
---|
91 | set(hf,'NumberTitle','off',... |
---|
92 | 'Name','LaPrint (LaTeX Print)',... |
---|
93 | 'Units','points',... |
---|
94 | 'CloseRequestFcn','laprint(''quit'');',... |
---|
95 | 'menubar','none') |
---|
96 | h = uicontrol('Parent',hf,'Units','points'); |
---|
97 | fsize = get(h,'Fontsize'); |
---|
98 | delete(h) |
---|
99 | posf = get(hf,'Position'); |
---|
100 | figheight = 10*fsize; |
---|
101 | figwidth = 32*fsize; |
---|
102 | posf = [ posf(1) posf(2)+posf(4)-figheight figwidth figheight]; |
---|
103 | set(hf,'Position',posf) |
---|
104 | uicontrol('Parent',hf,'style','frame','Units','points',... |
---|
105 | 'Position',[0 0 figwidth figheight]) |
---|
106 | curh = figheight-0*fsize; |
---|
107 | |
---|
108 | LAPRINTHAN=struct('figno',{0},'filename',{0},... |
---|
109 | 'keepfontprops',{0},'asonscreen',{0},'keepticklabels',{0},... |
---|
110 | 'mathticklabels',{0},'head',{0},'extrapicture',{0},... |
---|
111 | 'verbose',{0},'figcopy',{0},'package_epsfig',{0},... |
---|
112 | 'package_graphicx',{0},'color',{0},'createview',{0},... |
---|
113 | 'processview',{0}); |
---|
114 | |
---|
115 | %--------------------------------- |
---|
116 | % figure no. |
---|
117 | %--------------------------------- |
---|
118 | |
---|
119 | loch = 1.7*fsize; |
---|
120 | curh = curh-loch-1.5*fsize; |
---|
121 | h = uicontrol('Parent',hf,... |
---|
122 | 'style','text',... |
---|
123 | 'Units','points',... |
---|
124 | 'Position',[1*fsize curh 18*fsize loch],... |
---|
125 | 'HorizontalAlignment','left',... |
---|
126 | 'string','Number of Figure to be saved:'); |
---|
127 | h = uicontrol('Parent',hf,... |
---|
128 | 'style','edit',... |
---|
129 | 'Units','points',... |
---|
130 | 'Position',[19*fsize curh 12*fsize loch],... |
---|
131 | 'HorizontalAlignment','left',... |
---|
132 | 'BackgroundColor',[1 1 1],... |
---|
133 | 'Callback','laprint(''figno'');'); |
---|
134 | LAPRINTHAN.figno = h; |
---|
135 | |
---|
136 | %--------------------------------- |
---|
137 | % filename |
---|
138 | %--------------------------------- |
---|
139 | |
---|
140 | loch = 1.7*fsize; |
---|
141 | curh = curh-loch-1*fsize; |
---|
142 | h = uicontrol('Parent',hf,... |
---|
143 | 'style','text',... |
---|
144 | 'Units','points',... |
---|
145 | 'Position',[1*fsize curh 18*fsize loch],... |
---|
146 | 'HorizontalAlignment','left',... |
---|
147 | 'string','Basename of Files to be Created:'); |
---|
148 | h = uicontrol('Parent',hf,... |
---|
149 | 'style','edit',... |
---|
150 | 'Units','points',... |
---|
151 | 'Position',[19*fsize curh 12*fsize loch],... |
---|
152 | 'HorizontalAlignment','left',... |
---|
153 | 'BackgroundColor',[1 1 1],... |
---|
154 | 'Callback','laprint(''filename'');'); |
---|
155 | LAPRINTHAN.filename = h; |
---|
156 | |
---|
157 | %--------------------------------- |
---|
158 | % save, quit |
---|
159 | %--------------------------------- |
---|
160 | |
---|
161 | loch = 2*fsize; |
---|
162 | curh = curh-loch-1*fsize; |
---|
163 | h = uicontrol('Parent',hf,... |
---|
164 | 'Style','pushbutton',... |
---|
165 | 'Units','Points',... |
---|
166 | 'Position',[19*fsize curh 5*fsize loch],... |
---|
167 | 'HorizontalAlignment','center',... |
---|
168 | 'String','Go !',... |
---|
169 | 'Callback','laprint(''save'');'); |
---|
170 | h = uicontrol('Parent',hf,... |
---|
171 | 'Style','pushbutton',... |
---|
172 | 'Units','Points',... |
---|
173 | 'Position',[26*fsize curh 5*fsize loch],... |
---|
174 | 'HorizontalAlignment','center',... |
---|
175 | 'String','Quit',... |
---|
176 | 'Callback','laprint(''quit'');'); |
---|
177 | |
---|
178 | %--------------------------------- |
---|
179 | % options uimenue |
---|
180 | %--------------------------------- |
---|
181 | |
---|
182 | hm1 = uimenu('label','Options'); |
---|
183 | |
---|
184 | uimenu(hm1,... |
---|
185 | 'label','Sizes and Scalings ...',... |
---|
186 | 'callback','laprint(''size'')'); |
---|
187 | |
---|
188 | LAPRINTHAN.keepfontprops = uimenu(hm1,... |
---|
189 | 'label','Translate Matlab Font Properties to LaTeX',... |
---|
190 | 'callback','laprint(''keepfontprops'')'); |
---|
191 | |
---|
192 | LAPRINTHAN.asonscreen = uimenu(hm1,... |
---|
193 | 'label','Print Limits and Ticks as on Screen',... |
---|
194 | 'separator','on',... |
---|
195 | 'callback','laprint(''asonscreen'')'); |
---|
196 | |
---|
197 | LAPRINTHAN.keepticklabels = uimenu(hm1,... |
---|
198 | 'label','Keep Tick Labels within eps File',... |
---|
199 | 'callback','laprint(''keepticklabels'')'); |
---|
200 | |
---|
201 | LAPRINTHAN.mathticklabels = uimenu(hm1,... |
---|
202 | 'label','Set Tick Labels in LaTeX Math Mode',... |
---|
203 | 'callback','laprint(''mathticklabels'')'); |
---|
204 | |
---|
205 | LAPRINTHAN.head = uimenu(hm1,... |
---|
206 | 'label','Equip the tex File with a Head',... |
---|
207 | 'separator','on',... |
---|
208 | 'callback','laprint(''head'')'); |
---|
209 | |
---|
210 | uimenu(hm1,... |
---|
211 | 'label','Comment in the Head of the tex File ...',... |
---|
212 | 'callback','laprint(''comment'')'); |
---|
213 | |
---|
214 | uimenu(hm1,... |
---|
215 | 'label','Place a LaTeX Caption in the tex File ...',... |
---|
216 | 'callback','laprint(''caption'')'); |
---|
217 | |
---|
218 | LAPRINTHAN.extrapicture = uimenu(hm1,... |
---|
219 | 'label','Place an Extra Picture in each Axes',... |
---|
220 | 'callback','laprint(''extrapicture'')'); |
---|
221 | |
---|
222 | uimenu(hm1,... |
---|
223 | 'label','Length of psfrag Replacement Strings ...',... |
---|
224 | 'callback','laprint(''nzeros'')'); |
---|
225 | |
---|
226 | LAPRINTHAN.verbose = uimenu(hm1,... |
---|
227 | 'label','Call LaPrint in Verbose Mode',... |
---|
228 | 'separator','on',... |
---|
229 | 'callback','laprint(''verbose'')'); |
---|
230 | |
---|
231 | LAPRINTHAN.figcopy = uimenu(hm1,... |
---|
232 | 'label','Copy Figure and Modify that Copy',... |
---|
233 | 'callback','laprint(''figcopy'')'); |
---|
234 | |
---|
235 | uimenu(hm1,... |
---|
236 | 'label','Matlab Print Command ...',... |
---|
237 | 'separator','on',... |
---|
238 | 'callback','laprint(''printcmd'')'); |
---|
239 | |
---|
240 | h=uimenu(hm1,... |
---|
241 | 'separator','on',... |
---|
242 | 'label','LaTeX Graphics Package'); |
---|
243 | |
---|
244 | LAPRINTHAN.package_graphicx = uimenu(h,... |
---|
245 | 'label','graphicx',... |
---|
246 | 'callback','laprint(''package_graphicx'')'); |
---|
247 | |
---|
248 | LAPRINTHAN.package_epsfig = uimenu(h,... |
---|
249 | 'label','epsfig',... |
---|
250 | 'callback','laprint(''package_epsfig'')'); |
---|
251 | |
---|
252 | LAPRINTHAN.color = uimenu(hm1,... |
---|
253 | 'label','Use LaTeX ''color'' Package',... |
---|
254 | 'callback','laprint(''color'')'); |
---|
255 | |
---|
256 | h = uimenu(hm1,... |
---|
257 | 'label','View File ...',... |
---|
258 | 'separator','on'); |
---|
259 | |
---|
260 | LAPRINTHAN.createview = uimenu(h,... |
---|
261 | 'label','Create a View File',... |
---|
262 | 'callback','laprint(''createview'')'); |
---|
263 | |
---|
264 | uimenu(h,... |
---|
265 | 'label','Name of the View File ...',... |
---|
266 | 'callback','laprint(''viewfilename'')'); |
---|
267 | |
---|
268 | LAPRINTHAN.processview = uimenu(h,... |
---|
269 | 'label','Process the View File',... |
---|
270 | 'separator','on',... |
---|
271 | 'callback','laprint(''processview'')'); |
---|
272 | |
---|
273 | uimenu(h,... |
---|
274 | 'label','Executables for Processing View File...',... |
---|
275 | 'callback','laprint(''cmdsview'')'); |
---|
276 | |
---|
277 | %--------------------------------- |
---|
278 | % Preferences uimenue |
---|
279 | %--------------------------------- |
---|
280 | |
---|
281 | hm3=uimenu('label','Preferences'); |
---|
282 | |
---|
283 | uimenu(hm3,... |
---|
284 | 'label','Get Preferences',... |
---|
285 | 'callback','laprint(''getpref'')') |
---|
286 | |
---|
287 | uimenu(hm3,... |
---|
288 | 'label','Set Preferences to Current Settings',... |
---|
289 | 'callback','laprint(''setpref'')') |
---|
290 | |
---|
291 | uimenu(hm3,... |
---|
292 | 'label','Remove Preferences',... |
---|
293 | 'callback','laprint(''rmpref'')') |
---|
294 | |
---|
295 | uimenu(hm3,... |
---|
296 | 'label','Save Current Settings to a File ...',... |
---|
297 | 'separator','on',... |
---|
298 | 'callback','laprint(''savepref'')') |
---|
299 | |
---|
300 | uimenu(hm3,... |
---|
301 | 'label','Load Settings from a File ...',... |
---|
302 | 'callback','laprint(''loadpref'')') |
---|
303 | |
---|
304 | uimenu(hm3,... |
---|
305 | 'label','Get Factory Defaults',... |
---|
306 | 'separator','on',... |
---|
307 | 'callback','laprint(''factory'')') |
---|
308 | |
---|
309 | |
---|
310 | %--------------------------------- |
---|
311 | % Help uimenue |
---|
312 | %--------------------------------- |
---|
313 | |
---|
314 | hm2=uimenu('label','Help'); |
---|
315 | |
---|
316 | uimenu(hm2,... |
---|
317 | 'label',['LaPrint Online Help ...'],... |
---|
318 | 'callback','laprint(''helpwindow'')'); |
---|
319 | |
---|
320 | uimenu(hm2,... |
---|
321 | 'label','Get the LaPrint Users Guide',... |
---|
322 | 'callback',['web www.uni-kassel.de/fb16/rat/matlab',... |
---|
323 | '/laprint/laprintdoc.ps -browser']) |
---|
324 | |
---|
325 | uimenu(hm2,... |
---|
326 | 'label',['Look for a newer version of LaPrint ' ... |
---|
327 | '(Matlab Central File Exchange)...'],... |
---|
328 | 'callback',['web http://www.mathworks.de/matlabcentral/',... |
---|
329 | 'fileexchange/loadFile.do?objectId=4638',... |
---|
330 | '&objectType=file -browser']) |
---|
331 | |
---|
332 | uimenu(hm2,... |
---|
333 | 'label','Version and Author ...',... |
---|
334 | 'callback','laprint(''whois'')') |
---|
335 | |
---|
336 | %--------------------------------- |
---|
337 | % make hf invisible |
---|
338 | %--------------------------------- |
---|
339 | |
---|
340 | set(hf,'HandleVisibility','callback') |
---|
341 | |
---|
342 | %--------------------------------- |
---|
343 | % get settings |
---|
344 | %--------------------------------- |
---|
345 | |
---|
346 | LAPRINTOPT = prefsettings; |
---|
347 | if isempty(LAPRINTOPT) |
---|
348 | LAPRINTOPT = factorysettings; |
---|
349 | end |
---|
350 | |
---|
351 | %--------------------------------- |
---|
352 | % get figure |
---|
353 | %--------------------------------- |
---|
354 | |
---|
355 | gcfig=gcf; |
---|
356 | if gcfig == hf |
---|
357 | allfigs = findobj('type','figure'); |
---|
358 | allfigs = allfigs(find(allfigs~=hf)); |
---|
359 | if length(allfigs) |
---|
360 | figno = allfigs(1); |
---|
361 | else |
---|
362 | figure(1) |
---|
363 | figno=1; |
---|
364 | end |
---|
365 | else |
---|
366 | figno=gcfig; |
---|
367 | end |
---|
368 | LAPRINTOPT.figno = figno; |
---|
369 | |
---|
370 | %--------------------------------- |
---|
371 | % update |
---|
372 | %--------------------------------- |
---|
373 | |
---|
374 | updategui(LAPRINTHAN,LAPRINTOPT) |
---|
375 | sethf(hf,LAPRINTHAN,LAPRINTOPT) |
---|
376 | figure(hf) |
---|
377 | |
---|
378 | %--------------------------------- |
---|
379 | % done |
---|
380 | %--------------------------------- |
---|
381 | |
---|
382 | return |
---|
383 | |
---|
384 | end % if nargin==0 |
---|
385 | |
---|
386 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
387 | %%%% |
---|
388 | %%%% callback calls ('factory' and 'getprefs' also |
---|
389 | %%%% used from command line) |
---|
390 | %%%% |
---|
391 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
392 | |
---|
393 | if isa(figno,'char') |
---|
394 | |
---|
395 | switch figno |
---|
396 | case 'figno' |
---|
397 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
398 | LAPRINTOPT.figno=eval(get(LAPRINTHAN.figno,'string')); |
---|
399 | figure(LAPRINTOPT.figno) |
---|
400 | figure(hf) |
---|
401 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
402 | case 'filename' |
---|
403 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
404 | LAPRINTOPT.filename=get(LAPRINTHAN.filename,'string'); |
---|
405 | [texfullnameext,texbasenameext,texbasename,texdirname] = ... |
---|
406 | getfilenames(LAPRINTOPT.filename,'tex',0); |
---|
407 | [epsfullnameext,epsbasenameext,epsbasename,epsdirname] = ... |
---|
408 | getfilenames(LAPRINTOPT.filename,'eps',0); |
---|
409 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
410 | case 'save' |
---|
411 | % lapcmd = [ 'laprint(' int2str(LAPRINTOPT.figno) ... |
---|
412 | % ', ''' LAPRINTOPT.filename ''''... |
---|
413 | % ', ''options'', LAPRINTOPT)']; |
---|
414 | lapcmd = 'laprint({})'; |
---|
415 | eval(lapcmd) |
---|
416 | case 'quit' |
---|
417 | delete(hf) |
---|
418 | try |
---|
419 | delete(hhf) |
---|
420 | end |
---|
421 | case 'size' |
---|
422 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
423 | answer = inputdlg({['Please enter the width (in centimeters) ',... |
---|
424 | 'of the graphics in the LaTeX document (The height ',... |
---|
425 | 'will be computed such that the aspect ratio of the ',... |
---|
426 | 'figure on screen is retained.) :'],... |
---|
427 | ['Please enter the factor by which the size of the '... |
---|
428 | 'graphics in the LaTeX document differs from the size of the '... |
---|
429 | 'Postscipt graphics ( Explaination: A factor <1 scales ',... |
---|
430 | 'the picture down. This means that lines become thinner ',... |
---|
431 | 'and fonts become smaller. ) :'],... |
---|
432 | ['Please specify if you want to scale the fonts along with ',... |
---|
433 | 'the graphics (enter ''on'' or ''off'') : '] },... |
---|
434 | 'LaPrint Settings',1,{num2str(LAPRINTOPT.width),... |
---|
435 | num2str(LAPRINTOPT.factor),... |
---|
436 | valueyn(LAPRINTOPT.scalefonts)},'on'); |
---|
437 | if length(answer) |
---|
438 | LAPRINTOPT.width=eval(answer{1}); |
---|
439 | LAPRINTOPT.factor = eval(answer{2}); |
---|
440 | LAPRINTOPT.scalefonts = value01(answer{3}); |
---|
441 | end |
---|
442 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
443 | case 'keepfontprops' |
---|
444 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
445 | if LAPRINTOPT.keepfontprops==1 |
---|
446 | LAPRINTOPT.keepfontprops=0; |
---|
447 | set(LAPRINTHAN.keepfontprops,'check','off') |
---|
448 | else |
---|
449 | LAPRINTOPT.keepfontprops=1; |
---|
450 | set(LAPRINTHAN.keepfontprops,'check','on') |
---|
451 | end |
---|
452 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
453 | case 'asonscreen' |
---|
454 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
455 | if LAPRINTOPT.asonscreen==1 |
---|
456 | LAPRINTOPT.asonscreen=0; |
---|
457 | set(LAPRINTHAN.asonscreen,'check','off') |
---|
458 | else |
---|
459 | LAPRINTOPT.asonscreen=1; |
---|
460 | set(LAPRINTHAN.asonscreen,'check','on') |
---|
461 | end |
---|
462 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
463 | case 'keepticklabels' |
---|
464 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
465 | if LAPRINTOPT.keepticklabels==1 |
---|
466 | LAPRINTOPT.keepticklabels=0; |
---|
467 | set(LAPRINTHAN.keepticklabels,'check','off') |
---|
468 | else |
---|
469 | LAPRINTOPT.keepticklabels=1; |
---|
470 | set(LAPRINTHAN.keepticklabels,'check','on') |
---|
471 | end |
---|
472 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
473 | case 'mathticklabels' |
---|
474 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
475 | if LAPRINTOPT.mathticklabels==1 |
---|
476 | LAPRINTOPT.mathticklabels=0; |
---|
477 | set(LAPRINTHAN.mathticklabels,'check','off') |
---|
478 | else |
---|
479 | LAPRINTOPT.mathticklabels=1; |
---|
480 | set(LAPRINTHAN.mathticklabels,'check','on') |
---|
481 | end |
---|
482 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
483 | case 'head' |
---|
484 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
485 | if LAPRINTOPT.head==1 |
---|
486 | LAPRINTOPT.head=0; |
---|
487 | set(LAPRINTHAN.head,'check','off') |
---|
488 | else |
---|
489 | LAPRINTOPT.head=1; |
---|
490 | set(LAPRINTHAN.head,'check','on') |
---|
491 | end |
---|
492 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
493 | case 'comment' |
---|
494 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
495 | answer = inputdlg({['Please enter a describing comment to '... |
---|
496 | 'be placed into the head of the tex file:']},... |
---|
497 | 'LaPrint Settings',1,{LAPRINTOPT.comment},'on'); |
---|
498 | if length(answer) |
---|
499 | LAPRINTOPT.comment = answer{1}; |
---|
500 | end |
---|
501 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
502 | case 'caption' |
---|
503 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
504 | answer = inputdlg(['If the following text is nonempty, ' ... |
---|
505 | 'then it will be placed as a \caption{} into the tex '... |
---|
506 | 'file along with \label{fig:' LAPRINTOPT.filename '}. '... |
---|
507 | 'Please enter the caption text:'],... |
---|
508 | 'LaPrint Settings',1,{LAPRINTOPT.caption},'on'); |
---|
509 | if length(answer) |
---|
510 | LAPRINTOPT.caption = answer{1}; |
---|
511 | end |
---|
512 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
513 | case 'extrapicture' |
---|
514 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
515 | if LAPRINTOPT.extrapicture==1 |
---|
516 | LAPRINTOPT.extrapicture=0; |
---|
517 | set(LAPRINTHAN.extrapicture,'check','off') |
---|
518 | else |
---|
519 | LAPRINTOPT.extrapicture=1; |
---|
520 | set(LAPRINTHAN.extrapicture,'check','on') |
---|
521 | end |
---|
522 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
523 | case 'nzeros' |
---|
524 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
525 | answer = inputdlg({['Please enter length of the psfrag replacement '... |
---|
526 | 'strings (must be >= 3) :']},... |
---|
527 | 'LaPrint Settings',1,{num2str(LAPRINTOPT.nzeros)},'on'); |
---|
528 | if length(answer) |
---|
529 | LAPRINTOPT.nzeros = max(eval(answer{1}),3); |
---|
530 | end |
---|
531 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
532 | case 'verbose' |
---|
533 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
534 | if LAPRINTOPT.verbose==1 |
---|
535 | LAPRINTOPT.verbose=0; |
---|
536 | set(LAPRINTHAN.verbose,'check','off') |
---|
537 | else |
---|
538 | LAPRINTOPT.verbose=1; |
---|
539 | set(LAPRINTHAN.verbose,'check','on') |
---|
540 | end |
---|
541 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
542 | case 'figcopy' |
---|
543 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
544 | if LAPRINTOPT.figcopy==1 |
---|
545 | LAPRINTOPT.figcopy=0; |
---|
546 | set(LAPRINTHAN.figcopy,'check','off') |
---|
547 | else |
---|
548 | LAPRINTOPT.figcopy=1; |
---|
549 | set(LAPRINTHAN.figcopy,'check','on') |
---|
550 | end |
---|
551 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
552 | case 'printcmd' |
---|
553 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
554 | answer = inputdlg({['Please enter the Matlab command '... |
---|
555 | 'to be used for printing the eps file '... |
---|
556 | '(LaPrint will internally replace <figurenumber> by the '... |
---|
557 | 'number of the figure <filename.eps> by the ' ... |
---|
558 | 'eps-filename and <filename> '... |
---|
559 | 'by the basename of the file, respectively). You can add options '... |
---|
560 | 'here (like ''-loose'') or use a different program '... |
---|
561 | 'for printing (like ''exportfig'') :']},... |
---|
562 | 'LaPrint Settings',1,{LAPRINTOPT.printcmd},'on'); |
---|
563 | if length(answer) |
---|
564 | LAPRINTOPT.printcmd = answer{1}; |
---|
565 | end |
---|
566 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
567 | case 'package_epsfig' |
---|
568 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
569 | LAPRINTOPT.package='epsfig'; |
---|
570 | set(LAPRINTHAN.package_epsfig,'check','on') |
---|
571 | set(LAPRINTHAN.package_graphicx,'check','off') |
---|
572 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
573 | case 'package_graphicx' |
---|
574 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
575 | LAPRINTOPT.package='graphicx'; |
---|
576 | set(LAPRINTHAN.package_epsfig,'check','off') |
---|
577 | set(LAPRINTHAN.package_graphicx,'check','on') |
---|
578 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
579 | case 'color' |
---|
580 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
581 | if LAPRINTOPT.color==1 |
---|
582 | LAPRINTOPT.color=0; |
---|
583 | set(LAPRINTHAN.color,'check','off') |
---|
584 | else |
---|
585 | LAPRINTOPT.color=1; |
---|
586 | set(LAPRINTHAN.color,'check','on') |
---|
587 | end |
---|
588 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
589 | case 'createview' |
---|
590 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
591 | if LAPRINTOPT.createview==1 |
---|
592 | LAPRINTOPT.createview=0; |
---|
593 | LAPRINTOPT.processview=0; |
---|
594 | set(LAPRINTHAN.createview,'check','off') |
---|
595 | set(LAPRINTHAN.processview,'check','off') |
---|
596 | else |
---|
597 | LAPRINTOPT.createview=1; |
---|
598 | set(LAPRINTHAN.createview,'check','on') |
---|
599 | end |
---|
600 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
601 | case 'viewfilename' |
---|
602 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
603 | trydlg=1; |
---|
604 | txt=['Please enter the name of the '... |
---|
605 | 'viewfile (without extension .tex) : ']; |
---|
606 | txt2=''; |
---|
607 | while trydlg |
---|
608 | answer = inputdlg({[txt txt2]},... |
---|
609 | 'LaPrint Settings',1,{LAPRINTOPT.viewfilename},'on'); |
---|
610 | if length(answer) |
---|
611 | if strcmp(answer{1},LAPRINTOPT.filename) |
---|
612 | txt2=['The name must be different from the name of the '... |
---|
613 | 'graphics file):']; |
---|
614 | else |
---|
615 | trydlg=0; |
---|
616 | LAPRINTOPT.viewfilename = answer{1}; |
---|
617 | [viewfullnameext,viewbasenameext,viewbasename,viewdirname] = ... |
---|
618 | getfilenames(LAPRINTOPT.viewfilename,'tex',0); |
---|
619 | end |
---|
620 | else |
---|
621 | trydlg=0; |
---|
622 | end |
---|
623 | end |
---|
624 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
625 | case 'processview' |
---|
626 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
627 | if LAPRINTOPT.processview==1 |
---|
628 | LAPRINTOPT.processview=0; |
---|
629 | set(LAPRINTHAN.processview,'check','off') |
---|
630 | else |
---|
631 | LAPRINTOPT.processview=1; |
---|
632 | set(LAPRINTHAN.processview,'check','on') |
---|
633 | LAPRINTOPT.createview=1; |
---|
634 | set(LAPRINTHAN.createview,'check','on') |
---|
635 | end |
---|
636 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
637 | case 'cmdsview' |
---|
638 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
639 | answer = inputdlg({... |
---|
640 | ['Please enter up to 8 commands to process the view-file. ',... |
---|
641 | 'Leave any of the fields empty, if you have ',... |
---|
642 | 'less than 8 commands. ',... |
---|
643 | 'In any of the following commands, LaPrint internally '... |
---|
644 | 'replaces the tag <viewfile> by the name of the viewfile ',... |
---|
645 | 'and the tag <filename> by the basename specified in the ',... |
---|
646 | 'main LaPrint Window. ',... |
---|
647 | 'At minimum you should enter the commands for the LaTeX ',... |
---|
648 | 'compilation and for the dvi-to-postscript conversion ',... |
---|
649 | 'here. See the LaPrint Online-Help for futher ',... |
---|
650 | 'suggestions. ',... |
---|
651 | 'Please enter the 1st command:'],... |
---|
652 | 'Please enter the 2nd command:',... |
---|
653 | 'Please enter the 3rd command:',... |
---|
654 | 'Please enter the 4th command:',... |
---|
655 | 'Please enter the 5th command:',... |
---|
656 | 'Please enter the 6th command:',... |
---|
657 | 'Please enter the 7th command:',... |
---|
658 | 'Please enter the 8th command:'},... |
---|
659 | 'LaPrint Settings',1,{LAPRINTOPT.cmd1,... |
---|
660 | LAPRINTOPT.cmd2,LAPRINTOPT.cmd3,... |
---|
661 | LAPRINTOPT.cmd4,LAPRINTOPT.cmd5,LAPRINTOPT.cmd6,... |
---|
662 | LAPRINTOPT.cmd7,LAPRINTOPT.cmd8},'on'); |
---|
663 | if length(answer)==8 |
---|
664 | LAPRINTOPT.cmd1=answer{1}; |
---|
665 | LAPRINTOPT.cmd2=answer{2}; |
---|
666 | LAPRINTOPT.cmd3=answer{3}; |
---|
667 | LAPRINTOPT.cmd4=answer{4}; |
---|
668 | LAPRINTOPT.cmd5=answer{5}; |
---|
669 | LAPRINTOPT.cmd6=answer{6}; |
---|
670 | LAPRINTOPT.cmd7=answer{7}; |
---|
671 | LAPRINTOPT.cmd8=answer{8}; |
---|
672 | end |
---|
673 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
674 | case 'getpref' |
---|
675 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
676 | out = prefsettings; |
---|
677 | if ~isempty(out) |
---|
678 | oldfigno = LAPRINTOPT.figno; % keep this! |
---|
679 | LAPRINTOPT = out; |
---|
680 | LAPRINTOPT.figno = oldfigno; |
---|
681 | else |
---|
682 | errordlg('No LaPrint preferences available.') |
---|
683 | end |
---|
684 | updategui(LAPRINTHAN,LAPRINTOPT); |
---|
685 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
686 | case 'setpref' |
---|
687 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
688 | setpref('LaPrint','LAPRINTOPT',LAPRINTOPT); |
---|
689 | case 'rmpref' |
---|
690 | if ispref('LaPrint') |
---|
691 | rmpref('LaPrint'); |
---|
692 | else |
---|
693 | errordlg('Preference does not exist.') |
---|
694 | end |
---|
695 | case 'savepref' |
---|
696 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
697 | txt = 'Save preferences file '; |
---|
698 | [preffile,prefpath]=uiputfile('laprint.mat',txt); |
---|
699 | save([prefpath preffile],'LAPRINTOPT'); |
---|
700 | case 'loadpref' |
---|
701 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
702 | txt = ['Load preferences file '... |
---|
703 | '(must be previously created by LaPrint)']; |
---|
704 | [preffile,prefpath]=uigetfile('laprint.mat',txt); |
---|
705 | if ~isequal(preffile,0) & ~isequal(prefpath,0) |
---|
706 | oldfigno = LAPRINTOPT.figno; % keep this! |
---|
707 | load([prefpath preffile]); % hope file contains correct |
---|
708 | LAPRINTOPT.figno = oldfigno; % LAPRINTOPT |
---|
709 | updategui(LAPRINTHAN,LAPRINTOPT); |
---|
710 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
711 | end |
---|
712 | case 'factory' |
---|
713 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
714 | out = factorysettings; |
---|
715 | if ~isempty(out) |
---|
716 | oldfigno = LAPRINTOPT.figno; % keep this! |
---|
717 | LAPRINTOPT = out; |
---|
718 | LAPRINTOPT.figno = oldfigno; |
---|
719 | else |
---|
720 | errordlg('No LaPrint preferences available.') |
---|
721 | end |
---|
722 | updategui(LAPRINTHAN,LAPRINTOPT); |
---|
723 | sethf(hf,LAPRINTHAN,LAPRINTOPT); |
---|
724 | case 'helpwindow' |
---|
725 | hhf=figure(hhf); |
---|
726 | set(hhf,'Name','LaPrint Online Help',... |
---|
727 | 'Numbertitle','off',... |
---|
728 | 'menubar','none',... |
---|
729 | 'HandleVisibility','callback',... |
---|
730 | 'resize','on',... |
---|
731 | 'ResizeFcn','laprint(''helpwindow'');'); |
---|
732 | hht=uicontrol('Parent',hhf,... |
---|
733 | 'style','listbox',... |
---|
734 | 'units','normalized',... |
---|
735 | 'position',[0.005 0.005 0.9 0.99],... |
---|
736 | 'BackgroundColor','w',... |
---|
737 | 'Fontsize',12,... |
---|
738 | 'foregroundcolor','k',... |
---|
739 | 'FontName','FixedWidth',... |
---|
740 | 'HorizontalAlignment','left'); |
---|
741 | [txt,hhtpos]=textwrap(hht,helptext); |
---|
742 | set(hht,'string',txt) |
---|
743 | set(hht,'position',[0.005 0.005 0.99 0.99]) |
---|
744 | set(hht,'HandleVisibility','callback') |
---|
745 | case 'whois' |
---|
746 | msgbox({['This is LaPrint, Version ' laprintident],... |
---|
747 | '',... |
---|
748 | 'To blame for LaPrint:',... |
---|
749 | 'Arno Linnemann','Control and Automation',... |
---|
750 | 'Department of Electrical and Computer Engineering',... |
---|
751 | 'University of Kassel',... |
---|
752 | '34109 Kassel',... |
---|
753 | 'Germany',... |
---|
754 | 'mailto:linnemann@uni-kassel.de'},... |
---|
755 | 'LaPrint Info') |
---|
756 | otherwise |
---|
757 | error('unknown callback option') |
---|
758 | end |
---|
759 | return |
---|
760 | end % if isa(figno,'char') |
---|
761 | |
---|
762 | % nargin >=1 and ~isa(figno,'char') |
---|
763 | |
---|
764 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
765 | %%%% |
---|
766 | %%%% PART 1 of advanced usage: |
---|
767 | %%%% Check inputs and initialize |
---|
768 | %%%% |
---|
769 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
770 | |
---|
771 | if isa(figno,'cell') % called from GUI (all set) |
---|
772 | |
---|
773 | [LAPRINTHAN,LAPRINTOPT]=gethf(hf); |
---|
774 | figno=LAPRINTOPT.figno; |
---|
775 | filename=LAPRINTOPT.filename; |
---|
776 | |
---|
777 | else % advanced usage |
---|
778 | |
---|
779 | % get settings |
---|
780 | LAPRINTOPT = prefsettings; |
---|
781 | if isempty(LAPRINTOPT) |
---|
782 | LAPRINTOPT = factorysettings; |
---|
783 | end |
---|
784 | |
---|
785 | % modify prefs |
---|
786 | if ~isa(figno,'double') |
---|
787 | figno |
---|
788 | error('This is not a figure handle.') |
---|
789 | end |
---|
790 | if ~any(get(0,'children')==figno) |
---|
791 | figno |
---|
792 | error('This is not a figure handle.') |
---|
793 | end |
---|
794 | LAPRINTOPT.figno = figno; |
---|
795 | |
---|
796 | if nargin>1 |
---|
797 | if ~isa(filename,'char') |
---|
798 | filename |
---|
799 | error('This is not a file name.') |
---|
800 | end |
---|
801 | LAPRINTOPT.filename=filename; |
---|
802 | end |
---|
803 | end |
---|
804 | |
---|
805 | % read and check command line options |
---|
806 | |
---|
807 | try % try old usage (Version 2.03) |
---|
808 | if nargin <=2 |
---|
809 | error('lets take new usage') |
---|
810 | end |
---|
811 | % 2.03 defaults |
---|
812 | width = 12; |
---|
813 | factor = 0.8; |
---|
814 | scalefonts = 1; |
---|
815 | keepfontprops = 0; |
---|
816 | asonscreen = 0; |
---|
817 | keepticklabels = 0; |
---|
818 | mathticklabels = 0; |
---|
819 | head = 1; |
---|
820 | comment = ''; |
---|
821 | caption = ''; |
---|
822 | extrapicture = 1; |
---|
823 | nzeros = 5; |
---|
824 | verbose = 0; |
---|
825 | figcopy = 1; |
---|
826 | printcmd = ['print(''-f<figurenumber>'',' ... |
---|
827 | '''-deps'',''<filename.eps>'')']; |
---|
828 | package = 'epsfig'; |
---|
829 | color = 0; |
---|
830 | createview = 0; |
---|
831 | viewfilename = [filename '_']; |
---|
832 | processview = 0; |
---|
833 | cmd1 = ''; |
---|
834 | cmd2 = ''; |
---|
835 | cmd3 = ''; |
---|
836 | cmd4 = ''; |
---|
837 | cmd5 = ''; |
---|
838 | cmd6 = ''; |
---|
839 | cmd7 = ''; |
---|
840 | cmd8 = ''; |
---|
841 | for i=1:nargin-2 |
---|
842 | if ~isa(varargin{i},'char') |
---|
843 | error('Options must be character arrays.') |
---|
844 | end |
---|
845 | oriopt=varargin{i}(:)'; |
---|
846 | opt=[ lower(strrep(oriopt,' ','')) ' ' ]; |
---|
847 | if strcmp(opt(1:7),'verbose') |
---|
848 | verbose=1; |
---|
849 | elseif strcmp(opt(1:10),'asonscreen') |
---|
850 | asonscreen=1; |
---|
851 | elseif strcmp(opt(1:14),'keepticklabels') |
---|
852 | keepticklabels=1; |
---|
853 | elseif strcmp(opt(1:14),'mathticklabels') |
---|
854 | mathticklabels=1; |
---|
855 | elseif strcmp(opt(1:13),'keepfontprops') |
---|
856 | keepfontprops=1; |
---|
857 | elseif strcmp(opt(1:14),'noextrapicture') |
---|
858 | extrapicture=0; |
---|
859 | elseif strcmp(opt(1:14),'noextrapicture') |
---|
860 | extrapicture=0; |
---|
861 | elseif strcmp(opt(1:5),'loose') |
---|
862 | printcmd = ['print(''-f<figurenumber>'',' ... |
---|
863 | '''-deps'',''-loose'',''<filename.eps>'')']; |
---|
864 | elseif strcmp(opt(1:9),'nofigcopy') |
---|
865 | figcopy=0; |
---|
866 | elseif strcmp(opt(1:12),'noscalefonts') |
---|
867 | scalefonts=0; |
---|
868 | elseif strcmp(opt(1:6),'nohead') |
---|
869 | head=0; |
---|
870 | elseif strcmp(opt(1:7),'caption') |
---|
871 | eqpos=findstr(oriopt,'='); |
---|
872 | if isempty(eqpos) |
---|
873 | caption='Matlab Figure'; |
---|
874 | else |
---|
875 | caption=oriopt(eqpos+1:length(oriopt)); |
---|
876 | end |
---|
877 | elseif strcmp(opt(1:8),'comment=') |
---|
878 | eqpos=findstr(oriopt,'='); |
---|
879 | comment=oriopt(eqpos(1)+1:length(oriopt)); |
---|
880 | elseif strcmp(opt(1:9),'viewfile=') |
---|
881 | createview=1; |
---|
882 | eqpos=findstr(oriopt,'='); |
---|
883 | viewfilename=oriopt(eqpos(1)+1:length(oriopt)); |
---|
884 | elseif strcmp(opt(1:6),'width=') |
---|
885 | eval([ opt ';' ]); |
---|
886 | elseif strcmp(opt(1:7),'factor=') |
---|
887 | eval([ opt ';' ]); |
---|
888 | else |
---|
889 | error([ 'Option ' varargin{i} ' not recognized.']) |
---|
890 | end |
---|
891 | end |
---|
892 | |
---|
893 | warning('LaPrint:general',['You are using the old LaPrint '... |
---|
894 | 'syntax. This syntax might not be supported in '... |
---|
895 | 'future releases of LaPrint.']) |
---|
896 | |
---|
897 | catch % old usage doesn't work, take new one |
---|
898 | |
---|
899 | % restore preferences / factory defaults |
---|
900 | width = LAPRINTOPT.width; |
---|
901 | factor = LAPRINTOPT.factor; |
---|
902 | scalefonts = LAPRINTOPT.scalefonts; |
---|
903 | keepfontprops = LAPRINTOPT.keepfontprops; |
---|
904 | asonscreen = LAPRINTOPT.asonscreen; |
---|
905 | keepticklabels = LAPRINTOPT.keepticklabels; |
---|
906 | mathticklabels = LAPRINTOPT.mathticklabels; |
---|
907 | head = LAPRINTOPT.head; |
---|
908 | comment = LAPRINTOPT.comment; |
---|
909 | caption = LAPRINTOPT.caption; |
---|
910 | extrapicture = LAPRINTOPT.extrapicture; |
---|
911 | nzeros = LAPRINTOPT.nzeros; |
---|
912 | verbose = LAPRINTOPT.verbose; |
---|
913 | figcopy = LAPRINTOPT.figcopy; |
---|
914 | printcmd = LAPRINTOPT.printcmd; |
---|
915 | package = LAPRINTOPT.package; |
---|
916 | color = LAPRINTOPT.color; |
---|
917 | createview = LAPRINTOPT.createview; |
---|
918 | viewfilename = LAPRINTOPT.viewfilename; |
---|
919 | processview = LAPRINTOPT.processview; |
---|
920 | cmd1 = LAPRINTOPT.cmd1; |
---|
921 | cmd2 = LAPRINTOPT.cmd2; |
---|
922 | cmd3 = LAPRINTOPT.cmd3; |
---|
923 | cmd4 = LAPRINTOPT.cmd4; |
---|
924 | cmd5 = LAPRINTOPT.cmd5; |
---|
925 | cmd6 = LAPRINTOPT.cmd6; |
---|
926 | cmd7 = LAPRINTOPT.cmd7; |
---|
927 | cmd8 = LAPRINTOPT.cmd8; |
---|
928 | |
---|
929 | if nargin > 2 |
---|
930 | if rem(nargin,2) |
---|
931 | error('Option names/values must appear in pairs.') |
---|
932 | end |
---|
933 | for i=1:2:nargin-2 |
---|
934 | if ~isa(varargin{i},'char') |
---|
935 | error('Option name must be a character array.') |
---|
936 | end |
---|
937 | opt = lower(strrep(varargin{i}(:)',' ','')); |
---|
938 | val = varargin{i+1}(:)'; |
---|
939 | switch opt |
---|
940 | case 'options' |
---|
941 | if isa(val,'char') |
---|
942 | if strcmp(val,'factory') |
---|
943 | val = factorysettings; |
---|
944 | else |
---|
945 | load(val) |
---|
946 | val = LAPRINTOPT; |
---|
947 | end |
---|
948 | end |
---|
949 | if ~isa(val,'struct') |
---|
950 | error('Value of options must be a structure array.') |
---|
951 | end |
---|
952 | % no error checking here! |
---|
953 | width = val.width; |
---|
954 | factor = val.factor; |
---|
955 | scalefonts = val.scalefonts; |
---|
956 | keepfontprops = val.keepfontprops; |
---|
957 | asonscreen = val.asonscreen; |
---|
958 | keepticklabels = val.keepticklabels; |
---|
959 | mathticklabels = val.mathticklabels; |
---|
960 | head = val.head; |
---|
961 | comment = val.comment; |
---|
962 | caption = val.caption; |
---|
963 | extrapicture = val.extrapicture; |
---|
964 | nzeros = val.nzeros; |
---|
965 | verbose = val.verbose; |
---|
966 | figcopy = val.figcopy; |
---|
967 | printcmd = val.printcmd; |
---|
968 | package = val.package; |
---|
969 | color = val.color; |
---|
970 | createview = val.createview; |
---|
971 | viewfilename = val.viewfilename; |
---|
972 | processview = val.processview; |
---|
973 | cmd1 = val.cmd1; |
---|
974 | cmd2 = val.cmd2; |
---|
975 | cmd3 = val.cmd3; |
---|
976 | cmd4 = val.cmd4; |
---|
977 | cmd5 = val.cmd5; |
---|
978 | cmd6 = val.cmd6; |
---|
979 | cmd7 = val.cmd7; |
---|
980 | cmd8 = val.cmd8; |
---|
981 | case 'width' |
---|
982 | if ~isa(val,'double') |
---|
983 | error('Value of width must be a double.') |
---|
984 | end |
---|
985 | width = val; |
---|
986 | case 'factor' |
---|
987 | if ~isa(val,'double') |
---|
988 | error('Value of factor must be a double.') |
---|
989 | end |
---|
990 | factor=val; |
---|
991 | case 'scalefonts' |
---|
992 | scalefonts = value01(val,opt); |
---|
993 | case 'keepfontprops' |
---|
994 | keepfontprops = value01(val,opt); |
---|
995 | case 'asonscreen' |
---|
996 | asonscreen = value01(val,opt); |
---|
997 | case 'keepticklabels' |
---|
998 | keepticklabels = value01(val,opt); |
---|
999 | case 'mathticklabels' |
---|
1000 | mathticklabels = value01(val,opt) ; |
---|
1001 | case 'head' |
---|
1002 | head = value01(val,opt); |
---|
1003 | case 'comment' |
---|
1004 | if ~isa(val,'char') |
---|
1005 | error('Value of comment must be a character array.') |
---|
1006 | end |
---|
1007 | comment = val; |
---|
1008 | case 'caption' |
---|
1009 | if ~isa(val,'char') |
---|
1010 | error('Value of caption must be a character array.') |
---|
1011 | end |
---|
1012 | caption = val; |
---|
1013 | case 'extrapicture' |
---|
1014 | extrapicture = value01(val,opt); |
---|
1015 | case 'nzeros' |
---|
1016 | if ~isa(val,'double') |
---|
1017 | error('Value of nzeros must be a double.') |
---|
1018 | end |
---|
1019 | nzeros = val; |
---|
1020 | case 'verbose' |
---|
1021 | verbose = value01(val,opt); |
---|
1022 | case 'figcopy' |
---|
1023 | figcopy = value01(val,opt); |
---|
1024 | case 'printcmd' |
---|
1025 | if ~isa(val,'char') |
---|
1026 | error('Value of printcmd must be a character array.') |
---|
1027 | end |
---|
1028 | printcmd = val; |
---|
1029 | case 'package' |
---|
1030 | if ~isa(val,'char') |
---|
1031 | error('Value of package must be a character array.') |
---|
1032 | end |
---|
1033 | val = lower(strrep(val,' ','')); |
---|
1034 | switch val |
---|
1035 | case {'graphicx','epsfig'} |
---|
1036 | % fine |
---|
1037 | otherwise |
---|
1038 | error('Value of package is unknown.') |
---|
1039 | end |
---|
1040 | package = val; |
---|
1041 | case 'color' |
---|
1042 | color = value01(val,opt); |
---|
1043 | case 'createview' |
---|
1044 | createview = value01(val,opt); |
---|
1045 | case 'viewfilename' |
---|
1046 | if ~isa(val,'char') |
---|
1047 | error('Value of viewfilename must be a character array.') |
---|
1048 | end |
---|
1049 | viewfilename = val; |
---|
1050 | case 'processview' |
---|
1051 | processview = value01(val,opt); |
---|
1052 | case 'cmd1' |
---|
1053 | if ~isa(val,'char') |
---|
1054 | error('Value of cmd1 must be a character array.') |
---|
1055 | end |
---|
1056 | cmd1 = val; |
---|
1057 | case 'cmd2' |
---|
1058 | if ~isa(val,'char') |
---|
1059 | error('Value of cmd2 must be a character array.') |
---|
1060 | end |
---|
1061 | cmd2 = val; |
---|
1062 | case 'cmd3' |
---|
1063 | if ~isa(val,'char') |
---|
1064 | error('Value of cmd3 must be a character array.') |
---|
1065 | end |
---|
1066 | cmd3 = val; |
---|
1067 | case 'cmd4' |
---|
1068 | if ~isa(val,'char') |
---|
1069 | error('Value of cmd4 must be a character array.') |
---|
1070 | end |
---|
1071 | cmd4 = val; |
---|
1072 | case 'cmd5' |
---|
1073 | if ~isa(val,'char') |
---|
1074 | error('Value of cmd5 must be a character array.') |
---|
1075 | end |
---|
1076 | cmd5 = val; |
---|
1077 | case 'cmd6' |
---|
1078 | if ~isa(val,'char') |
---|
1079 | error('Value of cmd6 must be a character array.') |
---|
1080 | end |
---|
1081 | cmd6 = val; |
---|
1082 | case 'cmd7' |
---|
1083 | if ~isa(val,'char') |
---|
1084 | error('Value of cmd7 must be a character array.') |
---|
1085 | end |
---|
1086 | cmd7 = val; |
---|
1087 | case 'cmd8' |
---|
1088 | if ~isa(val,'char') |
---|
1089 | error('Value of cmd8 must be a character array.') |
---|
1090 | end |
---|
1091 | cmd8 = val; |
---|
1092 | otherwise |
---|
1093 | error(['Option ''' opt ''' unknown']) |
---|
1094 | end % switch opt |
---|
1095 | end % for i=3:2:nargin |
---|
1096 | end % if nargin > 2 |
---|
1097 | end % try / catch |
---|
1098 | |
---|
1099 | if verbose, |
---|
1100 | disp([ 'This is LaPrint, version ' laprintident '.' ]); |
---|
1101 | end |
---|
1102 | |
---|
1103 | comment = strrep(strrep(comment,'\','\\'),'%','%%'); |
---|
1104 | caption = strrep(strrep(caption,'\','\\'),'%','%%'); |
---|
1105 | iscaption = logical(length(caption)); |
---|
1106 | |
---|
1107 | if nzeros < 3 |
---|
1108 | warning('LaPrint:general',... |
---|
1109 | 'The value of nzero should be >=3. I will use nzeros=3.') |
---|
1110 | nzeros=3; |
---|
1111 | end |
---|
1112 | |
---|
1113 | if processview |
---|
1114 | createview=1; |
---|
1115 | end |
---|
1116 | |
---|
1117 | if mathticklabels |
---|
1118 | Do='$'; |
---|
1119 | else |
---|
1120 | Do=''; |
---|
1121 | end |
---|
1122 | |
---|
1123 | % eps- and tex- filenames |
---|
1124 | [epsfullnameext,epsbasenameext,epsbasename,epsdirname] = ... |
---|
1125 | getfilenames(filename,'eps',verbose); |
---|
1126 | [texfullnameext,texbasenameext,texbasename,texdirname] = ... |
---|
1127 | getfilenames(filename,'tex',verbose); |
---|
1128 | if ~strcmp(texdirname,epsdirname) |
---|
1129 | warning('LaPrint:files',['The eps-file and tex-file are '... |
---|
1130 | 'placed in different directories.']); |
---|
1131 | end |
---|
1132 | |
---|
1133 | if createview | processview |
---|
1134 | [viewfullnameext,viewbasenameext,viewbasename,viewdirname] = ... |
---|
1135 | getfilenames(viewfilename,'tex',verbose); |
---|
1136 | if strcmp(texfullnameext,viewfullnameext) |
---|
1137 | viewfilename=[ viewfilename '_']; |
---|
1138 | warning('LaPrint:files',['The tex- and view-file coincide. '... |
---|
1139 | 'I''ll use '' ' viewfilename ' ''. Hope that''s ok.' ]) |
---|
1140 | end |
---|
1141 | [viewfullnameext,viewbasenameext,viewbasename,viewdirname]= ... |
---|
1142 | getfilenames(viewfilename,'tex',verbose); |
---|
1143 | if ~strcmp(texdirname,viewdirname) |
---|
1144 | warning('LaPrint:files',['The eps-file and view-file are '... |
---|
1145 | 'placed in different directories.' ]) |
---|
1146 | end |
---|
1147 | end |
---|
1148 | |
---|
1149 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
1150 | %%%% |
---|
1151 | %%%% PART 2 of advanced usage: |
---|
1152 | %%%% Create new figure, insert tags, and bookkeep original text |
---|
1153 | %%%% |
---|
1154 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
1155 | |
---|
1156 | % show all |
---|
1157 | shh = get(0,'ShowHiddenHandles'); |
---|
1158 | set(0,'ShowHiddenHandles','on'); |
---|
1159 | |
---|
1160 | % preparing check for copyobj bug |
---|
1161 | figno_ori = figno; |
---|
1162 | number_children_ori = length(get(figno_ori,'children')); |
---|
1163 | |
---|
1164 | % open new figure (if required) and set properties |
---|
1165 | if figcopy |
---|
1166 | figno = copyobj(figno,0); |
---|
1167 | set(figno,'visible','off') |
---|
1168 | set(figno,'Numbertitle','off') |
---|
1169 | set(figno,'MenuBar','none') |
---|
1170 | pause(0.5) |
---|
1171 | end |
---|
1172 | |
---|
1173 | if asonscreen |
---|
1174 | xlimmodeauto = findobj(figno,'xlimmode','auto'); |
---|
1175 | xtickmodeauto = findobj(figno,'xtickmode','auto'); |
---|
1176 | xticklabelmodeauto = findobj(figno,'xticklabelmode','auto'); |
---|
1177 | ylimmodeauto = findobj(figno,'ylimmode','auto'); |
---|
1178 | ytickmodeauto = findobj(figno,'ytickmode','auto'); |
---|
1179 | yticklabelmodeauto = findobj(figno,'yticklabelmode','auto'); |
---|
1180 | zlimmodeauto = findobj(figno,'zlimmode','auto'); |
---|
1181 | ztickmodeauto = findobj(figno,'ztickmode','auto'); |
---|
1182 | zticklabelmodeauto = findobj(figno,'zticklabelmode','auto'); |
---|
1183 | set(xlimmodeauto,'xlimmode','manual') |
---|
1184 | set(xtickmodeauto,'xtickmode','manual') |
---|
1185 | set(xticklabelmodeauto,'xticklabelmode','manual') |
---|
1186 | set(ylimmodeauto,'ylimmode','manual') |
---|
1187 | set(ytickmodeauto,'ytickmode','manual') |
---|
1188 | set(yticklabelmodeauto,'yticklabelmode','manual') |
---|
1189 | set(zlimmodeauto,'ylimmode','manual') |
---|
1190 | set(ztickmodeauto,'ytickmode','manual') |
---|
1191 | set(zticklabelmodeauto,'yticklabelmode','manual') |
---|
1192 | end |
---|
1193 | set(figno,'paperunits','centimeters'); |
---|
1194 | set(figno,'units','centimeters'); |
---|
1195 | orip = get(figno,'Position'); |
---|
1196 | |
---|
1197 | % determine width and height |
---|
1198 | if factor <= 0 |
---|
1199 | factor = width/orip(3); |
---|
1200 | end |
---|
1201 | latexwidth = width; |
---|
1202 | epswidth = latexwidth/factor; |
---|
1203 | epsheight = epswidth*orip(4)/orip(3); |
---|
1204 | |
---|
1205 | set(figno,'PaperPosition',[0 0 epswidth epsheight ]) |
---|
1206 | set(figno,'papersize',[epswidth epsheight]) |
---|
1207 | set(figno,'Position',[orip(1)+0.5 orip(2)-0.5 epswidth epsheight ]) |
---|
1208 | set(figno,'Name',[ 'To be printed; size: ' num2str(factor,3) ... |
---|
1209 | ' x (' num2str(epswidth,3) 'cm x ' num2str(epsheight,3) 'cm)' ]) |
---|
1210 | |
---|
1211 | % some warnings |
---|
1212 | if verbose |
---|
1213 | if (epswidth<13) | (epsheight<13*0.75) |
---|
1214 | warning('LaPrint:size',['The size of the eps-figure is quite '... |
---|
1215 | 'small. The text objects might not be properly set. '... |
---|
1216 | 'Reducing ''factor'' might help.']) |
---|
1217 | end |
---|
1218 | if latexwidth/epswidth<0.5 |
---|
1219 | warning('LaPrint:size',['The size of the eps-figure is large ' ... |
---|
1220 | 'compared to the latex figure. '... |
---|
1221 | 'The text size might be too small. '... |
---|
1222 | 'Increasing ''factor'' might help.']) |
---|
1223 | end |
---|
1224 | if (orip(3)-epswidth)/orip(3) > 0.1 |
---|
1225 | warning('LaPrint:size',['The size of the eps-figure is much '... |
---|
1226 | 'smaller than the original '... |
---|
1227 | 'figure on screen. Matlab might save different ticks '... |
---|
1228 | 'and ticklabels than in the original figure. '... |
---|
1229 | 'See option ''asonscreen''.']) |
---|
1230 | end |
---|
1231 | disp('Strike any key to continue.'); |
---|
1232 | pause |
---|
1233 | end |
---|
1234 | |
---|
1235 | % |
---|
1236 | % TEXT OBJECTS: modify new figure |
---|
1237 | % |
---|
1238 | |
---|
1239 | % find all text objects |
---|
1240 | hxl = get(findobj(figno,'type','axes'),'xlabel'); |
---|
1241 | hyl = get(findobj(figno,'type','axes'),'ylabel'); |
---|
1242 | hzl = get(findobj(figno,'type','axes'),'zlabel'); |
---|
1243 | hti = get(findobj(figno,'type','axes'),'title'); |
---|
1244 | hte = findobj(figno,'type','text'); |
---|
1245 | |
---|
1246 | % array of all text handles |
---|
1247 | htext = unique([ celltoarray(hxl) celltoarray(hyl) celltoarray(hzl) ... |
---|
1248 | celltoarray(hti) celltoarray(hte)]); |
---|
1249 | nt = length(htext); |
---|
1250 | |
---|
1251 | % set(celltoarray(hxl),'VerticalAlignment','top'); |
---|
1252 | % get alignments |
---|
1253 | hora = get(htext,'HorizontalAlignment'); |
---|
1254 | vera = get(htext,'VerticalAlignment'); |
---|
1255 | align = cell(nt,1); |
---|
1256 | for i=1:nt |
---|
1257 | align{i} = hora{i}(1); |
---|
1258 | switch vera{i} |
---|
1259 | case 'top' |
---|
1260 | align{i} = [align{i} 't']; |
---|
1261 | case 'cap' |
---|
1262 | % if ~isempty(get(htext(i),'string')) |
---|
1263 | % warning('LaPrint:text',['Using vertical ' ... |
---|
1264 | % 'alignment ''top'' instead of ''cap''.']) |
---|
1265 | % end |
---|
1266 | align{i} = [align{i} 't']; |
---|
1267 | case 'middle' |
---|
1268 | align{i} = [align{i} 'c']; |
---|
1269 | case 'baseline' |
---|
1270 | align{i} = [align{i} 'B']; |
---|
1271 | case 'bottom' |
---|
1272 | align{i} = [align{i} 'b']; |
---|
1273 | otherwise |
---|
1274 | warning('LaPrint:text',['Vertical alignment ' vera{i} ... |
---|
1275 | ' unknown. Using ''c''.']) |
---|
1276 | align{i} = [align{i} 'c']; |
---|
1277 | end |
---|
1278 | end |
---|
1279 | |
---|
1280 | % generate new strings and store old ones |
---|
1281 | oldstr = get(htext,'string'); |
---|
1282 | newstr = cell(nt,1); |
---|
1283 | basestr = ['s' char(48*ones(1,nzeros-1))]; |
---|
1284 | extrastr = 0; |
---|
1285 | for i=1:nt |
---|
1286 | osi = oldstr{i}; |
---|
1287 | oldstr{i} = ['\setlength{\tabcolsep}{0pt}\begin{tabular}{' ... |
---|
1288 | align{i}(1) '}']; |
---|
1289 | isnonempty_osi = 0; |
---|
1290 | if strcmp(get(get(htext(i),'parent'),'tag'),'legend') |
---|
1291 | newstr1 = []; |
---|
1292 | if isa(osi,'cell') |
---|
1293 | % Legend/cell : Don't use tabular, employ extra strings |
---|
1294 | nlines = length(osi); |
---|
1295 | if nlines > 1 |
---|
1296 | newstr{nt+extrastr+nlines-1} = []; |
---|
1297 | oldstr{nt+extrastr+nlines-1} = []; |
---|
1298 | htext((nt+extrastr+1):(nt+extrastr+nlines-1))=htext(i); |
---|
1299 | for line=1:nlines-1 |
---|
1300 | oldstr{nt+extrastr+line} = ... |
---|
1301 | strrep(strrep(osi{line},'\','\\'),'%','%%'); |
---|
1302 | newstr{nt+extrastr+line} = ... |
---|
1303 | overwritetail(basestr,nt+extrastr+line); |
---|
1304 | newstr1 = [newstr1; overwritetail(basestr,nt+extrastr+line)]; |
---|
1305 | end |
---|
1306 | extrastr = extrastr+nlines-1; |
---|
1307 | end |
---|
1308 | if nlines > 0 |
---|
1309 | oldstr{i} = strrep(strrep(osi{nlines},'\','\\'),'%','%%'); |
---|
1310 | newstr{i} = overwritetail(basestr,i); |
---|
1311 | newstr1 = [newstr1; overwritetail(basestr,i)]; |
---|
1312 | end |
---|
1313 | % replace strings in figure |
---|
1314 | set(htext(i),'string',cellstr(newstr1)); |
---|
1315 | else |
---|
1316 | % Legend/matrix : Don't use tabular, employ extra strings |
---|
1317 | nlines=size(osi,1); |
---|
1318 | if nlines > 1 |
---|
1319 | newstr{nt+extrastr+nlines-1} = []; |
---|
1320 | oldstr{nt+extrastr+nlines-1} = []; |
---|
1321 | htext((nt+extrastr+1):(nt+extrastr+nlines-1))=htext(i); |
---|
1322 | for line=1:nlines-1 |
---|
1323 | oldstr{nt+extrastr+line} = ... |
---|
1324 | strrep(strrep(osi(line,:),'\','\\'),'%','%%'); |
---|
1325 | newstr{nt+extrastr+line} = ... |
---|
1326 | overwritetail(basestr,nt+extrastr+line); |
---|
1327 | newstr1 = [newstr1; overwritetail(basestr,nt+extrastr+line)]; |
---|
1328 | end |
---|
1329 | extrastr = extrastr+nlines-1; |
---|
1330 | end |
---|
1331 | if nlines > 0 |
---|
1332 | oldstr{i} = strrep(strrep(osi(nlines,:),'\','\\'),'%','%%'); |
---|
1333 | newstr{i} = overwritetail(basestr,i); |
---|
1334 | newstr1 = [newstr1; overwritetail(basestr,i)]; |
---|
1335 | end |
---|
1336 | % replace strings in figure |
---|
1337 | set(htext(i),'string',newstr1); |
---|
1338 | end |
---|
1339 | else |
---|
1340 | % text, not a legend |
---|
1341 | if isa(osi,'cell') |
---|
1342 | nlines = length(osi); |
---|
1343 | if nlines > 1 |
---|
1344 | for line=1:nlines-1 |
---|
1345 | oldstr{i}=[oldstr{i} osi{line} '\\']; |
---|
1346 | isnonempty_osi = isnonempty_osi+length(osi{line}); |
---|
1347 | end |
---|
1348 | if align{i}(2) == 'B' |
---|
1349 | warning('LaPrint:text',['Vertical Alignment ''baseline'' '... |
---|
1350 | 'in text with multiple rows might not match.']) |
---|
1351 | align{i}(2) = 't'; |
---|
1352 | end |
---|
1353 | end |
---|
1354 | if nlines > 0 |
---|
1355 | oldstr{i} = [oldstr{i} osi{nlines} '\end{tabular}']; |
---|
1356 | isnonempty_osi = isnonempty_osi+length(osi{nlines}); |
---|
1357 | end |
---|
1358 | oldstr{i} = strrep(strrep(oldstr{i},'\','\\'),'%','%%'); |
---|
1359 | if isnonempty_osi |
---|
1360 | newstr{i} = overwritetail(basestr,i); |
---|
1361 | else |
---|
1362 | newstr{i} = ''; |
---|
1363 | end |
---|
1364 | % replace strings in figure |
---|
1365 | set(htext(i),'string',newstr{i}); |
---|
1366 | else |
---|
1367 | nlines=size(osi,1); |
---|
1368 | if nlines > 1 |
---|
1369 | for line=1:nlines-1 |
---|
1370 | oldstr{i} = [oldstr{i} osi(line,:) '\\']; |
---|
1371 | isnonempty_osi = isnonempty_osi+length(osi(line,:)); |
---|
1372 | end |
---|
1373 | if align{i}(2) == 'B' |
---|
1374 | warning('LaPrint:text',['Vertical Alignment ''baseline'' '... |
---|
1375 | 'in text with multiple rows might not match.']) |
---|
1376 | align{i}(2) = 't'; |
---|
1377 | end |
---|
1378 | end |
---|
1379 | if nlines > 0 |
---|
1380 | oldstr{i} = [oldstr{i} osi(nlines,:) '\end{tabular}']; |
---|
1381 | isnonempty_osi = isnonempty_osi+length(osi(nlines,:)); |
---|
1382 | end |
---|
1383 | oldstr{i} = strrep(strrep(oldstr{i},'\','\\'),'%','%%'); |
---|
1384 | |
---|
1385 | if isnonempty_osi |
---|
1386 | newstr{i} = overwritetail(basestr,i); |
---|
1387 | else |
---|
1388 | newstr{i} = ''; |
---|
1389 | end |
---|
1390 | % replace string in figure |
---|
1391 | set(htext(i),'string',newstr{i}); |
---|
1392 | end % isa cell |
---|
1393 | end % isa legend |
---|
1394 | end % for |
---|
1395 | |
---|
1396 | ntp = nt+extrastr; |
---|
1397 | |
---|
1398 | % Alignment of Legends |
---|
1399 | if extrastr > 0 |
---|
1400 | align{ntp} = []; |
---|
1401 | [align{nt+1:ntp}] = deal('lc'); |
---|
1402 | end |
---|
1403 | |
---|
1404 | % get font properties and create commands |
---|
1405 | if ntp > 0 |
---|
1406 | [fontsizecmd{1:ntp}] = deal(''); |
---|
1407 | [fontanglecmd{1:ntp}] = deal(''); |
---|
1408 | [fontweightcmd{1:ntp}] = deal(''); |
---|
1409 | [colorcmd{1:ntp}] = deal(''); |
---|
1410 | [colorclose{1:ntp}] = deal(''); |
---|
1411 | end |
---|
1412 | selectfontcmd = ''; |
---|
1413 | |
---|
1414 | if keepfontprops |
---|
1415 | |
---|
1416 | % fontsize |
---|
1417 | set(htext,'fontunits','points'); |
---|
1418 | fontsize = get(htext,'fontsize'); |
---|
1419 | for i=1:ntp |
---|
1420 | fontsizecmd{i} = [ '\\fontsize{' num2str(fontsize{i}) '}{' ... |
---|
1421 | num2str(fontsize{i}*1.5) '}' ]; |
---|
1422 | end |
---|
1423 | |
---|
1424 | % fontweight |
---|
1425 | fontweight = get(htext,'fontweight'); |
---|
1426 | for i=1:ntp |
---|
1427 | switch fontweight{i} |
---|
1428 | case 'light' |
---|
1429 | fontweightcmd{i} = [ '\\fontseries{l}\\mathversion{normal}' ]; |
---|
1430 | case 'normal' |
---|
1431 | fontweightcmd{i} = [ '\\fontseries{m}\\mathversion{normal}' ]; |
---|
1432 | case 'demi' |
---|
1433 | fontweightcmd{i} = [ '\\fontseries{sb}\\mathversion{bold}' ]; |
---|
1434 | case 'bold' |
---|
1435 | fontweightcmd{i} = [ '\\fontseries{bx}\\mathversion{bold}' ]; |
---|
1436 | otherwise |
---|
1437 | warning('LaPrint:text',['Unknown fontweight: ' fontweight{i} ]) |
---|
1438 | fontweightcmd{i} = [ '\\fontseries{m}\\mathversion{normal}' ]; |
---|
1439 | end |
---|
1440 | end |
---|
1441 | |
---|
1442 | % fontangle |
---|
1443 | fontangle = get(htext,'fontangle'); |
---|
1444 | for i=1:ntp |
---|
1445 | switch fontangle{i} |
---|
1446 | case 'normal' |
---|
1447 | fontanglecmd{i} = [ '\\fontshape{n}' ]; |
---|
1448 | case 'italic' |
---|
1449 | fontanglecmd{i} = [ '\\fontshape{it}' ]; |
---|
1450 | case 'oblique' |
---|
1451 | fontanglecmd{i} = [ '\\fontshape{it}' ]; |
---|
1452 | otherwise |
---|
1453 | warning('LaPrint:text',['unknown fontangle: ' fontangle{i} ]) |
---|
1454 | fontanglecmd{i} = [ '\\fontshape{n}' ]; |
---|
1455 | end |
---|
1456 | end |
---|
1457 | selectfontcmd = '\\selectfont '; |
---|
1458 | |
---|
1459 | end |
---|
1460 | |
---|
1461 | if color & ntp>0 |
---|
1462 | col = get(htext,'color'); |
---|
1463 | bgcol = get(htext,'BackgroundColor'); |
---|
1464 | ecol = get(htext,'EdgeColor'); |
---|
1465 | for i=1:ntp |
---|
1466 | col0 = get(get(htext(i),'parent'),'color'); |
---|
1467 | [coli,isc] = char2rgb(col{i},[0 0 0]); |
---|
1468 | [bgcoli,isbgc] = char2rgb(bgcol{i},col0); |
---|
1469 | [ecoli,isec] = char2rgb(ecol{i},col0); |
---|
1470 | if isbgc | isec |
---|
1471 | set(htext(i),'BackgroundColor','none') |
---|
1472 | set(htext(i),'EdgeColor','none') |
---|
1473 | colorcmd{i} = ['\\setlength{\\fboxsep}{2pt}\\fcolorbox[rgb]{' ... |
---|
1474 | num2str(ecoli(1)) ',' num2str(ecoli(2)) ',' ... |
---|
1475 | num2str(ecoli(3)) '}{' ... |
---|
1476 | num2str(bgcoli(1)) ',' num2str(bgcoli(2)) ',' ... |
---|
1477 | num2str(bgcoli(3)) '}{\\color[rgb]{' ... |
---|
1478 | num2str(coli(1)) ',' num2str(coli(2)) ',' num2str(coli(3)) '}' ]; |
---|
1479 | colorclose{i} = '}'; |
---|
1480 | else |
---|
1481 | colorcmd{i} = ['\\color[rgb]{' ... |
---|
1482 | num2str(coli(1)) ',' num2str(coli(2)) ',' num2str(coli(3)) '}' ]; |
---|
1483 | end |
---|
1484 | end |
---|
1485 | end |
---|
1486 | |
---|
1487 | % |
---|
1488 | % LABELS: modify new figure |
---|
1489 | % |
---|
1490 | |
---|
1491 | if ~keepticklabels |
---|
1492 | |
---|
1493 | % all axes |
---|
1494 | hax = celltoarray(findobj(figno,'type','axes')); |
---|
1495 | na = length(hax); |
---|
1496 | |
---|
1497 | % % try to figure out if we have 3D axes an warn |
---|
1498 | % issuewarning = 0; |
---|
1499 | % for i=1:na |
---|
1500 | % issuewarning = max(issuewarning,is3d(hax(i))); |
---|
1501 | % end |
---|
1502 | % if issuewarning |
---|
1503 | % warning('LaPrint:label',['This seems to be a 3D plot. '... |
---|
1504 | % 'The LaTeX labels are possibly incorrect. '... |
---|
1505 | % 'The option ''keepticklabels'' might help. '... |
---|
1506 | % 'Setting ''figcopy'' to ''off'' might be wise, too.']) |
---|
1507 | % end |
---|
1508 | |
---|
1509 | % try to figure out if we linear scale with extra factor |
---|
1510 | % and determine powers of 10 |
---|
1511 | powers = NaN*zeros(na,3); % matrix with powers of 10 |
---|
1512 | for i=1:na % all axes |
---|
1513 | allxyz = { 'x', 'y', 'z' }; |
---|
1514 | for ixyz=1:3 % x,y,z |
---|
1515 | xyz = allxyz{ixyz}; |
---|
1516 | ticklabelmode = get(hax(i),[ xyz 'ticklabelmode']); |
---|
1517 | if strcmp(ticklabelmode,'auto') |
---|
1518 | tick = get(hax(i),[ xyz 'tick']); |
---|
1519 | ticklabel = get(hax(i),[ xyz 'ticklabel']); |
---|
1520 | nticklabels = size(ticklabel,1); |
---|
1521 | nticks = length(tick); |
---|
1522 | if nticks==0, |
---|
1523 | powers(i,ixyz)=0; |
---|
1524 | nticklabels=0; |
---|
1525 | end |
---|
1526 | if nticklabels==0, |
---|
1527 | powers(i,ixyz)=0; |
---|
1528 | end |
---|
1529 | for k=1:nticklabels % all ticks |
---|
1530 | label = str2num(ticklabel(k,:)); |
---|
1531 | if length(label)==0, |
---|
1532 | powers(i,ixyz) = 0; |
---|
1533 | break; |
---|
1534 | end |
---|
1535 | if ( label==0 ) & ( abs(tick(k))>1e-10 ) |
---|
1536 | powers(i,ixyz) = 0; |
---|
1537 | break; |
---|
1538 | end |
---|
1539 | if label~=0 |
---|
1540 | expon = log10(tick(k)/label); |
---|
1541 | rexpon = round(expon); |
---|
1542 | if abs(rexpon-expon)>1e-10 |
---|
1543 | powers(i,ixyz) = 0; |
---|
1544 | break; |
---|
1545 | end |
---|
1546 | if isnan(powers(i,ixyz)) |
---|
1547 | powers(i,ixyz) = rexpon; |
---|
1548 | else |
---|
1549 | if powers(i,ixyz)~=rexpon |
---|
1550 | powers(i,ixyz) = 0; |
---|
1551 | break; |
---|
1552 | end |
---|
1553 | end |
---|
1554 | end |
---|
1555 | end % k |
---|
1556 | else % if 'auto' |
---|
1557 | powers(i,ixyz) = 0; |
---|
1558 | end % if 'auto' |
---|
1559 | end % ixyz |
---|
1560 | end % i |
---|
1561 | |
---|
1562 | % place text to be replaced by powers on y-axis |
---|
1563 | for i=1:na |
---|
1564 | allxyz = { 'x', 'y', 'z' }; |
---|
1565 | ixyz=2; % x,y,z |
---|
1566 | xyz = allxyz{ixyz}; |
---|
1567 | leftright=get(hax(i),'yaxislocation'); |
---|
1568 | if powers(i,ixyz) & ~is3d(hax(i)) & isequal(leftright,'left') |
---|
1569 | powertext = ['ypower' int2str(i)]; |
---|
1570 | xlimit = get(hax(i),'xlim'); |
---|
1571 | ylimit = get(hax(i),'ylim'); |
---|
1572 | htext = text(xlimit(1),ylimit(2)+... |
---|
1573 | 0.01*(ylimit(2)-ylimit(1)),... |
---|
1574 | powertext); |
---|
1575 | set(htext,'VerticalAlignment','Baseline'); |
---|
1576 | end |
---|
1577 | end % i |
---|
1578 | |
---|
1579 | % replace all ticklabels and bookkeep |
---|
1580 | nxlabel = zeros(1,na); |
---|
1581 | nylabel = zeros(1,na); |
---|
1582 | nzlabel = zeros(1,na); |
---|
1583 | allxyz={ 'x', 'y', 'z' }; |
---|
1584 | for ixyz=1:3 |
---|
1585 | xyz = allxyz{ixyz}; |
---|
1586 | k=1; |
---|
1587 | if strcmp(xyz,'y') |
---|
1588 | basestr = [ 'v' char(48*ones(1,nzeros-1))]; |
---|
1589 | else |
---|
1590 | basestr = [ xyz char(48*ones(1,nzeros-1))]; |
---|
1591 | end |
---|
1592 | oldtl = cell(na,1); |
---|
1593 | newtl = cell(na,1); |
---|
1594 | nlabel = zeros(1,na); |
---|
1595 | for i=1:na |
---|
1596 | % set(hax(i),[ xyz 'tickmode' ],'manual') |
---|
1597 | % set(hax(i),[ xyz 'ticklabelmode' ],'manual') |
---|
1598 | oldtl{i} = chartocell(get(hax(i),[ xyz 'ticklabel' ])); |
---|
1599 | nlabel(i) = length(oldtl{i}); |
---|
1600 | newtl{i} = cell(1,nlabel(i)); |
---|
1601 | for j=1:nlabel(i) |
---|
1602 | newtl{i}{j} = overwritetail(basestr,k); |
---|
1603 | k = k+1; |
---|
1604 | oldtl{i}{j} = deblank(strrep(strrep(oldtl{i}{j},'\','\\'),... |
---|
1605 | '%','%%')); |
---|
1606 | end |
---|
1607 | set(hax(i),[ xyz 'ticklabel' ],newtl{i}); |
---|
1608 | end |
---|
1609 | eval([ 'old' xyz 'tl=oldtl;' ]); |
---|
1610 | eval([ 'new' xyz 'tl=newtl;' ]); |
---|
1611 | eval([ 'n' xyz 'label=nlabel;' ]); |
---|
1612 | end |
---|
1613 | |
---|
1614 | % determine latex commands for font properties |
---|
1615 | |
---|
1616 | if keepfontprops |
---|
1617 | |
---|
1618 | % ticklabel font size |
---|
1619 | afsize = zeros(na,1); |
---|
1620 | for i=1:na |
---|
1621 | afsize(i) = get(hax(i),'fontsize'); |
---|
1622 | end |
---|
1623 | if (any(afsize ~= afsize(1) )) |
---|
1624 | warning('LaPrint:text',['Different font sizes for axes not '... |
---|
1625 | 'supported. All axes will have font size ' ... |
---|
1626 | num2str(afsize(1)) '.' ] ) |
---|
1627 | end |
---|
1628 | afsizecmd = [ '\\fontsize{' num2str(afsize(1)) '}{' ... |
---|
1629 | num2str(afsize(1)*1.5) '}' ]; |
---|
1630 | |
---|
1631 | % ticklabel font weight |
---|
1632 | afweight = cell(na,1); |
---|
1633 | for i=1:na |
---|
1634 | afweight{i} = get(hax(i),'fontweight'); |
---|
1635 | end |
---|
1636 | switch afweight{1} |
---|
1637 | case 'light' |
---|
1638 | afweightcmd = [ '\\fontseries{l}\\mathversion{normal}' ]; |
---|
1639 | case 'normal' |
---|
1640 | afweightcmd = [ '\\fontseries{m}\\mathversion{normal}' ]; |
---|
1641 | case 'demi' |
---|
1642 | afweightcmd = [ '\\fontseries{sb}\\mathversion{bold}' ]; |
---|
1643 | case 'bold' |
---|
1644 | afweightcmd = [ '\\fontseries{bx}\\mathversion{bold}' ]; |
---|
1645 | otherwise |
---|
1646 | warning('LaPrint:text',['unknown fontweight: ' afweight{1} ]) |
---|
1647 | afweightcmd = [ '\\fontseries{m}\\mathversion{normal}' ]; |
---|
1648 | end |
---|
1649 | for i=1:na |
---|
1650 | if ~strcmp(afweight{i},afweight{1}) |
---|
1651 | warning('LaPrint:text',['Different font weights for axes '... |
---|
1652 | 'are not supported. All axes will have font weight ' ... |
---|
1653 | afweightcmd '.']) |
---|
1654 | end |
---|
1655 | end |
---|
1656 | |
---|
1657 | % ticklabel font angle |
---|
1658 | afangle = cell(na,1); |
---|
1659 | for i=1:na |
---|
1660 | afangle{i} = get(hax(i),'fontangle'); |
---|
1661 | end |
---|
1662 | switch afangle{1} |
---|
1663 | case 'normal' |
---|
1664 | afanglecmd = [ '\\fontshape{n}' ]; |
---|
1665 | case 'italic' |
---|
1666 | afanglecmd = [ '\\fontshape{it}' ]; |
---|
1667 | case 'oblique' |
---|
1668 | afanglecmd = [ '\\fontshape{it}' ]; |
---|
1669 | otherwise |
---|
1670 | warning('LaPrint:text',['unknown fontangle: ' afangle{1} ]) |
---|
1671 | afanglecmd=[ '\\fontshape{n}' ]; |
---|
1672 | end |
---|
1673 | for i=1:na |
---|
1674 | if ~strcmp(afangle{i},afangle{1}) |
---|
1675 | warning('LaPrint:text',['Different font angles for axes not '... |
---|
1676 | 'supported. All axes will have font angle ' ... |
---|
1677 | afanglecmd '.'] ) |
---|
1678 | end |
---|
1679 | end |
---|
1680 | |
---|
1681 | end |
---|
1682 | |
---|
1683 | % ticklabel color |
---|
1684 | acolcmd=''; |
---|
1685 | if color |
---|
1686 | acol=[]; |
---|
1687 | allxyz={ 'x', 'y', 'z' }; |
---|
1688 | acolwarn = 0; |
---|
1689 | for i=1:na |
---|
1690 | for ixyz=1:3 |
---|
1691 | xyzcolor = [allxyz{ixyz} 'color']; |
---|
1692 | if ~isempty(get(hax(i),[allxyz{ixyz} 'ticklabel'])) |
---|
1693 | if isempty(acol) |
---|
1694 | acol = char2rgb(get(hax(i),xyzcolor)); |
---|
1695 | else |
---|
1696 | if any(char2rgb(get(hax(i),xyzcolor))~=acol) |
---|
1697 | acolwarn = 1; |
---|
1698 | end |
---|
1699 | end |
---|
1700 | end |
---|
1701 | end |
---|
1702 | end |
---|
1703 | if acolwarn |
---|
1704 | warning('LaPrint:label',['Different colors for axes not ' ... |
---|
1705 | 'supported. All ticklabels will have color [ ' ... |
---|
1706 | num2str(acol) ' ].' ] ) |
---|
1707 | end |
---|
1708 | if ~isempty(acol) |
---|
1709 | if any(acol~=[0 0 0]) |
---|
1710 | acolcmd = [ '\\color[rgb]{' num2str(acol(1)) ',' ... |
---|
1711 | num2str(acol(2)) ',' num2str(acol(3)) '}' ]; |
---|
1712 | end |
---|
1713 | end |
---|
1714 | end |
---|
1715 | |
---|
1716 | % ticklabel alignment |
---|
1717 | xyzalign = char([116*ones(na,1) 114*ones(na,1) 114*ones(na,1)]); |
---|
1718 | for i=1:na |
---|
1719 | switch get(hax(i),'XAxisLocation') |
---|
1720 | case 'top' |
---|
1721 | xyzalign(i,1)='B'; |
---|
1722 | end |
---|
1723 | switch get(hax(i),'YAxisLocation') |
---|
1724 | case 'right' |
---|
1725 | xyzalign(i,2)='l'; |
---|
1726 | end |
---|
1727 | end |
---|
1728 | |
---|
1729 | end |
---|
1730 | |
---|
1731 | % |
---|
1732 | % extra picture environment |
---|
1733 | % |
---|
1734 | |
---|
1735 | if extrapicture |
---|
1736 | unitlength = zeros(na,1); |
---|
1737 | ybound = zeros(na,1); |
---|
1738 | for i=na:-1:1 % reverse order, to keep axes in original order |
---|
1739 | if ~is3d(hax(i)) |
---|
1740 | xlim = get(hax(i),'xlim'); |
---|
1741 | ylim = get(hax(i),'ylim'); |
---|
1742 | axes(hax(i)); |
---|
1743 | hori = text(ylim(1),ylim(1),[ 'origin' int2str(i) ]); |
---|
1744 | set(hori,'VerticalAlignment','bottom'); |
---|
1745 | set(hori,'Fontsize',2); |
---|
1746 | set(hax(i),'Units','normalized') |
---|
1747 | pos = get(hax(i),'Position'); |
---|
1748 | unitlength(i) = pos(3)*epswidth; |
---|
1749 | ybound(i) = (pos(4)*epsheight)/(pos(3)*epswidth); |
---|
1750 | else |
---|
1751 | warning('LaPrint:extrapic',['Option ''extrapicture'' for 3D ' ... |
---|
1752 | 'axes not supported.']) |
---|
1753 | end |
---|
1754 | end |
---|
1755 | end |
---|
1756 | |
---|
1757 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
1758 | %%%% |
---|
1759 | %%%% PART 3 of advanced usage: |
---|
1760 | %%%% save eps and tex files |
---|
1761 | %%%% |
---|
1762 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
1763 | |
---|
1764 | % prevent matlab print command to modify lims and ticks |
---|
1765 | % (empty, if asonscreen=1) |
---|
1766 | if ~keepticklabels |
---|
1767 | xlimmodeauto = findobj(figno,'xlimmode','auto'); |
---|
1768 | xtickmodeauto = findobj(figno,'xtickmode','auto'); |
---|
1769 | xticklabelmodeauto = findobj(figno,'xticklabelmode','auto'); |
---|
1770 | ylimmodeauto = findobj(figno,'ylimmode','auto'); |
---|
1771 | ytickmodeauto = findobj(figno,'ytickmode','auto'); |
---|
1772 | yticklabelmodeauto = findobj(figno,'yticklabelmode','auto'); |
---|
1773 | zlimmodeauto = findobj(figno,'zlimmode','auto'); |
---|
1774 | ztickmodeauto = findobj(figno,'ztickmode','auto'); |
---|
1775 | zticklabelmodeauto = findobj(figno,'zticklabelmode','auto'); |
---|
1776 | set(xlimmodeauto,'xlimmode','manual') |
---|
1777 | set(xtickmodeauto,'xtickmode','manual') |
---|
1778 | set(xticklabelmodeauto,'xticklabelmode','manual') |
---|
1779 | set(ylimmodeauto,'ylimmode','manual') |
---|
1780 | set(ytickmodeauto,'ytickmode','manual') |
---|
1781 | set(yticklabelmodeauto,'yticklabelmode','manual') |
---|
1782 | set(zlimmodeauto,'ylimmode','manual') |
---|
1783 | set(ztickmodeauto,'ytickmode','manual') |
---|
1784 | set(zticklabelmodeauto,'yticklabelmode','manual') |
---|
1785 | end |
---|
1786 | |
---|
1787 | % create eps file |
---|
1788 | cmd = strrep(printcmd,'<filename.eps>',epsfullnameext); |
---|
1789 | cmd = strrep(cmd,'<filename>',filename); |
---|
1790 | cmd = strrep(cmd,'<figurenumber>',int2str(figno)); |
---|
1791 | |
---|
1792 | if verbose |
---|
1793 | disp([ 'executing: '' ' cmd ' ''' ]); |
---|
1794 | end |
---|
1795 | eval(cmd); |
---|
1796 | |
---|
1797 | % |
---|
1798 | % create latex file |
---|
1799 | % |
---|
1800 | if verbose |
---|
1801 | disp([ 'writing to: '' ' texfullnameext ' ''' ]) |
---|
1802 | end |
---|
1803 | fid = fopen(texfullnameext,'w'); |
---|
1804 | |
---|
1805 | % head |
---|
1806 | if head |
---|
1807 | fprintf(fid,[ '%% This file is generated by the MATLAB m-file' ... |
---|
1808 | ' laprint.m. It can be included\n']); |
---|
1809 | fprintf(fid,[ '%% into LaTeX documents using the packages ']); |
---|
1810 | fprintf(fid,package); |
---|
1811 | if color |
---|
1812 | fprintf(fid,', color'); |
---|
1813 | end |
---|
1814 | fprintf(fid,[ ' and psfrag.\n' ]); |
---|
1815 | fprintf(fid, ['%% It is accompanied by a postscript file. ',... |
---|
1816 | 'A sample LaTeX file is:\n']); |
---|
1817 | fprintf(fid, '%% \\documentclass{article}\\usepackage{'); |
---|
1818 | fprintf(fid,package); |
---|
1819 | if color |
---|
1820 | fprintf(fid,',color'); |
---|
1821 | end |
---|
1822 | fprintf(fid, ',psfrag}\n'); |
---|
1823 | fprintf(fid,[ '%% \\begin{document}\\input{' ... |
---|
1824 | texbasename '}\\end{document}\n' ]); |
---|
1825 | fprintf(fid, [ '%% See http://www.mathworks.de/matlabcentral'... |
---|
1826 | '/fileexchange/loadFile.do?objectId=4638\n']); |
---|
1827 | fprintf(fid, [ '%% for recent versions of laprint.m.\n' ]); |
---|
1828 | fprintf(fid, '%%\n'); |
---|
1829 | fprintf(fid,[ '%% created by: ' 'LaPrint version ' ... |
---|
1830 | laprintident '\n' ]); |
---|
1831 | fprintf(fid,[ '%% created on: ' datestr(now) '\n' ]); |
---|
1832 | fprintf(fid,[ '%% eps bounding box: ' num2str(epswidth) ... |
---|
1833 | ' cm x ' num2str(epsheight) ' cm\n' ]); |
---|
1834 | fprintf(fid,[ '%% comment: ' comment '\n' ]); |
---|
1835 | fprintf(fid,'%%\n'); |
---|
1836 | else |
---|
1837 | fprintf(fid,[ '%% generated by laprint.m\n' ]); |
---|
1838 | fprintf(fid,'%%\n'); |
---|
1839 | end |
---|
1840 | |
---|
1841 | % go on |
---|
1842 | fprintf(fid,'\\begin{psfrags}%%\n'); |
---|
1843 | %fprintf(fid,'\\fontsize{10}{12}\\selectfont%%\n'); |
---|
1844 | fprintf(fid,'\\psfragscanon%%\n'); |
---|
1845 | |
---|
1846 | % text strings |
---|
1847 | |
---|
1848 | numbertext=0; |
---|
1849 | for i=1:nt |
---|
1850 | numbertext = numbertext+length(newstr{i}); |
---|
1851 | end |
---|
1852 | if numbertext>0, |
---|
1853 | fprintf(fid,'%%\n'); |
---|
1854 | fprintf(fid,'%% text strings:\n'); |
---|
1855 | for i=1:ntp |
---|
1856 | if length(newstr{i}) |
---|
1857 | alig = strrep(align{i},'c',''); |
---|
1858 | fprintf(fid,[ '\\psfrag{' newstr{i} '}[' alig '][' alig ']{' ... |
---|
1859 | fontsizecmd{i} fontweightcmd{i} fontanglecmd{i} ... |
---|
1860 | selectfontcmd colorcmd{i} oldstr{i} colorclose{i} '}%%\n' ]); |
---|
1861 | end |
---|
1862 | end |
---|
1863 | end |
---|
1864 | |
---|
1865 | % labels |
---|
1866 | |
---|
1867 | if ~keepticklabels |
---|
1868 | if ~isempty(acolcmd) |
---|
1869 | fprintf(fid,'%%\n'); |
---|
1870 | fprintf(fid,'%% axes ticklabel color:\n'); |
---|
1871 | fprintf(fid,[ acolcmd '%%\n' ]); |
---|
1872 | end |
---|
1873 | if keepfontprops |
---|
1874 | fprintf(fid,'%%\n'); |
---|
1875 | fprintf(fid,'%% axes font properties:\n'); |
---|
1876 | fprintf(fid,[ afsizecmd afweightcmd '%%\n' ]); |
---|
1877 | fprintf(fid,[ afanglecmd '\\selectfont%%\n' ]); |
---|
1878 | end |
---|
1879 | nxlabel = zeros(1,na); |
---|
1880 | nylabel = zeros(1,na); |
---|
1881 | nzlabel = zeros(1,na); |
---|
1882 | for i=1:na |
---|
1883 | nxlabel(i) = length(newxtl{i}); |
---|
1884 | nylabel(i) = length(newytl{i}); |
---|
1885 | nzlabel(i) = length(newztl{i}); |
---|
1886 | end |
---|
1887 | |
---|
1888 | allxyz = { 'x', 'y', 'z' }; |
---|
1889 | for ixyz=1:3 |
---|
1890 | xyz = allxyz{ixyz}; |
---|
1891 | eval([ 'oldtl=old' xyz 'tl;' ]); |
---|
1892 | eval([ 'newtl=new' xyz 'tl;' ]); |
---|
1893 | eval([ 'nlabel=n' xyz 'label;' ]); |
---|
1894 | if sum(nlabel) > 0 |
---|
1895 | fprintf(fid,'%%\n'); |
---|
1896 | fprintf(fid,[ '%% ' xyz 'ticklabels:\n']); |
---|
1897 | for i=1:na |
---|
1898 | poss = ['[' xyzalign(i,ixyz) '][' xyzalign(i,ixyz) ']']; |
---|
1899 | if nlabel(i) |
---|
1900 | if strcmp(get(hax(i),[ xyz 'scale']),'linear') |
---|
1901 | % lin scale |
---|
1902 | rexpon = powers(i,ixyz); |
---|
1903 | if ~rexpon |
---|
1904 | % no powers |
---|
1905 | for j=1:nlabel(i) |
---|
1906 | fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ... |
---|
1907 | Do oldtl{i}{j} Do '}%%\n' ]); |
---|
1908 | end |
---|
1909 | else |
---|
1910 | % powers |
---|
1911 | if ixyz==2 |
---|
1912 | leftright=get(hax(i),'yaxislocation'); |
---|
1913 | if ~is3d(hax(i)) & isequal(leftright,'left') |
---|
1914 | for j=1:nlabel(i) |
---|
1915 | fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ... |
---|
1916 | Do oldtl{i}{j} Do '}%%\n' ]); |
---|
1917 | end |
---|
1918 | fprintf(fid,[ '\\psfrag{ypower' int2str(i) ... |
---|
1919 | '}[Bl][Bl]{$\\times 10^{' ... |
---|
1920 | int2str(rexpon) '}$}%%\n' ]); |
---|
1921 | else |
---|
1922 | for j=1:nlabel(i)-1 |
---|
1923 | fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ... |
---|
1924 | Do oldtl{i}{j} Do '}%%\n' ]); |
---|
1925 | end |
---|
1926 | if ~is3d(hax(i)) |
---|
1927 | fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ... |
---|
1928 | '}' poss '{' ... |
---|
1929 | Do oldtl{i}{nlabel(i)} Do '$\\times 10^{'... |
---|
1930 | int2str(rexpon) '}$}%%\n' ]); |
---|
1931 | else |
---|
1932 | fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ... |
---|
1933 | '}' poss '{\\shortstack{' ... |
---|
1934 | Do oldtl{i}{nlabel(i)} Do '\\\\$\\times 10^{'... |
---|
1935 | int2str(rexpon) '}\\ $}}%%\n' ]); |
---|
1936 | |
---|
1937 | end |
---|
1938 | end |
---|
1939 | elseif ixyz==1 |
---|
1940 | for j=1:nlabel(i)-1 |
---|
1941 | fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ... |
---|
1942 | Do oldtl{i}{j} Do '}%%\n' ]); |
---|
1943 | end |
---|
1944 | leftright=get(hax(i),'xaxislocation'); |
---|
1945 | if isequal(leftright,'bottom') |
---|
1946 | fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ... |
---|
1947 | '}' poss '{\\shortstack{' ... |
---|
1948 | Do oldtl{i}{nlabel(i)} Do '\\\\$\\times 10^{'... |
---|
1949 | int2str(rexpon) '}\\ $}}%%\n' ]); |
---|
1950 | else |
---|
1951 | fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ... |
---|
1952 | '}' poss '{\\shortstack{$\\times 10^{' ... |
---|
1953 | int2str(rexpon) '}\\ $\\\\' ... |
---|
1954 | Do oldtl{i}{nlabel(i)} Do '}}%%\n' ]); |
---|
1955 | end |
---|
1956 | else |
---|
1957 | for j=1:nlabel(i)-1 |
---|
1958 | fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ... |
---|
1959 | Do oldtl{i}{j} Do '}%%\n' ]); |
---|
1960 | end |
---|
1961 | fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ... |
---|
1962 | '}' poss '{' Do oldtl{i}{nlabel(i)} Do ... |
---|
1963 | '\\setlength{\\unitlength}{1ex}' ... |
---|
1964 | '\\begin{picture}(0,0)\\put(0.5,1.5){$\\times 10^{' ... |
---|
1965 | int2str(rexpon) '}$}\\end{picture}}%%\n' ]); |
---|
1966 | end |
---|
1967 | end % rexpon |
---|
1968 | else |
---|
1969 | % log scale |
---|
1970 | for j=1:nlabel(i) |
---|
1971 | fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{$10^{' ... |
---|
1972 | oldtl{i}{j} '}$}%%\n' ]); |
---|
1973 | end % for (log) |
---|
1974 | end % if linear |
---|
1975 | end % if nlabel(i) |
---|
1976 | end |
---|
1977 | end |
---|
1978 | end |
---|
1979 | end |
---|
1980 | |
---|
1981 | % extra picture |
---|
1982 | if extrapicture |
---|
1983 | fprintf(fid,'%%\n'); |
---|
1984 | fprintf(fid,'%% extra picture(s):\n'); |
---|
1985 | for i=1:na |
---|
1986 | fprintf(fid,[ '\\psfrag{origin' int2str(i) '}[lb][lb]{' ... |
---|
1987 | '\\setlength{\\unitlength}{' ... |
---|
1988 | num2str(unitlength(i),'%5.5f') 'cm}%%\n' ]); |
---|
1989 | fprintf(fid,[ '\\begin{picture}(1,' ... |
---|
1990 | num2str(ybound(i),'%5.5f') ')%%\n' ]); |
---|
1991 | %fprintf(fid,'\\put(0,0){}%% lower left corner\n'); |
---|
1992 | %fprintf(fid,[ '\\put(1,' num2str(ybound(i),'%5.5f') ... |
---|
1993 | % '){}%% upper right corner\n' ]); |
---|
1994 | fprintf(fid,'\\end{picture}%%\n'); |
---|
1995 | fprintf(fid,'}%%\n'); |
---|
1996 | end |
---|
1997 | end |
---|
1998 | |
---|
1999 | % figure |
---|
2000 | fprintf(fid,'%%\n'); |
---|
2001 | fprintf(fid,'%% Figure:\n'); |
---|
2002 | if iscaption |
---|
2003 | fprintf(fid,[ '\\parbox{' num2str(latexwidth) 'cm}{\\centering%%\n' ]); |
---|
2004 | end |
---|
2005 | if ~scalefonts |
---|
2006 | switch package |
---|
2007 | case 'epsfig' |
---|
2008 | fprintf(fid,[ '\\epsfig{file=' epsbasenameext ',width=' ... |
---|
2009 | num2str(latexwidth) 'cm}%%\n' ]); |
---|
2010 | case 'graphicx' |
---|
2011 | fprintf(fid,[ '\\includegraphics[width=' num2str(latexwidth) ... |
---|
2012 | 'cm]{' epsbasenameext '}%%\n' ]); |
---|
2013 | otherwise |
---|
2014 | warning('LaPrint:general',['Package ''' package ''' not known. '... |
---|
2015 | 'I hope you know what you are doing...']) |
---|
2016 | end |
---|
2017 | else |
---|
2018 | switch package |
---|
2019 | case 'epsfig' |
---|
2020 | fprintf(fid,[ '\\resizebox{' num2str(latexwidth) 'cm}{!}' ... |
---|
2021 | '{\\epsfig{file=' epsbasenameext '}}%%\n' ]); |
---|
2022 | case 'graphicx' |
---|
2023 | fprintf(fid,[ '\\resizebox{' num2str(latexwidth) 'cm}{!}' ... |
---|
2024 | '{\\includegraphics{' epsbasenameext '}}%%\n' ]); |
---|
2025 | otherwise |
---|
2026 | warning('LaPrint:general',['Package ''' package ''' not known. '... |
---|
2027 | 'I hope you know what you are doing...']) |
---|
2028 | end |
---|
2029 | end |
---|
2030 | if iscaption |
---|
2031 | fprintf(fid,[ '\\caption{' caption '}%%\n' ]); |
---|
2032 | fprintf(fid,[ '\\label{fig:' texbasename '}%%\n' ]); |
---|
2033 | fprintf(fid,[ '}%%\n' ]); |
---|
2034 | end |
---|
2035 | fprintf(fid,'\\end{psfrags}%%\n'); |
---|
2036 | fprintf(fid,'%%\n'); |
---|
2037 | fprintf(fid,[ '%% End ' texbasenameext '\n' ]); |
---|
2038 | fclose(fid); |
---|
2039 | |
---|
2040 | set(figno,'Name','Printed by LaPrint') |
---|
2041 | if figcopy |
---|
2042 | if verbose |
---|
2043 | disp('Strike any key to continue.'); |
---|
2044 | pause |
---|
2045 | end |
---|
2046 | hlegend = findobj(figno,'Tag','legend'); |
---|
2047 | set(hlegend,'DeleteFcn','') |
---|
2048 | close(figno) |
---|
2049 | end |
---|
2050 | |
---|
2051 | % check for copyobj-bug --> should be ok now! |
---|
2052 | number_children_new = length(get(figno_ori,'children')); |
---|
2053 | if number_children_new < number_children_ori |
---|
2054 | if figcopy |
---|
2055 | warning(['LaPrint:general','Objects in the figure have been '... |
---|
2056 | 'deleted! This is due to a bug in matlabs '... |
---|
2057 | '''copyopj''. You might want to try to set '... |
---|
2058 | '''figcopy'' to ''off''.']) |
---|
2059 | else |
---|
2060 | warning('LaPrint:general',['Objects in the figure have been '... |
---|
2061 | 'deleted!']) |
---|
2062 | end |
---|
2063 | end |
---|
2064 | |
---|
2065 | % |
---|
2066 | % create view file |
---|
2067 | % |
---|
2068 | |
---|
2069 | if createview | processview |
---|
2070 | if verbose |
---|
2071 | disp([ 'writing to: '' ' viewfullnameext ' ''' ]) |
---|
2072 | end |
---|
2073 | fid = fopen(viewfullnameext,'w'); |
---|
2074 | |
---|
2075 | if head |
---|
2076 | fprintf(fid,[ '%% This file is generated by laprint.m.\n' ]); |
---|
2077 | fprintf(fid,[ '%% It calls ' texbasenameext ... |
---|
2078 | ', which in turn calls ' epsbasenameext '.\n' ]); |
---|
2079 | fprintf(fid,[ '%% Process this file using, e.g.,\n' ]); |
---|
2080 | fprintf(fid,[ '%% latex ' viewbasenameext '\n' ]); |
---|
2081 | fprintf(fid,[ '%% dvips -o' viewbasename '.ps ' viewbasename ... |
---|
2082 | '.dvi\n']); |
---|
2083 | fprintf(fid,[ '%% ghostview ' viewbasename '.ps&\n' ]); |
---|
2084 | else |
---|
2085 | fprintf(fid,[ '%% generated by laprint.m\n' ]); |
---|
2086 | end |
---|
2087 | |
---|
2088 | fprintf(fid,[ '\\documentclass{article}\n' ]); |
---|
2089 | fprintf(fid,[ '\\usepackage{' ]); |
---|
2090 | fprintf(fid,package); |
---|
2091 | if color |
---|
2092 | fprintf(fid,',color'); |
---|
2093 | end |
---|
2094 | fprintf(fid,[ ',psfrag,a4}\n' ]); |
---|
2095 | fprintf(fid,[ '\\usepackage[latin1]{inputenc}\n' ]); |
---|
2096 | if ~strcmp(epsdirname,viewdirname) |
---|
2097 | fprintf(fid,[ '\\graphicspath{{' epsdirname '}}\n' ]); |
---|
2098 | end |
---|
2099 | fprintf(fid,[ '\\begin{document}\n' ]); |
---|
2100 | fprintf(fid,[ '\\pagestyle{empty}\n' ]); |
---|
2101 | if strcmp(texdirname,viewdirname) |
---|
2102 | fprintf(fid,[ ' \\input{' texbasenameext '}\n' ]); |
---|
2103 | else |
---|
2104 | fprintf(fid,[ ' \\input{' texdirname texbasenameext '}\n' ]); |
---|
2105 | end |
---|
2106 | fprintf(fid,[ '\\end{document}\n' ]); |
---|
2107 | fclose(fid); |
---|
2108 | end |
---|
2109 | |
---|
2110 | % process view file |
---|
2111 | |
---|
2112 | if processview |
---|
2113 | conti=1; |
---|
2114 | |
---|
2115 | for i=1:8 |
---|
2116 | eval(['cmdi=cmd' int2str(i) ';']) |
---|
2117 | if ~isempty(cmdi) & conti |
---|
2118 | cmd = strrep(cmdi,'<viewfile>',viewbasename); |
---|
2119 | cmd = strrep(cmd,'<filename>',filename); |
---|
2120 | disp([ 'executing: '' ' cmd ' ''' ]); |
---|
2121 | [stat,resu]=system(cmd); |
---|
2122 | if stat %| isempty(strfind(resu,'Output written on')) |
---|
2123 | disp(resu) |
---|
2124 | conti=0; |
---|
2125 | end |
---|
2126 | end |
---|
2127 | end |
---|
2128 | |
---|
2129 | if ~conti |
---|
2130 | disp('An error occured in the latex/friends sequence.') |
---|
2131 | end |
---|
2132 | |
---|
2133 | end |
---|
2134 | |
---|
2135 | set(0,'ShowHiddenHandles',shh); |
---|
2136 | |
---|
2137 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2138 | %%%% |
---|
2139 | %%%% functions used |
---|
2140 | %%%% |
---|
2141 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2142 | |
---|
2143 | function [fullnameext,basenameext,basename,dirname] = getfilenames(... |
---|
2144 | filename,extension,verbose); |
---|
2145 | % appends an extension to a filename (as '/home/tom/tt') and determines |
---|
2146 | % fullnameext: filename with extension and dirname, as '/home/tom/tt.tex' |
---|
2147 | % basenameext: filename with extension without dirname, as 'tt.tex' |
---|
2148 | % basename : filename without extension without dirname, as 'tt' |
---|
2149 | % dirname : dirname without filename, as '/home/tom/' |
---|
2150 | % In verbose mode, it asks if to overwrite or to modify. |
---|
2151 | % |
---|
2152 | [dirname, basename] = splitfilename(filename); |
---|
2153 | fullnameext = [ dirname basename '.' extension ]; |
---|
2154 | basenameext = [ basename '.' extension ]; |
---|
2155 | if verbose |
---|
2156 | quest = (exist(fullnameext)==2); |
---|
2157 | while quest |
---|
2158 | yn = input([ strrep(strrep(fullnameext,'\','\\'),'%','%%') ... |
---|
2159 | ' exists. Overwrite? (y/n) '],'s'); |
---|
2160 | if strcmp(yn,'y') |
---|
2161 | quest = 0; |
---|
2162 | else |
---|
2163 | filename = input( ... |
---|
2164 | [ 'Please enter new filename (without extension .' ... |
---|
2165 | extension '): ' ],'s'); |
---|
2166 | [dirname, basename] = splitfilename(filename); |
---|
2167 | fullnameext = [ dirname basename '.' extension ]; |
---|
2168 | basenameext = [ basename '.' extension ]; |
---|
2169 | quest = (exist(fullnameext)==2); |
---|
2170 | end |
---|
2171 | end |
---|
2172 | end |
---|
2173 | if ( exist(dirname)~=7 & ~strcmp(dirname,[ '.' filesep ]) ... |
---|
2174 | & ~strcmp(dirname,filesep) ) |
---|
2175 | error([ 'Directory ' dirname ' does not exist.' ] ) |
---|
2176 | end |
---|
2177 | |
---|
2178 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2179 | |
---|
2180 | function [dirname,basename] = splitfilename(filename); |
---|
2181 | % splits filename into dir and base |
---|
2182 | slashpos = findstr(filename,filesep); |
---|
2183 | nslash = length(slashpos); |
---|
2184 | nfilename = length(filename); |
---|
2185 | if nslash |
---|
2186 | dirname = filename(1:slashpos(nslash)); |
---|
2187 | basename = filename(slashpos(nslash)+1:nfilename); |
---|
2188 | else |
---|
2189 | dirname = pwd; |
---|
2190 | nn=length(dirname); |
---|
2191 | if ~strcmp(dirname(nn),filesep) |
---|
2192 | dirname = [ dirname filesep ]; |
---|
2193 | end |
---|
2194 | basename = filename; |
---|
2195 | end |
---|
2196 | |
---|
2197 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2198 | |
---|
2199 | function yesno = is3d(haxes); |
---|
2200 | % tries to figure out if axes is 3D |
---|
2201 | yesno = 0; |
---|
2202 | CameraPosition = get(haxes,'CameraPosition'); |
---|
2203 | CameraTarget = get(haxes,'CameraTarget'); |
---|
2204 | CameraUpVector = get(haxes,'CameraUpVector'); |
---|
2205 | if CameraPosition(1)~=CameraTarget(1) |
---|
2206 | yesno = 1; |
---|
2207 | end |
---|
2208 | if CameraPosition(2)~=CameraTarget(2) |
---|
2209 | yesno = 1; |
---|
2210 | end |
---|
2211 | if any(CameraUpVector~=[0 1 0]) |
---|
2212 | yesno = 1; |
---|
2213 | end |
---|
2214 | |
---|
2215 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2216 | |
---|
2217 | function b = celltoarray(a); |
---|
2218 | % converts a cell of doubles to an array |
---|
2219 | if iscell(a), |
---|
2220 | b = []; |
---|
2221 | for i=1:length(a), |
---|
2222 | b = [b a{i}]; |
---|
2223 | end |
---|
2224 | else, |
---|
2225 | b = a(:)'; |
---|
2226 | end |
---|
2227 | |
---|
2228 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2229 | |
---|
2230 | function b = chartocell(a) |
---|
2231 | % converts a character array into a cell array of characters |
---|
2232 | |
---|
2233 | % convert to cell |
---|
2234 | if isa(a,'char') |
---|
2235 | n = size(a,1); |
---|
2236 | b = cell(1,n); |
---|
2237 | for j=1:n |
---|
2238 | b{j}=a(j,:); |
---|
2239 | end |
---|
2240 | else |
---|
2241 | b = a; |
---|
2242 | end |
---|
2243 | % convert to char |
---|
2244 | n=length(b); |
---|
2245 | for j=1:n |
---|
2246 | if isa(b{j},'double') |
---|
2247 | b{j} = num2str(b{j}); |
---|
2248 | end |
---|
2249 | end |
---|
2250 | |
---|
2251 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2252 | |
---|
2253 | function b = overwritetail(a,k) |
---|
2254 | % overwrites tail of a by k |
---|
2255 | % a,b: strings |
---|
2256 | % k: integer |
---|
2257 | ks = int2str(k); |
---|
2258 | b = [ a(1:(length(a)-length(ks))) ks ]; |
---|
2259 | |
---|
2260 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2261 | |
---|
2262 | function [rgb,isc] = char2rgb(c,c0) |
---|
2263 | % convert color definitions from character to rgb-vector |
---|
2264 | |
---|
2265 | isc = 1; |
---|
2266 | if ~ischar(c) |
---|
2267 | rgb = c; |
---|
2268 | else |
---|
2269 | switch c |
---|
2270 | case {'y','yellow'} |
---|
2271 | rgb = [1 1 0]; |
---|
2272 | case {'m','magenta'} |
---|
2273 | rgb = [1 0 1]; |
---|
2274 | case {'c','cyan'} |
---|
2275 | rgb = [0 1 1]; |
---|
2276 | case {'r','red'} |
---|
2277 | rgb = [1 0 0]; |
---|
2278 | case {'g','green'} |
---|
2279 | rgb = [0 1 0]; |
---|
2280 | case {'b','blue'} |
---|
2281 | rgb = [0 0 1]; |
---|
2282 | case {'w','white'} |
---|
2283 | rgb = [1 1 1]; |
---|
2284 | case {'k','black'} |
---|
2285 | rgb = [0 0 0]; |
---|
2286 | case 'none' |
---|
2287 | if nargin==2 |
---|
2288 | rgb = char2rgb(c0); |
---|
2289 | else |
---|
2290 | rgb = [1 1 1]; |
---|
2291 | end |
---|
2292 | isc = 0; |
---|
2293 | otherwise |
---|
2294 | warning('LaPrint:general',['Unknown Color: ''' c ... |
---|
2295 | '''. Taking black.']) |
---|
2296 | rgb = [0 0 0]; |
---|
2297 | end |
---|
2298 | end |
---|
2299 | |
---|
2300 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2301 | |
---|
2302 | function v = value01(val,opt) |
---|
2303 | % convert off/on to 0/1 |
---|
2304 | |
---|
2305 | if nargin==2 |
---|
2306 | txt = ['Value of ' opt ' must be ''on'' or ''off''']; |
---|
2307 | else |
---|
2308 | txt = ['Value must be ''on'' or ''off''']; |
---|
2309 | end |
---|
2310 | |
---|
2311 | if ~isa(val,'char') |
---|
2312 | error(txt) |
---|
2313 | end |
---|
2314 | val = lower(strrep(val,' ','')); |
---|
2315 | switch val |
---|
2316 | case 'on' |
---|
2317 | v = 1; |
---|
2318 | case 'off' |
---|
2319 | v = 0; |
---|
2320 | otherwise |
---|
2321 | error(txt) |
---|
2322 | end |
---|
2323 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2324 | |
---|
2325 | function v = valueyn(val) |
---|
2326 | % convert 0/1 to off/on |
---|
2327 | |
---|
2328 | if ~isa(val,'double') |
---|
2329 | error([ 'Value must be ''0'' or ''1''']) |
---|
2330 | end |
---|
2331 | switch val |
---|
2332 | case 0 |
---|
2333 | v = 'off'; |
---|
2334 | case 1 |
---|
2335 | v = 'on'; |
---|
2336 | otherwise |
---|
2337 | error([ 'Value must be ''0'' or ''1''']) |
---|
2338 | end |
---|
2339 | |
---|
2340 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2341 | |
---|
2342 | function sethf(hf,LAPRINTHAN,LAPRINTOPT) |
---|
2343 | % store in UserData of gui |
---|
2344 | |
---|
2345 | set(hf,'UserData',{LAPRINTHAN,LAPRINTOPT}) |
---|
2346 | |
---|
2347 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2348 | |
---|
2349 | function [LAPRINTHAN,LAPRINTOPT]=gethf(hf) |
---|
2350 | % load from UserData of gui |
---|
2351 | |
---|
2352 | d=get(hf,'UserData'); |
---|
2353 | LAPRINTHAN=d{1}; |
---|
2354 | LAPRINTOPT=d{2}; |
---|
2355 | |
---|
2356 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2357 | |
---|
2358 | function opt = prefsettings |
---|
2359 | if ispref('LaPrint','LAPRINTOPT') |
---|
2360 | opt = getpref('LaPrint','LAPRINTOPT'); |
---|
2361 | else |
---|
2362 | opt = []; |
---|
2363 | end |
---|
2364 | |
---|
2365 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2366 | |
---|
2367 | function opt=factorysettings |
---|
2368 | |
---|
2369 | % try to find LaTeX and friends |
---|
2370 | if ispc |
---|
2371 | try |
---|
2372 | latexpath = winqueryreg('HKEY_LOCAL_MACHINE',... |
---|
2373 | 'SOFTWARE\MiK\MiKTeX\CurrentVersion\MiKTeX','Install Root'); |
---|
2374 | latexcmd = [latexpath '\miktex\bin\latex.exe -halt-on-error '... |
---|
2375 | '-interaction nonstopmode <viewfile>.tex']; |
---|
2376 | dvipscmd = [latexpath '\miktex\bin\dvips.exe -D600 -E* '... |
---|
2377 | '-o<viewfile>.eps <viewfile>.dvi']; |
---|
2378 | catch % hoping the path variable is properly set |
---|
2379 | latexcmd = ['latex.exe -halt-on-error '... |
---|
2380 | '-interaction nonstopmode <viewfile>.tex']; |
---|
2381 | dvipscmd = ['dvips.exe -D600 -E* '... |
---|
2382 | '-o<viewfile>.eps <viewfile>.dvi']; |
---|
2383 | end |
---|
2384 | epstoolcmd = ['C:\Ghostgum\epstool\bin\epstool.exe '... |
---|
2385 | '--bbox --copy --output '... |
---|
2386 | '<filename>_final.eps <viewfile>.eps']; |
---|
2387 | delcmd = ['del <viewfile>.eps <viewfile>.dvi ',... |
---|
2388 | '<viewfile>.aux <viewfile>.log ',... |
---|
2389 | '<viewfile>.pfg']; |
---|
2390 | gsviewcmd = 'C:\Ghostgum\gsview\gsview32.exe <filename>_final.eps&'; |
---|
2391 | else % hoping the path variable is properly set |
---|
2392 | latexcmd = ['latex -halt-on-error '... |
---|
2393 | '-interaction nonstopmode <viewfile>.tex']; |
---|
2394 | dvipscmd = ['dvips -D600 -E* '... |
---|
2395 | '-o<viewfile>.eps <viewfile>.dvi']; |
---|
2396 | epstoolcmd = ['epstool --bbox --copy --output '... |
---|
2397 | '<filename>_final.eps <viewfile>.eps']; |
---|
2398 | delcmd = ['rm <viewfile>.eps <viewfile>.dvi ',... |
---|
2399 | '<viewfile>.aux <viewfile>.log ',... |
---|
2400 | '<viewfile>.pfg']; |
---|
2401 | gsviewcmd = 'ghostview <filename>_final.eps&'; |
---|
2402 | end |
---|
2403 | |
---|
2404 | vers = version; |
---|
2405 | vers = eval(vers(1:3)); |
---|
2406 | if vers < 6.5 |
---|
2407 | colorvalue=0; |
---|
2408 | else |
---|
2409 | colorvalue=1; |
---|
2410 | end |
---|
2411 | |
---|
2412 | opt = struct(... |
---|
2413 | 'figno',{1},... |
---|
2414 | 'filename','unnamed',... |
---|
2415 | 'width',12,... |
---|
2416 | 'factor',0.8,... |
---|
2417 | 'scalefonts',1,... |
---|
2418 | 'keepfontprops',0,... |
---|
2419 | 'asonscreen',0,... |
---|
2420 | 'keepticklabels',0,... |
---|
2421 | 'mathticklabels',0,... |
---|
2422 | 'head',1,... |
---|
2423 | 'comment','',... |
---|
2424 | 'caption','',... |
---|
2425 | 'extrapicture',0,... |
---|
2426 | 'nzeros',3,... |
---|
2427 | 'verbose',0,... |
---|
2428 | 'figcopy',1,... |
---|
2429 | 'printcmd',['print(''-f<figurenumber>'',' ... |
---|
2430 | '''-depsc'',''-painters'','... |
---|
2431 | '''<filename.eps>'')'],... |
---|
2432 | 'package','graphicx',... |
---|
2433 | 'color',colorvalue,... |
---|
2434 | 'createview',0,... |
---|
2435 | 'viewfilename','unnamed_',... |
---|
2436 | 'processview',0,... |
---|
2437 | 'cmd1',latexcmd,... |
---|
2438 | 'cmd2',dvipscmd,... |
---|
2439 | 'cmd3',epstoolcmd,... |
---|
2440 | 'cmd4',delcmd,... |
---|
2441 | 'cmd5',gsviewcmd,... |
---|
2442 | 'cmd6','',... |
---|
2443 | 'cmd7','',... |
---|
2444 | 'cmd8',''); |
---|
2445 | |
---|
2446 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2447 | |
---|
2448 | function updategui(LAPRINTHAN,LAPRINTOPT) |
---|
2449 | % update gui |
---|
2450 | |
---|
2451 | set(LAPRINTHAN.figno,'string',num2str(LAPRINTOPT.figno)) |
---|
2452 | set(LAPRINTHAN.filename,'string',LAPRINTOPT.filename) |
---|
2453 | % width, factor, scalefonts |
---|
2454 | if LAPRINTOPT.keepfontprops |
---|
2455 | set(LAPRINTHAN.keepfontprops,'check','on') |
---|
2456 | else |
---|
2457 | set(LAPRINTHAN.keepfontprops,'check','off') |
---|
2458 | end |
---|
2459 | if LAPRINTOPT.asonscreen |
---|
2460 | set(LAPRINTHAN.asonscreen,'check','on') |
---|
2461 | else |
---|
2462 | set(LAPRINTHAN.asonscreen,'check','off') |
---|
2463 | end |
---|
2464 | if LAPRINTOPT.keepticklabels |
---|
2465 | set(LAPRINTHAN.keepticklabels,'check','on') |
---|
2466 | else |
---|
2467 | set(LAPRINTHAN.keepticklabels,'check','off') |
---|
2468 | end |
---|
2469 | if LAPRINTOPT.mathticklabels |
---|
2470 | set(LAPRINTHAN.mathticklabels,'check','on') |
---|
2471 | else |
---|
2472 | set(LAPRINTHAN.mathticklabels,'check','off') |
---|
2473 | end |
---|
2474 | if LAPRINTOPT.head |
---|
2475 | set(LAPRINTHAN.head,'check','on') |
---|
2476 | else |
---|
2477 | set(LAPRINTHAN.head,'check','off') |
---|
2478 | end |
---|
2479 | % comment, caption |
---|
2480 | if LAPRINTOPT.extrapicture |
---|
2481 | set(LAPRINTHAN.extrapicture,'check','on') |
---|
2482 | else |
---|
2483 | set(LAPRINTHAN.extrapicture,'check','off') |
---|
2484 | end |
---|
2485 | % nzeros |
---|
2486 | if LAPRINTOPT.verbose |
---|
2487 | set(LAPRINTHAN.verbose,'check','on') |
---|
2488 | else |
---|
2489 | set(LAPRINTHAN.verbose,'check','off') |
---|
2490 | end |
---|
2491 | if LAPRINTOPT.figcopy |
---|
2492 | set(LAPRINTHAN.figcopy,'check','on') |
---|
2493 | else |
---|
2494 | set(LAPRINTHAN.figcopy,'check','off') |
---|
2495 | end |
---|
2496 | % printcmd |
---|
2497 | switch LAPRINTOPT.package |
---|
2498 | case 'epsfig' |
---|
2499 | set(LAPRINTHAN.package_epsfig,'check','on') |
---|
2500 | set(LAPRINTHAN.package_graphicx,'check','off') |
---|
2501 | case 'graphicx' |
---|
2502 | set(LAPRINTHAN.package_epsfig,'check','off') |
---|
2503 | set(LAPRINTHAN.package_graphicx,'check','on') |
---|
2504 | end |
---|
2505 | if LAPRINTOPT.color |
---|
2506 | set(LAPRINTHAN.color,'check','on') |
---|
2507 | else |
---|
2508 | set(LAPRINTHAN.color,'check','off') |
---|
2509 | end |
---|
2510 | if LAPRINTOPT.createview |
---|
2511 | set(LAPRINTHAN.createview,'check','on') |
---|
2512 | else |
---|
2513 | set(LAPRINTHAN.createview,'check','off') |
---|
2514 | end |
---|
2515 | % viewfilename |
---|
2516 | if LAPRINTOPT.processview |
---|
2517 | set(LAPRINTHAN.processview,'check','on') |
---|
2518 | else |
---|
2519 | set(LAPRINTHAN.processview,'check','off') |
---|
2520 | end |
---|
2521 | % cmd1, cmd2, cmd3, cmd4, cmd5, cmd6, cmd7, cmd8 |
---|
2522 | |
---|
2523 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
---|
2524 | |
---|
2525 | function txt = helptext() |
---|
2526 | % help text |
---|
2527 | txt={... |
---|
2528 | '',... |
---|
2529 | ['LAPRINT prints a figure for inclusion in LaTeX documents. ',... |
---|
2530 | 'It creates an eps-file and a tex-file. The tex-file contains the ',... |
---|
2531 | 'annotation of the figure such as titles, labels and texts. The ',... |
---|
2532 | 'eps-file contains the non-text part of the figure and is called ',... |
---|
2533 | 'by the tex-file. The main advantage of using LaPrint ',... |
---|
2534 | 'is that the annotation can be neatly (e.g., including math ',... |
---|
2535 | 'mode and fancy font constructs) set within LaTeX.'],... |
---|
2536 | '',... |
---|
2537 | 'Prerequisites:',... |
---|
2538 | '~~~~~~~~~~~~~~',... |
---|
2539 | ['Matlab 6.1 or above is required. To process the LaTeX file, a ',... |
---|
2540 | 'LaTeX compiler (including the packages ''graphicx'' and ',... |
---|
2541 | '''psfrag'') and a dvi-to-postscript converter (like dvips) '... |
---|
2542 | 'is required. Optional tools are a postscript-viewer ',... |
---|
2543 | '(like ghostview), a postscript bounding box converter ',... |
---|
2544 | '(like epstool) and the LaTeX packages color ',... |
---|
2545 | 'and epsfig.'],... |
---|
2546 | '',... |
---|
2547 | 'Installation:',... |
---|
2548 | '~~~~~~~~~~~~~',... |
---|
2549 | ['LaPrint comes as a single m-file, which has to be placed ',... |
---|
2550 | 'somewhere in the Matlab search path. If you want LaPrint to ',... |
---|
2551 | 'call LaTeX and friends, the (system dependent) executables have ',... |
---|
2552 | 'to be defined using the GUI (see below).'],... |
---|
2553 | '',... |
---|
2554 | 'An example to get started:',... |
---|
2555 | '~~~~~~~~~~~~~~~~~~~~~~~~~~',... |
---|
2556 | ['It is recommended to switch off the Matlab TeX ',... |
---|
2557 | 'interpreter before creating a graphics to be processed by ',... |
---|
2558 | 'LaPrint:'],... |
---|
2559 | ' >> set(0,''DefaultTextInterpreter'',''none'')',... |
---|
2560 | 'Create an example graphics using',... |
---|
2561 | ' >> figure(1), clf',... |
---|
2562 | ' >> plot([1 2])',... |
---|
2563 | ' >> xlabel(''$x$'')',... |
---|
2564 | ' >> ylabel(''A straight line $f(x)=\alpha x + \beta$'')',... |
---|
2565 | ' >> text(1.1,1.9,{''\textbf{This figure is not exiting.}'',...',... |
---|
2566 | ' ''(but it shows some features of \texttt{laprint})''})',... |
---|
2567 | ['Note that the text uses LaTeX constructs like ''$.$'', ',... |
---|
2568 | '''\alpha'' and ''\textbf{}''. You can employ the full LaTeX ',... |
---|
2569 | 'repertoire here.'],... |
---|
2570 | ['Open the LaPrint graphical user interface (GUI) ',... |
---|
2571 | '(if you haven''t already done so), by typing'],... |
---|
2572 | ' >> laprint',... |
---|
2573 | ['Check if the GUI points to Figure Number 1, ',... |
---|
2574 | 'and save the graphics by pressing ''Go!''. ',... |
---|
2575 | 'This creates the files ''unnamed.tex'' and ''unnamed.eps''. ',... |
---|
2576 | 'These can be included in a LaTeX document as follows:'],... |
---|
2577 | ' % This is the LaTeX document testdoc.tex',... |
---|
2578 | ' \documentclass{article}',... |
---|
2579 | ' \usepackage{graphicx,color,psfrag}',... |
---|
2580 | ' \begin{document}',... |
---|
2581 | ' Here comes a Matlab figure created with \texttt{laprint}:\\',... |
---|
2582 | ' \input{unnamed}',... |
---|
2583 | ' \end{document}',... |
---|
2584 | ['This document can be compiled with LaTeX (to create ',... |
---|
2585 | '''testdoc.dvi'') and converted to postscript (to create ',... |
---|
2586 | '''testdoc.ps''). The document ''testdoc.ps'' will contain the ',... |
---|
2587 | 'Matlab graphics with LaTeX annotation. Observe that the ',... |
---|
2588 | 'figure is 12cm wide and that the fonts are scaled to 80% ',... |
---|
2589 | 'of their original size. This is the default behaviour of ',... |
---|
2590 | 'LaPrint, which can be adjusted using ''Options'' in the ',... |
---|
2591 | 'GUI menu bar (as will explained below).'],... |
---|
2592 | '',... |
---|
2593 | ['Instead of using the GUI you can also call LaPrint ',... |
---|
2594 | 'from the command line (or from an m-file) as follows:'],... |
---|
2595 | ' >> laprint(1,''unnamed'')',... |
---|
2596 | '',... |
---|
2597 | 'This is what LaPrint does:',... |
---|
2598 | '~~~~~~~~~~~~~~~~~~~~~~~~~~',... |
---|
2599 | 'Basically, LaPrint performs the following tasks:',... |
---|
2600 | ' - Take a preliminary copy of the figure. ',... |
---|
2601 | ' - In the preliminary figure, replace all text objects by tags.',... |
---|
2602 | [' - Save the preliminary figure (with tags) as an eps-file using ',... |
---|
2603 | 'the Matlab ''print'' command.'],... |
---|
2604 | [' - Create a tex-file which calls the eps-file (using the ',... |
---|
2605 | '''graphicx'' package) and replaces ',... |
---|
2606 | 'the tags by the original text (using the ''psfrag'' package).'],... |
---|
2607 | '',... |
---|
2608 | ['It is instructive to have a look into the tex-file ',... |
---|
2609 | '(''unnamed.tex'' in the above example). ',... |
---|
2610 | 'If your graphics contains huge amounts of LaTeX-code, then ',... |
---|
2611 | 'you might also consider editing the tex-file with your ',... |
---|
2612 | 'favourate LaTeX editor. You have however to be carefull, ',... |
---|
2613 | 'because LaPrint (using default settings) doesn''t care ',... |
---|
2614 | 'overwriting files.'],... |
---|
2615 | '',... |
---|
2616 | 'Using the LaPrint GUI: ',... |
---|
2617 | '~~~~~~~~~~~~~~~~~~~~~~',... |
---|
2618 | ['The behaviour of LaPrint can be controlled by various settings ',... |
---|
2619 | 'and options. Using the GUI, these can be set using the ''Options'' ',... |
---|
2620 | 'entry in the menu bar. Using LaPrint from the command line, ' ,... |
---|
2621 | 'these can be set by extra input arguments in the form of ',... |
---|
2622 | 'option/value pairs. In the following, the options are explained ',... |
---|
2623 | 'in some detail based on the GUI. Later, a table with the ',... |
---|
2624 | 'command line option/value pairs is given.'],... |
---|
2625 | '',... |
---|
2626 | 'In the main LaPrint window you can specify',... |
---|
2627 | ['-- the number of the Matlab figure to be saved (this must be ',... |
---|
2628 | 'the handle of an open Matlab window) and '],... |
---|
2629 | ['-- the basename of the files to be saved (for instance, if ',... |
---|
2630 | 'the basename is ''unnamed'', then ''unnamed.tex'' and ',... |
---|
2631 | '''unnamed.eps'' are created;).'],... |
---|
2632 | '',... |
---|
2633 | 'Via the menu bar you can control the following settings:',... |
---|
2634 | '',... |
---|
2635 | 'Options --> Sizes and Scalings ...',... |
---|
2636 | '',... |
---|
2637 | 'This opens a window where you can specify ',... |
---|
2638 | '-- the width (in cm) of the graphics in the LaTeX document;',... |
---|
2639 | '-- a scaling factor and',... |
---|
2640 | '-- whether you want fonts to be scaled.',... |
---|
2641 | ['The width controls the size of the graphics. Its height ',... |
---|
2642 | 'is computed such that the ratio of width to height of the ',... |
---|
2643 | 'figure on screen is retained. The factor controls the ',... |
---|
2644 | '''denseness'' of the graphics. For instance, if the width is ',... |
---|
2645 | 'w=12 and the factor is f=0.8, then the graphics in the ',... |
---|
2646 | 'eps-file will have width w/f=15 cm and the tex-file ',... |
---|
2647 | 'scales it down to 12 cm. This means that lines become thinner ',... |
---|
2648 | 'and fonts become smaller (as compared to w=12; f=1.0). ',... |
---|
2649 | 'Good values for papers are f=0.8 to f=1.0, ',... |
---|
2650 | 'and f=1.5 is a good value for presentations. ',... |
---|
2651 | 'Switching font scaling off only scales the graphics. ',... |
---|
2652 | 'You may want to experiment with some w/f/scalefont combinations ',... |
---|
2653 | 'to find out your personal preference. '],... |
---|
2654 | '',... |
---|
2655 | 'Options --> Translate Matlab Font Properties to LaTeX ',... |
---|
2656 | '',... |
---|
2657 | ['This option can be switched on/off. When off, all text ',... |
---|
2658 | 'will be set using the LaTeX font which is active while ',... |
---|
2659 | 'entering the tex-file (Matlab font settings are ignored). When ',... |
---|
2660 | 'on, Matlab font settings are translated to LaTeX font ',... |
---|
2661 | 'settings.'],... |
---|
2662 | '',... |
---|
2663 | 'Options --> Print Limits and Ticks as on Screen',... |
---|
2664 | '',... |
---|
2665 | ['This option can be switched on/off. When on, the axes ',... |
---|
2666 | 'limits and ticks are frozen. They appear in the LaTeX ',... |
---|
2667 | 'document as on screen. When off, they are adapted by ',... |
---|
2668 | 'Matlab.'],... |
---|
2669 | '',... |
---|
2670 | 'Options --> Keep Tick Labels within eps File',... |
---|
2671 | '',... |
---|
2672 | ['This option can be switched on/off. When on, the tick ',... |
---|
2673 | 'labels aren''t replaced by their LaTeX equivalents. This is ',... |
---|
2674 | 'useful for some 3D-plots.'],... |
---|
2675 | '',... |
---|
2676 | 'Options --> Set Tick Labels in LaTeX Math Mode',... |
---|
2677 | '',... |
---|
2678 | ['This option can be switched on/off. When on, the tick ',... |
---|
2679 | 'labels are surrounded by a ''$''.'],... |
---|
2680 | '',... |
---|
2681 | 'Options --> Equip the tex File with a Head',... |
---|
2682 | '',... |
---|
2683 | ['This option can be switched on/off. When on, the tex-file ',... |
---|
2684 | 'is equipped with a header with a bunch of comments (date, files, ',... |
---|
2685 | 'example, comment text,...).'],... |
---|
2686 | '',... |
---|
2687 | 'Options --> Comment in the Head of the tex File ...',... |
---|
2688 | '',... |
---|
2689 | ['This opens a window where you can specify a comment to be ',... |
---|
2690 | 'placed in the header of the tex file.'],... |
---|
2691 | '',... |
---|
2692 | 'Options --> Place a LaTeX caption in the tex File ...',... |
---|
2693 | '',... |
---|
2694 | ['This opens a window where you can enter a caption text. If this ',... |
---|
2695 | 'caption text is nonempty, it is placed as a \caption{} ',... |
---|
2696 | 'into the tex-file. Thus the text will appear in the LaTeX ',... |
---|
2697 | 'document. In addition a \label{} is placed in the tex-file ',... |
---|
2698 | 'which can be used to refer to the graphics. The label will ',... |
---|
2699 | 'be fig: followed by the basename of the files, e.g., ',... |
---|
2700 | '\label{fig:unnamed}.'],... |
---|
2701 | '',... |
---|
2702 | 'Options --> Place an Extra Picture in each Axes',... |
---|
2703 | '',... |
---|
2704 | ['This option can be switched on/off. When on, each axes in the ',... |
---|
2705 | 'figure is equipped with an empty LaTeX ''picture'' environment. ',... |
---|
2706 | 'It can be used to place some additional material into the ',... |
---|
2707 | 'figure by editing the tex-file.'],... |
---|
2708 | '',... |
---|
2709 | 'Options --> Length of the psfrag Replacement Strings ...',... |
---|
2710 | '',... |
---|
2711 | ['This opens a window where you can enter the length of the ',... |
---|
2712 | 'psfrag tags. If you have huge amounts of text, the default ',... |
---|
2713 | 'length of 3 might not suffice.'],... |
---|
2714 | '',... |
---|
2715 | 'Options --> Call LaPrint in verbose mode',... |
---|
2716 | '',... |
---|
2717 | ['This option can be switched on/off. When on, LaPrint issues ',... |
---|
2718 | 'some messages and warns before overwriting files.'],... |
---|
2719 | '',... |
---|
2720 | 'Options --> Copy Figure and Modify that Copy',... |
---|
2721 | '',... |
---|
2722 | ['This option can be switched on/off. When on, LaPrint takes ',... |
---|
2723 | 'a copy of the figure to be printed and places its tags into ',... |
---|
2724 | 'that copy. When done, the copy is deleted. When off, the ',... |
---|
2725 | 'figure is messed up by tags. It gets unusable, but you can see ',... |
---|
2726 | 'what LaPrint is doing. Besides, there are bugs in the Matlab ',... |
---|
2727 | '''copyobj'' command. If these show up, this option is useful.'],... |
---|
2728 | '',... |
---|
2729 | 'Options --> Matlab Print Command ...',... |
---|
2730 | '',... |
---|
2731 | ['This opens a window where you can enter the Matlab command to ',... |
---|
2732 | 'save the graphics in an eps-file. You can modify the standard ',... |
---|
2733 | 'print command to include or remove options (like ''-loose'') ',... |
---|
2734 | 'or employ a different command (like exportfig). '],... |
---|
2735 | '',... |
---|
2736 | 'Options --> Matlab Graphics Package',... |
---|
2737 | '',... |
---|
2738 | 'You can chose between ''graphicx'' and ''epsfig''.',... |
---|
2739 | '',... |
---|
2740 | 'Options --> Use LaTeX ''color'' package',... |
---|
2741 | '',... |
---|
2742 | ['This option can be switched on/off. When on, LaPrint places ',... |
---|
2743 | 'color commands into the tex file to optain colored text.'],... |
---|
2744 | '',... |
---|
2745 | 'Options --> View File ... --> Create a View File',... |
---|
2746 | '',... |
---|
2747 | ['This option can be switched on/off. When on, LaPrint creates ',... |
---|
2748 | 'a third file (the view-file), which is a complete LaTeX ',... |
---|
2749 | 'document showing the graphics. You can process this file ',... |
---|
2750 | 'with your favourate LaTeX- and dvi-to-postscript compiler. ',... |
---|
2751 | 'This is useful to have a quick look at the result and to ',... |
---|
2752 | 'create a futher eps-file containing everything (see below). ',... |
---|
2753 | 'The process of compiling the view-file can be automated using ',... |
---|
2754 | 'the options described below.'],... |
---|
2755 | '',... |
---|
2756 | 'Options --> View File ... --> Name of the View File',... |
---|
2757 | '',... |
---|
2758 | ['This opens a window where you can enter the name of the ',... |
---|
2759 | 'view-file to be created.'],... |
---|
2760 | '',... |
---|
2761 | 'Options --> View File ... --> Process the View File',... |
---|
2762 | '',... |
---|
2763 | ['This option can be switched on/off. When on, LaPrint ',... |
---|
2764 | 'calls the LaTeX compiler and its friends to process the ',... |
---|
2765 | 'view file. The names of the executables to be used and ',... |
---|
2766 | 'their syntax can be set using the following option. '],... |
---|
2767 | '',... |
---|
2768 | ['Options --> View File ... --> Executables for processing ',... |
---|
2769 | 'View File'],... |
---|
2770 | '',... |
---|
2771 | ['This opens a window where you can enter the names of up to 8 ',... |
---|
2772 | 'system commands to process the view-file. If you have less than 8 ',... |
---|
2773 | 'programs, you can leave the some of the fields empty. In all ',... |
---|
2774 | 'commands, LaPrint internally replaces the tag ''<viewfile>'' ',... |
---|
2775 | 'by the basename of the viewfile and the tag <filename> by ',... |
---|
2776 | 'the basename specified in the main LaPrint window. ',... |
---|
2777 | 'In following example you have to add the paths, if the ',... |
---|
2778 | 'commands are not in the system search path.'],... |
---|
2779 | '',... |
---|
2780 | 'To create and view a ps document:',... |
---|
2781 | ' cmd1: latex <viewfile>.tex',... |
---|
2782 | ' cmd2: dvips -o<viewfile>.ps <viewfile>.dvi',... |
---|
2783 | ' cmd3: gsview32 <viewfile>.ps (ghostview for Unix)',... |
---|
2784 | '',... |
---|
2785 | '',... |
---|
2786 | 'Preferences:',... |
---|
2787 | '~~~~~~~~~~~~',... |
---|
2788 | ['All options and settings of LaPrint can be ',... |
---|
2789 | '(internally and externally) stored ',... |
---|
2790 | 'in ''Preferences''. Suppose that you have changed, via ',... |
---|
2791 | 'the ''Options'' menu bar entry, the settings of LaPrint. ',... |
---|
2792 | 'You can make these settings to your preferred (default) ',... |
---|
2793 | 'settings by chosing'],... |
---|
2794 | '',... |
---|
2795 | 'Preferences --> Set Preferences to Current Settings',... |
---|
2796 | '',... |
---|
2797 | ['This means that future sessions of LaPrint load these ',... |
---|
2798 | 'settings on startup. You can also manually reload these ',... |
---|
2799 | 'settings by chosing'],... |
---|
2800 | '',... |
---|
2801 | 'Preferences --> Get Preferences',... |
---|
2802 | '',... |
---|
2803 | ['LaPrint has built-in (factory default) preferences, ',... |
---|
2804 | 'which you see when using ',... |
---|
2805 | 'LaPrint the first time. You can restore these defaults ',... |
---|
2806 | 'by chosing'],... |
---|
2807 | '',... |
---|
2808 | 'Preferences --> Get Factory Defaults',... |
---|
2809 | '',... |
---|
2810 | ['If you want your personal preferences be completely removed ',... |
---|
2811 | '(switching back to factory defaults on startup), you should ',... |
---|
2812 | 'chose'],... |
---|
2813 | '',... |
---|
2814 | 'Preferences --> Remove Preferences',... |
---|
2815 | '',... |
---|
2816 | ['If you have multiple projects running and want to use different ',... |
---|
2817 | 'settings simultaneously, you can save/load preferences ',... |
---|
2818 | 'to/from mat-files by chosing'],... |
---|
2819 | '',... |
---|
2820 | 'Preferences --> Save Current Settings to a File ',... |
---|
2821 | 'Preferences --> Load Settings from a File ',... |
---|
2822 | '',... |
---|
2823 | 'These open a new window asking for the name of a .mat file.',... |
---|
2824 | '',... |
---|
2825 | 'Using LaPrint from the command line:',... |
---|
2826 | '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',... |
---|
2827 | ['When using LaPrint from the command line (or from an m-file), ',... |
---|
2828 | 'the following syntax is required:'],... |
---|
2829 | '',... |
---|
2830 | ' laprint(figno,filename)',... |
---|
2831 | ' laprint(figno,filename,opta,vala,optb,valb,..)',... |
---|
2832 | '',... |
---|
2833 | 'where',... |
---|
2834 | ' figno : integer, figure to be printed',... |
---|
2835 | ' filename : string (character array), basename of files',... |
---|
2836 | ' to be created',... |
---|
2837 | ' opta,vala,.. : option and value pairs, where opta is one',... |
---|
2838 | ' of the following options and vala is',... |
---|
2839 | ' the corresponding value.',... |
---|
2840 | '',... |
---|
2841 | ['When calling LaPrint from the command line without ',... |
---|
2842 | 'option/value pairs, it uses the same '],... |
---|
2843 | ['settings/options as the GUI on startup. This means that ',... |
---|
2844 | 'it uses'],... |
---|
2845 | ['-- the factory default settings (if you havn''t ',... |
---|
2846 | 'stored your personal preferences using the GUI) or '],... |
---|
2847 | '-- your personal preferences. ',... |
---|
2848 | 'The factory default settings can be enforced by typing ',... |
---|
2849 | ' laprint(figno,filename,''options'',''factory'')',... |
---|
2850 | ['These settings can be overwritten by option/value pairs ',... |
---|
2851 | 'as explained in the following table.'],... |
---|
2852 | '',... |
---|
2853 | 'option |class/val.| remark',... |
---|
2854 | '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',... |
---|
2855 | '''width'' | <double> | width of the figure in the LaTeX',... |
---|
2856 | ' | | document (in cm).',... |
---|
2857 | '''factor'' | <double> | factor by which the figure in ',... |
---|
2858 | ' | | the LaTeX document is smaller than ',... |
---|
2859 | ' | | the figure in the postscript file.',... |
---|
2860 | '''scalefonts'' |''on''/''off''| scales the fonts with the ',... |
---|
2861 | ' | | figure (see option ''factor'').',... |
---|
2862 | '''keepfontprops'' |''on''/''off''| translates MATLAB font',... |
---|
2863 | ' | | properties (size, width, angle) into',... |
---|
2864 | ' | | corresponding LaTeX font properties.',... |
---|
2865 | '''asonscreen'' |''on''/''off''| prints ticks and lims ',... |
---|
2866 | ' | | ''as on screen''.',... |
---|
2867 | '''keepticklabels''|''on''/''off''| keeps the tick labels within',... |
---|
2868 | ' | | the eps-file (not using LaTeX).',... |
---|
2869 | '''mathticklabels''|''on''/''off''| tick labels are set in LaTeX',... |
---|
2870 | ' | | math mode',... |
---|
2871 | '''head'' |''on''/''off''| places a commenting header in ',... |
---|
2872 | ' | | the tex-file.',... |
---|
2873 | '''comment'' | <string> | places the comment <string> into',... |
---|
2874 | ' | | the header of the tex-file.',... |
---|
2875 | '''caption'' | <string> | adds \caption{<string>} and',... |
---|
2876 | ' | | \label{fig:<filename>} to the',... |
---|
2877 | ' | | tex-file.',... |
---|
2878 | '''extrapicture'' |''on''/''off''| adds empty picture environments',... |
---|
2879 | ' | | to the axes.',... |
---|
2880 | '''nzeros'' | <int> | uses replacement strings of',... |
---|
2881 | ' | | length <int> in the eps-file.',... |
---|
2882 | '''verbose'' |''on''/''off''| verbose mode; asks before',... |
---|
2883 | ' | | overwriting files and issues some ',... |
---|
2884 | ' | | more messages.',... |
---|
2885 | '''figcopy'' |''on''/''off''| directly modifies the original',... |
---|
2886 | ' | | figure.',... |
---|
2887 | '''printcmd'' | <string> | uses ''<string>'' as Matlab print',... |
---|
2888 | ' | | command.',... |
---|
2889 | '''package'' | <string> | uses the LaTeX graphics package',... |
---|
2890 | ' | | ''<string>''. Possible values are',... |
---|
2891 | ' | | ''graphicx'' and ''epsfig''.',... |
---|
2892 | '''color'' |''on''/''off''| uses colored fonts (using the',... |
---|
2893 | ' | | LaTeX ''color'' package).',... |
---|
2894 | '''createview'' |''on''/''off''| creates a view-file, which ',... |
---|
2895 | ' | | calls the tex-file.',... |
---|
2896 | '''viewfilename'' | <string> | Basename of the view-file.',... |
---|
2897 | '''processview'' |''on''/''off''| processes the view-file ',... |
---|
2898 | ' | | by LaTeX and friends.',... |
---|
2899 | '''cmd1'' | <string> | 1st Command in the sequence of',... |
---|
2900 | ' | | LaTeX and friends (enter an empty',... |
---|
2901 | ' | | string to skip this command).',... |
---|
2902 | '''cmd2'' | <string> | 2nd LaTeX/friend Command ',... |
---|
2903 | '''cmd3'' | <string> | 3rd LaTeX/friend Command ',... |
---|
2904 | '''cmd4'' | <string> | 4th LaTeX/friend Command ',... |
---|
2905 | '''cmd5'' | <string> | 5th LaTeX/friend Command ',... |
---|
2906 | '''cmd6'' | <string> | 6th LaTeX/friend Command ',... |
---|
2907 | '''cmd7'' | <string> | 7th LaTeX/friend Command ',... |
---|
2908 | '''cmd8'' | <string> | 8th LaTeX/friend Command ',... |
---|
2909 | '''options'' | <string> | This option can be used to ',... |
---|
2910 | ' | | employ project-dependent ',... |
---|
2911 | ' | | preferences as follows:',... |
---|
2912 | ' | | 1) Save your preferences to a file ',... |
---|
2913 | ' | | using the GUI:',... |
---|
2914 | ' | | Preferences --> ',... |
---|
2915 | ' | | Save Current Settings to a file',... |
---|
2916 | ' | | 2) Reload these preferences',... |
---|
2917 | ' | | with laprint:',... |
---|
2918 | ' | | >> laprint(1,''unnamed'',..',... |
---|
2919 | ' | | ''options'',<string>)',... |
---|
2920 | ' | | where <string> is the name of ',... |
---|
2921 | ' | | the mat-file with preferences.',... |
---|
2922 | '',... |
---|
2923 | '',... |
---|
2924 | ' ...................... ENJOY ! .......................',... |
---|
2925 | '',... |
---|
2926 | }; |
---|