On 8/6/2021 10:58 PM, Marcus Vinicius Mesquita via ntg-context wrote:
Dear list, in the mwe below, the expected result is ok for most entries but fails when the word contains the letters ó or ô. We get zoolco instead of zoológico, and termtro instead of termômetro. What am I doing wrong?
mwe:
\def\stripnumber#1% {\cldcontext{lpeg.match(lpeg.stripper("[¹²³⁴⁵⁶⁷⁸⁹⁰]"), [==[#1]==])}}
\starttext
\stripnumber{árbitro⁶} \stripnumber{ébano¹} \stripnumber{ícone⁸} \stripnumber{zoológico⁰} \stripnumber{eletroacústico⁹} \stripnumber{trânsfuga⁷} \stripnumber{farmacêutico¹} \stripnumber{maître²} \stripnumber{termômetro³} \stripnumber{noûs⁴}
\stoptext
\def\stripnumber#1% {\cldcontext{lpeg.match(lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")), [==[#1]==])}} (US -> utf set) or \startluacode local s = lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")) function document.StripNumber(str) context(lpeg.match(s, str)) end \stopluacode \def\stripnumber#1{\ctxlua{document.StripNumber([==[#1]==])}} or you can go fancy: \startluacode local p_strip = lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")) interfaces.implement { name = "StripNumber", public = true, arguments = "string", actions = function(str) context(lpeg.match(p_strip, str)) end } \stopluacode \StripNumber{zoológico⁰} There are more efficient variants but i guess it's good enough. Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------