function fappendl(fid, varargin)
% FAPPENDL Write line to file
%
% FAPPENDL(FID, ARG1, ARG2, ...) is the same as
% FPRINTF(FID, '%s\n', [ARG1, ' ', ARG2, ' ', ...]) and hence provides an
% intuitive syntax for writing lines to a file. When all you need is write
% a single line to a file, the original syntax provided by FPRINTF becomes
% quite cumbersome. The best way is illustrate by an example.
%
% First write a file 'fname1.tex' using FPRINTF:
%
% pgffile = 'drawing.pgf';
% fid = fopen('fname1.tex', 'w');
% fprintf(fid, '%s\n', '\documentclass{article}');
% fprintf(fid, '%s\n', '\usepackage{pgf}');
% fprintf(fid, '%s\n', '\begin{document}');
% fprintf(fid, '%s\n', ['\input{', pgffile, '}']);
% fprintf(fid, '%s\n', 'Sample text');
% fprintf(fid, '%s\n', 'Sample math $\langle X(t)\rangle$');
% fprintf(fid, '%s\n', '\end{document}');
% fclose(fid);
%
% Then write another file 'fname2.tex' with the same content but using
% FAPPENDL:
%
%
% fid = fopen('fname2.tex', 'w');
% fappendl fid \documentclass{article}
% fappendl fid \usepackage{pgf}
% fappendl fid \begin{document}
% fappendl(fid, ['\input{', pgffile, '}'])
% fappendl fid Sample text
% fappendl fid Sample math $\langle X(t)\rangle$
% fappendl fid \end{document}
% fclose(fid);
%
if ischar(fid)
fid = evalin('caller', fid);
end
if nargin < 3
fprintf(fid, '%s\n', varargin{:});
else
args = cellfun(@(x) [char(x), ' '], varargin, 'UniformOutput', false);
fprintf(fid, '%s\n', deblank([args{:}]));
end