* pretty typesetting for matlab files
@ 2006-03-15 6:50 Aditya Mahajan
2006-03-15 9:20 ` Taco Hoekwater
0 siblings, 1 reply; 6+ messages in thread
From: Aditya Mahajan @ 2006-03-15 6:50 UTC (permalink / raw)
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1645 bytes --]
Hi,
I was trying to define a pretty printing environment for matlab
files. The basic requirements that I have are
% Numbers should be highlighted in a different color
% Identify floating point numbers 1.1 and 1e-3.
% Identify brackets
% ()[]{}
% Identify Punctuation
% ,;<=> ...
% Identify Operators
% ^ + - / * .^ .*
% Idenfity strings (enclosed in ' ' and " ")
% Identify lines starting with % as comments. Show them
% a different color. Identify %{ ... %} blocks as comments
% identifiers
function return case if else elseif do for while end
% variables
gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,
[snip].... a huge list
The syntax is similar to both perl and MP. I had a look at the
verb-*.tex files and tried to write verb-matlab. My attempt is
attached.
However, it does not work correctly. There are somethings that I could
not figure out.
1. How to change the comment identifier. Matlab uses % as line
comments and %{ .... %} as block comments.
2. For some reason Matlab variables are not recognized.
3. The punctuations are not identified.
4. '...' is not recognized as a string. The ' is output as a right
quotation mark and not _neutral_ '.
What would be a good way to include tex commands in the comments?
Matlab recognizes %% as a special comment (begining of a cell). Is it
possible to somehow translate %% into \MATLABcell, which is \bf by
default but the behaviour can be changed if desired?
See attachment verb-matlab.tex for my attempt and test.tex for an
example.
Thanks
Aditya
--
Aditya Mahajan, EECS Systems, University of Michigan
http://www.eecs.umich.edu/~adityam || Ph: 7342624008
[-- Attachment #2: Type: TEXT/PLAIN, Size: 4896 bytes --]
\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
\unprotect
\gdef\MATLABsetspecials%
{\PLsetspecials}
\gdef\setupprettyMATLABtype%
{\def\prettyidentifier{MATLAB}%
\let\PLidentifiers=\MATLABidentifiers
\let\PLvariables=\MATLABvariables
\PLsetvariables
\PLsetcontrols
\PLsethandlers
\MATLABsetspecials
\PLsetdiagnostics}
\useprettyidentifiers \MATLABidentifiers \MATLABsetspecials
function return case if else elseif do for while end
\useprettyidentifiers \MATLABvariables \MATLABsetspecials
gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,
all,angle,ans,any,asec,asech,asin,asinh,atan,atan2,atanh,auread,
auwrite,axes,axis,balance,bar,bessel,besselk,bessely,beta,
betainc,betaln,blanks,bone,break,brighten,capture,cart2pol,
cart2sph,caxis,cd,cdf2rdf,cedit,ceil,chol,cla,clabel,clc,clear,
clf,clock,close,colmmd,Colon,colorbar,colormap,ColorSpec,colperm,
comet,comet3,compan,compass,computer,cond,condest,conj,contour,
contour3,contourc,contrast,conv,conv2,cool,copper,corrcoef,cos,
cosh,cot,coth,cov,cplxpair,cputime,cross,csc,csch,csvread,
csvwrite,cumprod,cumsum,cylinder,date,dbclear,dbcont,dbdown,
dbquit,dbstack,dbstatus,dbstep,dbstop,dbtype,dbup,ddeadv,ddeexec,
ddeinit,ddepoke,ddereq,ddeterm,ddeunadv,deblank,dec2hex,deconv,
del2,delete,demo,det,diag,diary,diff,diffuse,dir,disp,dlmread,
dlmwrite,dmperm,dot,drawnow,echo,eig,ellipj,ellipke,
engClose,engEvalString,engGetFull,engGetMatrix,engOpen,
engOutputBuffer,engPutFull,engPutMatrix,engSetEvalCallback,
engSetEvalTimeout,engWinInit,eps,erf,erfc,erfcx,erfinv,error,
errorbar,etime,etree,eval,exist,exp,expint,expm,expo,eye,fclose,
feather,feof,ferror,feval,fft,fft2,fftshift,fgetl,fgets,figure,
fill,fill3,filter,filter2,find,findstr,finite,fix,flag,fliplr,
flipud,floor,flops,fmin,fmins,fopen,format,fplot,fprintf,
fread,frewind,fscanf,fseek,ftell,full,funm,fwrite,fzero,
gallery,gamma,gammainc,gammaln,gca,gcd,gcf,gco,get,getenv,
getframe,ginput,global,gplot,gradient,gray,graymon,grid,griddata,
gtext,hadamard,hankel,help,hess,hex2dec,hex2num,hidden,hilb,hist,
hold,home,hostid,hot,hsv,hsv2rgb,ifft,ifft2,imag,image,
imagesc,Inf,info,input,int2str,interp1,interp2,interpft,inv,
invhilb,isempty,isglobal,ishold,isieee,isinf,isletter,isnan,
isreal,isspace,issparse,isstr,jet,keyboard,kron,lasterr,lcm,
legend,legendre,length,lin2mu,line,linspace,load,log,log10,log2,
loglog,logm,logspace,lookfor,lower,ls,lscov,lu,magic,matClose,
matDeleteMatrix,matGetDir,matGetFp,matGetFull,matGetMatrix,
matGetNextMatrix,matGetString,matlabrc,matlabroot,matOpen,
matPutFull,matPutMatrix,matPutString,max,mean,median,menu,mesh,
meshc,meshgrid,meshz,mexAtExit,mexCallMATLAB,mexdebug,
mexErrMsgTxt,mexEvalString,mexFunction,mexGetFull,mexGetMatrix,
mexGetMatrixPtr,mexPrintf,mexPutFull,mexPutMatrix,mexSetTrapFlag,
min,more,movie,moviein,mu2lin,mxCalloc,mxCopyCharacterToPtr,
mxCopyComplex16ToPtr,mxCopyInteger4ToPtr,mxCopyPtrToCharacter,
mxCopyPtrToComplex16,mxCopyPtrToInteger4,mxCopyPtrToReal8,
mxCopyReal8ToPtr,mxCreateFull,mxCreateSparse,mxCreateString,
mxFree,mxFreeMatrix,mxGetIr,mxGetJc,mxGetM,mxGetN,mxGetName,
mxGetNzmax,mxGetPi,mxGetPr,mxGetScalar,mxGetString,mxIsComplex,
mxIsFull,mxIsNumeric,mxIsSparse,mxIsString,mxIsTypeDouble,
mxSetIr,mxSetJc,mxSetM,mxSetN,mxSetName,mxSetNzmax,mxSetPi,
mxSetPr,NaN,nargchk,nargin,nargout,newplot,nextpow2,nnls,nnz,
nonzeros,norm,normest,null,num2str,nzmax,ode23,ode45,orient,orth,
pack,pascal,patch,path,pause,pcolor,pi,pink,pinv,plot,plot3,
pol2cart,polar,poly,polyder,polyeig,polyfit,polyval,polyvalm,
pow2,print,printopt,prism,prod,pwd,qr,qrdelete,qrinsert,quad,
quad8,quit,quiver,qz,rand,randn,randperm,rank,rat,rats,rbbox,
rcond,real,realmax,realmin,refresh,rem,reset,reshape,residue,
rgb2hsv,rgbplot,rootobject,roots,rose,rosser,rot90,rotate,
round,rref,rrefmovie,rsf2csf,save,saxis,schur,sec,sech,semilogx,
semilogy,set,setstr,shading,sign,sin,sinh,size,slice,sort,sound,
spalloc,sparse,spaugment,spconvert,spdiags,specular,speye,spfun,
sph2cart,sphere,spinmap,spline,spones,spparms,sprandn,sprandsym,
sprank,sprintf,spy,sqrt,sqrtm,sscanf,stairs,startup,std,stem,
str2mat,str2num,strcmp,strings,strrep,strtok,subplot,subscribe,
subspace,sum,surf,surface,surfc,surfl,surfnorm,svd,symbfact,
symmmd,symrcm,tan,tanh,tempdir,tempname,terminal,text,tic,title,
toc,toeplitz,trace,trapz,tril,triu,type,uicontrol,uigetfile,
uimenu,uiputfile,unix,unwrap,upper,vander,ver,version,view,
viewmtx,waitforbuttonpress,waterfall,wavread,wavwrite,what,
whatsnew,which,white,whitebg,who,whos,wilkinson,wk1read,
wk1write,xlabel,xor,ylabel,zeros,zlabel,zoom
\installprettytype [MATLAB] [MATLAB]
\definetyping [MATLAB] [\c!option=MATLAB]
\definepalet [MATLABcolorpretty] [colorpretty]
\definepalet [MATLABgraypretty] [graypretty]
\protect \endinput
[-- Attachment #3: Type: TEXT/PLAIN, Size: 1035 bytes --]
\setupcolors[state=start]
\input verb-matlab
\starttext
\startMATLAB
n = 150e5 ;
p = 0.9 ;
d = 300 ;
r = 100 ;
m_total = n:(n+40) ;
warning off;
%%. Refundable Tickets
cost = zeros(length(m_total),1) ;
for m = m_total
for k = 0:n
cost(m-n+1) = cost(m-n+1) + k*d*nchoosek(m,k)*p^k*(1-p)^(m - k) ;
end;
for k = (n+1):m
cost(m-n+1) = cost(m-n+1) + (n*d - (k-n)*r)*nchoosek(m,k)*p^k*(1-p)^(m-k) ;
end;
end;
[value,count] = max(cost) ;
disp(sprintf('The maximum occurs at %d',count+n-1)) ;
figure(1);
plot(m_total,cost) ;
%%. Nonrefundable Case
cost = zeros(length(m_total),1) ;
for m = m_total
for k = 0:n
cost(m-n+1) = cost(m-n+1) + k*d*nchoosek(m,k)*p^k*(1-p)^(m - k) ;
end;
for k = (n+1):m
cost(m-n+1) = cost(m-n+1) + (m*d - (k-n)*(d+r))*nchoosek(m,k)*p^k*(1-p)^(m-k) ;
end;
end;
[value,count] = max(cost) ;
disp(sprintf('The maximum occurs at %d',count+n-1)) ;
figure(2);
plot(m_total,cost) ;
\stopMATLAB
\stoptext
[-- Attachment #4: Type: text/plain, Size: 139 bytes --]
_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: pretty typesetting for matlab files
2006-03-15 6:50 pretty typesetting for matlab files Aditya Mahajan
@ 2006-03-15 9:20 ` Taco Hoekwater
2006-03-15 21:14 ` Aditya Mahajan
0 siblings, 1 reply; 6+ messages in thread
From: Taco Hoekwater @ 2006-03-15 9:20 UTC (permalink / raw)
Aditya Mahajan wrote:
> Hi,
>
> I was trying to define a pretty printing environment for matlab files.
> The basic requirements that I have are
>
> The syntax is similar to both perl and MP. I had a look at the
> verb-*.tex files and tried to write verb-matlab. My attempt is attached.
If you have to change any of the actual syntax rules (like for comments
etc.), then you have to be brave and create a fully new definition.
That may sound like a very daunting task, but it is not as hard as you
may think, just something to be done meticulously. The verb-xxxx
definitions are rather straightforward state engines that use character
codes as command tokens.
Cheers, Taco
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: pretty typesetting for matlab files
2006-03-15 9:20 ` Taco Hoekwater
@ 2006-03-15 21:14 ` Aditya Mahajan
2006-03-16 9:50 ` Taco Hoekwater
0 siblings, 1 reply; 6+ messages in thread
From: Aditya Mahajan @ 2006-03-15 21:14 UTC (permalink / raw)
On Wed, 15 Mar 2006, Taco Hoekwater wrote:
>
>
> Aditya Mahajan wrote:
>> Hi,
>>
>> I was trying to define a pretty printing environment for matlab files.
>> The basic requirements that I have are
>>
>> The syntax is similar to both perl and MP. I had a look at the
>> verb-*.tex files and tried to write verb-matlab. My attempt is attached.
>
> If you have to change any of the actual syntax rules (like for comments
> etc.), then you have to be brave and create a fully new definition.
The syntax is quite similar to MP. I will see if I can make the
corresponding changes for things to work.
> That may sound like a very daunting task, but it is not as hard as you
> may think, just something to be done meticulously. The verb-xxxx
> definitions are rather straightforward state engines that use character
> codes as command tokens.
Is this documented somewhere? Even the source files (verb-*.tex) did not
have too many hints on what is going on. Should I also look into some
other files?
Thanks,
Aditya
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: pretty typesetting for matlab files
2006-03-15 21:14 ` Aditya Mahajan
@ 2006-03-16 9:50 ` Taco Hoekwater
2006-03-17 5:29 ` Aditya Mahajan
0 siblings, 1 reply; 6+ messages in thread
From: Taco Hoekwater @ 2006-03-16 9:50 UTC (permalink / raw)
Aditya Mahajan wrote:
>>That may sound like a very daunting task, but it is not as hard as you
>>may think, just something to be done meticulously. The verb-xxxx
>>definitions are rather straightforward state engines that use character
>>codes as command tokens.
>
> Is this documented somewhere?
I don't know. If anybody else knows, please tell me. If not, I'll jot
down some stuff.
Cheers,
Taco
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: pretty typesetting for matlab files
2006-03-16 9:50 ` Taco Hoekwater
@ 2006-03-17 5:29 ` Aditya Mahajan
2006-03-17 9:16 ` Taco Hoekwater
0 siblings, 1 reply; 6+ messages in thread
From: Aditya Mahajan @ 2006-03-17 5:29 UTC (permalink / raw)
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1045 bytes --]
<--- On Mar 16, Taco Hoekwater wrote --->
> Aditya Mahajan wrote:
>>> That may sound like a very daunting task, but it is not as hard as you
>>> may think, just something to be done meticulously. The verb-xxxx
>>> definitions are rather straightforward state engines that use character
>>> codes as command tokens.
>>
>> Is this documented somewhere?
>
> I don't know. If anybody else knows, please tell me. If not, I'll jot
> down some stuff.
Actually the explaination in verb-ini.tex is pretty good. I had
somehow missed reading it earlier. I vaguely understand how the whole
mechanism is working and managed to obtain a partial
solution (attached). I have a deadline for submission and right now
this will have to do. The only features missing are identifying line
and block comments and a meachism to add tex markup in comments. I
need to understand verb-jv/js more clearly to incorporate these
changes.
Thanks,
Aditya
--
Aditya Mahajan, EECS Systems, University of Michigan
http://www.eecs.umich.edu/~adityam || Ph: 7342624008
[-- Attachment #2: Type: TEXT/PLAIN, Size: 5305 bytes --]
\unprotect
\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
\gdef\MATLABsetspecials%
{\PLsetspecials
\setpretty`\'=41
\setpretty`\.=41
\setpretty`\#=21
\setpretty`\%=0
\setpretty`\,=21
\setpretty`\;=21
\setpretty`\:=21
}
\gdef\MATLABsethandlers%
{\PLsethandlers}
\gdef\MATLABsetcontrols%
{\PLsetcontrols}
\gdef\MATLABsetvariables
{\PLsetvariables}
\gdef\setupprettyMATLABtype%
{\def\prettyidentifier{MATLAB}%
\let\PLidentifiers=\MATLABidentifiers
\let\PLvariables=\MATLABvariables
\MATLABsetvariables
\MATLABsetcontrols
\MATLABsethandlers
\MATLABsetspecials}
\useprettyidentifiers \MATLABidentifiers \MATLABsetspecials
function return case if else elseif do for while end
\useprettyidentifiers \MATLABvariables \MATLABsetspecials
gt lt gt lt amp abs acos acosh acot acoth acsc acsch
all angle ans any asec asech asin asinh atan atan2 atanh auread
auwrite axes axis balance bar bessel besselk bessely beta
betainc betaln blanks bone break brighten capture cart2pol
cart2sph caxis cd cdf2rdf cedit ceil chol cla clabel clc clear
clf clock close colmmd Colon colorbar colormap ColorSpec colperm
comet comet3 compan compass computer cond condest conj contour
contour3 contourc contrast conv conv2 cool copper corrcoef cos
cosh cot coth cov cplxpair cputime cross csc csch csvread
csvwrite cumprod cumsum cylinder date dbclear dbcont dbdown
dbquit dbstack dbstatus dbstep dbstop dbtype dbup ddeadv ddeexec
ddeinit ddepoke ddereq ddeterm ddeunadv deblank dec2hex deconv
del2 delete demo det diag diary diff diffuse dir disp dlmread
dlmwrite dmperm dot drawnow echo eig ellipj ellipke
engClose engEvalString engGetFull engGetMatrix engOpen
engOutputBuffer engPutFull engPutMatrix engSetEvalCallback
engSetEvalTimeout engWinInit eps erf erfc erfcx erfinv error
errorbar etime etree eval exist exp expint expm expo eye fclose
feather feof ferror feval fft fft2 fftshift fgetl fgets figure
fill fill3 filter filter2 find findstr finite fix flag fliplr
flipud floor flops fmin fmins fopen format fplot fprintf
fread frewind fscanf fseek ftell full funm fwrite fzero
gallery gamma gammainc gammaln gca gcd gcf gco get getenv
getframe ginput global gplot gradient gray graymon grid griddata
gtext hadamard hankel help hess hex2dec hex2num hidden hilb hist
hold home hostid hot hsv hsv2rgb ifft ifft2 imag image
imagesc Inf info input int2str interp1 interp2 interpft inv
invhilb isempty isglobal ishold isieee isinf isletter isnan
isreal isspace issparse isstr jet keyboard kron lasterr lcm
legend legendre length lin2mu line linspace load log log10 log2
loglog logm logspace lookfor lower ls lscov lu magic matClose
matDeleteMatrix matGetDir matGetFp matGetFull matGetMatrix
matGetNextMatrix matGetString matlabrc matlabroot matOpen
matPutFull matPutMatrix matPutString max mean median menu mesh
meshc meshgrid meshz mexAtExit mexCallMATLAB mexdebug
mexErrMsgTxt mexEvalString mexFunction mexGetFull mexGetMatrix
mexGetMatrixPtr mexPrintf mexPutFull mexPutMatrix mexSetTrapFlag
min more movie moviein mu2lin mxCalloc mxCopyCharacterToPtr
mxCopyComplex16ToPtr mxCopyInteger4ToPtr mxCopyPtrToCharacter
mxCopyPtrToComplex16 mxCopyPtrToInteger4 mxCopyPtrToReal8
mxCopyReal8ToPtr mxCreateFull mxCreateSparse mxCreateString
mxFree mxFreeMatrix mxGetIr mxGetJc mxGetM mxGetN mxGetName
mxGetNzmax mxGetPi mxGetPr mxGetScalar mxGetString mxIsComplex
mxIsFull mxIsNumeric mxIsSparse mxIsString mxIsTypeDouble
mxSetIr mxSetJc mxSetM mxSetN mxSetName mxSetNzmax mxSetPi mxSetPr NaN
nargchk nargin nargout nchoosek newplot nextpow2 nnls nnz nonzeros norm
normest null num2str nzmax ode23 ode45 orient orth pack pascal patch path
pause pcolor pi pink pinv plot plot3 pol2cart polar poly polyder polyeig
polyfit polyval polyvalm pow2 print printopt prism prod pwd qr qrdelete
qrinsert quad quad8 quit quiver qz rand randn randperm rank rat rats rbbox
rcond real realmax realmin refresh rem reset reshape residue rgb2hsv rgbplot
rootobject roots rose rosser rot90 rotate round rref rrefmovie rsf2csf save
saxis schur sec sech semilogx semilogy set setstr shading sign sin sinh size
slice sort sound spalloc sparse spaugment spconvert spdiags specular speye
spfun sph2cart sphere spinmap spline spones spparms sprandn sprandsym sprank
sprintf spy sqrt sqrtm sscanf stairs startup std stem str2mat str2num strcmp
strings strrep strtok subplot subscribe subspace sum surf surface surfc
surfl surfnorm svd symbfact symmmd symrcm tan tanh tempdir tempname terminal
text tic title toc toeplitz trace trapz tril triu type uicontrol uigetfile
uimenu uiputfile unix unwrap upper vander ver version view viewmtx
waitforbuttonpress waterfall wavread wavwrite what whatsnew which white
whitebg who whos wilkinson wk1read wk1write xlabel xor ylabel zeros zlabel
zoom
\installprettytype [MATLAB] [MATLAB]
\definetyping [MATLAB] [\c!option=MATLAB]
\definepalet [MATLABcolorpretty] [colorpretty]
\definepalet [MATLABgraypretty] [graypretty]
\protect \endinput
[-- Attachment #3: Type: text/plain, Size: 139 bytes --]
_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: pretty typesetting for matlab files
2006-03-17 5:29 ` Aditya Mahajan
@ 2006-03-17 9:16 ` Taco Hoekwater
0 siblings, 0 replies; 6+ messages in thread
From: Taco Hoekwater @ 2006-03-17 9:16 UTC (permalink / raw)
Aditya Mahajan wrote:
> Actually the explaination in verb-ini.tex is pretty good. I had somehow
> missed reading it earlier. I vaguely understand how the whole mechanism
> is working and managed to obtain a partial solution (attached). I have a
When you feel it is finished, please e-mail it to Patrick for inclusion
in the third party modules section of contextgarden.net (Nikolai, do you
remember your verb-c ? :-))
Greetings, Taco
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-03-17 9:16 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-03-15 6:50 pretty typesetting for matlab files Aditya Mahajan
2006-03-15 9:20 ` Taco Hoekwater
2006-03-15 21:14 ` Aditya Mahajan
2006-03-16 9:50 ` Taco Hoekwater
2006-03-17 5:29 ` Aditya Mahajan
2006-03-17 9:16 ` Taco Hoekwater
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).