Re: [NTG-context] Metapost label - Truncating digits after decimal point
Thanks for this solution. Sounds small and clean. I need to learn Lua I guess. On Tue, Dec 15, 2009 at 5:34 AM, Aditya Mahajan wrote: > On Sat, 28 Nov 2009, Curiouslearn wrote: > >> Hi, >> >> Is it possible to truncate the digits after decimal point in Metapost >> when using textext()? Please see the minimal example below which >> produces 1.84375. Can I just keep the first digit and have it produce >> 1.8 ? >> >> Thanks. > > If you are using mkiv, you can use lua to truncate a number. > > \unexpanded\def\truncate#1{\ctxlua{context("\%.1f", #1)}} > > \startMPdefinitions > def truncatedtext(expr s) = > textext("\truncate{" & s & "}") > enddef ; > \stopMPdefinitions > > \starttext > \startuseMPgraphic{Figure} > u := 1cm; > pickup pencircle scaled 2pt; % default pen thickness > %TheFunction > vardef f(expr x) = > (10/x)-x*((0.5)**x) > enddef; > %Labels > %label.lft(textext("\truncate{" & decimal f(5) & "}"),(0,f(5)) scaled u); > label.lft(truncatedtext(decimal f(5)),(0,f(5)) scaled u); > \stopuseMPgraphic > \useMPgraphic{Figure} > > > \stoptext > > Aditya > ___ > If your question is of interest to others as well, please add an entry to > the Wiki! > > maillist : ntg-context@ntg.nl / > http://www.ntg.nl/mailman/listinfo/ntg-context > webpage : http://www.pragma-ade.nl / http://tex.aanhet.net > archive : http://foundry.supelec.fr/projects/contextrev/ > wiki : http://contextgarden.net > ___ > ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] Metapost label - Truncating digits after decimal point
On Sat, 28 Nov 2009, Curiouslearn wrote: Hi, Is it possible to truncate the digits after decimal point in Metapost when using textext()? Please see the minimal example below which produces 1.84375. Can I just keep the first digit and have it produce 1.8 ? Thanks. If you are using mkiv, you can use lua to truncate a number. \unexpanded\def\truncate#1{\ctxlua{context("\%.1f", #1)}} \startMPdefinitions def truncatedtext(expr s) = textext("\truncate{" & s & "}") enddef ; \stopMPdefinitions \starttext \startuseMPgraphic{Figure} u := 1cm; pickup pencircle scaled 2pt; % default pen thickness %TheFunction vardef f(expr x) = (10/x)-x*((0.5)**x) enddef; %Labels %label.lft(textext("\truncate{" & decimal f(5) & "}"),(0,f(5)) scaled u); label.lft(truncatedtext(decimal f(5)),(0,f(5)) scaled u); \stopuseMPgraphic \useMPgraphic{Figure} \stoptext Aditya ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] Metapost label - Truncating digits after decimal point
Thanks so much, Taco. I will try out the code below. Good to know that Metapost has functions such as substring. On Sun, Nov 29, 2009 at 3:32 AM, Taco Hoekwater wrote: > Curiouslearn wrote: >> >> Hi, >> >> Is it possible to truncate the digits after decimal point in Metapost >> when using textext()? Please see the minimal example below which >> produces 1.84375. Can I just keep the first digit and have it produce >> 1.8 ? > > Here is a helper macro for you: > > def trunc_digits(expr n, origs) = > hide( > string s, tmp; > numeric ii, e; > e := -1; > for i=1 upto length(origs): > ii := i; > tmp := substring (i-1,i) of origs; > if tmp = ".": if n=0: ii:=ii-1; exitif true; fi e:=0; fi > if e>=0: e := e+1; exitif e>n; fi > endfor; > s:=substring(0,ii) of origs; ) > s > enddef; > > > When run this macro with the result of decimal() as second argument, > it will create a new string as many fractional digits as you specify > in the first argument: > > label.lft(textext(trunc_digits(1,decimal f(5))),(0,f(5)) scaled u); > > Best wishes, > Taco > ___ > If your question is of interest to others as well, please add an entry to > the Wiki! > > maillist : ntg-context@ntg.nl / > http://www.ntg.nl/mailman/listinfo/ntg-context > webpage : http://www.pragma-ade.nl / http://tex.aanhet.net > archive : http://foundry.supelec.fr/projects/contextrev/ > wiki : http://contextgarden.net > ___ > ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] Metapost label - Truncating digits after decimal point
Curiouslearn wrote: Hi, Is it possible to truncate the digits after decimal point in Metapost when using textext()? Please see the minimal example below which produces 1.84375. Can I just keep the first digit and have it produce 1.8 ? Here is a helper macro for you: def trunc_digits(expr n, origs) = hide( string s, tmp; numeric ii, e; e := -1; for i=1 upto length(origs): ii := i; tmp := substring (i-1,i) of origs; if tmp = ".": if n=0: ii:=ii-1; exitif true; fi e:=0; fi if e>=0: e := e+1; exitif e>n; fi endfor; s:=substring(0,ii) of origs; ) s enddef; When run this macro with the result of decimal() as second argument, it will create a new string as many fractional digits as you specify in the first argument: label.lft(textext(trunc_digits(1,decimal f(5))),(0,f(5)) scaled u); Best wishes, Taco ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
[NTG-context] Metapost label - Truncating digits after decimal point
Hi, Is it possible to truncate the digits after decimal point in Metapost when using textext()? Please see the minimal example below which produces 1.84375. Can I just keep the first digit and have it produce 1.8 ? Thanks. \setuppapersize[letter][letter] \setupcolors[state=start] \starttext \startuseMPgraphic{Figure} u := 1cm; pickup pencircle scaled 2pt; % default pen thickness %TheFunction vardef f(expr x) = (10/x)-x*((0.5)**x) enddef; %Labels label.lft(textext(decimal f(5)),(0,f(5)) scaled u); \stopuseMPgraphic \useMPgraphic{Figure} \stoptext ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___