summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/psfragx/laprint.m
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/psfragx/laprint.m')
-rw-r--r--Master/texmf-dist/doc/latex/psfragx/laprint.m2926
1 files changed, 2926 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/psfragx/laprint.m b/Master/texmf-dist/doc/latex/psfragx/laprint.m
new file mode 100644
index 00000000000..badef843362
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/psfragx/laprint.m
@@ -0,0 +1,2926 @@
+function laprint(figno,filename,varargin)
+%LAPRINT prints a figure for inclusion in LaTeX documents.
+% LaPrint creates an eps-file and a tex-file. The tex-file contains
+% the annotation of the figure such as titles, labels and texts. The
+% eps-file contains the non-text part of the figure as well as the
+% position of the text-objects. The packages 'graphicx' (or 'epsfig')
+% and 'psfrag' (and possibly ''color'') are required for the LaTeX
+% run. A postscript driver like 'dvips' is required for printing.
+%
+% Usage: >> laprint
+%
+% This opens a graphical user interface window, to control the
+% various settings. It includes a help facility. Just try it.
+%
+% As an alternative to the GUI you can call laprint from the command
+% line with various extra input arguments. These arguments are
+% explained in the help window of the GUI, which can be also be
+% opened using the command
+% >> laprint helpwindow
+%
+% There is an Users Guide available at
+% http://www.uni-kassel.de/fb16/rat/matlab/laprint/laprintdoc.ps
+
+% (c) Arno Linnemann. All rights reserved.
+% The author of this program assumes no responsibility for any errors
+% or omissions. In no event shall he be liable for damages arising out of
+% any use of the software. Redistribution of the unchanged file is allowed.
+% Distribution of changed versions is allowed provided the file is renamed
+% and the source and authorship of the original version is acknowledged in
+% the modified file.
+
+% Please report bugs, suggestions and comments to:
+% Arno Linnemann
+% Control and Automation
+% Department of Electrical and Computer Engineering
+% University of Kassel
+% 34109 Kassel
+% Germany
+% mailto:linnemann@uni-kassel.de
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%
+%%%% Initialize
+%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+laprintident = '3.16 (13.9.2004)';
+vers = version;
+vers = eval(vers(1:3));
+if vers < 6.1
+ error('Sorry. Matlab 6.1 or above is required.')
+end
+
+hf=131;
+hhf=132;
+
+% no output
+if nargout
+ error('No output argument, please.')
+end
+
+inter=get(0,'defaulttextinterpreter');
+if ~strcmp(inter,'none')
+ warning('LaPrint:general',['It is recommended to switch off the '...
+ 'text interpreter\nbefore creating a figure to be saved '...
+ 'with LaPrint. Use the command\n',...
+ ' >> set(0,''defaulttextinterpreter'',''none'').'])
+end
+
+if nargin==0
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %%%%
+ %%%% GUI
+ %%%%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ try
+ delete(hf)
+ end
+ try
+ delete(hhf)
+ end
+
+ %---------------------------------
+ % open window
+ %---------------------------------
+
+ hf = figure(hf);
+ clf reset;
+ set(hf,'NumberTitle','off',...
+ 'Name','LaPrint (LaTeX Print)',...
+ 'Units','points',...
+ 'CloseRequestFcn','laprint(''quit'');',...
+ 'menubar','none')
+ h = uicontrol('Parent',hf,'Units','points');
+ fsize = get(h,'Fontsize');
+ delete(h)
+ posf = get(hf,'Position');
+ figheight = 10*fsize;
+ figwidth = 32*fsize;
+ posf = [ posf(1) posf(2)+posf(4)-figheight figwidth figheight];
+ set(hf,'Position',posf)
+ uicontrol('Parent',hf,'style','frame','Units','points',...
+ 'Position',[0 0 figwidth figheight])
+ curh = figheight-0*fsize;
+
+ LAPRINTHAN=struct('figno',{0},'filename',{0},...
+ 'keepfontprops',{0},'asonscreen',{0},'keepticklabels',{0},...
+ 'mathticklabels',{0},'head',{0},'extrapicture',{0},...
+ 'verbose',{0},'figcopy',{0},'package_epsfig',{0},...
+ 'package_graphicx',{0},'color',{0},'createview',{0},...
+ 'processview',{0});
+
+ %---------------------------------
+ % figure no.
+ %---------------------------------
+
+ loch = 1.7*fsize;
+ curh = curh-loch-1.5*fsize;
+ h = uicontrol('Parent',hf,...
+ 'style','text',...
+ 'Units','points',...
+ 'Position',[1*fsize curh 18*fsize loch],...
+ 'HorizontalAlignment','left',...
+ 'string','Number of Figure to be saved:');
+ h = uicontrol('Parent',hf,...
+ 'style','edit',...
+ 'Units','points',...
+ 'Position',[19*fsize curh 12*fsize loch],...
+ 'HorizontalAlignment','left',...
+ 'BackgroundColor',[1 1 1],...
+ 'Callback','laprint(''figno'');');
+ LAPRINTHAN.figno = h;
+
+ %---------------------------------
+ % filename
+ %---------------------------------
+
+ loch = 1.7*fsize;
+ curh = curh-loch-1*fsize;
+ h = uicontrol('Parent',hf,...
+ 'style','text',...
+ 'Units','points',...
+ 'Position',[1*fsize curh 18*fsize loch],...
+ 'HorizontalAlignment','left',...
+ 'string','Basename of Files to be Created:');
+ h = uicontrol('Parent',hf,...
+ 'style','edit',...
+ 'Units','points',...
+ 'Position',[19*fsize curh 12*fsize loch],...
+ 'HorizontalAlignment','left',...
+ 'BackgroundColor',[1 1 1],...
+ 'Callback','laprint(''filename'');');
+ LAPRINTHAN.filename = h;
+
+ %---------------------------------
+ % save, quit
+ %---------------------------------
+
+ loch = 2*fsize;
+ curh = curh-loch-1*fsize;
+ h = uicontrol('Parent',hf,...
+ 'Style','pushbutton',...
+ 'Units','Points',...
+ 'Position',[19*fsize curh 5*fsize loch],...
+ 'HorizontalAlignment','center',...
+ 'String','Go !',...
+ 'Callback','laprint(''save'');');
+ h = uicontrol('Parent',hf,...
+ 'Style','pushbutton',...
+ 'Units','Points',...
+ 'Position',[26*fsize curh 5*fsize loch],...
+ 'HorizontalAlignment','center',...
+ 'String','Quit',...
+ 'Callback','laprint(''quit'');');
+
+ %---------------------------------
+ % options uimenue
+ %---------------------------------
+
+ hm1 = uimenu('label','Options');
+
+ uimenu(hm1,...
+ 'label','Sizes and Scalings ...',...
+ 'callback','laprint(''size'')');
+
+ LAPRINTHAN.keepfontprops = uimenu(hm1,...
+ 'label','Translate Matlab Font Properties to LaTeX',...
+ 'callback','laprint(''keepfontprops'')');
+
+ LAPRINTHAN.asonscreen = uimenu(hm1,...
+ 'label','Print Limits and Ticks as on Screen',...
+ 'separator','on',...
+ 'callback','laprint(''asonscreen'')');
+
+ LAPRINTHAN.keepticklabels = uimenu(hm1,...
+ 'label','Keep Tick Labels within eps File',...
+ 'callback','laprint(''keepticklabels'')');
+
+ LAPRINTHAN.mathticklabels = uimenu(hm1,...
+ 'label','Set Tick Labels in LaTeX Math Mode',...
+ 'callback','laprint(''mathticklabels'')');
+
+ LAPRINTHAN.head = uimenu(hm1,...
+ 'label','Equip the tex File with a Head',...
+ 'separator','on',...
+ 'callback','laprint(''head'')');
+
+ uimenu(hm1,...
+ 'label','Comment in the Head of the tex File ...',...
+ 'callback','laprint(''comment'')');
+
+ uimenu(hm1,...
+ 'label','Place a LaTeX Caption in the tex File ...',...
+ 'callback','laprint(''caption'')');
+
+ LAPRINTHAN.extrapicture = uimenu(hm1,...
+ 'label','Place an Extra Picture in each Axes',...
+ 'callback','laprint(''extrapicture'')');
+
+ uimenu(hm1,...
+ 'label','Length of psfrag Replacement Strings ...',...
+ 'callback','laprint(''nzeros'')');
+
+ LAPRINTHAN.verbose = uimenu(hm1,...
+ 'label','Call LaPrint in Verbose Mode',...
+ 'separator','on',...
+ 'callback','laprint(''verbose'')');
+
+ LAPRINTHAN.figcopy = uimenu(hm1,...
+ 'label','Copy Figure and Modify that Copy',...
+ 'callback','laprint(''figcopy'')');
+
+ uimenu(hm1,...
+ 'label','Matlab Print Command ...',...
+ 'separator','on',...
+ 'callback','laprint(''printcmd'')');
+
+ h=uimenu(hm1,...
+ 'separator','on',...
+ 'label','LaTeX Graphics Package');
+
+ LAPRINTHAN.package_graphicx = uimenu(h,...
+ 'label','graphicx',...
+ 'callback','laprint(''package_graphicx'')');
+
+ LAPRINTHAN.package_epsfig = uimenu(h,...
+ 'label','epsfig',...
+ 'callback','laprint(''package_epsfig'')');
+
+ LAPRINTHAN.color = uimenu(hm1,...
+ 'label','Use LaTeX ''color'' Package',...
+ 'callback','laprint(''color'')');
+
+ h = uimenu(hm1,...
+ 'label','View File ...',...
+ 'separator','on');
+
+ LAPRINTHAN.createview = uimenu(h,...
+ 'label','Create a View File',...
+ 'callback','laprint(''createview'')');
+
+ uimenu(h,...
+ 'label','Name of the View File ...',...
+ 'callback','laprint(''viewfilename'')');
+
+ LAPRINTHAN.processview = uimenu(h,...
+ 'label','Process the View File',...
+ 'separator','on',...
+ 'callback','laprint(''processview'')');
+
+ uimenu(h,...
+ 'label','Executables for Processing View File...',...
+ 'callback','laprint(''cmdsview'')');
+
+ %---------------------------------
+ % Preferences uimenue
+ %---------------------------------
+
+ hm3=uimenu('label','Preferences');
+
+ uimenu(hm3,...
+ 'label','Get Preferences',...
+ 'callback','laprint(''getpref'')')
+
+ uimenu(hm3,...
+ 'label','Set Preferences to Current Settings',...
+ 'callback','laprint(''setpref'')')
+
+ uimenu(hm3,...
+ 'label','Remove Preferences',...
+ 'callback','laprint(''rmpref'')')
+
+ uimenu(hm3,...
+ 'label','Save Current Settings to a File ...',...
+ 'separator','on',...
+ 'callback','laprint(''savepref'')')
+
+ uimenu(hm3,...
+ 'label','Load Settings from a File ...',...
+ 'callback','laprint(''loadpref'')')
+
+ uimenu(hm3,...
+ 'label','Get Factory Defaults',...
+ 'separator','on',...
+ 'callback','laprint(''factory'')')
+
+
+ %---------------------------------
+ % Help uimenue
+ %---------------------------------
+
+ hm2=uimenu('label','Help');
+
+ uimenu(hm2,...
+ 'label',['LaPrint Online Help ...'],...
+ 'callback','laprint(''helpwindow'')');
+
+ uimenu(hm2,...
+ 'label','Get the LaPrint Users Guide',...
+ 'callback',['web www.uni-kassel.de/fb16/rat/matlab',...
+ '/laprint/laprintdoc.ps -browser'])
+
+ uimenu(hm2,...
+ 'label',['Look for a newer version of LaPrint ' ...
+ '(Matlab Central File Exchange)...'],...
+ 'callback',['web http://www.mathworks.de/matlabcentral/',...
+ 'fileexchange/loadFile.do?objectId=4638',...
+ '&objectType=file -browser'])
+
+ uimenu(hm2,...
+ 'label','Version and Author ...',...
+ 'callback','laprint(''whois'')')
+
+ %---------------------------------
+ % make hf invisible
+ %---------------------------------
+
+ set(hf,'HandleVisibility','callback')
+
+ %---------------------------------
+ % get settings
+ %---------------------------------
+
+ LAPRINTOPT = prefsettings;
+ if isempty(LAPRINTOPT)
+ LAPRINTOPT = factorysettings;
+ end
+
+ %---------------------------------
+ % get figure
+ %---------------------------------
+
+ gcfig=gcf;
+ if gcfig == hf
+ allfigs = findobj('type','figure');
+ allfigs = allfigs(find(allfigs~=hf));
+ if length(allfigs)
+ figno = allfigs(1);
+ else
+ figure(1)
+ figno=1;
+ end
+ else
+ figno=gcfig;
+ end
+ LAPRINTOPT.figno = figno;
+
+ %---------------------------------
+ % update
+ %---------------------------------
+
+ updategui(LAPRINTHAN,LAPRINTOPT)
+ sethf(hf,LAPRINTHAN,LAPRINTOPT)
+ figure(hf)
+
+ %---------------------------------
+ % done
+ %---------------------------------
+
+ return
+
+end % if nargin==0
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%
+%%%% callback calls ('factory' and 'getprefs' also
+%%%% used from command line)
+%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if isa(figno,'char')
+
+ switch figno
+ case 'figno'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ LAPRINTOPT.figno=eval(get(LAPRINTHAN.figno,'string'));
+ figure(LAPRINTOPT.figno)
+ figure(hf)
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'filename'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ LAPRINTOPT.filename=get(LAPRINTHAN.filename,'string');
+ [texfullnameext,texbasenameext,texbasename,texdirname] = ...
+ getfilenames(LAPRINTOPT.filename,'tex',0);
+ [epsfullnameext,epsbasenameext,epsbasename,epsdirname] = ...
+ getfilenames(LAPRINTOPT.filename,'eps',0);
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'save'
+% lapcmd = [ 'laprint(' int2str(LAPRINTOPT.figno) ...
+% ', ''' LAPRINTOPT.filename ''''...
+% ', ''options'', LAPRINTOPT)'];
+ lapcmd = 'laprint({})';
+ eval(lapcmd)
+ case 'quit'
+ delete(hf)
+ try
+ delete(hhf)
+ end
+ case 'size'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ answer = inputdlg({['Please enter the width (in centimeters) ',...
+ 'of the graphics in the LaTeX document (The height ',...
+ 'will be computed such that the aspect ratio of the ',...
+ 'figure on screen is retained.) :'],...
+ ['Please enter the factor by which the size of the '...
+ 'graphics in the LaTeX document differs from the size of the '...
+ 'Postscipt graphics ( Explaination: A factor <1 scales ',...
+ 'the picture down. This means that lines become thinner ',...
+ 'and fonts become smaller. ) :'],...
+ ['Please specify if you want to scale the fonts along with ',...
+ 'the graphics (enter ''on'' or ''off'') : '] },...
+ 'LaPrint Settings',1,{num2str(LAPRINTOPT.width),...
+ num2str(LAPRINTOPT.factor),...
+ valueyn(LAPRINTOPT.scalefonts)},'on');
+ if length(answer)
+ LAPRINTOPT.width=eval(answer{1});
+ LAPRINTOPT.factor = eval(answer{2});
+ LAPRINTOPT.scalefonts = value01(answer{3});
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'keepfontprops'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.keepfontprops==1
+ LAPRINTOPT.keepfontprops=0;
+ set(LAPRINTHAN.keepfontprops,'check','off')
+ else
+ LAPRINTOPT.keepfontprops=1;
+ set(LAPRINTHAN.keepfontprops,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'asonscreen'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.asonscreen==1
+ LAPRINTOPT.asonscreen=0;
+ set(LAPRINTHAN.asonscreen,'check','off')
+ else
+ LAPRINTOPT.asonscreen=1;
+ set(LAPRINTHAN.asonscreen,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'keepticklabels'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.keepticklabels==1
+ LAPRINTOPT.keepticklabels=0;
+ set(LAPRINTHAN.keepticklabels,'check','off')
+ else
+ LAPRINTOPT.keepticklabels=1;
+ set(LAPRINTHAN.keepticklabels,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'mathticklabels'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.mathticklabels==1
+ LAPRINTOPT.mathticklabels=0;
+ set(LAPRINTHAN.mathticklabels,'check','off')
+ else
+ LAPRINTOPT.mathticklabels=1;
+ set(LAPRINTHAN.mathticklabels,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'head'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.head==1
+ LAPRINTOPT.head=0;
+ set(LAPRINTHAN.head,'check','off')
+ else
+ LAPRINTOPT.head=1;
+ set(LAPRINTHAN.head,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'comment'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ answer = inputdlg({['Please enter a describing comment to '...
+ 'be placed into the head of the tex file:']},...
+ 'LaPrint Settings',1,{LAPRINTOPT.comment},'on');
+ if length(answer)
+ LAPRINTOPT.comment = answer{1};
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'caption'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ answer = inputdlg(['If the following text is nonempty, ' ...
+ 'then it will be placed as a \caption{} into the tex '...
+ 'file along with \label{fig:' LAPRINTOPT.filename '}. '...
+ 'Please enter the caption text:'],...
+ 'LaPrint Settings',1,{LAPRINTOPT.caption},'on');
+ if length(answer)
+ LAPRINTOPT.caption = answer{1};
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'extrapicture'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.extrapicture==1
+ LAPRINTOPT.extrapicture=0;
+ set(LAPRINTHAN.extrapicture,'check','off')
+ else
+ LAPRINTOPT.extrapicture=1;
+ set(LAPRINTHAN.extrapicture,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'nzeros'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ answer = inputdlg({['Please enter length of the psfrag replacement '...
+ 'strings (must be >= 3) :']},...
+ 'LaPrint Settings',1,{num2str(LAPRINTOPT.nzeros)},'on');
+ if length(answer)
+ LAPRINTOPT.nzeros = max(eval(answer{1}),3);
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'verbose'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.verbose==1
+ LAPRINTOPT.verbose=0;
+ set(LAPRINTHAN.verbose,'check','off')
+ else
+ LAPRINTOPT.verbose=1;
+ set(LAPRINTHAN.verbose,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'figcopy'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.figcopy==1
+ LAPRINTOPT.figcopy=0;
+ set(LAPRINTHAN.figcopy,'check','off')
+ else
+ LAPRINTOPT.figcopy=1;
+ set(LAPRINTHAN.figcopy,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'printcmd'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ answer = inputdlg({['Please enter the Matlab command '...
+ 'to be used for printing the eps file '...
+ '(LaPrint will internally replace <figurenumber> by the '...
+ 'number of the figure <filename.eps> by the ' ...
+ 'eps-filename and <filename> '...
+ 'by the basename of the file, respectively). You can add options '...
+ 'here (like ''-loose'') or use a different program '...
+ 'for printing (like ''exportfig'') :']},...
+ 'LaPrint Settings',1,{LAPRINTOPT.printcmd},'on');
+ if length(answer)
+ LAPRINTOPT.printcmd = answer{1};
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'package_epsfig'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ LAPRINTOPT.package='epsfig';
+ set(LAPRINTHAN.package_epsfig,'check','on')
+ set(LAPRINTHAN.package_graphicx,'check','off')
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'package_graphicx'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ LAPRINTOPT.package='graphicx';
+ set(LAPRINTHAN.package_epsfig,'check','off')
+ set(LAPRINTHAN.package_graphicx,'check','on')
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'color'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.color==1
+ LAPRINTOPT.color=0;
+ set(LAPRINTHAN.color,'check','off')
+ else
+ LAPRINTOPT.color=1;
+ set(LAPRINTHAN.color,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'createview'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.createview==1
+ LAPRINTOPT.createview=0;
+ LAPRINTOPT.processview=0;
+ set(LAPRINTHAN.createview,'check','off')
+ set(LAPRINTHAN.processview,'check','off')
+ else
+ LAPRINTOPT.createview=1;
+ set(LAPRINTHAN.createview,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'viewfilename'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ trydlg=1;
+ txt=['Please enter the name of the '...
+ 'viewfile (without extension .tex) : '];
+ txt2='';
+ while trydlg
+ answer = inputdlg({[txt txt2]},...
+ 'LaPrint Settings',1,{LAPRINTOPT.viewfilename},'on');
+ if length(answer)
+ if strcmp(answer{1},LAPRINTOPT.filename)
+ txt2=['The name must be different from the name of the '...
+ 'graphics file):'];
+ else
+ trydlg=0;
+ LAPRINTOPT.viewfilename = answer{1};
+ [viewfullnameext,viewbasenameext,viewbasename,viewdirname] = ...
+ getfilenames(LAPRINTOPT.viewfilename,'tex',0);
+ end
+ else
+ trydlg=0;
+ end
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'processview'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ if LAPRINTOPT.processview==1
+ LAPRINTOPT.processview=0;
+ set(LAPRINTHAN.processview,'check','off')
+ else
+ LAPRINTOPT.processview=1;
+ set(LAPRINTHAN.processview,'check','on')
+ LAPRINTOPT.createview=1;
+ set(LAPRINTHAN.createview,'check','on')
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'cmdsview'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ answer = inputdlg({...
+ ['Please enter up to 8 commands to process the view-file. ',...
+ 'Leave any of the fields empty, if you have ',...
+ 'less than 8 commands. ',...
+ 'In any of the following commands, LaPrint internally '...
+ 'replaces the tag <viewfile> by the name of the viewfile ',...
+ 'and the tag <filename> by the basename specified in the ',...
+ 'main LaPrint Window. ',...
+ 'At minimum you should enter the commands for the LaTeX ',...
+ 'compilation and for the dvi-to-postscript conversion ',...
+ 'here. See the LaPrint Online-Help for futher ',...
+ 'suggestions. ',...
+ 'Please enter the 1st command:'],...
+ 'Please enter the 2nd command:',...
+ 'Please enter the 3rd command:',...
+ 'Please enter the 4th command:',...
+ 'Please enter the 5th command:',...
+ 'Please enter the 6th command:',...
+ 'Please enter the 7th command:',...
+ 'Please enter the 8th command:'},...
+ 'LaPrint Settings',1,{LAPRINTOPT.cmd1,...
+ LAPRINTOPT.cmd2,LAPRINTOPT.cmd3,...
+ LAPRINTOPT.cmd4,LAPRINTOPT.cmd5,LAPRINTOPT.cmd6,...
+ LAPRINTOPT.cmd7,LAPRINTOPT.cmd8},'on');
+ if length(answer)==8
+ LAPRINTOPT.cmd1=answer{1};
+ LAPRINTOPT.cmd2=answer{2};
+ LAPRINTOPT.cmd3=answer{3};
+ LAPRINTOPT.cmd4=answer{4};
+ LAPRINTOPT.cmd5=answer{5};
+ LAPRINTOPT.cmd6=answer{6};
+ LAPRINTOPT.cmd7=answer{7};
+ LAPRINTOPT.cmd8=answer{8};
+ end
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'getpref'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ out = prefsettings;
+ if ~isempty(out)
+ oldfigno = LAPRINTOPT.figno; % keep this!
+ LAPRINTOPT = out;
+ LAPRINTOPT.figno = oldfigno;
+ else
+ errordlg('No LaPrint preferences available.')
+ end
+ updategui(LAPRINTHAN,LAPRINTOPT);
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'setpref'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ setpref('LaPrint','LAPRINTOPT',LAPRINTOPT);
+ case 'rmpref'
+ if ispref('LaPrint')
+ rmpref('LaPrint');
+ else
+ errordlg('Preference does not exist.')
+ end
+ case 'savepref'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ txt = 'Save preferences file ';
+ [preffile,prefpath]=uiputfile('laprint.mat',txt);
+ save([prefpath preffile],'LAPRINTOPT');
+ case 'loadpref'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ txt = ['Load preferences file '...
+ '(must be previously created by LaPrint)'];
+ [preffile,prefpath]=uigetfile('laprint.mat',txt);
+ if ~isequal(preffile,0) & ~isequal(prefpath,0)
+ oldfigno = LAPRINTOPT.figno; % keep this!
+ load([prefpath preffile]); % hope file contains correct
+ LAPRINTOPT.figno = oldfigno; % LAPRINTOPT
+ updategui(LAPRINTHAN,LAPRINTOPT);
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ end
+ case 'factory'
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ out = factorysettings;
+ if ~isempty(out)
+ oldfigno = LAPRINTOPT.figno; % keep this!
+ LAPRINTOPT = out;
+ LAPRINTOPT.figno = oldfigno;
+ else
+ errordlg('No LaPrint preferences available.')
+ end
+ updategui(LAPRINTHAN,LAPRINTOPT);
+ sethf(hf,LAPRINTHAN,LAPRINTOPT);
+ case 'helpwindow'
+ hhf=figure(hhf);
+ set(hhf,'Name','LaPrint Online Help',...
+ 'Numbertitle','off',...
+ 'menubar','none',...
+ 'HandleVisibility','callback',...
+ 'resize','on',...
+ 'ResizeFcn','laprint(''helpwindow'');');
+ hht=uicontrol('Parent',hhf,...
+ 'style','listbox',...
+ 'units','normalized',...
+ 'position',[0.005 0.005 0.9 0.99],...
+ 'BackgroundColor','w',...
+ 'Fontsize',12,...
+ 'foregroundcolor','k',...
+ 'FontName','FixedWidth',...
+ 'HorizontalAlignment','left');
+ [txt,hhtpos]=textwrap(hht,helptext);
+ set(hht,'string',txt)
+ set(hht,'position',[0.005 0.005 0.99 0.99])
+ set(hht,'HandleVisibility','callback')
+ case 'whois'
+ msgbox({['This is LaPrint, Version ' laprintident],...
+ '',...
+ 'To blame for LaPrint:',...
+ 'Arno Linnemann','Control and Automation',...
+ 'Department of Electrical and Computer Engineering',...
+ 'University of Kassel',...
+ '34109 Kassel',...
+ 'Germany',...
+ 'mailto:linnemann@uni-kassel.de'},...
+ 'LaPrint Info')
+ otherwise
+ error('unknown callback option')
+ end
+ return
+end % if isa(figno,'char')
+
+% nargin >=1 and ~isa(figno,'char')
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%
+%%%% PART 1 of advanced usage:
+%%%% Check inputs and initialize
+%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if isa(figno,'cell') % called from GUI (all set)
+
+ [LAPRINTHAN,LAPRINTOPT]=gethf(hf);
+ figno=LAPRINTOPT.figno;
+ filename=LAPRINTOPT.filename;
+
+else % advanced usage
+
+ % get settings
+ LAPRINTOPT = prefsettings;
+ if isempty(LAPRINTOPT)
+ LAPRINTOPT = factorysettings;
+ end
+
+ % modify prefs
+ if ~isa(figno,'double')
+ figno
+ error('This is not a figure handle.')
+ end
+ if ~any(get(0,'children')==figno)
+ figno
+ error('This is not a figure handle.')
+ end
+ LAPRINTOPT.figno = figno;
+
+ if nargin>1
+ if ~isa(filename,'char')
+ filename
+ error('This is not a file name.')
+ end
+ LAPRINTOPT.filename=filename;
+ end
+end
+
+% read and check command line options
+
+try % try old usage (Version 2.03)
+ if nargin <=2
+ error('lets take new usage')
+ end
+ % 2.03 defaults
+ width = 12;
+ factor = 0.8;
+ scalefonts = 1;
+ keepfontprops = 0;
+ asonscreen = 0;
+ keepticklabels = 0;
+ mathticklabels = 0;
+ head = 1;
+ comment = '';
+ caption = '';
+ extrapicture = 1;
+ nzeros = 5;
+ verbose = 0;
+ figcopy = 1;
+ printcmd = ['print(''-f<figurenumber>'',' ...
+ '''-deps'',''<filename.eps>'')'];
+ package = 'epsfig';
+ color = 0;
+ createview = 0;
+ viewfilename = [filename '_'];
+ processview = 0;
+ cmd1 = '';
+ cmd2 = '';
+ cmd3 = '';
+ cmd4 = '';
+ cmd5 = '';
+ cmd6 = '';
+ cmd7 = '';
+ cmd8 = '';
+ for i=1:nargin-2
+ if ~isa(varargin{i},'char')
+ error('Options must be character arrays.')
+ end
+ oriopt=varargin{i}(:)';
+ opt=[ lower(strrep(oriopt,' ','')) ' ' ];
+ if strcmp(opt(1:7),'verbose')
+ verbose=1;
+ elseif strcmp(opt(1:10),'asonscreen')
+ asonscreen=1;
+ elseif strcmp(opt(1:14),'keepticklabels')
+ keepticklabels=1;
+ elseif strcmp(opt(1:14),'mathticklabels')
+ mathticklabels=1;
+ elseif strcmp(opt(1:13),'keepfontprops')
+ keepfontprops=1;
+ elseif strcmp(opt(1:14),'noextrapicture')
+ extrapicture=0;
+ elseif strcmp(opt(1:14),'noextrapicture')
+ extrapicture=0;
+ elseif strcmp(opt(1:5),'loose')
+ printcmd = ['print(''-f<figurenumber>'',' ...
+ '''-deps'',''-loose'',''<filename.eps>'')'];
+ elseif strcmp(opt(1:9),'nofigcopy')
+ figcopy=0;
+ elseif strcmp(opt(1:12),'noscalefonts')
+ scalefonts=0;
+ elseif strcmp(opt(1:6),'nohead')
+ head=0;
+ elseif strcmp(opt(1:7),'caption')
+ eqpos=findstr(oriopt,'=');
+ if isempty(eqpos)
+ caption='Matlab Figure';
+ else
+ caption=oriopt(eqpos+1:length(oriopt));
+ end
+ elseif strcmp(opt(1:8),'comment=')
+ eqpos=findstr(oriopt,'=');
+ comment=oriopt(eqpos(1)+1:length(oriopt));
+ elseif strcmp(opt(1:9),'viewfile=')
+ createview=1;
+ eqpos=findstr(oriopt,'=');
+ viewfilename=oriopt(eqpos(1)+1:length(oriopt));
+ elseif strcmp(opt(1:6),'width=')
+ eval([ opt ';' ]);
+ elseif strcmp(opt(1:7),'factor=')
+ eval([ opt ';' ]);
+ else
+ error([ 'Option ' varargin{i} ' not recognized.'])
+ end
+ end
+
+ warning('LaPrint:general',['You are using the old LaPrint '...
+ 'syntax. This syntax might not be supported in '...
+ 'future releases of LaPrint.'])
+
+catch % old usage doesn't work, take new one
+
+ % restore preferences / factory defaults
+ width = LAPRINTOPT.width;
+ factor = LAPRINTOPT.factor;
+ scalefonts = LAPRINTOPT.scalefonts;
+ keepfontprops = LAPRINTOPT.keepfontprops;
+ asonscreen = LAPRINTOPT.asonscreen;
+ keepticklabels = LAPRINTOPT.keepticklabels;
+ mathticklabels = LAPRINTOPT.mathticklabels;
+ head = LAPRINTOPT.head;
+ comment = LAPRINTOPT.comment;
+ caption = LAPRINTOPT.caption;
+ extrapicture = LAPRINTOPT.extrapicture;
+ nzeros = LAPRINTOPT.nzeros;
+ verbose = LAPRINTOPT.verbose;
+ figcopy = LAPRINTOPT.figcopy;
+ printcmd = LAPRINTOPT.printcmd;
+ package = LAPRINTOPT.package;
+ color = LAPRINTOPT.color;
+ createview = LAPRINTOPT.createview;
+ viewfilename = LAPRINTOPT.viewfilename;
+ processview = LAPRINTOPT.processview;
+ cmd1 = LAPRINTOPT.cmd1;
+ cmd2 = LAPRINTOPT.cmd2;
+ cmd3 = LAPRINTOPT.cmd3;
+ cmd4 = LAPRINTOPT.cmd4;
+ cmd5 = LAPRINTOPT.cmd5;
+ cmd6 = LAPRINTOPT.cmd6;
+ cmd7 = LAPRINTOPT.cmd7;
+ cmd8 = LAPRINTOPT.cmd8;
+
+ if nargin > 2
+ if rem(nargin,2)
+ error('Option names/values must appear in pairs.')
+ end
+ for i=1:2:nargin-2
+ if ~isa(varargin{i},'char')
+ error('Option name must be a character array.')
+ end
+ opt = lower(strrep(varargin{i}(:)',' ',''));
+ val = varargin{i+1}(:)';
+ switch opt
+ case 'options'
+ if isa(val,'char')
+ if strcmp(val,'factory')
+ val = factorysettings;
+ else
+ load(val)
+ val = LAPRINTOPT;
+ end
+ end
+ if ~isa(val,'struct')
+ error('Value of options must be a structure array.')
+ end
+ % no error checking here!
+ width = val.width;
+ factor = val.factor;
+ scalefonts = val.scalefonts;
+ keepfontprops = val.keepfontprops;
+ asonscreen = val.asonscreen;
+ keepticklabels = val.keepticklabels;
+ mathticklabels = val.mathticklabels;
+ head = val.head;
+ comment = val.comment;
+ caption = val.caption;
+ extrapicture = val.extrapicture;
+ nzeros = val.nzeros;
+ verbose = val.verbose;
+ figcopy = val.figcopy;
+ printcmd = val.printcmd;
+ package = val.package;
+ color = val.color;
+ createview = val.createview;
+ viewfilename = val.viewfilename;
+ processview = val.processview;
+ cmd1 = val.cmd1;
+ cmd2 = val.cmd2;
+ cmd3 = val.cmd3;
+ cmd4 = val.cmd4;
+ cmd5 = val.cmd5;
+ cmd6 = val.cmd6;
+ cmd7 = val.cmd7;
+ cmd8 = val.cmd8;
+ case 'width'
+ if ~isa(val,'double')
+ error('Value of width must be a double.')
+ end
+ width = val;
+ case 'factor'
+ if ~isa(val,'double')
+ error('Value of factor must be a double.')
+ end
+ factor=val;
+ case 'scalefonts'
+ scalefonts = value01(val,opt);
+ case 'keepfontprops'
+ keepfontprops = value01(val,opt);
+ case 'asonscreen'
+ asonscreen = value01(val,opt);
+ case 'keepticklabels'
+ keepticklabels = value01(val,opt);
+ case 'mathticklabels'
+ mathticklabels = value01(val,opt) ;
+ case 'head'
+ head = value01(val,opt);
+ case 'comment'
+ if ~isa(val,'char')
+ error('Value of comment must be a character array.')
+ end
+ comment = val;
+ case 'caption'
+ if ~isa(val,'char')
+ error('Value of caption must be a character array.')
+ end
+ caption = val;
+ case 'extrapicture'
+ extrapicture = value01(val,opt);
+ case 'nzeros'
+ if ~isa(val,'double')
+ error('Value of nzeros must be a double.')
+ end
+ nzeros = val;
+ case 'verbose'
+ verbose = value01(val,opt);
+ case 'figcopy'
+ figcopy = value01(val,opt);
+ case 'printcmd'
+ if ~isa(val,'char')
+ error('Value of printcmd must be a character array.')
+ end
+ printcmd = val;
+ case 'package'
+ if ~isa(val,'char')
+ error('Value of package must be a character array.')
+ end
+ val = lower(strrep(val,' ',''));
+ switch val
+ case {'graphicx','epsfig'}
+ % fine
+ otherwise
+ error('Value of package is unknown.')
+ end
+ package = val;
+ case 'color'
+ color = value01(val,opt);
+ case 'createview'
+ createview = value01(val,opt);
+ case 'viewfilename'
+ if ~isa(val,'char')
+ error('Value of viewfilename must be a character array.')
+ end
+ viewfilename = val;
+ case 'processview'
+ processview = value01(val,opt);
+ case 'cmd1'
+ if ~isa(val,'char')
+ error('Value of cmd1 must be a character array.')
+ end
+ cmd1 = val;
+ case 'cmd2'
+ if ~isa(val,'char')
+ error('Value of cmd2 must be a character array.')
+ end
+ cmd2 = val;
+ case 'cmd3'
+ if ~isa(val,'char')
+ error('Value of cmd3 must be a character array.')
+ end
+ cmd3 = val;
+ case 'cmd4'
+ if ~isa(val,'char')
+ error('Value of cmd4 must be a character array.')
+ end
+ cmd4 = val;
+ case 'cmd5'
+ if ~isa(val,'char')
+ error('Value of cmd5 must be a character array.')
+ end
+ cmd5 = val;
+ case 'cmd6'
+ if ~isa(val,'char')
+ error('Value of cmd6 must be a character array.')
+ end
+ cmd6 = val;
+ case 'cmd7'
+ if ~isa(val,'char')
+ error('Value of cmd7 must be a character array.')
+ end
+ cmd7 = val;
+ case 'cmd8'
+ if ~isa(val,'char')
+ error('Value of cmd8 must be a character array.')
+ end
+ cmd8 = val;
+ otherwise
+ error(['Option ''' opt ''' unknown'])
+ end % switch opt
+ end % for i=3:2:nargin
+ end % if nargin > 2
+end % try / catch
+
+if verbose,
+ disp([ 'This is LaPrint, version ' laprintident '.' ]);
+end
+
+comment = strrep(strrep(comment,'\','\\'),'%','%%');
+caption = strrep(strrep(caption,'\','\\'),'%','%%');
+iscaption = logical(length(caption));
+
+if nzeros < 3
+ warning('LaPrint:general',...
+ 'The value of nzero should be >=3. I will use nzeros=3.')
+ nzeros=3;
+end
+
+if processview
+ createview=1;
+end
+
+if mathticklabels
+ Do='$';
+else
+ Do='';
+end
+
+% eps- and tex- filenames
+[epsfullnameext,epsbasenameext,epsbasename,epsdirname] = ...
+ getfilenames(filename,'eps',verbose);
+[texfullnameext,texbasenameext,texbasename,texdirname] = ...
+ getfilenames(filename,'tex',verbose);
+if ~strcmp(texdirname,epsdirname)
+ warning('LaPrint:files',['The eps-file and tex-file are '...
+ 'placed in different directories.']);
+end
+
+if createview | processview
+ [viewfullnameext,viewbasenameext,viewbasename,viewdirname] = ...
+ getfilenames(viewfilename,'tex',verbose);
+ if strcmp(texfullnameext,viewfullnameext)
+ viewfilename=[ viewfilename '_'];
+ warning('LaPrint:files',['The tex- and view-file coincide. '...
+ 'I''ll use '' ' viewfilename ' ''. Hope that''s ok.' ])
+ end
+ [viewfullnameext,viewbasenameext,viewbasename,viewdirname]= ...
+ getfilenames(viewfilename,'tex',verbose);
+ if ~strcmp(texdirname,viewdirname)
+ warning('LaPrint:files',['The eps-file and view-file are '...
+ 'placed in different directories.' ])
+ end
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%
+%%%% PART 2 of advanced usage:
+%%%% Create new figure, insert tags, and bookkeep original text
+%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% show all
+shh = get(0,'ShowHiddenHandles');
+set(0,'ShowHiddenHandles','on');
+
+% preparing check for copyobj bug
+figno_ori = figno;
+number_children_ori = length(get(figno_ori,'children'));
+
+% open new figure (if required) and set properties
+if figcopy
+ figno = copyobj(figno,0);
+ set(figno,'visible','off')
+ set(figno,'Numbertitle','off')
+ set(figno,'MenuBar','none')
+ pause(0.5)
+end
+
+if asonscreen
+ xlimmodeauto = findobj(figno,'xlimmode','auto');
+ xtickmodeauto = findobj(figno,'xtickmode','auto');
+ xticklabelmodeauto = findobj(figno,'xticklabelmode','auto');
+ ylimmodeauto = findobj(figno,'ylimmode','auto');
+ ytickmodeauto = findobj(figno,'ytickmode','auto');
+ yticklabelmodeauto = findobj(figno,'yticklabelmode','auto');
+ zlimmodeauto = findobj(figno,'zlimmode','auto');
+ ztickmodeauto = findobj(figno,'ztickmode','auto');
+ zticklabelmodeauto = findobj(figno,'zticklabelmode','auto');
+ set(xlimmodeauto,'xlimmode','manual')
+ set(xtickmodeauto,'xtickmode','manual')
+ set(xticklabelmodeauto,'xticklabelmode','manual')
+ set(ylimmodeauto,'ylimmode','manual')
+ set(ytickmodeauto,'ytickmode','manual')
+ set(yticklabelmodeauto,'yticklabelmode','manual')
+ set(zlimmodeauto,'ylimmode','manual')
+ set(ztickmodeauto,'ytickmode','manual')
+ set(zticklabelmodeauto,'yticklabelmode','manual')
+end
+set(figno,'paperunits','centimeters');
+set(figno,'units','centimeters');
+orip = get(figno,'Position');
+
+% determine width and height
+if factor <= 0
+ factor = width/orip(3);
+end
+latexwidth = width;
+epswidth = latexwidth/factor;
+epsheight = epswidth*orip(4)/orip(3);
+
+set(figno,'PaperPosition',[0 0 epswidth epsheight ])
+set(figno,'papersize',[epswidth epsheight])
+set(figno,'Position',[orip(1)+0.5 orip(2)-0.5 epswidth epsheight ])
+set(figno,'Name',[ 'To be printed; size: ' num2str(factor,3) ...
+ ' x (' num2str(epswidth,3) 'cm x ' num2str(epsheight,3) 'cm)' ])
+
+% some warnings
+if verbose
+ if (epswidth<13) | (epsheight<13*0.75)
+ warning('LaPrint:size',['The size of the eps-figure is quite '...
+ 'small. The text objects might not be properly set. '...
+ 'Reducing ''factor'' might help.'])
+ end
+ if latexwidth/epswidth<0.5
+ warning('LaPrint:size',['The size of the eps-figure is large ' ...
+ 'compared to the latex figure. '...
+ 'The text size might be too small. '...
+ 'Increasing ''factor'' might help.'])
+ end
+ if (orip(3)-epswidth)/orip(3) > 0.1
+ warning('LaPrint:size',['The size of the eps-figure is much '...
+ 'smaller than the original '...
+ 'figure on screen. Matlab might save different ticks '...
+ 'and ticklabels than in the original figure. '...
+ 'See option ''asonscreen''.'])
+ end
+ disp('Strike any key to continue.');
+ pause
+end
+
+%
+% TEXT OBJECTS: modify new figure
+%
+
+% find all text objects
+hxl = get(findobj(figno,'type','axes'),'xlabel');
+hyl = get(findobj(figno,'type','axes'),'ylabel');
+hzl = get(findobj(figno,'type','axes'),'zlabel');
+hti = get(findobj(figno,'type','axes'),'title');
+hte = findobj(figno,'type','text');
+
+% array of all text handles
+htext = unique([ celltoarray(hxl) celltoarray(hyl) celltoarray(hzl) ...
+ celltoarray(hti) celltoarray(hte)]);
+nt = length(htext);
+
+% set(celltoarray(hxl),'VerticalAlignment','top');
+% get alignments
+hora = get(htext,'HorizontalAlignment');
+vera = get(htext,'VerticalAlignment');
+align = cell(nt,1);
+for i=1:nt
+ align{i} = hora{i}(1);
+ switch vera{i}
+ case 'top'
+ align{i} = [align{i} 't'];
+ case 'cap'
+% if ~isempty(get(htext(i),'string'))
+% warning('LaPrint:text',['Using vertical ' ...
+% 'alignment ''top'' instead of ''cap''.'])
+% end
+ align{i} = [align{i} 't'];
+ case 'middle'
+ align{i} = [align{i} 'c'];
+ case 'baseline'
+ align{i} = [align{i} 'B'];
+ case 'bottom'
+ align{i} = [align{i} 'b'];
+ otherwise
+ warning('LaPrint:text',['Vertical alignment ' vera{i} ...
+ ' unknown. Using ''c''.'])
+ align{i} = [align{i} 'c'];
+ end
+end
+
+% generate new strings and store old ones
+oldstr = get(htext,'string');
+newstr = cell(nt,1);
+basestr = ['s' char(48*ones(1,nzeros-1))];
+extrastr = 0;
+for i=1:nt
+ osi = oldstr{i};
+ oldstr{i} = ['\setlength{\tabcolsep}{0pt}\begin{tabular}{' ...
+ align{i}(1) '}'];
+ isnonempty_osi = 0;
+ if strcmp(get(get(htext(i),'parent'),'tag'),'legend')
+ newstr1 = [];
+ if isa(osi,'cell')
+ % Legend/cell : Don't use tabular, employ extra strings
+ nlines = length(osi);
+ if nlines > 1
+ newstr{nt+extrastr+nlines-1} = [];
+ oldstr{nt+extrastr+nlines-1} = [];
+ htext((nt+extrastr+1):(nt+extrastr+nlines-1))=htext(i);
+ for line=1:nlines-1
+ oldstr{nt+extrastr+line} = ...
+ strrep(strrep(osi{line},'\','\\'),'%','%%');
+ newstr{nt+extrastr+line} = ...
+ overwritetail(basestr,nt+extrastr+line);
+ newstr1 = [newstr1; overwritetail(basestr,nt+extrastr+line)];
+ end
+ extrastr = extrastr+nlines-1;
+ end
+ if nlines > 0
+ oldstr{i} = strrep(strrep(osi{nlines},'\','\\'),'%','%%');
+ newstr{i} = overwritetail(basestr,i);
+ newstr1 = [newstr1; overwritetail(basestr,i)];
+ end
+ % replace strings in figure
+ set(htext(i),'string',cellstr(newstr1));
+ else
+ % Legend/matrix : Don't use tabular, employ extra strings
+ nlines=size(osi,1);
+ if nlines > 1
+ newstr{nt+extrastr+nlines-1} = [];
+ oldstr{nt+extrastr+nlines-1} = [];
+ htext((nt+extrastr+1):(nt+extrastr+nlines-1))=htext(i);
+ for line=1:nlines-1
+ oldstr{nt+extrastr+line} = ...
+ strrep(strrep(osi(line,:),'\','\\'),'%','%%');
+ newstr{nt+extrastr+line} = ...
+ overwritetail(basestr,nt+extrastr+line);
+ newstr1 = [newstr1; overwritetail(basestr,nt+extrastr+line)];
+ end
+ extrastr = extrastr+nlines-1;
+ end
+ if nlines > 0
+ oldstr{i} = strrep(strrep(osi(nlines,:),'\','\\'),'%','%%');
+ newstr{i} = overwritetail(basestr,i);
+ newstr1 = [newstr1; overwritetail(basestr,i)];
+ end
+ % replace strings in figure
+ set(htext(i),'string',newstr1);
+ end
+ else
+ % text, not a legend
+ if isa(osi,'cell')
+ nlines = length(osi);
+ if nlines > 1
+ for line=1:nlines-1
+ oldstr{i}=[oldstr{i} osi{line} '\\'];
+ isnonempty_osi = isnonempty_osi+length(osi{line});
+ end
+ if align{i}(2) == 'B'
+ warning('LaPrint:text',['Vertical Alignment ''baseline'' '...
+ 'in text with multiple rows might not match.'])
+ align{i}(2) = 't';
+ end
+ end
+ if nlines > 0
+ oldstr{i} = [oldstr{i} osi{nlines} '\end{tabular}'];
+ isnonempty_osi = isnonempty_osi+length(osi{nlines});
+ end
+ oldstr{i} = strrep(strrep(oldstr{i},'\','\\'),'%','%%');
+ if isnonempty_osi
+ newstr{i} = overwritetail(basestr,i);
+ else
+ newstr{i} = '';
+ end
+ % replace strings in figure
+ set(htext(i),'string',newstr{i});
+ else
+ nlines=size(osi,1);
+ if nlines > 1
+ for line=1:nlines-1
+ oldstr{i} = [oldstr{i} osi(line,:) '\\'];
+ isnonempty_osi = isnonempty_osi+length(osi(line,:));
+ end
+ if align{i}(2) == 'B'
+ warning('LaPrint:text',['Vertical Alignment ''baseline'' '...
+ 'in text with multiple rows might not match.'])
+ align{i}(2) = 't';
+ end
+ end
+ if nlines > 0
+ oldstr{i} = [oldstr{i} osi(nlines,:) '\end{tabular}'];
+ isnonempty_osi = isnonempty_osi+length(osi(nlines,:));
+ end
+ oldstr{i} = strrep(strrep(oldstr{i},'\','\\'),'%','%%');
+
+ if isnonempty_osi
+ newstr{i} = overwritetail(basestr,i);
+ else
+ newstr{i} = '';
+ end
+ % replace string in figure
+ set(htext(i),'string',newstr{i});
+ end % isa cell
+ end % isa legend
+end % for
+
+ntp = nt+extrastr;
+
+% Alignment of Legends
+if extrastr > 0
+ align{ntp} = [];
+ [align{nt+1:ntp}] = deal('lc');
+end
+
+% get font properties and create commands
+if ntp > 0
+ [fontsizecmd{1:ntp}] = deal('');
+ [fontanglecmd{1:ntp}] = deal('');
+ [fontweightcmd{1:ntp}] = deal('');
+ [colorcmd{1:ntp}] = deal('');
+ [colorclose{1:ntp}] = deal('');
+end
+selectfontcmd = '';
+
+if keepfontprops
+
+ % fontsize
+ set(htext,'fontunits','points');
+ fontsize = get(htext,'fontsize');
+ for i=1:ntp
+ fontsizecmd{i} = [ '\\fontsize{' num2str(fontsize{i}) '}{' ...
+ num2str(fontsize{i}*1.5) '}' ];
+ end
+
+ % fontweight
+ fontweight = get(htext,'fontweight');
+ for i=1:ntp
+ switch fontweight{i}
+ case 'light'
+ fontweightcmd{i} = [ '\\fontseries{l}\\mathversion{normal}' ];
+ case 'normal'
+ fontweightcmd{i} = [ '\\fontseries{m}\\mathversion{normal}' ];
+ case 'demi'
+ fontweightcmd{i} = [ '\\fontseries{sb}\\mathversion{bold}' ];
+ case 'bold'
+ fontweightcmd{i} = [ '\\fontseries{bx}\\mathversion{bold}' ];
+ otherwise
+ warning('LaPrint:text',['Unknown fontweight: ' fontweight{i} ])
+ fontweightcmd{i} = [ '\\fontseries{m}\\mathversion{normal}' ];
+ end
+ end
+
+ % fontangle
+ fontangle = get(htext,'fontangle');
+ for i=1:ntp
+ switch fontangle{i}
+ case 'normal'
+ fontanglecmd{i} = [ '\\fontshape{n}' ];
+ case 'italic'
+ fontanglecmd{i} = [ '\\fontshape{it}' ];
+ case 'oblique'
+ fontanglecmd{i} = [ '\\fontshape{it}' ];
+ otherwise
+ warning('LaPrint:text',['unknown fontangle: ' fontangle{i} ])
+ fontanglecmd{i} = [ '\\fontshape{n}' ];
+ end
+ end
+ selectfontcmd = '\\selectfont ';
+
+end
+
+if color & ntp>0
+ col = get(htext,'color');
+ bgcol = get(htext,'BackgroundColor');
+ ecol = get(htext,'EdgeColor');
+ for i=1:ntp
+ col0 = get(get(htext(i),'parent'),'color');
+ [coli,isc] = char2rgb(col{i},[0 0 0]);
+ [bgcoli,isbgc] = char2rgb(bgcol{i},col0);
+ [ecoli,isec] = char2rgb(ecol{i},col0);
+ if isbgc | isec
+ set(htext(i),'BackgroundColor','none')
+ set(htext(i),'EdgeColor','none')
+ colorcmd{i} = ['\\setlength{\\fboxsep}{2pt}\\fcolorbox[rgb]{' ...
+ num2str(ecoli(1)) ',' num2str(ecoli(2)) ',' ...
+ num2str(ecoli(3)) '}{' ...
+ num2str(bgcoli(1)) ',' num2str(bgcoli(2)) ',' ...
+ num2str(bgcoli(3)) '}{\\color[rgb]{' ...
+ num2str(coli(1)) ',' num2str(coli(2)) ',' num2str(coli(3)) '}' ];
+ colorclose{i} = '}';
+ else
+ colorcmd{i} = ['\\color[rgb]{' ...
+ num2str(coli(1)) ',' num2str(coli(2)) ',' num2str(coli(3)) '}' ];
+ end
+ end
+end
+
+%
+% LABELS: modify new figure
+%
+
+if ~keepticklabels
+
+ % all axes
+ hax = celltoarray(findobj(figno,'type','axes'));
+ na = length(hax);
+
+% % try to figure out if we have 3D axes an warn
+% issuewarning = 0;
+% for i=1:na
+% issuewarning = max(issuewarning,is3d(hax(i)));
+% end
+% if issuewarning
+% warning('LaPrint:label',['This seems to be a 3D plot. '...
+% 'The LaTeX labels are possibly incorrect. '...
+% 'The option ''keepticklabels'' might help. '...
+% 'Setting ''figcopy'' to ''off'' might be wise, too.'])
+% end
+
+ % try to figure out if we linear scale with extra factor
+ % and determine powers of 10
+ powers = NaN*zeros(na,3); % matrix with powers of 10
+ for i=1:na % all axes
+ allxyz = { 'x', 'y', 'z' };
+ for ixyz=1:3 % x,y,z
+ xyz = allxyz{ixyz};
+ ticklabelmode = get(hax(i),[ xyz 'ticklabelmode']);
+ if strcmp(ticklabelmode,'auto')
+ tick = get(hax(i),[ xyz 'tick']);
+ ticklabel = get(hax(i),[ xyz 'ticklabel']);
+ nticklabels = size(ticklabel,1);
+ nticks = length(tick);
+ if nticks==0,
+ powers(i,ixyz)=0;
+ nticklabels=0;
+ end
+ if nticklabels==0,
+ powers(i,ixyz)=0;
+ end
+ for k=1:nticklabels % all ticks
+ label = str2num(ticklabel(k,:));
+ if length(label)==0,
+ powers(i,ixyz) = 0;
+ break;
+ end
+ if ( label==0 ) & ( abs(tick(k))>1e-10 )
+ powers(i,ixyz) = 0;
+ break;
+ end
+ if label~=0
+ expon = log10(tick(k)/label);
+ rexpon = round(expon);
+ if abs(rexpon-expon)>1e-10
+ powers(i,ixyz) = 0;
+ break;
+ end
+ if isnan(powers(i,ixyz))
+ powers(i,ixyz) = rexpon;
+ else
+ if powers(i,ixyz)~=rexpon
+ powers(i,ixyz) = 0;
+ break;
+ end
+ end
+ end
+ end % k
+ else % if 'auto'
+ powers(i,ixyz) = 0;
+ end % if 'auto'
+ end % ixyz
+ end % i
+
+ % place text to be replaced by powers on y-axis
+ for i=1:na
+ allxyz = { 'x', 'y', 'z' };
+ ixyz=2; % x,y,z
+ xyz = allxyz{ixyz};
+ leftright=get(hax(i),'yaxislocation');
+ if powers(i,ixyz) & ~is3d(hax(i)) & isequal(leftright,'left')
+ powertext = ['ypower' int2str(i)];
+ xlimit = get(hax(i),'xlim');
+ ylimit = get(hax(i),'ylim');
+ htext = text(xlimit(1),ylimit(2)+...
+ 0.01*(ylimit(2)-ylimit(1)),...
+ powertext);
+ set(htext,'VerticalAlignment','Baseline');
+ end
+ end % i
+
+ % replace all ticklabels and bookkeep
+ nxlabel = zeros(1,na);
+ nylabel = zeros(1,na);
+ nzlabel = zeros(1,na);
+ allxyz={ 'x', 'y', 'z' };
+ for ixyz=1:3
+ xyz = allxyz{ixyz};
+ k=1;
+ if strcmp(xyz,'y')
+ basestr = [ 'v' char(48*ones(1,nzeros-1))];
+ else
+ basestr = [ xyz char(48*ones(1,nzeros-1))];
+ end
+ oldtl = cell(na,1);
+ newtl = cell(na,1);
+ nlabel = zeros(1,na);
+ for i=1:na
+ % set(hax(i),[ xyz 'tickmode' ],'manual')
+ % set(hax(i),[ xyz 'ticklabelmode' ],'manual')
+ oldtl{i} = chartocell(get(hax(i),[ xyz 'ticklabel' ]));
+ nlabel(i) = length(oldtl{i});
+ newtl{i} = cell(1,nlabel(i));
+ for j=1:nlabel(i)
+ newtl{i}{j} = overwritetail(basestr,k);
+ k = k+1;
+ oldtl{i}{j} = deblank(strrep(strrep(oldtl{i}{j},'\','\\'),...
+ '%','%%'));
+ end
+ set(hax(i),[ xyz 'ticklabel' ],newtl{i});
+ end
+ eval([ 'old' xyz 'tl=oldtl;' ]);
+ eval([ 'new' xyz 'tl=newtl;' ]);
+ eval([ 'n' xyz 'label=nlabel;' ]);
+ end
+
+ % determine latex commands for font properties
+
+ if keepfontprops
+
+ % ticklabel font size
+ afsize = zeros(na,1);
+ for i=1:na
+ afsize(i) = get(hax(i),'fontsize');
+ end
+ if (any(afsize ~= afsize(1) ))
+ warning('LaPrint:text',['Different font sizes for axes not '...
+ 'supported. All axes will have font size ' ...
+ num2str(afsize(1)) '.' ] )
+ end
+ afsizecmd = [ '\\fontsize{' num2str(afsize(1)) '}{' ...
+ num2str(afsize(1)*1.5) '}' ];
+
+ % ticklabel font weight
+ afweight = cell(na,1);
+ for i=1:na
+ afweight{i} = get(hax(i),'fontweight');
+ end
+ switch afweight{1}
+ case 'light'
+ afweightcmd = [ '\\fontseries{l}\\mathversion{normal}' ];
+ case 'normal'
+ afweightcmd = [ '\\fontseries{m}\\mathversion{normal}' ];
+ case 'demi'
+ afweightcmd = [ '\\fontseries{sb}\\mathversion{bold}' ];
+ case 'bold'
+ afweightcmd = [ '\\fontseries{bx}\\mathversion{bold}' ];
+ otherwise
+ warning('LaPrint:text',['unknown fontweight: ' afweight{1} ])
+ afweightcmd = [ '\\fontseries{m}\\mathversion{normal}' ];
+ end
+ for i=1:na
+ if ~strcmp(afweight{i},afweight{1})
+ warning('LaPrint:text',['Different font weights for axes '...
+ 'are not supported. All axes will have font weight ' ...
+ afweightcmd '.'])
+ end
+ end
+
+ % ticklabel font angle
+ afangle = cell(na,1);
+ for i=1:na
+ afangle{i} = get(hax(i),'fontangle');
+ end
+ switch afangle{1}
+ case 'normal'
+ afanglecmd = [ '\\fontshape{n}' ];
+ case 'italic'
+ afanglecmd = [ '\\fontshape{it}' ];
+ case 'oblique'
+ afanglecmd = [ '\\fontshape{it}' ];
+ otherwise
+ warning('LaPrint:text',['unknown fontangle: ' afangle{1} ])
+ afanglecmd=[ '\\fontshape{n}' ];
+ end
+ for i=1:na
+ if ~strcmp(afangle{i},afangle{1})
+ warning('LaPrint:text',['Different font angles for axes not '...
+ 'supported. All axes will have font angle ' ...
+ afanglecmd '.'] )
+ end
+ end
+
+ end
+
+ % ticklabel color
+ acolcmd='';
+ if color
+ acol=[];
+ allxyz={ 'x', 'y', 'z' };
+ acolwarn = 0;
+ for i=1:na
+ for ixyz=1:3
+ xyzcolor = [allxyz{ixyz} 'color'];
+ if ~isempty(get(hax(i),[allxyz{ixyz} 'ticklabel']))
+ if isempty(acol)
+ acol = char2rgb(get(hax(i),xyzcolor));
+ else
+ if any(char2rgb(get(hax(i),xyzcolor))~=acol)
+ acolwarn = 1;
+ end
+ end
+ end
+ end
+ end
+ if acolwarn
+ warning('LaPrint:label',['Different colors for axes not ' ...
+ 'supported. All ticklabels will have color [ ' ...
+ num2str(acol) ' ].' ] )
+ end
+ if ~isempty(acol)
+ if any(acol~=[0 0 0])
+ acolcmd = [ '\\color[rgb]{' num2str(acol(1)) ',' ...
+ num2str(acol(2)) ',' num2str(acol(3)) '}' ];
+ end
+ end
+ end
+
+ % ticklabel alignment
+ xyzalign = char([116*ones(na,1) 114*ones(na,1) 114*ones(na,1)]);
+ for i=1:na
+ switch get(hax(i),'XAxisLocation')
+ case 'top'
+ xyzalign(i,1)='B';
+ end
+ switch get(hax(i),'YAxisLocation')
+ case 'right'
+ xyzalign(i,2)='l';
+ end
+ end
+
+end
+
+%
+% extra picture environment
+%
+
+if extrapicture
+ unitlength = zeros(na,1);
+ ybound = zeros(na,1);
+ for i=na:-1:1 % reverse order, to keep axes in original order
+ if ~is3d(hax(i))
+ xlim = get(hax(i),'xlim');
+ ylim = get(hax(i),'ylim');
+ axes(hax(i));
+ hori = text(ylim(1),ylim(1),[ 'origin' int2str(i) ]);
+ set(hori,'VerticalAlignment','bottom');
+ set(hori,'Fontsize',2);
+ set(hax(i),'Units','normalized')
+ pos = get(hax(i),'Position');
+ unitlength(i) = pos(3)*epswidth;
+ ybound(i) = (pos(4)*epsheight)/(pos(3)*epswidth);
+ else
+ warning('LaPrint:extrapic',['Option ''extrapicture'' for 3D ' ...
+ 'axes not supported.'])
+ end
+ end
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%
+%%%% PART 3 of advanced usage:
+%%%% save eps and tex files
+%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% prevent matlab print command to modify lims and ticks
+% (empty, if asonscreen=1)
+if ~keepticklabels
+ xlimmodeauto = findobj(figno,'xlimmode','auto');
+ xtickmodeauto = findobj(figno,'xtickmode','auto');
+ xticklabelmodeauto = findobj(figno,'xticklabelmode','auto');
+ ylimmodeauto = findobj(figno,'ylimmode','auto');
+ ytickmodeauto = findobj(figno,'ytickmode','auto');
+ yticklabelmodeauto = findobj(figno,'yticklabelmode','auto');
+ zlimmodeauto = findobj(figno,'zlimmode','auto');
+ ztickmodeauto = findobj(figno,'ztickmode','auto');
+ zticklabelmodeauto = findobj(figno,'zticklabelmode','auto');
+ set(xlimmodeauto,'xlimmode','manual')
+ set(xtickmodeauto,'xtickmode','manual')
+ set(xticklabelmodeauto,'xticklabelmode','manual')
+ set(ylimmodeauto,'ylimmode','manual')
+ set(ytickmodeauto,'ytickmode','manual')
+ set(yticklabelmodeauto,'yticklabelmode','manual')
+ set(zlimmodeauto,'ylimmode','manual')
+ set(ztickmodeauto,'ytickmode','manual')
+ set(zticklabelmodeauto,'yticklabelmode','manual')
+end
+
+% create eps file
+cmd = strrep(printcmd,'<filename.eps>',epsfullnameext);
+cmd = strrep(cmd,'<filename>',filename);
+cmd = strrep(cmd,'<figurenumber>',int2str(figno));
+
+if verbose
+ disp([ 'executing: '' ' cmd ' ''' ]);
+end
+eval(cmd);
+
+%
+% create latex file
+%
+if verbose
+ disp([ 'writing to: '' ' texfullnameext ' ''' ])
+end
+fid = fopen(texfullnameext,'w');
+
+% head
+if head
+ fprintf(fid,[ '%% This file is generated by the MATLAB m-file' ...
+ ' laprint.m. It can be included\n']);
+ fprintf(fid,[ '%% into LaTeX documents using the packages ']);
+ fprintf(fid,package);
+ if color
+ fprintf(fid,', color');
+ end
+ fprintf(fid,[ ' and psfrag.\n' ]);
+ fprintf(fid, ['%% It is accompanied by a postscript file. ',...
+ 'A sample LaTeX file is:\n']);
+ fprintf(fid, '%% \\documentclass{article}\\usepackage{');
+ fprintf(fid,package);
+ if color
+ fprintf(fid,',color');
+ end
+ fprintf(fid, ',psfrag}\n');
+ fprintf(fid,[ '%% \\begin{document}\\input{' ...
+ texbasename '}\\end{document}\n' ]);
+ fprintf(fid, [ '%% See http://www.mathworks.de/matlabcentral'...
+ '/fileexchange/loadFile.do?objectId=4638\n']);
+ fprintf(fid, [ '%% for recent versions of laprint.m.\n' ]);
+ fprintf(fid, '%%\n');
+ fprintf(fid,[ '%% created by: ' 'LaPrint version ' ...
+ laprintident '\n' ]);
+ fprintf(fid,[ '%% created on: ' datestr(now) '\n' ]);
+ fprintf(fid,[ '%% eps bounding box: ' num2str(epswidth) ...
+ ' cm x ' num2str(epsheight) ' cm\n' ]);
+ fprintf(fid,[ '%% comment: ' comment '\n' ]);
+ fprintf(fid,'%%\n');
+else
+ fprintf(fid,[ '%% generated by laprint.m\n' ]);
+ fprintf(fid,'%%\n');
+end
+
+% go on
+fprintf(fid,'\\begin{psfrags}%%\n');
+%fprintf(fid,'\\fontsize{10}{12}\\selectfont%%\n');
+fprintf(fid,'\\psfragscanon%%\n');
+
+% text strings
+
+numbertext=0;
+for i=1:nt
+ numbertext = numbertext+length(newstr{i});
+end
+if numbertext>0,
+ fprintf(fid,'%%\n');
+ fprintf(fid,'%% text strings:\n');
+ for i=1:ntp
+ if length(newstr{i})
+ alig = strrep(align{i},'c','');
+ fprintf(fid,[ '\\psfrag{' newstr{i} '}[' alig '][' alig ']{' ...
+ fontsizecmd{i} fontweightcmd{i} fontanglecmd{i} ...
+ selectfontcmd colorcmd{i} oldstr{i} colorclose{i} '}%%\n' ]);
+ end
+ end
+end
+
+% labels
+
+if ~keepticklabels
+ if ~isempty(acolcmd)
+ fprintf(fid,'%%\n');
+ fprintf(fid,'%% axes ticklabel color:\n');
+ fprintf(fid,[ acolcmd '%%\n' ]);
+ end
+ if keepfontprops
+ fprintf(fid,'%%\n');
+ fprintf(fid,'%% axes font properties:\n');
+ fprintf(fid,[ afsizecmd afweightcmd '%%\n' ]);
+ fprintf(fid,[ afanglecmd '\\selectfont%%\n' ]);
+ end
+ nxlabel = zeros(1,na);
+ nylabel = zeros(1,na);
+ nzlabel = zeros(1,na);
+ for i=1:na
+ nxlabel(i) = length(newxtl{i});
+ nylabel(i) = length(newytl{i});
+ nzlabel(i) = length(newztl{i});
+ end
+
+ allxyz = { 'x', 'y', 'z' };
+ for ixyz=1:3
+ xyz = allxyz{ixyz};
+ eval([ 'oldtl=old' xyz 'tl;' ]);
+ eval([ 'newtl=new' xyz 'tl;' ]);
+ eval([ 'nlabel=n' xyz 'label;' ]);
+ if sum(nlabel) > 0
+ fprintf(fid,'%%\n');
+ fprintf(fid,[ '%% ' xyz 'ticklabels:\n']);
+ for i=1:na
+ poss = ['[' xyzalign(i,ixyz) '][' xyzalign(i,ixyz) ']'];
+ if nlabel(i)
+ if strcmp(get(hax(i),[ xyz 'scale']),'linear')
+ % lin scale
+ rexpon = powers(i,ixyz);
+ if ~rexpon
+ % no powers
+ for j=1:nlabel(i)
+ fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ...
+ Do oldtl{i}{j} Do '}%%\n' ]);
+ end
+ else
+ % powers
+ if ixyz==2
+ leftright=get(hax(i),'yaxislocation');
+ if ~is3d(hax(i)) & isequal(leftright,'left')
+ for j=1:nlabel(i)
+ fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ...
+ Do oldtl{i}{j} Do '}%%\n' ]);
+ end
+ fprintf(fid,[ '\\psfrag{ypower' int2str(i) ...
+ '}[Bl][Bl]{$\\times 10^{' ...
+ int2str(rexpon) '}$}%%\n' ]);
+ else
+ for j=1:nlabel(i)-1
+ fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ...
+ Do oldtl{i}{j} Do '}%%\n' ]);
+ end
+ if ~is3d(hax(i))
+ fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ...
+ '}' poss '{' ...
+ Do oldtl{i}{nlabel(i)} Do '$\\times 10^{'...
+ int2str(rexpon) '}$}%%\n' ]);
+ else
+ fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ...
+ '}' poss '{\\shortstack{' ...
+ Do oldtl{i}{nlabel(i)} Do '\\\\$\\times 10^{'...
+ int2str(rexpon) '}\\ $}}%%\n' ]);
+
+ end
+ end
+ elseif ixyz==1
+ for j=1:nlabel(i)-1
+ fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ...
+ Do oldtl{i}{j} Do '}%%\n' ]);
+ end
+ leftright=get(hax(i),'xaxislocation');
+ if isequal(leftright,'bottom')
+ fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ...
+ '}' poss '{\\shortstack{' ...
+ Do oldtl{i}{nlabel(i)} Do '\\\\$\\times 10^{'...
+ int2str(rexpon) '}\\ $}}%%\n' ]);
+ else
+ fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ...
+ '}' poss '{\\shortstack{$\\times 10^{' ...
+ int2str(rexpon) '}\\ $\\\\' ...
+ Do oldtl{i}{nlabel(i)} Do '}}%%\n' ]);
+ end
+ else
+ for j=1:nlabel(i)-1
+ fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{' ...
+ Do oldtl{i}{j} Do '}%%\n' ]);
+ end
+ fprintf(fid,[ '\\psfrag{' newtl{i}{nlabel(i)} ...
+ '}' poss '{' Do oldtl{i}{nlabel(i)} Do ...
+ '\\setlength{\\unitlength}{1ex}' ...
+ '\\begin{picture}(0,0)\\put(0.5,1.5){$\\times 10^{' ...
+ int2str(rexpon) '}$}\\end{picture}}%%\n' ]);
+ end
+ end % rexpon
+ else
+ % log scale
+ for j=1:nlabel(i)
+ fprintf(fid,[ '\\psfrag{' newtl{i}{j} '}' poss '{$10^{' ...
+ oldtl{i}{j} '}$}%%\n' ]);
+ end % for (log)
+ end % if linear
+ end % if nlabel(i)
+ end
+ end
+ end
+end
+
+% extra picture
+if extrapicture
+ fprintf(fid,'%%\n');
+ fprintf(fid,'%% extra picture(s):\n');
+ for i=1:na
+ fprintf(fid,[ '\\psfrag{origin' int2str(i) '}[lb][lb]{' ...
+ '\\setlength{\\unitlength}{' ...
+ num2str(unitlength(i),'%5.5f') 'cm}%%\n' ]);
+ fprintf(fid,[ '\\begin{picture}(1,' ...
+ num2str(ybound(i),'%5.5f') ')%%\n' ]);
+ %fprintf(fid,'\\put(0,0){}%% lower left corner\n');
+ %fprintf(fid,[ '\\put(1,' num2str(ybound(i),'%5.5f') ...
+ % '){}%% upper right corner\n' ]);
+ fprintf(fid,'\\end{picture}%%\n');
+ fprintf(fid,'}%%\n');
+ end
+end
+
+% figure
+fprintf(fid,'%%\n');
+fprintf(fid,'%% Figure:\n');
+if iscaption
+ fprintf(fid,[ '\\parbox{' num2str(latexwidth) 'cm}{\\centering%%\n' ]);
+end
+if ~scalefonts
+ switch package
+ case 'epsfig'
+ fprintf(fid,[ '\\epsfig{file=' epsbasenameext ',width=' ...
+ num2str(latexwidth) 'cm}%%\n' ]);
+ case 'graphicx'
+ fprintf(fid,[ '\\includegraphics[width=' num2str(latexwidth) ...
+ 'cm]{' epsbasenameext '}%%\n' ]);
+ otherwise
+ warning('LaPrint:general',['Package ''' package ''' not known. '...
+ 'I hope you know what you are doing...'])
+ end
+else
+ switch package
+ case 'epsfig'
+ fprintf(fid,[ '\\resizebox{' num2str(latexwidth) 'cm}{!}' ...
+ '{\\epsfig{file=' epsbasenameext '}}%%\n' ]);
+ case 'graphicx'
+ fprintf(fid,[ '\\resizebox{' num2str(latexwidth) 'cm}{!}' ...
+ '{\\includegraphics{' epsbasenameext '}}%%\n' ]);
+ otherwise
+ warning('LaPrint:general',['Package ''' package ''' not known. '...
+ 'I hope you know what you are doing...'])
+ end
+end
+if iscaption
+ fprintf(fid,[ '\\caption{' caption '}%%\n' ]);
+ fprintf(fid,[ '\\label{fig:' texbasename '}%%\n' ]);
+ fprintf(fid,[ '}%%\n' ]);
+end
+fprintf(fid,'\\end{psfrags}%%\n');
+fprintf(fid,'%%\n');
+fprintf(fid,[ '%% End ' texbasenameext '\n' ]);
+fclose(fid);
+
+set(figno,'Name','Printed by LaPrint')
+if figcopy
+ if verbose
+ disp('Strike any key to continue.');
+ pause
+ end
+ hlegend = findobj(figno,'Tag','legend');
+ set(hlegend,'DeleteFcn','')
+ close(figno)
+end
+
+% check for copyobj-bug --> should be ok now!
+number_children_new = length(get(figno_ori,'children'));
+if number_children_new < number_children_ori
+ if figcopy
+ warning(['LaPrint:general','Objects in the figure have been '...
+ 'deleted! This is due to a bug in matlabs '...
+ '''copyopj''. You might want to try to set '...
+ '''figcopy'' to ''off''.'])
+ else
+ warning('LaPrint:general',['Objects in the figure have been '...
+ 'deleted!'])
+ end
+ end
+
+%
+% create view file
+%
+
+if createview | processview
+ if verbose
+ disp([ 'writing to: '' ' viewfullnameext ' ''' ])
+ end
+ fid = fopen(viewfullnameext,'w');
+
+ if head
+ fprintf(fid,[ '%% This file is generated by laprint.m.\n' ]);
+ fprintf(fid,[ '%% It calls ' texbasenameext ...
+ ', which in turn calls ' epsbasenameext '.\n' ]);
+ fprintf(fid,[ '%% Process this file using, e.g.,\n' ]);
+ fprintf(fid,[ '%% latex ' viewbasenameext '\n' ]);
+ fprintf(fid,[ '%% dvips -o' viewbasename '.ps ' viewbasename ...
+ '.dvi\n']);
+ fprintf(fid,[ '%% ghostview ' viewbasename '.ps&\n' ]);
+ else
+ fprintf(fid,[ '%% generated by laprint.m\n' ]);
+ end
+
+ fprintf(fid,[ '\\documentclass{article}\n' ]);
+ fprintf(fid,[ '\\usepackage{' ]);
+ fprintf(fid,package);
+ if color
+ fprintf(fid,',color');
+ end
+ fprintf(fid,[ ',psfrag,a4}\n' ]);
+ fprintf(fid,[ '\\usepackage[latin1]{inputenc}\n' ]);
+ if ~strcmp(epsdirname,viewdirname)
+ fprintf(fid,[ '\\graphicspath{{' epsdirname '}}\n' ]);
+ end
+ fprintf(fid,[ '\\begin{document}\n' ]);
+ fprintf(fid,[ '\\pagestyle{empty}\n' ]);
+ if strcmp(texdirname,viewdirname)
+ fprintf(fid,[ ' \\input{' texbasenameext '}\n' ]);
+ else
+ fprintf(fid,[ ' \\input{' texdirname texbasenameext '}\n' ]);
+ end
+ fprintf(fid,[ '\\end{document}\n' ]);
+ fclose(fid);
+end
+
+% process view file
+
+if processview
+ conti=1;
+
+ for i=1:8
+ eval(['cmdi=cmd' int2str(i) ';'])
+ if ~isempty(cmdi) & conti
+ cmd = strrep(cmdi,'<viewfile>',viewbasename);
+ cmd = strrep(cmd,'<filename>',filename);
+ disp([ 'executing: '' ' cmd ' ''' ]);
+ [stat,resu]=system(cmd);
+ if stat %| isempty(strfind(resu,'Output written on'))
+ disp(resu)
+ conti=0;
+ end
+ end
+ end
+
+ if ~conti
+ disp('An error occured in the latex/friends sequence.')
+ end
+
+end
+
+set(0,'ShowHiddenHandles',shh);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%
+%%%% functions used
+%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function [fullnameext,basenameext,basename,dirname] = getfilenames(...
+ filename,extension,verbose);
+% appends an extension to a filename (as '/home/tom/tt') and determines
+% fullnameext: filename with extension and dirname, as '/home/tom/tt.tex'
+% basenameext: filename with extension without dirname, as 'tt.tex'
+% basename : filename without extension without dirname, as 'tt'
+% dirname : dirname without filename, as '/home/tom/'
+% In verbose mode, it asks if to overwrite or to modify.
+%
+[dirname, basename] = splitfilename(filename);
+fullnameext = [ dirname basename '.' extension ];
+basenameext = [ basename '.' extension ];
+if verbose
+ quest = (exist(fullnameext)==2);
+ while quest
+ yn = input([ strrep(strrep(fullnameext,'\','\\'),'%','%%') ...
+ ' exists. Overwrite? (y/n) '],'s');
+ if strcmp(yn,'y')
+ quest = 0;
+ else
+ filename = input( ...
+ [ 'Please enter new filename (without extension .' ...
+ extension '): ' ],'s');
+ [dirname, basename] = splitfilename(filename);
+ fullnameext = [ dirname basename '.' extension ];
+ basenameext = [ basename '.' extension ];
+ quest = (exist(fullnameext)==2);
+ end
+ end
+end
+if ( exist(dirname)~=7 & ~strcmp(dirname,[ '.' filesep ]) ...
+ & ~strcmp(dirname,filesep) )
+ error([ 'Directory ' dirname ' does not exist.' ] )
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function [dirname,basename] = splitfilename(filename);
+% splits filename into dir and base
+slashpos = findstr(filename,filesep);
+nslash = length(slashpos);
+nfilename = length(filename);
+if nslash
+ dirname = filename(1:slashpos(nslash));
+ basename = filename(slashpos(nslash)+1:nfilename);
+else
+ dirname = pwd;
+ nn=length(dirname);
+ if ~strcmp(dirname(nn),filesep)
+ dirname = [ dirname filesep ];
+ end
+ basename = filename;
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function yesno = is3d(haxes);
+% tries to figure out if axes is 3D
+yesno = 0;
+CameraPosition = get(haxes,'CameraPosition');
+CameraTarget = get(haxes,'CameraTarget');
+CameraUpVector = get(haxes,'CameraUpVector');
+if CameraPosition(1)~=CameraTarget(1)
+ yesno = 1;
+end
+if CameraPosition(2)~=CameraTarget(2)
+ yesno = 1;
+end
+if any(CameraUpVector~=[0 1 0])
+ yesno = 1;
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function b = celltoarray(a);
+% converts a cell of doubles to an array
+if iscell(a),
+ b = [];
+ for i=1:length(a),
+ b = [b a{i}];
+ end
+else,
+ b = a(:)';
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function b = chartocell(a)
+% converts a character array into a cell array of characters
+
+% convert to cell
+if isa(a,'char')
+ n = size(a,1);
+ b = cell(1,n);
+ for j=1:n
+ b{j}=a(j,:);
+ end
+else
+ b = a;
+end
+% convert to char
+n=length(b);
+for j=1:n
+ if isa(b{j},'double')
+ b{j} = num2str(b{j});
+ end
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function b = overwritetail(a,k)
+% overwrites tail of a by k
+% a,b: strings
+% k: integer
+ks = int2str(k);
+b = [ a(1:(length(a)-length(ks))) ks ];
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function [rgb,isc] = char2rgb(c,c0)
+% convert color definitions from character to rgb-vector
+
+isc = 1;
+if ~ischar(c)
+ rgb = c;
+else
+ switch c
+ case {'y','yellow'}
+ rgb = [1 1 0];
+ case {'m','magenta'}
+ rgb = [1 0 1];
+ case {'c','cyan'}
+ rgb = [0 1 1];
+ case {'r','red'}
+ rgb = [1 0 0];
+ case {'g','green'}
+ rgb = [0 1 0];
+ case {'b','blue'}
+ rgb = [0 0 1];
+ case {'w','white'}
+ rgb = [1 1 1];
+ case {'k','black'}
+ rgb = [0 0 0];
+ case 'none'
+ if nargin==2
+ rgb = char2rgb(c0);
+ else
+ rgb = [1 1 1];
+ end
+ isc = 0;
+ otherwise
+ warning('LaPrint:general',['Unknown Color: ''' c ...
+ '''. Taking black.'])
+ rgb = [0 0 0];
+ end
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function v = value01(val,opt)
+% convert off/on to 0/1
+
+if nargin==2
+ txt = ['Value of ' opt ' must be ''on'' or ''off'''];
+else
+ txt = ['Value must be ''on'' or ''off'''];
+end
+
+if ~isa(val,'char')
+ error(txt)
+end
+val = lower(strrep(val,' ',''));
+switch val
+ case 'on'
+ v = 1;
+ case 'off'
+ v = 0;
+ otherwise
+ error(txt)
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function v = valueyn(val)
+% convert 0/1 to off/on
+
+if ~isa(val,'double')
+ error([ 'Value must be ''0'' or ''1'''])
+end
+switch val
+ case 0
+ v = 'off';
+ case 1
+ v = 'on';
+ otherwise
+ error([ 'Value must be ''0'' or ''1'''])
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function sethf(hf,LAPRINTHAN,LAPRINTOPT)
+% store in UserData of gui
+
+set(hf,'UserData',{LAPRINTHAN,LAPRINTOPT})
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function [LAPRINTHAN,LAPRINTOPT]=gethf(hf)
+% load from UserData of gui
+
+d=get(hf,'UserData');
+LAPRINTHAN=d{1};
+LAPRINTOPT=d{2};
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function opt = prefsettings
+ if ispref('LaPrint','LAPRINTOPT')
+ opt = getpref('LaPrint','LAPRINTOPT');
+ else
+ opt = [];
+ end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function opt=factorysettings
+
+% try to find LaTeX and friends
+if ispc
+ try
+ latexpath = winqueryreg('HKEY_LOCAL_MACHINE',...
+ 'SOFTWARE\MiK\MiKTeX\CurrentVersion\MiKTeX','Install Root');
+ latexcmd = [latexpath '\miktex\bin\latex.exe -halt-on-error '...
+ '-interaction nonstopmode <viewfile>.tex'];
+ dvipscmd = [latexpath '\miktex\bin\dvips.exe -D600 -E* '...
+ '-o<viewfile>.eps <viewfile>.dvi'];
+ catch % hoping the path variable is properly set
+ latexcmd = ['latex.exe -halt-on-error '...
+ '-interaction nonstopmode <viewfile>.tex'];
+ dvipscmd = ['dvips.exe -D600 -E* '...
+ '-o<viewfile>.eps <viewfile>.dvi'];
+ end
+ epstoolcmd = ['C:\Ghostgum\epstool\bin\epstool.exe '...
+ '--bbox --copy --output '...
+ '<filename>_final.eps <viewfile>.eps'];
+ delcmd = ['del <viewfile>.eps <viewfile>.dvi ',...
+ '<viewfile>.aux <viewfile>.log ',...
+ '<viewfile>.pfg'];
+ gsviewcmd = 'C:\Ghostgum\gsview\gsview32.exe <filename>_final.eps&';
+else % hoping the path variable is properly set
+ latexcmd = ['latex -halt-on-error '...
+ '-interaction nonstopmode <viewfile>.tex'];
+ dvipscmd = ['dvips -D600 -E* '...
+ '-o<viewfile>.eps <viewfile>.dvi'];
+ epstoolcmd = ['epstool --bbox --copy --output '...
+ '<filename>_final.eps <viewfile>.eps'];
+ delcmd = ['rm <viewfile>.eps <viewfile>.dvi ',...
+ '<viewfile>.aux <viewfile>.log ',...
+ '<viewfile>.pfg'];
+ gsviewcmd = 'ghostview <filename>_final.eps&';
+end
+
+vers = version;
+vers = eval(vers(1:3));
+if vers < 6.5
+ colorvalue=0;
+else
+ colorvalue=1;
+end
+
+ opt = struct(...
+ 'figno',{1},...
+ 'filename','unnamed',...
+ 'width',12,...
+ 'factor',0.8,...
+ 'scalefonts',1,...
+ 'keepfontprops',0,...
+ 'asonscreen',0,...
+ 'keepticklabels',0,...
+ 'mathticklabels',0,...
+ 'head',1,...
+ 'comment','',...
+ 'caption','',...
+ 'extrapicture',0,...
+ 'nzeros',3,...
+ 'verbose',0,...
+ 'figcopy',1,...
+ 'printcmd',['print(''-f<figurenumber>'',' ...
+ '''-depsc'',''-painters'','...
+ '''<filename.eps>'')'],...
+ 'package','graphicx',...
+ 'color',colorvalue,...
+ 'createview',0,...
+ 'viewfilename','unnamed_',...
+ 'processview',0,...
+ 'cmd1',latexcmd,...
+ 'cmd2',dvipscmd,...
+ 'cmd3',epstoolcmd,...
+ 'cmd4',delcmd,...
+ 'cmd5',gsviewcmd,...
+ 'cmd6','',...
+ 'cmd7','',...
+ 'cmd8','');
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function updategui(LAPRINTHAN,LAPRINTOPT)
+% update gui
+
+set(LAPRINTHAN.figno,'string',num2str(LAPRINTOPT.figno))
+set(LAPRINTHAN.filename,'string',LAPRINTOPT.filename)
+% width, factor, scalefonts
+if LAPRINTOPT.keepfontprops
+ set(LAPRINTHAN.keepfontprops,'check','on')
+else
+ set(LAPRINTHAN.keepfontprops,'check','off')
+end
+if LAPRINTOPT.asonscreen
+ set(LAPRINTHAN.asonscreen,'check','on')
+else
+ set(LAPRINTHAN.asonscreen,'check','off')
+end
+if LAPRINTOPT.keepticklabels
+ set(LAPRINTHAN.keepticklabels,'check','on')
+else
+ set(LAPRINTHAN.keepticklabels,'check','off')
+end
+if LAPRINTOPT.mathticklabels
+ set(LAPRINTHAN.mathticklabels,'check','on')
+else
+ set(LAPRINTHAN.mathticklabels,'check','off')
+end
+if LAPRINTOPT.head
+ set(LAPRINTHAN.head,'check','on')
+else
+ set(LAPRINTHAN.head,'check','off')
+end
+% comment, caption
+if LAPRINTOPT.extrapicture
+ set(LAPRINTHAN.extrapicture,'check','on')
+else
+ set(LAPRINTHAN.extrapicture,'check','off')
+end
+% nzeros
+if LAPRINTOPT.verbose
+ set(LAPRINTHAN.verbose,'check','on')
+else
+ set(LAPRINTHAN.verbose,'check','off')
+end
+if LAPRINTOPT.figcopy
+ set(LAPRINTHAN.figcopy,'check','on')
+else
+ set(LAPRINTHAN.figcopy,'check','off')
+end
+% printcmd
+switch LAPRINTOPT.package
+ case 'epsfig'
+ set(LAPRINTHAN.package_epsfig,'check','on')
+ set(LAPRINTHAN.package_graphicx,'check','off')
+ case 'graphicx'
+ set(LAPRINTHAN.package_epsfig,'check','off')
+ set(LAPRINTHAN.package_graphicx,'check','on')
+end
+if LAPRINTOPT.color
+ set(LAPRINTHAN.color,'check','on')
+else
+ set(LAPRINTHAN.color,'check','off')
+end
+if LAPRINTOPT.createview
+ set(LAPRINTHAN.createview,'check','on')
+else
+ set(LAPRINTHAN.createview,'check','off')
+end
+% viewfilename
+if LAPRINTOPT.processview
+ set(LAPRINTHAN.processview,'check','on')
+else
+ set(LAPRINTHAN.processview,'check','off')
+end
+% cmd1, cmd2, cmd3, cmd4, cmd5, cmd6, cmd7, cmd8
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function txt = helptext()
+% help text
+txt={...
+'',...
+['LAPRINT prints a figure for inclusion in LaTeX documents. ',...
+'It creates an eps-file and a tex-file. The tex-file contains the ',...
+'annotation of the figure such as titles, labels and texts. The ',...
+'eps-file contains the non-text part of the figure and is called ',...
+'by the tex-file. The main advantage of using LaPrint ',...
+'is that the annotation can be neatly (e.g., including math ',...
+'mode and fancy font constructs) set within LaTeX.'],...
+'',...
+'Prerequisites:',...
+'~~~~~~~~~~~~~~',...
+['Matlab 6.1 or above is required. To process the LaTeX file, a ',...
+'LaTeX compiler (including the packages ''graphicx'' and ',...
+'''psfrag'') and a dvi-to-postscript converter (like dvips) '...
+'is required. Optional tools are a postscript-viewer ',...
+'(like ghostview), a postscript bounding box converter ',...
+'(like epstool) and the LaTeX packages color ',...
+'and epsfig.'],...
+'',...
+'Installation:',...
+'~~~~~~~~~~~~~',...
+['LaPrint comes as a single m-file, which has to be placed ',...
+'somewhere in the Matlab search path. If you want LaPrint to ',...
+'call LaTeX and friends, the (system dependent) executables have ',...
+'to be defined using the GUI (see below).'],...
+'',...
+'An example to get started:',...
+'~~~~~~~~~~~~~~~~~~~~~~~~~~',...
+['It is recommended to switch off the Matlab TeX ',...
+'interpreter before creating a graphics to be processed by ',...
+'LaPrint:'],...
+' >> set(0,''DefaultTextInterpreter'',''none'')',...
+'Create an example graphics using',...
+' >> figure(1), clf',...
+' >> plot([1 2])',...
+' >> xlabel(''$x$'')',...
+' >> ylabel(''A straight line $f(x)=\alpha x + \beta$'')',...
+' >> text(1.1,1.9,{''\textbf{This figure is not exiting.}'',...',...
+' ''(but it shows some features of \texttt{laprint})''})',...
+['Note that the text uses LaTeX constructs like ''$.$'', ',...
+'''\alpha'' and ''\textbf{}''. You can employ the full LaTeX ',...
+'repertoire here.'],...
+['Open the LaPrint graphical user interface (GUI) ',...
+'(if you haven''t already done so), by typing'],...
+' >> laprint',...
+['Check if the GUI points to Figure Number 1, ',...
+'and save the graphics by pressing ''Go!''. ',...
+'This creates the files ''unnamed.tex'' and ''unnamed.eps''. ',...
+'These can be included in a LaTeX document as follows:'],...
+' % This is the LaTeX document testdoc.tex',...
+' \documentclass{article}',...
+' \usepackage{graphicx,color,psfrag}',...
+' \begin{document}',...
+' Here comes a Matlab figure created with \texttt{laprint}:\\',...
+' \input{unnamed}',...
+' \end{document}',...
+['This document can be compiled with LaTeX (to create ',...
+'''testdoc.dvi'') and converted to postscript (to create ',...
+'''testdoc.ps''). The document ''testdoc.ps'' will contain the ',...
+'Matlab graphics with LaTeX annotation. Observe that the ',...
+'figure is 12cm wide and that the fonts are scaled to 80% ',...
+'of their original size. This is the default behaviour of ',...
+'LaPrint, which can be adjusted using ''Options'' in the ',...
+'GUI menu bar (as will explained below).'],...
+'',...
+['Instead of using the GUI you can also call LaPrint ',...
+'from the command line (or from an m-file) as follows:'],...
+' >> laprint(1,''unnamed'')',...
+'',...
+'This is what LaPrint does:',...
+'~~~~~~~~~~~~~~~~~~~~~~~~~~',...
+'Basically, LaPrint performs the following tasks:',...
+' - Take a preliminary copy of the figure. ',...
+' - In the preliminary figure, replace all text objects by tags.',...
+[' - Save the preliminary figure (with tags) as an eps-file using ',...
+'the Matlab ''print'' command.'],...
+[' - Create a tex-file which calls the eps-file (using the ',...
+'''graphicx'' package) and replaces ',...
+'the tags by the original text (using the ''psfrag'' package).'],...
+'',...
+['It is instructive to have a look into the tex-file ',...
+'(''unnamed.tex'' in the above example). ',...
+'If your graphics contains huge amounts of LaTeX-code, then ',...
+'you might also consider editing the tex-file with your ',...
+'favourate LaTeX editor. You have however to be carefull, ',...
+'because LaPrint (using default settings) doesn''t care ',...
+'overwriting files.'],...
+'',...
+'Using the LaPrint GUI: ',...
+'~~~~~~~~~~~~~~~~~~~~~~',...
+['The behaviour of LaPrint can be controlled by various settings ',...
+'and options. Using the GUI, these can be set using the ''Options'' ',...
+'entry in the menu bar. Using LaPrint from the command line, ' ,...
+'these can be set by extra input arguments in the form of ',...
+'option/value pairs. In the following, the options are explained ',...
+'in some detail based on the GUI. Later, a table with the ',...
+'command line option/value pairs is given.'],...
+'',...
+'In the main LaPrint window you can specify',...
+['-- the number of the Matlab figure to be saved (this must be ',...
+'the handle of an open Matlab window) and '],...
+['-- the basename of the files to be saved (for instance, if ',...
+'the basename is ''unnamed'', then ''unnamed.tex'' and ',...
+'''unnamed.eps'' are created;).'],...
+'',...
+'Via the menu bar you can control the following settings:',...
+'',...
+'Options --> Sizes and Scalings ...',...
+'',...
+'This opens a window where you can specify ',...
+'-- the width (in cm) of the graphics in the LaTeX document;',...
+'-- a scaling factor and',...
+'-- whether you want fonts to be scaled.',...
+['The width controls the size of the graphics. Its height ',...
+'is computed such that the ratio of width to height of the ',...
+'figure on screen is retained. The factor controls the ',...
+'''denseness'' of the graphics. For instance, if the width is ',...
+'w=12 and the factor is f=0.8, then the graphics in the ',...
+'eps-file will have width w/f=15 cm and the tex-file ',...
+'scales it down to 12 cm. This means that lines become thinner ',...
+'and fonts become smaller (as compared to w=12; f=1.0). ',...
+'Good values for papers are f=0.8 to f=1.0, ',...
+'and f=1.5 is a good value for presentations. ',...
+'Switching font scaling off only scales the graphics. ',...
+'You may want to experiment with some w/f/scalefont combinations ',...
+'to find out your personal preference. '],...
+'',...
+'Options --> Translate Matlab Font Properties to LaTeX ',...
+'',...
+['This option can be switched on/off. When off, all text ',...
+'will be set using the LaTeX font which is active while ',...
+'entering the tex-file (Matlab font settings are ignored). When ',...
+'on, Matlab font settings are translated to LaTeX font ',...
+'settings.'],...
+'',...
+'Options --> Print Limits and Ticks as on Screen',...
+'',...
+['This option can be switched on/off. When on, the axes ',...
+'limits and ticks are frozen. They appear in the LaTeX ',...
+'document as on screen. When off, they are adapted by ',...
+'Matlab.'],...
+'',...
+'Options --> Keep Tick Labels within eps File',...
+'',...
+['This option can be switched on/off. When on, the tick ',...
+'labels aren''t replaced by their LaTeX equivalents. This is ',...
+'useful for some 3D-plots.'],...
+'',...
+'Options --> Set Tick Labels in LaTeX Math Mode',...
+'',...
+['This option can be switched on/off. When on, the tick ',...
+'labels are surrounded by a ''$''.'],...
+'',...
+'Options --> Equip the tex File with a Head',...
+'',...
+['This option can be switched on/off. When on, the tex-file ',...
+'is equipped with a header with a bunch of comments (date, files, ',...
+'example, comment text,...).'],...
+'',...
+'Options --> Comment in the Head of the tex File ...',...
+'',...
+['This opens a window where you can specify a comment to be ',...
+'placed in the header of the tex file.'],...
+'',...
+'Options --> Place a LaTeX caption in the tex File ...',...
+'',...
+['This opens a window where you can enter a caption text. If this ',...
+'caption text is nonempty, it is placed as a \caption{} ',...
+'into the tex-file. Thus the text will appear in the LaTeX ',...
+'document. In addition a \label{} is placed in the tex-file ',...
+'which can be used to refer to the graphics. The label will ',...
+'be fig: followed by the basename of the files, e.g., ',...
+'\label{fig:unnamed}.'],...
+'',...
+'Options --> Place an Extra Picture in each Axes',...
+'',...
+['This option can be switched on/off. When on, each axes in the ',...
+'figure is equipped with an empty LaTeX ''picture'' environment. ',...
+'It can be used to place some additional material into the ',...
+'figure by editing the tex-file.'],...
+'',...
+'Options --> Length of the psfrag Replacement Strings ...',...
+'',...
+['This opens a window where you can enter the length of the ',...
+'psfrag tags. If you have huge amounts of text, the default ',...
+'length of 3 might not suffice.'],...
+'',...
+'Options --> Call LaPrint in verbose mode',...
+'',...
+['This option can be switched on/off. When on, LaPrint issues ',...
+'some messages and warns before overwriting files.'],...
+'',...
+'Options --> Copy Figure and Modify that Copy',...
+'',...
+['This option can be switched on/off. When on, LaPrint takes ',...
+'a copy of the figure to be printed and places its tags into ',...
+'that copy. When done, the copy is deleted. When off, the ',...
+'figure is messed up by tags. It gets unusable, but you can see ',...
+'what LaPrint is doing. Besides, there are bugs in the Matlab ',...
+'''copyobj'' command. If these show up, this option is useful.'],...
+'',...
+'Options --> Matlab Print Command ...',...
+'',...
+['This opens a window where you can enter the Matlab command to ',...
+'save the graphics in an eps-file. You can modify the standard ',...
+'print command to include or remove options (like ''-loose'') ',...
+'or employ a different command (like exportfig). '],...
+'',...
+'Options --> Matlab Graphics Package',...
+'',...
+'You can chose between ''graphicx'' and ''epsfig''.',...
+'',...
+'Options --> Use LaTeX ''color'' package',...
+'',...
+['This option can be switched on/off. When on, LaPrint places ',...
+'color commands into the tex file to optain colored text.'],...
+'',...
+'Options --> View File ... --> Create a View File',...
+'',...
+['This option can be switched on/off. When on, LaPrint creates ',...
+'a third file (the view-file), which is a complete LaTeX ',...
+'document showing the graphics. You can process this file ',...
+'with your favourate LaTeX- and dvi-to-postscript compiler. ',...
+'This is useful to have a quick look at the result and to ',...
+'create a futher eps-file containing everything (see below). ',...
+'The process of compiling the view-file can be automated using ',...
+'the options described below.'],...
+'',...
+'Options --> View File ... --> Name of the View File',...
+'',...
+['This opens a window where you can enter the name of the ',...
+'view-file to be created.'],...
+'',...
+'Options --> View File ... --> Process the View File',...
+'',...
+['This option can be switched on/off. When on, LaPrint ',...
+'calls the LaTeX compiler and its friends to process the ',...
+'view file. The names of the executables to be used and ',...
+'their syntax can be set using the following option. '],...
+'',...
+['Options --> View File ... --> Executables for processing ',...
+'View File'],...
+'',...
+['This opens a window where you can enter the names of up to 8 ',...
+'system commands to process the view-file. If you have less than 8 ',...
+'programs, you can leave the some of the fields empty. In all ',...
+'commands, LaPrint internally replaces the tag ''<viewfile>'' ',...
+'by the basename of the viewfile and the tag <filename> by ',...
+'the basename specified in the main LaPrint window. ',...
+'In following example you have to add the paths, if the ',...
+'commands are not in the system search path.'],...
+'',...
+'To create and view a ps document:',...
+' cmd1: latex <viewfile>.tex',...
+' cmd2: dvips -o<viewfile>.ps <viewfile>.dvi',...
+' cmd3: gsview32 <viewfile>.ps (ghostview for Unix)',...
+'',...
+'',...
+'Preferences:',...
+'~~~~~~~~~~~~',...
+['All options and settings of LaPrint can be ',...
+'(internally and externally) stored ',...
+'in ''Preferences''. Suppose that you have changed, via ',...
+'the ''Options'' menu bar entry, the settings of LaPrint. ',...
+'You can make these settings to your preferred (default) ',...
+'settings by chosing'],...
+'',...
+'Preferences --> Set Preferences to Current Settings',...
+'',...
+['This means that future sessions of LaPrint load these ',...
+'settings on startup. You can also manually reload these ',...
+'settings by chosing'],...
+'',...
+'Preferences --> Get Preferences',...
+'',...
+['LaPrint has built-in (factory default) preferences, ',...
+'which you see when using ',...
+'LaPrint the first time. You can restore these defaults ',...
+'by chosing'],...
+'',...
+'Preferences --> Get Factory Defaults',...
+'',...
+['If you want your personal preferences be completely removed ',...
+'(switching back to factory defaults on startup), you should ',...
+'chose'],...
+'',...
+'Preferences --> Remove Preferences',...
+'',...
+['If you have multiple projects running and want to use different ',...
+'settings simultaneously, you can save/load preferences ',...
+'to/from mat-files by chosing'],...
+'',...
+'Preferences --> Save Current Settings to a File ',...
+'Preferences --> Load Settings from a File ',...
+'',...
+'These open a new window asking for the name of a .mat file.',...
+'',...
+'Using LaPrint from the command line:',...
+'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',...
+['When using LaPrint from the command line (or from an m-file), ',...
+'the following syntax is required:'],...
+'',...
+' laprint(figno,filename)',...
+' laprint(figno,filename,opta,vala,optb,valb,..)',...
+'',...
+'where',...
+' figno : integer, figure to be printed',...
+' filename : string (character array), basename of files',...
+' to be created',...
+' opta,vala,.. : option and value pairs, where opta is one',...
+' of the following options and vala is',...
+' the corresponding value.',...
+'',...
+['When calling LaPrint from the command line without ',...
+'option/value pairs, it uses the same '],...
+['settings/options as the GUI on startup. This means that ',...
+'it uses'],...
+['-- the factory default settings (if you havn''t ',...
+'stored your personal preferences using the GUI) or '],...
+'-- your personal preferences. ',...
+'The factory default settings can be enforced by typing ',...
+' laprint(figno,filename,''options'',''factory'')',...
+['These settings can be overwritten by option/value pairs ',...
+'as explained in the following table.'],...
+'',...
+'option |class/val.| remark',...
+'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',...
+'''width'' | <double> | width of the figure in the LaTeX',...
+' | | document (in cm).',...
+'''factor'' | <double> | factor by which the figure in ',...
+' | | the LaTeX document is smaller than ',...
+' | | the figure in the postscript file.',...
+'''scalefonts'' |''on''/''off''| scales the fonts with the ',...
+' | | figure (see option ''factor'').',...
+'''keepfontprops'' |''on''/''off''| translates MATLAB font',...
+' | | properties (size, width, angle) into',...
+' | | corresponding LaTeX font properties.',...
+'''asonscreen'' |''on''/''off''| prints ticks and lims ',...
+' | | ''as on screen''.',...
+'''keepticklabels''|''on''/''off''| keeps the tick labels within',...
+' | | the eps-file (not using LaTeX).',...
+'''mathticklabels''|''on''/''off''| tick labels are set in LaTeX',...
+' | | math mode',...
+'''head'' |''on''/''off''| places a commenting header in ',...
+' | | the tex-file.',...
+'''comment'' | <string> | places the comment <string> into',...
+' | | the header of the tex-file.',...
+'''caption'' | <string> | adds \caption{<string>} and',...
+' | | \label{fig:<filename>} to the',...
+' | | tex-file.',...
+'''extrapicture'' |''on''/''off''| adds empty picture environments',...
+' | | to the axes.',...
+'''nzeros'' | <int> | uses replacement strings of',...
+' | | length <int> in the eps-file.',...
+'''verbose'' |''on''/''off''| verbose mode; asks before',...
+' | | overwriting files and issues some ',...
+' | | more messages.',...
+'''figcopy'' |''on''/''off''| directly modifies the original',...
+' | | figure.',...
+'''printcmd'' | <string> | uses ''<string>'' as Matlab print',...
+' | | command.',...
+'''package'' | <string> | uses the LaTeX graphics package',...
+' | | ''<string>''. Possible values are',...
+' | | ''graphicx'' and ''epsfig''.',...
+'''color'' |''on''/''off''| uses colored fonts (using the',...
+' | | LaTeX ''color'' package).',...
+'''createview'' |''on''/''off''| creates a view-file, which ',...
+' | | calls the tex-file.',...
+'''viewfilename'' | <string> | Basename of the view-file.',...
+'''processview'' |''on''/''off''| processes the view-file ',...
+' | | by LaTeX and friends.',...
+'''cmd1'' | <string> | 1st Command in the sequence of',...
+' | | LaTeX and friends (enter an empty',...
+' | | string to skip this command).',...
+'''cmd2'' | <string> | 2nd LaTeX/friend Command ',...
+'''cmd3'' | <string> | 3rd LaTeX/friend Command ',...
+'''cmd4'' | <string> | 4th LaTeX/friend Command ',...
+'''cmd5'' | <string> | 5th LaTeX/friend Command ',...
+'''cmd6'' | <string> | 6th LaTeX/friend Command ',...
+'''cmd7'' | <string> | 7th LaTeX/friend Command ',...
+'''cmd8'' | <string> | 8th LaTeX/friend Command ',...
+'''options'' | <string> | This option can be used to ',...
+' | | employ project-dependent ',...
+' | | preferences as follows:',...
+' | | 1) Save your preferences to a file ',...
+' | | using the GUI:',...
+' | | Preferences --> ',...
+' | | Save Current Settings to a file',...
+' | | 2) Reload these preferences',...
+' | | with laprint:',...
+' | | >> laprint(1,''unnamed'',..',...
+' | | ''options'',<string>)',...
+' | | where <string> is the name of ',...
+' | | the mat-file with preferences.',...
+'',...
+'',...
+' ...................... ENJOY ! .......................',...
+'',...
+};